链测长度,偏移,RL
; Read a csv file and create 3d points along a pline alignment
; by Alan H jan 2016
;local defun for sq to pline
(defun alg-ang (obj pnt)
(- (angle '(0. 0. 0.)
(vlax-curve-getfirstderiv obj (vlax-curve-getparamatpoint obj pnt)))(/ pi 2.0)
)
)
; thanks to Lee-mac for this defun
(defun _csv->lst ( str / pos )
(if (setq pos (vl-string-position 44 str))
(cons (substr str 1 pos) (_csv->lst (substr str (+ pos 2))))
(list str)
)
)
(defun drawpt (chain offsetd rl / pt pt2 )
(setq Pt (vlax-curve-getPointAtDist Obj chain))
(setq ang (alg-ang Obj Pt))
(setq pt2 (polar pt ang offsetd))
(setq pt2 (list (car pt2) (cadr pt2) rl)) ; add z
(command "point" pt2)
)
(defun chofrl ( / fname strval lst)
(setq Obj (vlax-ename->vla-object (car (entsel "\nSELECT PLINE AS ALIGNMENT >>"))))
;(setq fname (open "c:\\acadtemp\\cross.csv" "r"))
(setq fname (OPEN (getstring "\nEnter file name") "r"))
(while (setq strval (read-line fname))
(setq lst (cons (_csv->lst strval) lst))
(setq chain (atof (nth 0 (nth 0 lst))))
(setq offsetd (atof (nth 1 (nth 0 lst))))
(setq rl (atof (nth 2 (nth 0 lst))))
(drawpt chain offsetd rl)
(setq lst nil)
(princ chain)
)
(close fname)
(princ)
)
(chofrl)
我再次发送我的图纸,请解决这个问题。我必须在绘图中显示它(每个点的位置),所以如果我在绘图中得到类型2的结果,我可以很容易地做到这一点。
hh1.dwg 尊敬的BIGAL先生,当我尝试使用LISP时,我在选择对齐方式后收到一条消息,我正在将保存在桌面上的CSV文件的绘图发送给您。我收到的消息正在显示给您。
选择PLINE作为对齐方式>>
输入文件名C:\Users\Anidya\Desktop\Table1。csv
指向
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0点
当前点模式:PDMODE=0 PDSIZE=0.0000
指定点:
命令:0.0
帮助123456.dwg
表1.csv 这将创建pts
; by Alan H jan 2016
;local defun for sq to pline
(defun alg-ang (obj pnt)
(- (angle '(0. 0. 0.)
(vlax-curve-getfirstderiv obj (vlax-curve-getparamatpoint obj pnt)))(/ pi 2.0)
)
)
(defun drawpt (chain offsetd rl / pt pt2 )
(setq Pt (vlax-curve-getPointAtDist Obj chain))
(setq ang (alg-ang Obj Pt))
(setq pt2 (polar pt ang offsetd))
(command "point" pt2)
(princ pt2)
(princ "\n")
)
(defun chofrl ()
(setq Obj (vlax-ename->vla-object (car (entsel "\nSELECT PLINE AS ALIGNMENT >>"))))
(setq offsetd (getdist "\NEnter offset distance"))
(while (/= chain nil)
(setq chain (getreal "\nEnter Chainage press <Cr> to exit")) ;make this a loop of chainage steps
(drawpt chain offsetd rl)
(setq lst nil)
(princ chain)
)
(close fname)
(princ)
)
(chofrl)
尊敬的先生:Bigal先生,我有点不对劲。我无法理解,在选择路线后,它要求我输入偏移距离,其中偏移不同,正如我在excel表上显示的那样。如果它只是问我的excel表的名称(如果我把它放在桌面上)。然后创建3d点,一切都会好起来的。但事实并非如此。请帮忙。我想根据所述链测长度的excel表中所述距离查看路线两侧的点。 Cadtutor是一项免费服务,因此在某个时候,项目会变得很大,空闲时间就会用完。我发布了一个如何获取点细节的方法,它需要一个循环来提取所有必需的值。如果你想要这个,并准备支付我相信有人可以帮助。
否则有人能帮忙吗?或者你可能需要开始学习lisp。这里有你需要知道的一切,这是一个将一切结合在一起的案例。 好的,我等一下。我从这里得到了我所要求的一切。我从来没有觉得在这里我会难过。我最好等一等,也许有人能帮我。 实际上,我希望您发布的对齐示例是虚构的,而不是实际的现实情况。
如果这是一个现场示例,我会质疑测量员是否有能力知道在没有任何地面标记的横截面上进行测量。
尊敬的eldon先生,我想从勘测员处获得的数据中获取路线一侧的3d点。我发送的excel表假设是从测量师那里得到的,现在我想看看图纸中的偏移点。怎么做?
页:
1
[2]