批量提取LWPOLYLINE顶点坐标无法为变量赋值
本帖最后由 newbuser 于 2013-8-19 16:58 编辑(defun ddzb (e / befor_xy el en_list group_xy i m)
(setq el (entget e))
(setq Befor_xy (member (assoc 10 el) el))
(setq Group_xy (reverse (member (assoc 42 (reverse Befor_xy))
(reverse Befor_xy)
)
)
)
(setq i 0)
(setq M_list nil)
(repeat (length Group_xy)
(setq M_list (append
M_list
(list (cdr (nth i Group_xy)))
)
)
(setq i (+ i 4))
)
(setq En_list (vl-remove nil (setq M_list M_list)))
(print En_list)
(princ)
)
;;;以上为收集单条多段线顶点坐标函数
(defun c:sjzb ( / ff i ls n n_e num ss xy)
(if (setq ss (ssget '((0 . "LWPOLYLINE"))))
(progn
(setq ff (open "c:/多段线顶点坐标.txt" "w"))
(setq n 0)
(repeat (sslength ss)
(setq n_e (ssname ss n)) ;;;;;;;;;;;;;;;;;;;;;
(setq xy (ddzb n_e)) ;;;此处为何不能为xy赋值?;;;
(setq i (+ n 1)) ;;;;;;;;;;;;;;;;;;;;;
(setq num (itoa i))
(setq ls (strcat num ",," xy))
(write-line ls ff)
(setq n (+ n 1))
)
)
)
(close ff)
)
(prompt "坐标已导出到c:\根目录下")
(prin1) ,自己先顶一下,哪位高手能够解释一哈。 ddzb的最后一行要写上你要反回的变量名称En_list
把这2句删除
(print En_list)
(princ)
并且自定义函数(ddzb e)计算出的坐标组无法判断数据类型,但结果和其他顶点坐标计算函数是一样的。 ahwx0814 发表于 2013-8-19 16:59 static/image/common/back.gif
ddzb的最后一行要写上你要反回的变量名称En_list
把这2句删除
已经遵照阁下的方法修改成功了。
我就是不明白,在改之前也能够返回各定点的坐标,但提出的坐标组对任何函数都免疫,无法car cdr setq ,而且用vlax-variant-type都无法确定变体类型。
页:
[1]