明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2094|回复: 1

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

[复制链接]
发表于 2012-5-26 21:13 | 显示全部楼层 |阅读模式
如何一次将多段线中的圆弧段的宽度改为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)
)
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2012-5-27 08:36 | 显示全部楼层
自己顶一下,别沉下去了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 09:51 , Processed in 0.326019 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表