bbkcylh 发表于 2016-4-20 06:31:12

求清理重复实体对象方法

本帖最后由 bbkcylh 于 2016-4-20 20:45 编辑

      现在有一个地形图,面积比较大,几十平方公里,由于作图原因里面存在较多重复的图形数据,需要予以删除。请问用VBA来编程实现,应该怎么来做。主要是怎么判断图形中2个实体对象是重叠的,对象包括:线、文字、块等等。谢谢
       因为图形数据量比较大,主要考虑两点:一是怎么判断重叠,二是效率。

       因为数据量比较大,所以把一个对象分别与其余对象进行比对是不现实的,根本无法忍受。我采用的方法是,首先读取当前对象的边框,然后在这个矩形范围内选择所有实体,并进行比对。这样效率可以明显提高,每个实体对象的比对次数都不会太高。但是难以解决的还是怎么来快速判断是否重叠上,感觉非常麻烦。。。。

mikewolf2k 发表于 2016-4-20 09:09:40

现在的判断重复实体,其实都不是看图面重叠的,是比较两个元素的某些属性,比如顶点半径等,如果一样则认为重复,删掉一个。这么做的话,每个元素要跟其余所有元素比一次,所以效率是很低的,而且判断依据相当的不准,比如两根线,一个1-3,一个1-5,从图面上来看,1-3完全在1-5中,是重叠的,但是根据前面算法,顶点不一样,也就不是重叠的了。
楼主最好仔细检查下自己图纸中的重复图形的具体情况,看能不能针对性的找出适合自己的算法。

zzyong00 发表于 2016-4-20 19:29:56

这程序如果自己编,还是有维度的,效率的重点。通用选择分片区进行对比,效率能高一点。
如果安装有express tool,直接用overkill,高版本cad自带这功能了

bbkcylh 发表于 2016-4-20 20:45:58

mikewolf2k 发表于 2016-4-20 09:09 static/image/common/back.gif
现在的判断重复实体,其实都不是看图面重叠的,是比较两个元素的某些属性,比如顶点半径等,如果一样则认为 ...

因为数据量比较大,所以把一个对象分别与其余对象进行比对是不现实的,根本无法忍受。我采用的方法是,首先读取当前对象的边框,然后在这个矩形范围内选择所有实体,并进行比对。这样效率可以明显提高,每个实体对象的比对次数都不会太高。但是难以解决的还是怎么来快速判断是否重叠上,感觉非常麻烦。。。。

bbkcylh 发表于 2016-4-20 20:46:43

mikewolf2k 发表于 2016-4-20 09:09 static/image/common/back.gif
现在的判断重复实体,其实都不是看图面重叠的,是比较两个元素的某些属性,比如顶点半径等,如果一样则认为 ...

因为数据量比较大,所以把一个对象分别与其余对象进行比对是不现实的,根本无法忍受。我采用的方法是,首先读取当前对象的边框,然后在这个矩形范围内选择所有实体,并进行比对。这样效率可以明显提高,每个实体对象的比对次数都不会太高。但是难以解决的还是怎么来快速判断是否重叠上,感觉非常麻烦。。。。

bbkcylh 发表于 2016-4-20 20:47:49

zzyong00 发表于 2016-4-20 19:29 static/image/common/back.gif
这程序如果自己编,还是有维度的,效率的重点。通用选择分片区进行对比,效率能高一点。
如果安装有expres ...

知道这个工具,也用过,很不错。
但总想挑战下自己,谢谢
页: [1]
查看完整版本: 求清理重复实体对象方法