NJZX05 发表于 2013-11-22 15:22:24

有关多义线的快速运算

(setq PL (entget (car (entsel))))
(if (= (cdr (assoc 0 PL)) "LWPOLYLINE")
(progn
(setq Pts (vl-remove nil (mapcar '(lambda(Item) (if (= (car Item) 10) (cdr Item))) PL)));;返回多义线的所有顶点
(setq Conv (vl-remove nil (mapcar '(lambda(Item) (if (= (car Item) 42) (cdr Item))) PL)));;返回多义线的所有凸度

(setq ChoAng nil PrePt (last Pts) Tmp (append Pts (list (car Pts))));;回环,并置前驱点为最末点
(while (setq SeqPt (cadr Tmp))(setqChoAng (append ChoAng (list (- (angle (car Tmp) SeqPt) (angle CurPt PrePt)))) PrePt (car Tmp) Tmp (cdr Tmp)));;求所有弦夹角
(setq ChoLen nil Tmp (append Pts (list (car Pts))));;回环,以便求所有弦长
(While Tmp (setq Pt (car Tmp) Tmp (cdr Tmp) ChoLen (append ChoLen (list (distance Pt (car Tmp))))));;求所有线段的弦长
);;progn
);;if

页: [1]
查看完整版本: 有关多义线的快速运算