CAD中怎样一次性删除重复图元,块等一些重叠对象?
比如说把N条重叠的直线,或块删除只剩一个,还有什么方法能把两个不小心移动重合在一起的图框及内容分离出来?哦,多谢liminzheng的回答!那如何才能实现两个图框及其图形...
比如说把N条重叠的直线,或块删除只剩一个,还有什么方法能把两个不小心移动重合在一起的图框及内容分离出来?
哦,多谢 liminzheng的回答!那如何才能实现两个图框及其图形内容的分离呢? 展开
哦,多谢 liminzheng的回答!那如何才能实现两个图框及其图形内容的分离呢? 展开
7个回答
展开全部
1.
在AutoCAD2016版本里面,命令【overkill】(其它的版本不清楚有没有),可以删除重叠的对象(包括直线,多段线,文字等等)
2.
安装天正插件,里面有【删除重元】功能,把重叠的对象删除。
3.
这个删除重叠对象也有缺点,如果对象复杂会造成图元缺失。
4.
你的情况有两个方法给你参考:
1)autoCAD有【自动保存】功能,每10分钟保存一次,右键,选项,在文件里面查看自动保存路径,找到这个文件夹,把自动保存的文件后缀修改为【dwg】,这样打开文件就可以找回最近的文件,减少损失。
2)如果会编程的话,自己编辑一个程序,由于不清楚你的图纸情况无法测试程序,只是提供一个思路:
5.
(defun C:tes ( / &dis1 &dis2 &k1 &k2 &kw1 &ob1 &ob2 c01 c02 c621 c622 c81 c82 i n1 n2 pt1 pt11 pt12 pt2 pt21 pt22)
(vl-load-com)
(princ "\n请选择要删除重叠的对象")
(if (setq &kw1 (ssget))
(progn
(while (setq &k1 (ssname &kw1 0))
(setq &kw1 (ssdel &k1 &kw1) c01 (cdr (assoc 0 (entget &k1))))
;得到图元名
(setq &ob1 (vlax-ename->vla-object &k1));变VBAX对象
(vla-GetBoundingBox &ob1 'pt1 'pt2);包围盒检查
(setq pt11 (Vlax-SafeArray->List pt1) pt21 (Vlax-SafeArray->List pt2))
;得到左下角及右上角坐标
(setq c81 (vla-get-layer &ob1) c621 (vla-get-color &ob1) i 0)
;得到图层及颜色,如果有其它相同的地方,越详细越好
(setq n1 (sslength &kw1) n2 1)
(if (> n1 1)
(progn
(while (setq &k2 (ssname &kw1 i))
(setq i (1+ i) c02 (cdr (assoc 0 (entget &k2))))
(setq &ob2 (vlax-ename->vla-object &k2))
(vla-GetBoundingBox &ob2 'pt1 'pt2)
(setq pt12 (Vlax-SafeArray->List pt1) pt22 (Vlax-SafeArray->List pt2))
(setq c82 (vla-get-layer &ob2) c622 (vla-get-color &ob2))
(if (and (= c01 c02) (< (setq &dis1 (distance pt11 pt12)) 0.01) (<(setq &dis2 (distance pt21 pt22)) 0.01) (= &dis1 &dis2) (= c81 c82) (= c621 c622)) (setq n2 2) )
)
)
)
(if (= n2 2) (vla-delete &ob1) )
)
)
)
(princ)
);确认坐标相同,图元名相同,图层相同,颜色相同,就确定是重元删除一个。
;没有你的图纸,这个程序没有测试,基本上按这个思路来检查
在AutoCAD2016版本里面,命令【overkill】(其它的版本不清楚有没有),可以删除重叠的对象(包括直线,多段线,文字等等)
2.
安装天正插件,里面有【删除重元】功能,把重叠的对象删除。
3.
这个删除重叠对象也有缺点,如果对象复杂会造成图元缺失。
4.
你的情况有两个方法给你参考:
1)autoCAD有【自动保存】功能,每10分钟保存一次,右键,选项,在文件里面查看自动保存路径,找到这个文件夹,把自动保存的文件后缀修改为【dwg】,这样打开文件就可以找回最近的文件,减少损失。
2)如果会编程的话,自己编辑一个程序,由于不清楚你的图纸情况无法测试程序,只是提供一个思路:
5.
(defun C:tes ( / &dis1 &dis2 &k1 &k2 &kw1 &ob1 &ob2 c01 c02 c621 c622 c81 c82 i n1 n2 pt1 pt11 pt12 pt2 pt21 pt22)
(vl-load-com)
(princ "\n请选择要删除重叠的对象")
(if (setq &kw1 (ssget))
(progn
(while (setq &k1 (ssname &kw1 0))
(setq &kw1 (ssdel &k1 &kw1) c01 (cdr (assoc 0 (entget &k1))))
;得到图元名
(setq &ob1 (vlax-ename->vla-object &k1));变VBAX对象
(vla-GetBoundingBox &ob1 'pt1 'pt2);包围盒检查
(setq pt11 (Vlax-SafeArray->List pt1) pt21 (Vlax-SafeArray->List pt2))
;得到左下角及右上角坐标
(setq c81 (vla-get-layer &ob1) c621 (vla-get-color &ob1) i 0)
;得到图层及颜色,如果有其它相同的地方,越详细越好
(setq n1 (sslength &kw1) n2 1)
(if (> n1 1)
(progn
(while (setq &k2 (ssname &kw1 i))
(setq i (1+ i) c02 (cdr (assoc 0 (entget &k2))))
(setq &ob2 (vlax-ename->vla-object &k2))
(vla-GetBoundingBox &ob2 'pt1 'pt2)
(setq pt12 (Vlax-SafeArray->List pt1) pt22 (Vlax-SafeArray->List pt2))
(setq c82 (vla-get-layer &ob2) c622 (vla-get-color &ob2))
(if (and (= c01 c02) (< (setq &dis1 (distance pt11 pt12)) 0.01) (<(setq &dis2 (distance pt21 pt22)) 0.01) (= &dis1 &dis2) (= c81 c82) (= c621 c622)) (setq n2 2) )
)
)
)
(if (= n2 2) (vla-delete &ob1) )
)
)
)
(princ)
);确认坐标相同,图元名相同,图层相同,颜色相同,就确定是重元删除一个。
;没有你的图纸,这个程序没有测试,基本上按这个思路来检查
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用overkill,这个命令来清除重复的图元。这个命令在express工具里
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
天正建筑里面有个清除重线的命令,不过用起来会把不希望删除的重复部分也给删除了。
晓东论坛里面有大量cad插件,包括清理重复图线的插件,可以找出来用。
我觉得不严重影响的情况下,最好不要清除重复的东西吧。
晓东论坛里面有大量cad插件,包括清理重复图线的插件,可以找出来用。
我觉得不严重影响的情况下,最好不要清除重复的东西吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
天正有个菜单,删除重迭图元,不过你这种这么复杂的地形图,删起来很慢,我试过。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询