autolisp如何实现快速选择满足条件的对象
本帖最后由 275437962 于 2013-12-27 22:15 编辑我想实现用lisp快速选择,长度既小于某个值,又大于某个值的直线或多段线!(如长度小于2.5,但又大于0.5)
选择对象后,还可进行其它操作,(如删除操作等)
本帖最后由 自贡黄明儒 于 2013-12-28 08:24 编辑
请使用<选择易>
;;获得minL maxL之间长度线的选择集
;;示例(sslength (MySS 150 200))
(defun MySS (minL maxL / E LEN N OBJ SS)
(if (setq ss (ssget '((0 . "*LINE"))))
(repeat (setq n (sslength ss))
(setq e (ssname ss (setq n (1- n))))
(setq obj (vlax-ename->vla-object e))
(setq Len (vlax-get obj 'Length))
(if (or (< Len minL) (> Len maxL))
(ssdel e ss)
)
)
)
ss
) 自贡黄明儒 发表于 2013-12-24 16:33 static/image/common/back.gif
请使用
那个我会,但很不方便,帮忙想想用lisp实现吧!! http://bbs.mjtd.com/thread-84736-1-1.html 菜卷鱼 发表于 2013-12-24 16:42 static/image/common/back.gif
http://bbs.mjtd.com/thread-84736-1-1.html
里面是有不少,不过没有满足要求的,有一个满足条件圆的选择,可以选择满足条件的圆,但选择后,不能对这些圆做任何操作了 http://bbs.mjtd.com/thread-108654-1-1.html snddd2000 发表于 2013-12-25 08:43 static/image/common/back.gif
http://bbs.mjtd.com/thread-108654-1-1.html
这个我看过了,程序有问题!!1 看看2楼能否满足你的要求
(setq ss (myss 0.5 2.5))这后,你就可以处理你的选择集了 自贡黄明儒 发表于 2013-12-28 08:28 看看2楼能否满足你的要求 (setq ss (myss 0.5 2.5))这后,你就可以处理你的选择集了
猜测楼主还需要亮显选择集,可以删除等操作,具体什么操作,没有阐述。
;; 需要e派工具箱(XCAD)的支持:http://yunpan.cn/QXQKsW9gAPmpF
(defun c:tt ()
(defun aaa (ss d1 d2 / ss1)
(setq lst (xyp-ss2list ss)
lst (vl-remove-if
'(lambda (x)
(or (< (xyp-CurveLength x) d1)
(> (xyp-CurveLength x) d2)
)
)
lst
)
ss1 (xyp-list2ss lst)
)
(if ss1
(sssetfirst ss1 ss1)
)
)
(if (setq ss (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE"))))
(aaa ss 500 5000)
)
)
页:
[1]