明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: shalei021647

如何实现删除图框外的所有东西

  [复制链接]
 楼主| 发表于 2011-12-11 18:44:55 | 显示全部楼层
langjs 发表于 2011-12-11 17:14
给你一段源码,能解决矩形命令绘制的图框选择问题,至于四条线段围成的矩形,我就爱莫能助了,图块做的图框我也 ...

呵呵,多谢高手,先能解决多段线的也好,太感谢了。望能再研究一下块和四条直线围成的图形怎么弄。
 楼主| 发表于 2011-12-11 18:59:11 | 显示全部楼层
langjs 发表于 2011-12-11 17:14
给你一段源码,能解决矩形命令绘制的图框选择问题,至于四条线段围成的矩形,我就爱莫能助了,图块做的图框我也 ...

确实能选择最外层矩形框,但是选择之后,如何再把这些矩形框之内的图形加进去啊。我要是直接把最后得到的那个选择集反选再删除之后,矩形框内的图形也被清掉了啊,最后只剩下矩形框了哦
发表于 2011-12-11 19:22:31 | 显示全部楼层
全选后排除

acet-ent-geomextents 能取得 左下右上两点

本例也反映出一个良好的绘图习惯可简化搭配的处理程序
(不过 Line 框可前置处理,但 USER 会倾向依赖程序)
发表于 2011-12-11 20:35:55 | 显示全部楼层
本帖最后由 langjs 于 2011-12-11 21:32 编辑
shalei021647 发表于 2011-12-11 18:59
确实能选择最外层矩形框,但是选择之后,如何再把这些矩形框之内的图形加进去啊。我要是直接把最后得到的 ...


得到最大矩形,求出最小点和最大点(我的这个函数里边本身就有计算矩形最小点和最大点的代码,稍微改一下就行了),然后再用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)
)
发表于 2011-12-11 22:44:47 | 显示全部楼层
貌似很高级。不懂。。
 楼主| 发表于 2011-12-12 00:35:31 | 显示全部楼层
langjs 发表于 2011-12-11 20:35
得到最大矩形,求出最小点和最大点(我的这个函数里边本身就有计算矩形最小点和最大点的代码,稍微改一下就 ...

多谢高手,测试了一下,的确好使,但是如何把这段代码和之前的那段代码放到个文件中啊。
 楼主| 发表于 2011-12-12 00:43:25 | 显示全部楼层
langjs 发表于 2011-12-11 20:35
得到最大矩形,求出最小点和最大点(我的这个函数里边本身就有计算矩形最小点和最大点的代码,稍微改一下就 ...

我是直接把两段代码复制到一个lisp文件中,运行也可以,不知道有没有问题哦。

点评

其实你想实现的功能挺难的,比如图框是块,却不是固定的块名,假如要删除的东西里边有图块,要把这个图块和图框块区别出来比较难.还有四条线段围成的图框,能够准确识别和区别也是难.程序是死的,人是活的,程序不能取代人  发表于 2011-12-12 11:38
上一段代码的前两句不要,只是保留自定义函数部分,和我的下一段代码拷贝到一起用下一段代码调用自定义函数  发表于 2011-12-12 11:01
发表于 2011-12-12 12:04:14 | 显示全部楼层
我觉得手工比程序方便
e all r  r  r  r
 楼主| 发表于 2011-12-12 12:23:17 | 显示全部楼层
shalei021647 发表于 2011-12-12 00:43
我是直接把两段代码复制到一个lisp文件中,运行也可以,不知道有没有问题哦。

唉,看来这也只有手动操作了,唉,都怪以前的画图习惯不好,才留下来这毛病。
 楼主| 发表于 2011-12-12 12:24:04 | 显示全部楼层
byghbcx 发表于 2011-12-12 12:04
我觉得手工比程序方便
e all r  r  r  r

是啊,看来也只有靠人脑来识别了,程序识别似乎总是不太理想。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-15 05:23 , Processed in 0.199308 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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