来自:http://blog.3snews.net/space.php?uid=13924959&do=blog&id=70174
作者:毛毛虫
Demo下载:CAD增强属性块的还原
密码:gqmi
CAD中的“增强块属性”与“块”基本相同,但前者更集中更快捷的修改、定义某些属性。以高程点数据为例我们来说明如何用FME将这类数据写入到数据库中,并从数据库中还原回CAD。
现有一副含高程点图层的DWG文件,在CAD中打开这个文件:
可以看到该文件中含有一个高程点和一个数字表示高程值。当我们选中点或数字时,会发现会同时选中另一个,也就是同时选中点和数字,这就说明点和数字时一个整体。现在选中其中一个要素,点击右键:
选择编辑属性,打开“增强属性编辑器”窗口:
这个窗口中显示了块对应的属性名称、值、字体样式、所在图层等属性。
现在我们在FME中打开这个DWG文件,查看属性:
各个属性字段说明如下:
fme_attrib_info{N}.field_name | 保存属性的名称 |
fme_attrib_info{N}.field_size | 保存属性的大小 |
fme_attrib_info{N}.field_value | 保存属性的值 |
fme_attrib_info{N}.location_x fme_attrib_info{N}.location_y fme_attrib_info{N}.location_z | 为了显示属性的目的,指定了块属性的精确位置。在FME中,如果对齐方式不是baseline_left,可能会与AutoCAD中的不同 |
fme_attrib_info{N}.align_x fme_attrib_info{N}.align_y | 为了显示属性的目的,指定了块属性的对齐位置。在FME中,如果对齐方式不是baseline_left,可能会与AutoCAD中的不同support these FME attributes. |
fme_attrib_info{N}.style | 属性的字体样式的名称 |
fme_attrib_info{N}.width_factor | X方向上的缩放值,使得字体更宽或更窄 |
fme_attrib_info{N}.justification | 该属性相对于插入点的对其方式,包括: top_left|top_center|top_right|top_middle|top_aligned |top_fit|middle_left|middle_center|middle_right|middle_middle|middle_aligned|middle_fit| bottom_left|bottom_center|bottom_right|bottom_middle |bottom_aligned |bottom_fit |baseline_left |baseline_center | baseline_right|baseline_middle |baseline_aligned |baseline_fit |
fme_attrib_info{N}.rotation | 表示该属性的旋转角度 |
fme_attrib_info{N}.oblique | 表示该属性的倾斜角度 |
fme_attrib_info{N}.heigh | 指定了该属性的告诉 |
fme_attrib_info{N}.isVisible | 这个属性表示是否显示相应属性 |
在将DWG数据写入数据库时,需要将块相应的属性名称、属性值、属性的对齐位置等属性写入到数据库中。在这里,根据需要将点入库或点与注记都写入到数据库。注意下FME中的设置:
大家比较熟悉的可能是是否展开块的参数“Expand Blocks Into Entities”。在这里要说一下“Read Visible Attributes as Text Entities”这个参数是说,是否要将可见的属性作为文本实体。不管我们是否展开块,如果“Read Visible Attributes as Text Entities”这个参数勾选,则我们在FME中都能读取到属性要素,如下:
如果我们不勾选“Read Visible Attributes as Text Entities”这个参数,则只能看到块要素(不论是否展开块),如下图:
还原的时候,我们只需要将块图层还原就可以了,也就是属性不是从数据库中读取文本得到的,而是根据块的属性设置来得到的。对块做如下的类似设置,就可以在DWG中得到增强属性快了。
其中注意的是一定要将fme_attrib_info{N}.isVisible设置为TURE,否则即使块本身含有属性,也不会显示。
如对文章有任何疑问,[email protected]