在知乎上看到九哥BIMer写的Dynamo自动创建门窗详图的文章,虽然文章比较简短,但是主要的思路还是写的很清楚。那篇文章并没有给出Dynamo源文件,本着好学的心态,参照九哥BIMer的思路,经过一番尝试,还是比较成功的用Dynamo自动生成了门窗图例,所以在此写下这篇文章与大家分享我的思路及遇到的问题和解决方法。

本文先仅以生成窗的详图为例进行讲解,在文章最后会讲解如何修改节点,只需简单修改即可同时进行门窗详图的创建。

为了方便,本文使用的Revit项目如下所示,模型中一共创建了9种类型的窗,从C1到C9。

模型中9种类型的窗

1.创建图例视图并绘制第一个窗大样图

Dynamo中没有节点来创建图例视图,所以我们需要自己创建图例视图。在“视图”菜单中的“创建”面板找到“图例”进行新建,设置好视图名称和比例。

我们也无法通过Dynamo在一个新建好的空白图例视图中创建元素,所以我们需要手动创建好第一个图例,第一个窗图例是什么族类型并不重要,不过一定要是模型中有的族类型。如下图所示,我们可以在“注释”菜单中找到放置图例的选项。也可以在项目浏览器中找到相应的族类型按住鼠标左键拖到视图中进行放置。

通过“图例构件”放置第一个图例

需要注意,放置图例的时候要设置好图例的视图方向,以便后面标注宽度和高度两个方向的尺寸,如下图红框所示两个位置可以设置视图方向为“立面:前”或“立面:后”。

放置完成以后,我们通过“详图线”给它绘制图框,通过“文字”给图框中的单元格填入文字,如下图所示。

绘制第一个窗大样

接着我们在Dynamo中所有的操作都是基于第一个窗大样完成的。

2.获取模型中所有的窗族类型

获取模型中所有的窗族类型的操作比较简单,在Dynamo中选择项目中所有的窗,然后获取窗的类型。因为项目中同一个族类型下可能有好几个族实例,所以我们用“List.UniqueItems”节点过滤掉重复的族类型,得到9种族类型,与项目实际一致,具体节点如下图所示。

获取所有窗类型

3.复制出所有的图框

在第1步中,我们绘制好了第一个图例的图框,其他图例的图框都是基于第一个图框进行复制。对Revit中元素进行复制的节点在Dynamo的原生节点库里面并没有,因此我们需要安装第三方的库。著名的第三方库“Clockwork”中有复制元素的节点,我们可以选择安装这个库。关于这个库,我在另一篇文章中有介绍:Revit + Dynamo 实现梁自动剪切墙。

在复制图框之前,我们需要考虑怎么排列图框,其实我们只需要考虑每行最多排几个图框即可。在这里我选择每行排列4个图框,那么一共有9种类型的窗,需要排列几行?这个问题我们可以通过Dynamo来解决,让软件自动计算排列的行数,我们只需要输入每行最多排几个图框即可,具体的节点如下:

计算图框的排列

有了排列的行数和列数以后我们可以对图框进行复制,在对图框进行复制之前,我们可以在Revit中先将图例和图框下面三行中右侧单元格中的文本框进行隐藏,方便我们框选需要复制的元素,对暂时不需要复制的图元进行隐藏后如下图所示:

保留图框进行复制

对元素进行复制的节点是“Clockwork”中的“Element.CopyByVector”,选择元素后给它一个向量确定复制元素的移动方向和距离。

3.1确定移动方向

方向很好确定,同一行的图框进行复制,只需要向X轴的正方向偏移;复制完成第一行以后,再向Y轴的负方向复制出第2到第(n-1)行;因为第n行的图框数量只可能小于或等于第一行的图框数量,因此我们只需要计算出第n行有几个图框,然后从第一行中从左到右选择与第n行图框数量对应的图框个数再向Y轴负方向复制即可。

3.2确定移动距离

在同一行中,下一个图框与当前图框的移动距离就是图框的宽度,只需要在Revit中测量一下第一个图框的宽度即可;

在相邻两行中,下一行图框与当前行图框的移动距离就是图框的高度,同理,只需要在Revit中测量一下第一个图框的高度即可。这里需要注意列表的层级和连缀方式,复制图框的节点及完成效果如下图所示:

创建所有图框
图框创建完成

4.创建所有图例

创建图例的方式和第3步类似,只需要将第一个图例进行相应的复制即可。但是,需要注意,图例和图框不一样,我们在进行与行之间的复制时,如果某一行的元素需要复制到多行,通常是先将该行第1个元素都复制完成以后,再进行第2个元素的复制,因此,得到的结果会出现顺序上的混乱,如下图所示,需要通过“List.Transpose”节点进行转置。

转置列表
创建所有图例
完成所有图例创建

5.创建所有须填数据的文本框

创建须填数据文本框的方式和创建图例一样,首先选择第一个大样图中下面三行中右边的须填数据的3个文本框,如果不好选中,可以在Revit中对它们使用隔离图元,方便在Dynamo中框选。然后将它们复制,同样需要注意列表的转置,如下图所示。

所有须填数据文本框
完成所有须填数据文本框创建

所有需要的元素都创建完成了,接下来只要修改元素的属性,在文本框中编辑数据即可。

6.对族类型进行排序

我们发现,选中到Dynamo中的所有族类型并不是按照C1-C9所对应的族类型进行排序的,因此,在将族类型赋值给图例之前,需要先将族类型进行排序,具体如下图所示:

7.修改图例的类型和须填文本框的编辑

控制图例类型的参数是“构件类型”这个实例参数。文本框的值我们可以对族类型查询族参数获取各项参数的参数值,并做相应的编辑,然后通过“TextNote.SetText”节点改变文本框的值。具体如下图所示:

完成图例类型设置和文本框编辑
设置完成

8.节点扩展及后续改进

正如前文所说,只需对“获取所有窗类型”这部分的节点进行修改,获取到项目中所有的门和窗的类型即可完成门和窗所有图例的自动创建。这部分留给读者自行研究。

另外,图例中还应该包括一些标注,如何创建好标注,我也在探索之中,如果有可能兴许也会出一篇文章。

另外,节点包和项目文件的链接放在下面,请有需要的读者自行下载:

链接:https://pan.baidu.com/s/1T-gMxaf0AFrnb-VdHNJj9Q

提取码:0weh

自动给文本框输入值_Dynamo for Revit自动生成门窗图例详图相关推荐

  1. android 自动补全方法,Android零基础入门|自动完成文本框AutoCompleteTextView

    原标题:Android零基础入门|自动完成文本框AutoCompleteTextView 上一期学习的Spinner的使用,掌握的怎么样?本期一起来学习AutoCompleteTextView的使用. ...

  2. 文本框输入值文字消失常用的两种方法

    1.这种相对来说较简单,举例子: <input name="textfield" type="text" value="点击添入标题" ...

  3. react 文本框_React自动完成文本框

    react 文本框 In this React tutorial for beginners you will learn to create a basic React app and an aut ...

  4. android用java写文本框_Android 自动完成文本框的实例

    Android:自动完成文本框 xml文件代码如下: xmlns:android="http://schemas.android.com/apk/res/android" andr ...

  5. android脚步---自动完成文本框

    自动完成文本框AutoCompleteTextView,当用户输入一定字符时,自动完成文本框会显示一个下拉菜单,供用户选择,设置一个Adapter,该Adapter中封装了AutoCompleteTe ...

  6. 自动完成文本框AutoCompleteTextView

    自动完成文本框AutoCompleteTextView:用户输入一定字符后,会显示一个下拉菜单供用户选择 android:completionHint="请输入"设置出现在下拉菜单 ...

  7. Android学习笔记 2.5.3 实例——使用SimpleAdapter创建ListView 2.5.4 自动完成文本框(AutoCompleteTextView)的功能与用法

    Android学习笔记 疯狂Android讲义 文章目录 Android学习笔记 疯狂Android讲义 第2章 Android 应用的界面编程 2.5 第4组 UI组件:AdapterView及其子 ...

  8. Android的高级控件(自动提示文本框与下拉列表)

    一.高级控件与常用控件的区别:是否使用适配器 二.适配器 1.种类 ①.数组适配器 ArrayAdapter       new ArrayAdapter<String>(this,R.l ...

  9. Android 自动完成文本框

    一.自动完成文本框的定义: 自动完成文本框是在输入框中根据输入信息提示与其相关信息的UI控件. 二.如何使用自动完成文本框: [ListView] 1.系统提供的Adapter填充数据 2.自定义Ad ...

最新文章

  1. ICML 2021 (Long Oral) | 深入研究不平衡回归问题
  2. JAVA中float和double的区别、String和char的区别
  3. [转载] 信息系统项目管理挂靠合同(协议)范例1
  4. 使用 okHttp 3.0 版本前后的两点区别.(不要入坑哦)
  5. QT事件事件之一:Qt中的事件处理与传递
  6. 孔板流量计计算公式_带你全面了解各种流量计!
  7. NTC热敏电阻温度计算
  8. Android 11 系统字体加载流程
  9. HTML5 Notification实现浏览器通知
  10. jquery实现登录成功界面_【jQuery实例】Ajax登录页面
  11. 计算机工作表中按升序排列,表格打乱顺序怎么按顺序排列_怎么把表格内容按顺序排列图文步骤...
  12. LabVIEW虚拟数字示波器
  13. linux监控系统catic,网络设备监控-Catic添加H3C的监控图解
  14. iOS Game Center 登陆验证实现
  15. js插件---弹出层sweetalert2
  16. 图片灯箱插件——lightBox
  17. 什么是环回接口(Loopback Interface、环回地址)
  18. 2021-2025年中国人工膝关节行业市场供需与战略研究报告
  19. 大连工作后到外省就业要办的手续
  20. 法国ICD|开启我人生辉煌的下一站

热门文章

  1. mySQL教程 第9章 触发器
  2. XP`开机速度慢的解决方法
  3. BCP导出导入大容量数据实践
  4. MSDN、RTM、OEM、VOL四大版本之区别
  5. 中兴 20 5g音频测试软件,中兴手机5G测试视频:速率接近2Gbps!
  6. 如歌将两个数组合并_腾讯50题---合并两个有序数组
  7. 【VC基础】3、配置参数文件
  8. 【实用】ABAP ALV单元格修改信息提示
  9. 【学习笔记】人类为什么最终选择了芯片
  10. 解锁并设置远程登录尝试次数