图纸比较算法的疑问
相信很多工具箱都有图纸比较找出2个图纸的不同之处的功能(结构专业的计算书用的比较多)。其中的算法由于封装的原因无法得知。说下思路:
1、最原始的的方法。源图元的坐标点。通过SSGET找到对应的图元(其中可能还有判断、排除才能找到对应的图元)。再比较源图元和
目标图元的不同。优点:方法思路很简单,处理少数图元的还可以。缺点:遇到图元数很多时候。很慢。甚至会算死机。
2、把原始图和目标图都做转换成比较点表处理。比如源图元和目标图元相对各自基准点的极坐标保存为表。再比较这个表,从而找出不
同。优点:计算方法可以进一步优化。计算速度比第一种方法快很多(CAD对表的操作比选择集感觉快些)。缺点:图纸过大时还是
很难处理。
上面2个方法是我目前想到的。希望大神们给出算法,就是要节省时间达到比较图纸的不同。
两图同源的话可以考虑用句柄进行比较 根据一个图得到所有图元的关键数据(去掉-1,5,330,360等类似的)组成表
在另一个图中,一个个图元用同样的关键数据进行assoc,返回NIL至少说明该图元有改动,如果没问题,从表中去掉该项,最终表里边留下的图元和所有ASSOC返回nil的图元就是两个图上不相同的部分
页:
[1]