DXF中的倾斜标注比较奇怪,尽管在文档中指出了倾斜标注的倾斜角的组码52,但实际我发现该组码并不可用,AutoCAD并不支持该组码,如果DXF文件中指定该组码,AutoCAD甚至根本打不开这个文件。那么AutoCAD如何保存倾斜标注呢?
仔细对比发现,在DXF中的实体部分,倾斜标注与正常标注基本相同,只是标注线的定义点是根据倾斜角算出来的,是不是把这里改掉就可以了呢?答案是否定的。
原来,AutoCAD在保存标注的时候,除了保存该标注的构建信息外(不保存倾斜角),还引用了一个匿名块(组码2),该匿名块中包括了构成该标注的所有实体,定义点,界限线,箭头,标注线和文字。普通标注在保存到DXF中时,我们不需要构造这个匿名块,AutoCAD会根据标注的基本信息重构该标注的组成实体,但由于倾斜标注中没有保存倾斜角的信息,所以为了实现倾斜标注,我们必须自己为倾斜标注构造匿名块及所有实体。
构造实体,程序中是这样实现的:
1) 根据定义点构造标注线的构造线,即标注线所在的直线。
2)根据界限点与倾斜角构造两条界限线的构造线,用这两条构造线与1)中求出的构造线求交,得出标注线的两端点,即箭头定点。
3)根据dimexe,dimexo及倾斜角算出界限线的端点偏移矢量,分别与界限点及标注线定点做矢量加法,算出界限线的端点
4)根据标注的DIMStyle算出标注文字位置,标注文字有可能是用户指定,也可能要程序自动算出
5)引用匿名块的名字有命名规则,*Dn,n自动计数
这样便在DXF中实现了倾斜标注,AutoCAD也可以正常显示该倾斜标注,大功告成?
答案依然否定,在AutoCAD中操作该标注时,如果你要移动该标注,则该标注马上又变成了普通标注,还有什么地方需要设置呢?我也在继续摸索。。。:(