FME结合AutoLisp分离数据

众所周知,FME是处理数据的瑞士军刀。

当然,虽然FME本身所具有的功能已经非常强大,能够解决很多的数据问题。但是,有些时候为了最大限度的提高数据处理的能力,提高效率,我们还是会调用外部的一些工具,完善我们的数据处理流程。

这篇文章就是如此,给大家介绍如何用FME与AutoLisp代码结合使用的方式,来处理数据。

本篇文章主要用到的“erase(擦除)”功能。

前提:需要安装CAD后台

1 数据源

数据类型:DWG格式的CAD数据(可能包含ole、图片、表格等特殊格式数据)

2 数据处理需求

(1)CAD数据中包含大量的数据,需要按照给定的图框分离数据,形成一幅一幅的CAD成果数据。

(2)输出文件以图框左上角文字为文件名进行输出。

按照原始用户的处理方式,全部人工操作一个图框一个图框的进行“删除+另存为”操作,对于这种传统机械式的操作方式,需要大量的人力来进行单一的操作。需要耗费大量的人力,这里我们就考虑用FME来自动化的实现这一流程。

3 FME方式处理的缺点(数据特殊性)

对于使用过FME软件处理数据的人员,数据分离是最常规的数据处理方式,FME对于数据分离处理方式简直就是得心应手,那这里为什么要用结合其他软件的方式去做数据的分离?这里就涉及到具体的数据情况,以及特定数据照成的特殊性。具体如下:

1)数据量庞大

FME处理数据的方式都是先读取数据,再写出数据,在对数据非常庞大,并且只是分离数据不需要额外对数据进行其他处理的情况下,FME这种处理方式的效率,并没有想象中的完美。

2)特殊格式数据分离

需要分离的数据中可能存在ole等特殊格式的数据,这种特殊数据在数据读取的过程中可能就已经造成丢失,造成分离前后数据成果与原始不一致。

4 数据处理流程

基于以上第3条所提出的问题,我们想到用FME调用AutoLisp代码的方法完成CAD数据的分离操作。将数据按照需要分离的数据量复制多个,在复制的数据上进行擦除操作,再自动保存,保障分离后的数据为删除多余数据的成果,100%保证数据的正确性。

具体的操作步骤如下:

1)找到数据图框

需要按照图框自动提取数据,那么首先要做的就是找到数据图框。

提取图框的方法有很多种,如果数据标准,那么图框可能放在统一标准的CAD图层中,如果数据不标准,可以按照空间关系判定找出图框。

2)按照图框数据量复制相同数据量的CAD文件,并按照输出名称命名。

通过第一步的成果可知,提取出来的图框数据量实际上就是需要分离的CAD数据量n,那么我们需要用源数据进行擦除操作,首先就需要将原始数据复制n份,按照不同的图框对不同的数据进行擦除。

主要用到FeatureWriter转换器的copy写模块(这里没有用copy写模块是因为,copy不是最后一步,文件生成之后我们需要在进行其他操作)

得到的结果如下,文件名为最终的成果CAD文件名称,文件内容与源数据内容一致。

3)生成擦除代码文件

(1)确定擦除数据的AutoLisp代码

AutoLisp代码大家不用会写,网上有很多的代码,上网一查就能收出一大片内容。

这里给大家用到的是”窗口选择+执行”语句相结合的方式,来进行数据选取并擦除。(最开始考虑过用command(执行)语句直接通过范围的点位信息进行擦除操作,但是运行效果不太好,后通过跟同事的沟通,找到现在这种先用窗口选择,再擦除数据的方式操作。)

具体代码如下:

(setq ss (ssget "w"'(Xmin Ymin) '(Xmax Ymax)))

(command "_erase" ss "")

以下给大家P出窗口选择代码来源路径,方便大家学习。

源博路径:https://blog.csdn.net/yxp_xa/article/details/72229202?locationNum=3&fps=1

(2)输出.scr文件

在fme里想要使用SystemCaller转换器调用AutoLisp代码,需要将代码编辑为.scr文件。这里我们可以通过AttributeCreator转换器编辑好代码,通过Text File写模块写出为.scr后缀文件即可。

以下为.scr文件中存储代码:

注意:AutoLisp代码编辑好后建议放在CAD里运行,确定代码无误后再进行下面的操作。

4)搭建数据擦除模板

添加SystemCaller转换器调用代码实现操作。

搭建擦除模板,将动态路径都发布为参数。

5)调用擦除模板

最后,不同的输出对应不同的scr文件(不同数据擦除范围不同,导致代码不同),但是进行擦除操作这个动作是一致的,那么这里做成模板调用,通过不同的传参,让模板自动对每一个dwg数据进行不同范围的数据擦除工作。

 

6)成果

这样就实现了dwg数据的分离。

完整模板如下:

本次分享就到这里结束,如果大家感兴趣可以详细研究SystemCaller转换器的使用方式。

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值