原文发布时间:2013-07-03
作者:小新
CAD中除了常见的点、线、面,还有一些特殊的几何类型,如CAD中的块,组等。
CAD的块比较常见,最近在处理CAD数据的时候,遇到CAD中的组,那么来看看FME对CAD组的处理能力吧。
首先,通过帮助了解到如下信息:
1、 FME中读取CAD数据时,可以通过格式属性“autocad_entity”了解要素的实体类型,对于组来说,autocad_entity值为“autocad_group”。
2、 在FME中,只支持对组类型的读取,不支持写出。
3、 组要素是一组没有几何实体的要素。
前面两点还比较好理解,最后一点但看字面意思理解起来有点费解。下面通过实际数据进行说明。
1) 首先在Autocad中打开原数据:
在CAD中,选中一个组的数据,可以看出会选中组成该组的所有要素。且在特性中该要素显示为组。
2) 在FME中加载该数据
通过“Autodesk AutoCAD DWG/DXF”读模块打开一个还有组的dwg数据,在读模块参数中有个“Read Groups”的参数,选取该参数。选择合并输出:
3) 在工作空间中暴露autocad_entity属性,并过滤出autocad_entity为autocad_group的要素,输出到viewer中查看:
在viewer中,看不到几何图形,只能通过“选择非几何对象”进行选择查看。这里就可以理解上面的第3点“组要素是一组没有几何实体的要素”。
在fme中读到的组,并不是像再CAD中看到的一组实体要素,而是一个非几何对象。那如何知道该每个组中有哪些要素呢?则需要通过autocad_entity_handle{}这个列表去获取。如下图所示:
如在4FEBB这个组中,是由“4FEB6、4FEB7、4FEB8、4FEB9、4FEBA”这5个要素组成。通过该列表可以知道通过FME读取该文件时,把属于同一个组的要素进行关联。
有了上面的陈述,现在我要对这个包含组的dwg数据进行处理,由于FME不支持组的写出,处理要求则转换为对于同一个组的要素转为块后输出到目标dwg中。(处理时的重点是找到属于同一个组的要素进行聚合并输出为块)。
模板如下:
输出结果: