欢迎来到CADTutor Alex
下面是一个可能的程序的草稿,但代码有望按要求执行:
- (defun c:poly23dpoly ( / enx idx lst pll ptl sel )
- (princ "\nSelect points & 2d polylines: ")
- (if (setq sel (ssget '((0 . "LWPOLYLINE,POINT"))))
- (progn
- (repeat (setq idx (sslength sel))
- (setq enx (entget (ssname sel (setq idx (1- idx)))))
- (if (= "POINT" (cdr (assoc 0 enx)))
- (setq ptl (cons (cdr (assoc 10 enx)) ptl))
- (setq pll (cons (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) enx)) pll))
- )
- )
- (foreach grp pll
- (foreach vtx grp
- (if (setq vtx (car (vl-member-if '(lambda ( a ) (equal vtx (list (car a) (cadr a)) 1e-4)) ptl)))
- (setq lst (cons vtx lst))
- )
- )
- (if (cdr lst)
- (progn
- (entmake '((0 . "POLYLINE") (70 . ))
- (foreach vtx lst
- (entmake
- (list
- '(00 . "VERTEX")
-
- (cons 10 vtx)
- )
- )
- )
- (entmake '((0 . "SEQEND")))
- )
- )
- (setq lst nil)
- )
- )
- )
- (princ)
- )
|