嗨,大家好,
我想更新dwg块中的某些属性。
在左边它说“测试”的地方,我已经更新了一个属性。然而,FME写出了重复块,新块也比原来的大。
有没有一种方法可以更新属性并将更改写入到dwg而不触及任何其他内容?
谢谢!
雅各伯
大家好,
拜托,我试图解决一个与dwg编写器相关的大问题。
我想给块定义添加一个新的属性(例如属性代码)。其结构与图形不同步。例如。我有一个块,它的图形被插入到dwg中的模型空间(下面的图片称为“旧”)。但是,与此同时,其属性的幽灵传播到了现在的结构(下图称为“新”)。不管怎样,图形不同步,所以新添加的属性是不可见的。
在FME中,我需要在块定义中添加一个新属性,并将块的图形导出到与图片“old”相同的图形中。但是,如果我必须导出到dwg,我仍然需要定义模板文件-这是有问题的事情,因为dwg编写器将自动加载特定的块定义将所有属性,所以图形是真实的。
拜托,有什么建议吗?如何在块定义中添加新属性,并在同步前保留块的旧图形?
非常感谢!
鲁博
乡亲们,
这是一个清理问题,这里的答案将决定哪种技术最适合处理这个问题。
我有许多mapinfo表,应该包含典型的简单多段多段线。
但是,由于某种转换或创建错误,一些对象是多段多段线。对于不熟悉这个对象类型的人来说,我的意思是一系列在链中的下一行没有完全开始/结束的行已经聚合成一个对象。对于mapinfo的pulose,它看起来像一条多段线,但没有相同的属性。每个部分在多段折线中保持其单独的“子几何图形”。
现在所发生的是,当这些对象通过FME转换为DWG时,DWG唯一支持的聚合类型是一个称为块的东西。现在我得到的是几个100个街区和几个1000条真正的多段线。
作为旁白,dwg的接收者不知道这些奇怪的命名块是什么,并将它们分解。现在,当他们寻找折线时,他们会找到所有这些断裂的线段。
FME中是否有变压器系列可以“修复”这些物体?
我将想象一个将对象退化为其组成线的过程,然后使用某种端点分析将端点捕捉在一起,然后将这些线重新组合为多段线。
我还考虑了退化到顶点和做一个模糊的坐标匹配,但不保证从单个点创建多段线的顺序感。
我正在考虑在mapinfo中这样做,但是如果在fme中有一些位,我可以使用它可能会更快。
感谢您的帮助。
FME可以自动提取AutoCAD块属性数据。AutoCAD块能够包含属性(数据)信息。在AutoCAD中,插入具有属性定义的块时,提示用户输入数据。要在AutoCAD中编辑块,向用户显示块属性编辑表单(显示在AutoCAD中的AutoCAD块属性下图)。AutoCAD中的每个实体都有一个唯一的不可更改的句柄,可以用作唯一的ID。跟踪AutoCAD块句柄信息(与图形名称结合使用)允许跟踪和更新数据库中的图形数据。
本文将演示如何使用FME在AutoCAD DWG中提取AutoCAD块“标记”和“值”(存储为块属性)。然后将提取的属性保存到Excel电子表格中。该示例对需要提取AutoCAD块属性信息的用户很感兴趣。使用FME,提取的块属性值可用于GIS中,以及数据库系统。
启动数据,方块和桌子图纸:
http://download.autodesk.com/us/samplefiles/acad/blocks_and_tables_uu---u imperial.dwg
下图显示了在AutoCAD中编辑的名为“窗口”的属性块的示例。
显示在AutoCAD中的AutoCAD块属性
让我们看看FME如何通过查看FME数据检查器中的dwg文件来处理这些数据,在reader参数未选中的情况下,将块分解为实体。
相同的图纸信息,在AutoCAD,在FME数据检查器中显示为列表:
数据检查器中显示的AutoCAD块属性。像往常一样,棘手的一点是知道在哪里查找数据。FME数据检查员很厉害!
FME读取块属性信息并将信息存储为列表。对于第一个列表元素,第一个autocad块属性字段名-或“tag”-用fme_attrib_info_0.field_name捕捉到。第一个autocad块属性字段值-或“value”-用fme_attrib_info_0.field_值捕获在fme中。
上面的示例将第一个属性0显示为值为“3”的“sym”。第二个属性1采用相同的格式。
哦。。。阅读零基列表的乐趣。
1)启动Workbench,将“AutoCAD DWG/DXF Reader”添加到新的空白工作区。
在添加阅读器对话框中,选择autocad dwg/dxf作为格式,并选择Blocks_和_Tables_uuuuu Imperial.dwg对于数据集。
单击参数按钮。
我们希望将块保留为单个实体,因此取消选中将块分解为实体,因为我们不想分解读卡器参数中的块。也,一定要在“将属性实体数据作为列表读取”上打勾。
选择单合并功能类型。注:选择“单一合并特征类型”使读卡器变得灵活,可以处理任何dwg,使用任何层命名结构(和模式),并且通常使AutoCAD DWG文件更易于使用。AutoCAD图形具有用户定义的图层结构(它们可以命名为任何内容)。通过不将图形分解为层(谁知道可能遇到的层),FME中的处理更简单/通用。还有一件事要记住,是指AutoCAD绘图通常是由人手工绘制的。值得注意的是,Autodesk提供的示例dwg在错误的图层上包含一个或两个块。因此,基于层提取dwg数据可能会产生错误的结果。
2)添加attributeexposer
尽管“autocad dwg/dxf reader”有“附加属性公开”的位置,使用属性Exposer来清楚地说明要公开的内容。我们发现更容易管理和解决一些明确的问题。
所有隐藏格式的autocad和fme属性都是可访问的(不需要使用导入按钮)。单击三个点(一行)的按钮,然后输入“fme-attr”过滤并选择属性。
至少,暴露:
对于数据库或GIS同步/更新,请确保公开块句柄,块名和dwg文件名。
3)添加一个testfilter来过滤具有属性的块
在测试过滤器中,指定以下内容:
iftest@value(autocad_entity)=autocad_insert and test@value(autocad_attributes_follow)=trueoutput port->blocks with attributesselse iftest@value(autocad_entity)=autocad_insert and test@value(autocad_attributes_follow)=falseoutput port->blocks
上面的testfilter通过查找“autocad_entity”等于“autocad_insert”的“autocad_entity”来检测/指导“具有属性的块”块插入。具有属性的块,将“autocad_attributes_follow”设为true。
4)添加ListConcatenator
将ListConcatenator转换器连接到testfilter的“具有属性的块”端口。重命名listconnator_标记。
FME可以将autocad块属性作为列表读取(确保dwg reader具有此集合)。块属性列表可以看作是包含关于块属性的所有信息的列表对。如前所述,对于这个例子,第一个属性包含一个名为“sym”的标记,它的值为3。
通常情况下,使用列表时,使用逗号分隔符。然而,CAD属性数据也可以包含逗号或引号。例如,此示例图形的属性标记高度为1'-6“。为了安全起见,亚搏在线使用一个特殊的分隔符-换行符(\n)-避免了分析属性数据的危险,这些数据可能会混淆逗号分隔或带引号的值。
使用换行分隔符将使处理数据和以后显示数据变得容易。
5)为值添加ListConcatenator
将第二个ListConcatenator转换器连接到第一个ListConcatenator的输出端口。重命名ListConcatenator_值。
6)添加attributeManager
删除以下属性:
7)添加Excel编写器
对于板材定义,选择自动。
将图纸名称设置为具有属性的块。
将具有属性功能类型的Excel块连接到attributeManager输出端口。
导出到Excel的示例图形的属性
感谢您向Autodesk提供示例dwg。“块和表(英制)数据集”由Autodesk Inc.授权。在CC BY-NC-SA V.3.0许可证下,可从http://download.autodesk.com/us/samplefiles/acad/blocks_and_tables_uuuuuu imperial.dwg获得。
大家好!
我试图解决一个大问题…我使用导出一些空间数据的工作区,我需要做的就是围绕导出的数据创建信封。但是,我需要一个信封,由单独的dwg图纸中的预定义的autocad块组成(例如框架或图章;每次以0,0坐标为中心时,块都是…为了更好的想象,我附上了照片,在那里我描述了我的目标。
我会感谢你的帮助。
非常感谢!
鲁博
我正在将一个工作区移动到一台新的PC上,我有大约40个dwgstyler在插入块。是否有快速更新块插入的源dwg的方法?我希望不必右键单击每一个并浏览dwg的新位置。
乡亲们,
我有一个挑战,我不确定FME是否有这个能力。我有一些mapinfo共同定位的点需要作为属性块写入。我知道FME可以做到这一点,我已经成功地做到了。现在,挑战已经被设定为提出“放置规则”,即“移动”每个块插入,这样它就不会与位于同一位置的伙伴重叠。
就逻辑而言,我想做的是测试每个输入对象(点),看看是否有共同定位的点。然后,根据共定位对象的数量,循环通过对象,将它们放置在某个固定的递增/递减Y(南北轴)坐标处。
例如var numpoints=5
对于i=2到numpoints
读取记录(i)
插入块X,Y+(I*-10)
下一个
有什么构造可以支持这个吗?
我也知道我需要一种方法来确保我没有测试已经测试过的点并插入\偏移块。
谢谢你的建议。