明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2013|回复: 5

批量删除小于一定长度的多段线和直线问题瓶颈

[复制链接]
发表于 2015-1-28 15:05:56 | 显示全部楼层 |阅读模式
在此我写了个删除图形内小于一定长度的小程序,可不知哪里出的问题,我的界定方式明明是小于等于,而等于却不发挥作用。且LINE和LWPOLYLINE删除的情况也有差异,第一次运行删除成功,若将夹点移动拉长多段线(直线),再UNDO回来,程序却无法删除满足条件的线了。还请版主赐教啊。
  1. (defun c:minl(/ ltdl ss lst)
  2.   (setq dim (getvar 'dimzin))
  3.   (setvar 'dimzin 0)
  4.   (princ "\n 删除小于、等于一定长度的直线或者多段线")
  5.   (initget 4)
  6.   (setq ltdl (getreal "\n 请输入可容许的最小线段长度==>> "))
  7.   (setq ss (ssget '((0 . "LWPOLYLINE,LINE"))))
  8.   (setq lst (ss->lst ss))
  9.   (setq lst (mapcar 'vlax-ename->vla-object lst))
  10.   (deleteminlength lst ltdl)
  11.   )
  12. ;;删除小于容许vla实体值函数
  13. (defun deleteminlength ( lst ltdl / )
  14.   (vl-remove-if 'not (mapcar
  15.            '(lambda (x)
  16.         (if (<= (vla-get-length x) ltdl)
  17. ;;;          x
  18.           (vla-delete x)
  19.         )
  20.       )
  21.            lst
  22.          )
  23.   )
  24.   (setvar 'dimzin dim)
  25. )


  26. (defun ss->lst (SS / I EN LST_EN)
  27.     (setq LST_EN '()
  28.     I 0
  29.     )
  30.     (repeat (sslength SS)
  31.   (setq EN     (ssname SS I)
  32.         LST_EN (cons EN LST_EN)
  33.         I       (1+ I)
  34.   )
  35.     )
  36.     ;;返回
  37.     (reverse LST_EN)
  38. )

发表于 2015-1-28 20:35:42 | 显示全部楼层
我怎么测试了下,是正常的
发表于 2015-1-29 11:37:47 | 显示全部楼层
autocad 2011 测试---程序正常!
发表于 2015-1-29 11:45:41 | 显示全部楼层
我也试了下,没什么问题啊,正常使用
发表于 2020-7-6 21:29:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2020-11-25 09:03:40 | 显示全部楼层
500w008 发表于 2020-7-6 21:29
(defun c:xx ();repeat函数
(setq bs (ssget '((0 . "line")(8 . "beam"))))
(setq si -1)

(defun c:xx ();repeat函数
(setq bs (ssget '((0 . "line"))))
(setq si -1)
(setq ss_n (sslength bs))
(repeat ss_n
  (progn
     (setq s_ent (ssname bs (setq si (1+ si))))
     (setq ss_att (entget s_ent))
     (setq ss_s (cdr (assoc 10 ss_att)) ss_e (cdr (assoc 11 ss_att)))
     (setq dd (distance ss_s ss_e))
     (IF (< dd 1000) (command "erase" s_ent ""))
  )
);repeat
(princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 07:10 , Processed in 0.175057 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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