hehoubin 发表于 2013-11-17 16:01:49

删除短线

请大侠帮忙写个程序。
删除长度 = 0.1~0.5 MM之间的直线。

谢谢

llsheng_73 发表于 2013-11-17 16:10:53

本帖最后由 llsheng_73 于 2013-11-17 16:19 编辑

(defun c:XX(/ ss a);;命令自己改
(defun SstoEs(ss / a en lst)
    (if ss(progn(setq a -1)
          (while(setq en(ssname ss(setq a(1+ a))))(setq lst (cons en lst)))))
    lst)
(setq ss(SstoEs(ssget"X"'((0 . "LINE")))))
(foreach a ss
   (if(<= 0.0001(vlax-get-property(vlax-ename->vla-object a) 'Length) 0.0005)(entdel a));;距离自己调整
    ))

wszxf 发表于 2013-11-17 16:15:57

(defun c:tt (/ LINE-LENGTH N SS SS_N)
(setq ss (ssget '((0 . "line"))))
(setq n -1)
(repeat (sslength ss)
    (setq ss_n (Vlax-Ename->Vla-Object (ssname ss (setq n (1+ n)))))
    (setq line-length (vla-get-length ss_n))
    (if        (and (> line-length 0.1)
             (< line-length 0.5)
        )
      (vla-delete ss_n)
    )
)
(princ)
)

hehoubin 发表于 2013-11-17 16:24:55

谢谢 !!!非常管用。

香田里浪人 发表于 2013-11-17 19:43:59

只能删除直线不能删除多义线

llsheng_73 发表于 2013-11-18 08:31:14

本帖最后由 llsheng_73 于 2013-11-18 08:34 编辑

香田里浪人 发表于 2013-11-17 19:43 static/image/common/back.gif
只能删除直线不能删除多义线
人家需要的是“删除长度.............. 的直线”
如果要别的线(setq ss(SstoEs(ssget"X"'((0 . "*LINE")))))

wxa123wl 发表于 2014-4-22 19:10:21

受用了!刚刚改了一下,用的上
页: [1]
查看完整版本: 删除短线