shalei021647
发表于 2011-12-11 18:44:55
langjs 发表于 2011-12-11 17:14 static/image/common/back.gif
给你一段源码,能解决矩形命令绘制的图框选择问题,至于四条线段围成的矩形,我就爱莫能助了,图块做的图框我也 ...
呵呵,多谢高手,先能解决多段线的也好,太感谢了。望能再研究一下块和四条直线围成的图形怎么弄。
shalei021647
发表于 2011-12-11 18:59:11
langjs 发表于 2011-12-11 17:14 static/image/common/back.gif
给你一段源码,能解决矩形命令绘制的图框选择问题,至于四条线段围成的矩形,我就爱莫能助了,图块做的图框我也 ...
确实能选择最外层矩形框,但是选择之后,如何再把这些矩形框之内的图形加进去啊。我要是直接把最后得到的那个选择集反选再删除之后,矩形框内的图形也被清掉了啊,最后只剩下矩形框了哦
Andyhon
发表于 2011-12-11 19:22:31
全选后排除框选
acet-ent-geomextents 能取得 框 左下右上两点
本例也反映出一个良好的绘图习惯可简化搭配的处理程序
(不过 Line 框可前置处理,但 USER 会倾向依赖程序)
langjs
发表于 2011-12-11 20:35:55
本帖最后由 langjs 于 2011-12-11 21:32 编辑
shalei021647 发表于 2011-12-11 18:59 http://bbs.mjtd.com/static/image/common/back.gif
确实能选择最外层矩形框,但是选择之后,如何再把这些矩形框之内的图形加进去啊。我要是直接把最后得到的 ...
得到最大矩形,求出最小点和最大点(我的这个函数里边本身就有计算矩形最小点和最大点的代码,稍微改一下就行了),然后再用ssget窗选,不就得到矩形内部的图元选择集了么?然后再反选,删除,就剩下最大矩形内部的东西了
(在图纸中试了一下,可惜运行效果不理想)
(defun c:zz (/ i j maxpoint minpoint name pmax2 pmin1 ss ss1 ss2 ss3)
(setq ss (ssget "x" (list '(0 . "LWPOLYLINE") '(90 . 4)))) ; 选取纸中所有矩形命令绘制的矩形
(setq ss (juxingguolv ss))
(setq ss1 (ssadd))
(repeat (setq i (sslength ss))
(setq name (ssname ss (setq i (1- i))))
(vla-getboundingbox (vlax-ename->vla-object name) 'minpoint 'maxpoint)
(setq pmax2 (vlax-safearray->list maxpoint)
pmin1 (vlax-safearray->list minpoint)
)
(setq ss2 (ssget "W" pmin1 pmax2))
(repeat (setq j (sslength ss2))
(setq name (ssname ss2 (setq j (1- j))))
(setq ss1 (ssadd name ss1))
)
)
(setq ss3 (ssget "X"))
(command "erase" ss3 "r" ss1 "")
(princ)
)
qq229918602
发表于 2011-12-11 22:44:47
貌似很高级。不懂。。
shalei021647
发表于 2011-12-12 00:35:31
langjs 发表于 2011-12-11 20:35 static/image/common/back.gif
得到最大矩形,求出最小点和最大点(我的这个函数里边本身就有计算矩形最小点和最大点的代码,稍微改一下就 ...
多谢高手,测试了一下,的确好使,但是如何把这段代码和之前的那段代码放到个文件中啊。
shalei021647
发表于 2011-12-12 00:43:25
langjs 发表于 2011-12-11 20:35 static/image/common/back.gif
得到最大矩形,求出最小点和最大点(我的这个函数里边本身就有计算矩形最小点和最大点的代码,稍微改一下就 ...
我是直接把两段代码复制到一个lisp文件中,运行也可以,不知道有没有问题哦。
byghbcx
发表于 2011-12-12 12:04:14
我觉得手工比程序方便
e all rrrr
shalei021647
发表于 2011-12-12 12:23:17
shalei021647 发表于 2011-12-12 00:43 static/image/common/back.gif
我是直接把两段代码复制到一个lisp文件中,运行也可以,不知道有没有问题哦。
唉,看来这也只有手动操作了,唉,都怪以前的画图习惯不好,才留下来这毛病。
shalei021647
发表于 2011-12-12 12:24:04
byghbcx 发表于 2011-12-12 12:04 static/image/common/back.gif
我觉得手工比程序方便
e all rrrr
是啊,看来也只有靠人脑来识别了,程序识别似乎总是不太理想。