如何改变含有多个圆弧段的多段线的圆弧段宽度
如何一次将多段线中的圆弧段的宽度改为60?以下的代码只能改变其中的一段,实现不了需求。(defun pl-hasbugle (/ p1 p2 pt0 el ent ent1 sublst)
(setq en (car (entsel))
el (entget en)
)
(setq ent el
ent1 el
)
(while (and (setq p1 (assoc 10 ent1)) (setq sublst (assoc 42 ent)))
(if (and (= (car sublst) 42) (/= (cdr sublst) 0.0))
(progn (if (null (setq p2 (assoc 10 (cdr (member p1 ent1)))))
(setq p2 (assoc 10 el))
)
(setq pt0 (mx_midp (cdr p1) (cdr p2)))
(pi_main)
)
)
(setq ent(cdr (member sublst ent))
ent1 (cdr (member p1 ent1))
)
)
)
(defun pi_main (/ E0 E1 E210 E70 E90)
(setq e70(cdr (assoc 70 el))
e90(cdr (assoc 90 el))
e210 (assoc 210 el)
e0 nil
e1 el
)
(while (/= (caar e1) 10)
(setq e0 (cons (car e1) e0)
e1 (cdr e1)
)
)
(setq e0 (reverse e0)
e1 (reverse (cdr (reverse e1)))
)
(if (= e70 1)
(setq e1 (append e1 (list (car e1))))
)
(pi_tst)
)
(defun pi_tst (/ AT2 I PT0 PT1 PT2 PT3 SG) ;查找PL线段
(setq i 0)
(while (< i e90)
(setq pt1 (cdr (nth (+ (* i 4) 0) e1))
at2 (cdr (nth (+ (* i 4) 3) e1))
pt3 (cdr (nth (+ (* i 4) 4) e1))
)
(if (/= at2 0.0)
(progn (setq sg i) (pi_w))
)
(setq i (1+ i))
)
)
(defun pi_w (/ I W0 W1 W2) ;改线宽
(setq w1 60
w2 60
)
(setq w0 nil
i-1
)
(mapcar (function (lambda (x)
(if (/= (car x) 43)
(setq w0 (cons x w0))
)
)
)
e0
)
(if (= e70 1)
(setq e1 (reverse (cdr (reverse e1))))
)
(setq e0 (mapcar (function (lambda (x)
(setq i (1+ i))
(if (= (+ (* sg 4) 1) i)
(cons 40 w1)
(if (= (+ (* sg 4) 2) i)
(cons 41 w2)
x
)
)
)
)
e1
)
el (append (reverse w0) e0 (list e210))
)
(entmod el)
(entupd en)
)
自己顶一下,别沉下去了
页:
[1]