[摘要] =======================修正================================================原文=========================想用Excel先把图
=======================修正=========================
=======================原文=========================
想用Excel先把图纸信息编辑好,然后导入Revit对图纸进行修改。
看到一些插件其实也有类似功能了,这次使用Dynamo做一个简单的尝试。
实现的逻辑其实相对简单,首先获取Revit中所有图纸的图纸名称,然后将获得的图纸名称与Excel中记录的图纸名称比对,查找出Excel中图纸名称对应的数据,再将数据赋回Revit的对应图元的参数上。
而通过Dynamo实现这个过程的要点主要有两个:
1、比对图纸名称,获得对应的索引
我的方法是通过List.FirstIndexOf节点将两个数据做一个对应的查找,这样出来后的数据会出现很多-1,去掉-1后就是我们要拿到的索引,处理的方法比较多,我这里直接用GroupByFunction取出来,取得索引后面就可以获得对应的数据了。
2、要注意输出的列表结构
设置Revit元素的参数节点是Element.SetParameterByName,这个节点需要输入element,parameterName,value。要注意输入的每个element都要对应一组parameterName和value,也就是说一般输入应该对应的输入的列表结构分别是二级列表,三级列表,三级列表。value的值从Excel获取后保持三级列表是没问题的,parameterName可能先要通过List.OfRepeatedItem才能获得对应的列表。
这次只是简单的尝试,很多东西暂没有考虑,比如从逻辑上来说,我认为还可以先对Revit中的图纸信息先进行一次识别,如果与Excel中数据不一致再进行对应的修改,或者是否还应该对图纸中的视图进行一定的控制等等,期待后面有机会在这个方面进行深化。
以下为Excel格式:
图纸名称
<图纸信息1>
<图纸信息2>
···
<图名1>
···
以下为核心节点: