目录
- 前言
- 1 Dynamo的界面
- 2 节点的操作
- 3 几何形体的创建与编辑
- 3.1 几何形体的创建
- 3.1.1 直线
- 3.1.2 圆形
- 3.1.3 多边形
- 3.1.4 长方体
- 3.1.5 球体
- 3.2 几何形体的编辑
- 3.2.1 坐标点的平移复制
- 3.2.2 几何形体的平移复制
- 3.2.3 几何形体的镜像复制
- 3.2.4 几何形体的旋转复制
- 3.2.5 几何形体的缩放
- 3.2.6 获取几何形体间的距离
- 3.2.7 几何形体的拆分
- 3.2.8 几何形体的差集、交集与并集
- 4 曲线的创建与编辑
- 4.1 曲线的创建
- 4.1.1 多段线曲线
- 4.1.2 样条曲线
- 4.1.3 螺旋线
- 4.2 曲线的编辑
- 4.2.1 获取曲线上的坐标点
- 4.2.2 曲线的翻转
- 4.2.3 曲线的延伸
- 4.2.4 曲线的打断
- 4.2.5 曲线的切线和法线
- 4.2.6 曲线的偏移
- 4.2.7 曲线的投影
- 5 曲面的创建与编辑
- 5.1 曲面的创建
- 5.2 曲面的编辑
- 5.2.1 曲面上的点及法向量
- 5.2.2 曲面的参数线曲线
- 5.2.3 曲面的偏移
- 6 列表的创建与编辑
- 6.1 列表的创建
- 6.2 列表的编辑
- 6.3 列表数据的导入和导出
参考资料
罗嘉祥,宋姗,田宏钧. 《Autodesk Revit炼金术——Dynamo基础实战教程》,同济大学出版社
前言
最近在备课、带本科生的毕业设计,要用到Dynamo。自己花点时间复习一下,顺便记个笔记。
1 Dynamo的界面
从Revit2018之后就自带Dynamo了,从“管理”选项卡中可以进入。
启动Dynamo之后,可以进入出事界面如下。
点击“新建”,可以进入Dynamo的工作界面,左边是节点库,右边是工作空间。
可以看到,Dynamo是一种可视化编程,大大降低了编程的入门门槛。
2 节点的操作
Dynamo的节点可以分为创建节点、操作节点和查询节点,关于Dynamo的节点的简介可以看文章《Dynamo基础知识02 节点介绍》。当我们想使用某个节点时,只需要点击节点库的某一项,该节点就会出现在工作空间上。不同节点之间的连线就可以表示数据流。
3 几何形体的创建与编辑
下面我们就是通过具体的例子,来看一下每个节点应该怎么用。
参考资料:
《Dynamo基础知识03-常用节点用法》
《Dynamo中列表基本操作》
3.1 几何形体的创建
3.1.1 直线
根据起点和终点创建直线——Line.ByStartPointEndPoint
3.1.2 圆形
根据中心店和半径创建圆形——Circle.ByCenterPointRadius
Number Slider
:滑块节点。设置滑块叠加空间,按一定的数值进行叠加。我们可以设置这个滑块的取值范围以及步长。
3.1.3 多边形
创建多边形——Polygon.ByPoints
:
List Create
:列表叠加。将多个列表叠加,形成新的多维列表,每个子列表的数据不变。
创建圆内接多边形——Polygon.RegularPolygon
3.1.4 长方体
当我们创建节点时,可以从后往前创建。例如我们想要创建一个长方体,可以先找到长方体这个节点,然后看这个节点需要什么输入。如果我们不确定这个输入是什么类型的数据,可以将鼠标放在输入接口上,就会提示上一个节点应该是什么节点。例如下图就表明,这里的“Origin”就需要一个“Point”,也就是坐标点作为输入。
通过中心店、长、宽、高创建长方体——Cuboid.ByLengths
3.1.5 球体
根据中心店和半径创建球体——Sphere.ByCenterPointRadius
3.2 几何形体的编辑
3.2.1 坐标点的平移复制
通过向量指明复制方向——Point.Add
3.2.2 几何形体的平移复制
节点Geomwrey.Translate
可以实现几何形体的平移复制,可以通过设置x、y、z三个方向的平移距离来实现(上图),也可以通过设置平移的方向来实现(下图)。
除了上面两种方式,还可以通过方向+长度的方式来实现平移复制:
这里,我们用到了一个新的节点——Code Block。Code Block是一个允许直接编写DesignScript 代码的节点,我们先称它为“代码块”,在代码块里面可以直接输入数字、字符串、列表、函数命令等。 具体可以看文章《Dynamo基础知识04-Code Block代码块的使用》和《Dynamo-CodeBlock手册-基础篇》
3.2.3 几何形体的镜像复制
——Geometry.Mirror
3.2.4 几何形体的旋转复制
——Geometry.Rotate
下图的例子表示,半径为1的圆,绕其旋转的基点坐标点(2,2,0)旋转,旋转轴为(0,0,1)的向量,旋转角度为“0,30,…,360”的角度数列表。
下图的例子表示,圆形以旋转基准面XZ平面,以角度数列表“0,30,…,360”为旋转角度进行旋转。
3.2.5 几何形体的缩放
——Geometry.Scale
等比例缩放:
不等比例缩放:
3.2.6 获取几何形体间的距离
——Geometry.DistanceTo
Watch
:查看节点。可以查看变量的值。
3.2.7 几何形体的拆分
——Geometry.Split
需要注意的是,两个几何体能进行拆分的前提是有交集。
3.2.8 几何形体的差集、交集与并集
差集——Solid.Difference
:
并集——Solid.Union
:
交集——Geometry.Intersect
:
4 曲线的创建与编辑
4.1 曲线的创建
4.1.1 多段线曲线
——PolyCurve.ByPoints
4.1.2 样条曲线
——NurbsCurve.ByPoints
4.1.3 螺旋线
使用Code Block创建螺旋线:
使用节点Helix.ByAxis
生成空间螺旋线:
4.2 曲线的编辑
4.2.1 获取曲线上的坐标点
——Curve.PointAtParameter
。可以将曲线看作是长度为1,使用[0,1]之间的任意数值作为参数,且由该参数定义的连续的坐标点的集合。那么可以通过参数param
得到曲线上的坐标点。
也可以通过输入弧长,来获取从曲线起点处开始,至给定弧长处的坐标点——Curve.PointAtSegmentLength
。
4.2.2 曲线的翻转
——Curve.Reverse
因为曲线是有方向性的,曲线的翻转就是改变其起点和终点。
翻转前,获取到的坐标点靠右侧:
翻转后,获取到的坐标点靠左侧:
4.2.3 曲线的延伸
延伸起点——Curve.ExtendStart
延伸终点——Curve.ExtendEnd
4.2.4 曲线的打断
初始的样条曲线。样条控制点的列表为arr=[Point.ByCoordinates(-20,-20,0),Point.ByCoordinates(-10,20,0),Point.ByCoordinates(0,-20,0),Point.ByCoordinates(20,20,0)];
。需要注意的是,在2022版本的Dynamo中,Code block
中的列表用中括号[]
表示。
选取从参数为0.2处的坐标点到曲线终点之间的一段曲线——Curve.TrimByStartParameter
。
选取从起点开始到参数为0.90处的坐标点之间的一段曲线——Curve.TrimByEndParameter
。
选取从曲线参数为0.2至参数为0.9的坐标点之间的一段曲线——Curve.TrimByParameter
。
删除从曲线参数为0.2至参数为0.9的坐标点之间的一段曲线——Curve.TrimInteriorByParameter
。
4.2.5 曲线的切线和法线
切线——Curve.TangentAtParameter
。这里的0..1..0.5
表示取[0,1]之间的值的列表,步长为0.5。
法线——Curve.NormalAtParameter
。
4.2.6 曲线的偏移
——Curve.Offset
4.2.7 曲线的投影
——Curve.Project
5 曲面的创建与编辑
5.1 曲面的创建
曲面可以看作是由包含两个参数u和v的函数所定义的连续的坐标点的几何。在Dynamo中,二维曲面和三维曲面都称作Surface
。曲面的创建方式有很多种。
由曲线向某个方向拉伸生成曲面——Curve.Extrude
可以通过填充生成曲面——Surface.ByPatch
。该方法仅适用于闭合曲线。
通过对多条曲线,进行按顺序的放样,生成曲面——Surface.ByLoft
。
上面的例子都是在生成PolySurface,NurbsSurface的创建通常是通过给定一系列坐标点生成——NurbsSurface.ByPoints
。
5.2 曲面的编辑
5.2.1 曲面上的点及法向量
获取曲面上的坐标点——Surface.PointAtParameter
获取一系列曲面上的向量——Surface.NormalAtParameter
5.2.2 曲面的参数线曲线
曲面上uv值对应的曲线,称为参数线曲线。可以通过Surface.GetIsoLine
来获取。
5.2.3 曲面的偏移
通过输入偏移距离实现,偏移方向为曲面法向量方向——Surface.Offset
6 列表的创建与编辑
6.1 列表的创建
使用Range
创建
使用Sequence
创建
使用Code Block
创建
使用Code Block
创建由多种方式:
创建方式 | 事理 |
---|---|
起始值…最终值 | 10…15 = [10, 11, 12, 13, 14, 15] |
起始值…最终值…#列表项数 | 10…20…#3 = [10, 15, 20] |
起始值…#列表项数…间距 | 10…#5…3 = [10, 13, 16, 19, 22] |
6.2 列表的编辑
参考资料:
Dynamo中列表基本操作
将列表中的项按给定的数量向左/右移动——List.ShiftIndicies
列表的翻转及列表按照逆序重新排序——List.Reverse
列表的转置,常用于多级列表——List.Transpose
获取指定的列表索引项——List.GetItemAtIndex
L
ist.
去除列表中某个索引的值——List.RemoveItemAtIndex
替换列表中某个索引的值——List.ReplaceItemAtIndex
将多个子列表合并为一个大列表——List.Create
将多个子列表合并为单个列表——List.Join
将列表分割为指定长度的一组连续子列表——List.Chop
计算列表中的项数——List.Count
列表编组——List.GroupByKey
。
6.3 列表数据的导入和导出
列表数据的导入
列表数据的导出