;取得3dpolyline的所有节点,因3dpolyline节点信息不信在子图元中,而entget函数只能获取POLYLINE主图元数据
;因此要使用entnext函数依次获取所有VERTEX图元的数据,直到遇到SEQEND图元为止
(defun c:g-polyline-vertex ()
(setq entname (car (entsel "\n请选取二维多段线或三维多段线:")))
(setq ent_id (cdr (assoc 0 (entget entname))))
;判断第一个图元是不是二维多段线或三维多段线
(if (= ent_id "POLYLINE")
(progn
(princ (GetPolylineVertex entname))
)
(print "不是二维多段线或三维多段线!")
)
(princ)
)
(defun GetPolylineVertex (entname / entname1 ent_id vertex all_vertex)
(setq all_vertex ())
(setq entname1 (entnext entname))
(setq ent_id (cdr (assoc 0 (entget entname1))))
(while (/= ent_id "SEQEND")
;遍历所有VERTEX图元,取得所有节点
(setq vertex (cdr (assoc 10 (entget entname1))))
(setq all_vertex (append all_vertex (list vertex)))
(if (setq entname1 (entnext entname1))
(setq ent_id (cdr (assoc 0 (entget entname1))))
)
)
(setq all_vertex all_vertex)
)