1、Dynamo基础知识Dynamo数据结构Dynamo可视化编程入门Dynamo与Revit交互Dynamo高级开发1.2.3.4.5.目目 录录参考文献6.一、Dynamo 基础知识n Dynamo 是Autodesk公司推出的,一款功能十分强大,并且十分便捷的可视化编程软件。它可以和多款Autodesk 公司的其他软件交互,适应各类使用人员的专业需求。“可视化编程语言”可以让设计师通过图形化界面创建程序,不必从白纸开始一行行地写程序代码,用户现在可以简单地连接预定义功能模块,轻松创建自己的算法和工具。或者说,设计师不用写代码就可以享受到计算式设计的好处。n Dynamo最新版本号是1.2,它
2、是免费的,开源的,使用Apache 2.0授权协议。开源软件(open-source)是指其源码可以被公众使用的软件,并且此软件的修改和分发也不受许可证的限制。主要被散布在全世界的编程者队伍所开发,但是同时一些大学,政府机构承包商,协会和商业公司也开发它。Dynamo跟Rhino(犀牛)上的插件Grasshopper(GH)类似,因为两个插件都可以让设计师用可视化编程界面开发自己的设计工具。n Grasshopper强项在于对复杂几何形体的处理。在数据处理方面,运算效率更佳,现成的算法更多,缺点是处理模型数据较耗费精力。n Revit出色之处在于管理建筑信息,数据结构灵活性更佳,可以调用Rev
3、it的数据是优势。缺点是速度偏慢。Grasshopper(GH)体育场建模:Grasshopper(GH)地铁盾构规划建模:软件安装文件包可以从http:/dynamobim.org下载。从Revit 2017版本开始,Autodesk已经在安装Revit时默认安装Dynamo,早期版本需要自己手动下载安装一下。源代码则可以从https:/ 的支持单独运行的路径:C:Program FilesDynamoDynamo Revit1.2DynamoSandbox.exeRevit 2017 之后的版本:“管理”-“Dynamo”Revit 2017 之前的版本:“附加模块”-“Dynamo”1、
4、菜单栏;2、工具栏;3、节点库;4、工作空间;5、控制台节点库(Library):包含多个节点的容器。不同的节点库,有不同的,特定功能的各类节点。节点库(Library):包含多个节点的容器。不同的节点库,有不同的,特定功能的各类节点。举例操作详解:Dynamo帮助样例Basics二、Dynamo数据结构数据可以是:n实数,如0,100,3.1415,-19;n字符,前后要带引号,如”hello world”,”你好,世界!”;n各类变量(墙高,河长,半径);n几何图元(圆形,球体,曲面);n数组,如1,2,3,4,5,A,B,C,D,E,a,b,c,d,e;n还可以是空值(null);Dyn
5、amo 中的数据都是存放在List 数列中,就像是其他编程语言中的数组,可以是一维、二维、三维。列表的索引是从0 开始。Dynamo 中的数据都是存放在List 数列中,就像是其他编程语言中的数组,可以是一维、二维、三维。列表的索引是从0 开始。代码块(Code Block),是dynamo 中可以直接输入DesignScript 的节点。可以通过双击鼠标左键,快速打开Code Block。DesignScript 是dynamo 编程语言。通过代码块(Code Block),可以快速,简明的实现使用者的许多功能,前提是使用者有一定的计算机编程语言的基础。dynamo 也提供了一个十分有用的功
6、能,就是可以很便捷的将庞大的可视化编程好的节点和接线,直接变为代码块(Code Block)中的编程语言代码。在代码块编写自定义函数,并且调用这个自定义函数。自定义了一个sumNumber函数,对三个数求和并返回结果。Dynamo里面有Python Script节点,这个节点可以实现两个重要功能:n 接入外部Python库,使用高级的函数功能,这是对Design Script功能的巨大扩充。n 调用Revit API,操控Revit的构件(族)。缺省的仅引入ProtoGeometry,支持基本的Design Script核心功能和图形类处理功能。n REVITAPI.DLL:提供处理Revit
7、内基本构件Element的处理功能n REVITUIAPI.DLL:提供Revit内用户交互选择及TaskDialog实时输出n REVITNODES.DLL:提供对Dynamo内节点的支持,可以在Python Script里直接写Design Script代码n REVITSERVICES.DLL:提供对Revit多文档以及构件的事务处理(修改构件,更新数据库时必需的)服务。三、Dynamo可视化编程入门节点(nodes):根据需要,通过连接不同的,有特定功能的节点,从而实现可视化编程。节点(nodes):根据需要,通过连接不同的,有特定功能的节点,从而实现可视化编程。错误提示信息;Watc
8、h 节点检查输入的数据内容;上游段的输入数据类型(Red空变量)无法传递到下游端的节点;接线(Wires):各个节点需要通过接线来传递数据。是数据流的传递纽带。1布尔值(真/假)2数值(实数)3字符串4实数滑动条 5整数滑动条 6文件夹路径7文件路径查看/三维查看(Watch/Watch3D):用来查看数据或者几何图元。第一步:搜索code block并添加第二步:搜索watch并添加第三步:输入字符串,注意带双引号第四步:连接看到结果第四步:再加一行计算第一步:搜索Number 并添加第二步:搜索运算符+,并添加第三步:搜索watch并添加第四步:输入数字,连接看到结果n 常规的编程代码如下
9、:myPoint=Point.ByCoordinates(0.0,0.0,0.0);x=5.6;y=11.5;attractorPoint=Point.ByCoordinates(x,y,0.0);dist=myPoint.DistanceTo(attractorPoint);myCircle=Circle.ByCenterPointRadius(myPoint,dist);n 可视化编程的过程如下:两个不同的方法,得到同样的结果,如下:四、Dynamo和Revit交互Revit 的层级结构(族类别、族、族类型、实例)Dynamo 中提供选择Revit 图元的节点n 在左侧项目树下面,展开Re
10、vit-Selection,单击“Select Model Element”n 点击“选择”按钮,在Revit中选择构件,可以看到如下窗口,已经返回选择构建的IDn 然后在搜索框输入Name,单击“获取图元名称”n 有了这两个后,可以获取选中元素的名称。n 用Python脚本调用Revit标准弹窗TaskDialog。搜索框输入Python,单击“Python Script”。双击脚本组件的空白区域,输入脚本。运行如下所示:缺省情况下,在Dynamo中生成的点、线等图形元素,会在Revit图形界面中有一个对应的显示,请注意,仅仅是蓝色高亮的点、线显示,非实际Revit中存在的。有时候这样在Re
11、vit中的运行中,点集比较密时,这种密集的显示会影响在Revit内的后继操作,因此有时候需要能够将其关闭,不影响在Revit的手动操作。这种显示方式可以在Dynamo内进行切换,方法为下拉菜单:【视图】=【背景三维预览】=【可用预览】=【Revit背景预览】,如下图所示:Dynamo和Revit结合地很好,除了内部单位不一致。Dynamo里不带单位的数值都会认为是以“米”为单位。Revit里面默认单位是毫米。五、Dynamo高级开发东成西就:一个技术流派的高手,精于研究BIM在水利行业的应用,知名博客博主!职业:水利工程师 http:/ 四个横断面生成上部结构n 放置桥墩n 放置桥台n 文件结构n 基础数据n 基础数据n 基础数据n 思路介绍n 思路介绍n 思路介绍n 生成模型n 生成模型六、参考文献Dynamo-可视化编程在桥隧方面的基础应用Dynamo中文版教程 建筑极客Dynamo学习-初级学习课程建筑极客Dynamo学习-中级学习课程Autodesk Revit 炼金术-Dynamo基础实战教程6161谢谢大家!结结 语语