span8
span4
FME可以自动提取AutoCAD块属性数据。AutoCAD块能够包含属性(数据)信息。在AutoCAD中,当插入带有属性定义的块时,会提示用户输入数据。若要编辑AutoCAD内的区块,用户会看到一个区块属性编辑表格(AutoCAD块属性显示在AutoCAD下图)。AutoCAD中的每个实体都有一个惟一的不可更改的句柄,可用作惟一的ID。跟踪AutoCAD块句柄信息-结合绘图名称-允许跟踪和更新数据库中的绘图数据。
本文将演示如何使用FME提取AutoCAD块“标记”和“值”—存储为块属性—在AutoCAD DWG中。提取的属性然后保存到Excel电子表格中。需要提取AutoCAD块属性信息的用户会对这个示例感兴趣。利用FME提取出的块属性值可用于GIS和数据库系统。
开始数据,块和表格DWG绘图:
http://download.autodesk.com/us/samplefiles/acad/blocks_and_tables_-_imperial.dwg
下图显示了AutoCAD中被称为“Window”的属性块的一个例子。
AutoCAD块属性显示在AutoCAD
让我们看看FME是如何处理这些数据的,方法是查看FME数据检查器中的DWG文件,其中reader参数爆炸块为未选中的实体。
与AutoCAD相同的DWG信息在FME数据检查器中显示为列表:
数据检查器中显示的AutoCAD块属性。像往常一样,棘手的一点是知道到哪里去寻找数据。FME数据检查器棒极了!
FME读取块属性信息并将信息存储为列表。对于第一个列表元素,使用fme_attrib_info{0}在FME中捕获第一个AutoCAD块属性字段名(或“标记”)。field_name, and the first AutoCAD Block attribute field value - or "Value" - is captured in FME with fme_attrib_info{0}.field_value.
上面的示例显示第一个属性{0}为“SYM”,其值为“3”。第二个属性{1}遵循相同的格式。
哦……读从零开始的清单的乐趣。
1)启动工作台,在新的空白工作区中添加一个“AutoCAD DWG/DXF Reader”
在“添加阅读器”对话框中,选择AutoCAD DWG/DXF作为格式,然后选择blocks_and_tables_ -_imperial.dwg数据集。
单击Parameters按钮。
我们希望将块保留为单个实体,所以不要将爆炸块改为实体,因为我们不想在读取器参数中爆炸块。另外,一定要在“将属性实体数据读取为列表”上打勾。
选择单个合并功能类型。注意,选择“单一合并的特性类型”使读者可以灵活地处理任何DWG,具有任何层命名结构(和模式),并且通常使AutoCAD DWG文件更容易处理。AutoCAD绘图具有用户定义的层结构(它们可以被命名为任何名称)。通过不将绘图分成层(谁知道会遇到什么层),在FME中处理更容易/通用。另一件要记住的事情是,AutoCAD绘图通常是由人类手工绘制的。值得注意的是,Autodesk提供的示例DWG包含了错误层上的一个(或两个)块。因此,基于层的DWG数据提取可能会产生错误的结果。
2)添加一个attribute脚注
虽然“AutoCAD DWG/DXF Reader”中有“要公开的附加属性”的位置,但是使用属性说明器可以清楚地说明要公开的内容。我们发现管理和排除显式的故障更容易。
所有隐藏格式AutoCAD和FME属性都是可访问的(不需要使用Import按钮),点击带有三个点的按钮(一行),然后通过输入“fme_attr”进行筛选,选择属性。
至少,公开:
对于数据库或GIS同步/更新,请确保公开块句柄、块名称和DWG文件名。
添加一个TestFilter来过滤带有属性的块
在TestFilter中,指定以下内容:
如果TEST @Value(autocad_entity) = autocad_insert和TEST @Value(autocad_attributes_follow) = true Output Port -> block with Attributes Else,则TEST @Value(autocad_entity) = autocad_insert和TEST @Value(autocad_attributes_follow) = false Output Port -> block
上面的TestFilter通过查找“autocad_entity”等于“autocad_insert”来检测/指导“带有属性的块”插入。有属性的块,有"autocad_attributes_follow" = true。
4)添加一个ListConcatenator
将ListConcatenator转换器连接到TestFilter的“带有属性的块”端口。重命名ListConcatenator_Tags。
FME可以将AutoCAD块属性作为列表读取(确保DWG reader有这个设置)。可以将块属性列表视为包含有关块属性的所有信息的列表对。如前所述,对于本例,第一个属性包含一个名为“SYM”的标记,其值为3。
通常,在处理列表时,使用逗号分隔符。然而,CAD属性数据也可以包含逗号或引号。例如,这个示例图有一个Height属性标记,其值为1'-6"。To be on the safe side, using a special separator character - Newline(\n) - avoids the hazards of parsing attribute data that could mess up comma separated or quoted values.
使用换行分隔符可以方便地处理数据并在以后显示数据。
5)为值添加一个ListConcatenator
将第二个ListConcatenator转换器连接到第一个ListConcatenator的输出端口。重命名ListConcatenator_Values。
添加一个AttributeManager
删除以下属性:
7)添加Excel writer
对于工作表定义,选择Automatic。
将工作表名称设置为带有属性的块。
将带有属性特征类型的Excel块连接到AttributeManager输出端口。
从示例图导出到Excel的属性
感谢欧特克提供DWG样本。“块和表(帝国)数据集”是由Autodesk Inc.授权的。在CC BY-NC-SA v.3.0许可下提供http://download.autodesk.com/us/samplefiles/acad/blocks_and_tables_-_imperial.dwg
©2019安全亚搏在线软件公司法律