newbuser 发表于 2013-8-19 16:16:14

批量提取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)

newbuser 发表于 2013-8-19 16:17:37

,自己先顶一下,哪位高手能够解释一哈。

ahwx0814 发表于 2013-8-19 16:59:35

ddzb的最后一行要写上你要反回的变量名称En_list

把这2句删除
(print En_list)
(princ)

newbuser 发表于 2013-8-19 16:59:39

并且自定义函数(ddzb e)计算出的坐标组无法判断数据类型,但结果和其他顶点坐标计算函数是一样的。

newbuser 发表于 2013-8-19 17:18:34

ahwx0814 发表于 2013-8-19 16:59 static/image/common/back.gif
ddzb的最后一行要写上你要反回的变量名称En_list

把这2句删除


已经遵照阁下的方法修改成功了。
我就是不明白,在改之前也能够返回各定点的坐标,但提出的坐标组对任何函数都免疫,无法car cdr setq ,而且用vlax-variant-type都无法确定变体类型。
页: [1]
查看完整版本: 批量提取LWPOLYLINE顶点坐标无法为变量赋值