大神看下,求输入tt,选着一个填充然后再框选,选出和第一次选择的填充面积相同填充
大神看下,求输入tt,选着一个填充然后再框选,选出和第一次选择的填充面积相同的填充(defun c:tt ( / fuzz getarea area_tmp ss en_now)
(vl-load-com)
(setq fuzz 0) ;设置容错值
(setq getarea (function (lambda (x) (Vlax-Get (Vlax-Ename->Vla-Object x ) 'Area))))
(setq en (car (entsel "\n选择样本")))
(while (not (and en (equal"HATCH" (cdr (assoc 0 (entget en))))) )
(setq en (car (entsel "\n样本不为填充,请重新选择样本")))
)
(setq area_tmp (apply getarea (list en)))
(setq ss (ssget '((0 . "HATCH"))));框选对象
(repeat (setq i (sslength ss))
(setq en_now (ssname ss (setq i (1- i))))
(if (not (equal area_tmp (apply getarea (list en_now)) fuzz));如果面积不相等
(ssdel en_now ss);从选择集中删除
;(redraw en_now 3);将对象亮显
)
)
(command "SELECT" ss "" );选择对象
)
(princ)
需要删除就e空格 p空格 本帖最后由 wyl219 于 2019-11-21 11:28 编辑
加入了样本选择判断,如果选择的不为填充,要求重新选择
(defun c:tt ( / fuzz getarea area_tmp ss en_now)
(vl-load-com)
(setq fuzz 0) ;设置容错值
(setq getarea (function (lambda (x) (Vlax-Get (Vlax-Ename->Vla-Object x ) 'Area))))
(setq en (car (entsel "\n选择样本")))
(while (not (and en (equal"HATCH" (cdr (assoc 0 (entget en))))) )
(setq en (car (entsel "\n样本不为填充,请重新选择样本")))
)
(setq area_tmp (apply getarea (list en)))
(setq ss (ssget '((0 . "HATCH"))));框选对象
(repeat (setq i (sslength ss))
(setq en_now (ssname ss (setq i (1- i))))
(if (not (equal area_tmp (apply getarea (list en_now)) fuzz));如果面积不相等
(ssdel en_now ss);从选择集中删除
(redraw en_now 3);将对象亮显
)
)
;(command "SELECT" ss );选择对象
)
(princ)
(defun c:tt ( / fuzz getarea area_tmp ss en_now)
(vl-load-com)
(setq fuzz 0) ;设置容错值
(setq getarea (function (lambda (x) (Vlax-Get (Vlax-Ename->Vla-Object x ) 'Area))))
(setq area_tmp (apply getarea (list (setq en (car (entsel "\n选择样本"))))))
(setq ss (ssget '((0 . "HATCH"))));框选对象
(repeat (setq i (sslength ss))
(setq en_now (ssname ss (setq i (1- i))))
(if (not (equal area_tmp (apply getarea (list en_now)) fuzz));如果面积不相等
(ssdel en_now ss);从选择集中删除
)
)
;(command "SELECT" ss );选择对象
)
(princ) 可以在代码中写死fuzz容错值,也可以修改为getint函数交互获得.
最后注释掉的command 命令是为了让你检查的,实际应用的时候用ss这个选择集就行 谢谢 !wyl219分享程序!!!!!! wyl219 发表于 2019-11-20 11:15
可以在代码中写死fuzz容错值,也可以修改为getint函数交互获得.
最后注释掉的command 命令是为了让你检查的 ...
选择样本; 错误: ActiveX 服务器返回错误: 未知名称: "AREA"
大神看下 664571221 发表于 2019-11-21 09:04
选择样本; 错误: ActiveX 服务器返回错误: 未知名称: "AREA"
是不是选错对象了,比如选中的是直线等没有面积的对象 AUTOCAD 2012 测试 O.K. wyl219 发表于 2019-11-21 11:09
加入了样本选择判断,如果选择的不为填充,要求重新选择
(defun c:tt ( / fuzz getarea area_tmp ss en_no ...
你好大神,最后能不能让这些处于选中的状态,以便我可以删除或者复制移动的操作
页:
[1]
2