liuyj 发表于 2012-5-26 21:13:44

如何改变含有多个圆弧段的多段线的圆弧段宽度

如何一次将多段线中的圆弧段的宽度改为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)
)

liuyj 发表于 2012-5-27 08:36:32

自己顶一下,别沉下去了
页: [1]
查看完整版本: 如何改变含有多个圆弧段的多段线的圆弧段宽度