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

是啊,看来也只有靠人脑来识别了,程序识别似乎总是不太理想。
页: 1 2 [3] 4 5
查看完整版本: 如何实现删除图框外的所有东西