在AutoCAD内,可以通过图层、颜色、线型、比例等基本特征来对实体进行区分或者分组。但是这些都是在AutoCAD中创建实体时已经指定好的。通过LinkDWG,我们可以在Dynamo内对这些非只读的特征进行一些调整和修改,单也仅仅局限于这些AutoCAD实体的基础特征信息。
如果我们想给这些AutoCAD实体附加一些额外信息呢?如同样是混凝土柱子,可能会有使用不同标号,如C30和C40混凝土的柱子。在AutoCAD中制图时,往往不一定会进行细分。如果要实现细分,就需要额外使用颜色,或者更多的图层来进一步使得图形具有更多不一致的信息来实现。
那么有没有简单一些的方法,可以自由的给AutoCAD内实体添加我们需要的信息,并可以十分方便的提取呢?
答案是可以的。AutoCAD允许给实体附加额外的非图形信息,添加和读取都十分的方便。
正是基于这样的功能,LinkDWG提供了可以给AutoCAD内实体打标签的一系列节点:
附加
- AttachStringLDataByKey:通过Key值,将一个字符串信息附加在指定的AutoCAD对象上;
- AttachNumberLDataByKey:通过Key值,将一个数字值附加在指定的AutoCAD对象上;
读取
- GetStringLDataByKey:通过Key值,读取附加在AutoCAD对象上的字符串信息;
- GetNumberLDataByKey:通过Key值,读取附加在AutoCAD对象上的数字值;
删除
- DeleteLDataByKey:通过Key值,清除附加在AutoCAD对象上的信息。如果Key值使用*这个通配符,将自动把对象上所有的信息清除;
因为赋值和读取是一对有前后关系的操作,因此,无法直接一次性的将赋值和读取全部与同一个端口相连,这样做得话,运行顺序上可能会产生混乱。因此,所有赋加的节点都保有了输入实体的输出,供后继读取时连接。这样就可以确实保证赋值后才会被读取。
最后回到混凝土柱子的场景上,我们可以给柱子的平面矩形添加一个数据为字符串的标签:“混凝土标号”,然后各自对应的给数据标记上C30或者C40或者实际的标号。这样,在后继处理这些柱子时,可以提取他们的“混凝土标号”标签数据,然后根据这些标签数据对混凝土柱子进行分组或者过滤,从而快速获取需要操作的柱子实体。
号外:
关于填充及添加标签节点的讲解视频已经更新上线姑娘课堂的“Dynamo的ActiveX技术应用:LinkDWG”。