【Dynamo学习笔记】基础入门

目录

  • 前言
  • 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学习笔记】基础入门_第1张图片
点击“新建”,可以进入Dynamo的工作界面,左边是节点库,右边是工作空间。

可以看到,Dynamo是一种可视化编程,大大降低了编程的入门门槛。

2 节点的操作

Dynamo的节点可以分为创建节点、操作节点和查询节点,关于Dynamo的节点的简介可以看文章《Dynamo基础知识02 节点介绍》。当我们想使用某个节点时,只需要点击节点库的某一项,该节点就会出现在工作空间上。不同节点之间的连线就可以表示数据流。
【Dynamo学习笔记】基础入门_第2张图片

3 几何形体的创建与编辑

下面我们就是通过具体的例子,来看一下每个节点应该怎么用。

参考资料:
《Dynamo基础知识03-常用节点用法》
《Dynamo中列表基本操作》

3.1 几何形体的创建

3.1.1 直线

根据起点和终点创建直线——Line.ByStartPointEndPoint
【Dynamo学习笔记】基础入门_第3张图片

3.1.2 圆形

根据中心店和半径创建圆形——Circle.ByCenterPointRadius
【Dynamo学习笔记】基础入门_第4张图片

  • Number Slider:滑块节点。设置滑块叠加空间,按一定的数值进行叠加。我们可以设置这个滑块的取值范围以及步长。【Dynamo学习笔记】基础入门_第5张图片

3.1.3 多边形

创建多边形——Polygon.ByPoints
【Dynamo学习笔记】基础入门_第6张图片

  • List Create:列表叠加。将多个列表叠加,形成新的多维列表,每个子列表的数据不变。

创建圆内接多边形——Polygon.RegularPolygon
【Dynamo学习笔记】基础入门_第7张图片
【Dynamo学习笔记】基础入门_第8张图片

3.1.4 长方体

当我们创建节点时,可以从后往前创建。例如我们想要创建一个长方体,可以先找到长方体这个节点,然后看这个节点需要什么输入。如果我们不确定这个输入是什么类型的数据,可以将鼠标放在输入接口上,就会提示上一个节点应该是什么节点。例如下图就表明,这里的“Origin”就需要一个“Point”,也就是坐标点作为输入。
【Dynamo学习笔记】基础入门_第9张图片
通过中心店、长、宽、高创建长方体——Cuboid.ByLengths
【Dynamo学习笔记】基础入门_第10张图片

3.1.5 球体

根据中心店和半径创建球体——Sphere.ByCenterPointRadius
【Dynamo学习笔记】基础入门_第11张图片

3.2 几何形体的编辑

3.2.1 坐标点的平移复制

通过向量指明复制方向——Point.Add
【Dynamo学习笔记】基础入门_第12张图片

3.2.2 几何形体的平移复制

【Dynamo学习笔记】基础入门_第13张图片
节点Geomwrey.Translate可以实现几何形体的平移复制,可以通过设置x、y、z三个方向的平移距离来实现(上图),也可以通过设置平移的方向来实现(下图)。
【Dynamo学习笔记】基础入门_第14张图片
除了上面两种方式,还可以通过方向+长度的方式来实现平移复制:
【Dynamo学习笔记】基础入门_第15张图片
这里,我们用到了一个新的节点——Code Block。Code Block是一个允许直接编写DesignScript 代码的节点,我们先称它为“代码块”,在代码块里面可以直接输入数字、字符串、列表、函数命令等。 具体可以看文章《Dynamo基础知识04-Code Block代码块的使用》和《Dynamo-CodeBlock手册-基础篇》

3.2.3 几何形体的镜像复制

——Geometry.Mirror
【Dynamo学习笔记】基础入门_第16张图片

3.2.4 几何形体的旋转复制

——Geometry.Rotate
下图的例子表示,半径为1的圆,绕其旋转的基点坐标点(2,2,0)旋转,旋转轴为(0,0,1)的向量,旋转角度为“0,30,…,360”的角度数列表。
【Dynamo学习笔记】基础入门_第17张图片
下图的例子表示,圆形以旋转基准面XZ平面,以角度数列表“0,30,…,360”为旋转角度进行旋转。
【Dynamo学习笔记】基础入门_第18张图片

3.2.5 几何形体的缩放

——Geometry.Scale
等比例缩放:
【Dynamo学习笔记】基础入门_第19张图片
不等比例缩放:
【Dynamo学习笔记】基础入门_第20张图片

3.2.6 获取几何形体间的距离

——Geometry.DistanceTo
【Dynamo学习笔记】基础入门_第21张图片

  • Watch:查看节点。可以查看变量的值。

3.2.7 几何形体的拆分

——Geometry.Split
需要注意的是,两个几何体能进行拆分的前提是有交集。
【Dynamo学习笔记】基础入门_第22张图片

3.2.8 几何形体的差集、交集与并集

差集——Solid.Difference
【Dynamo学习笔记】基础入门_第23张图片
并集——Solid.Union

【Dynamo学习笔记】基础入门_第24张图片
交集——Geometry.Intersect
【Dynamo学习笔记】基础入门_第25张图片

4 曲线的创建与编辑

4.1 曲线的创建

4.1.1 多段线曲线

——PolyCurve.ByPoints
【Dynamo学习笔记】基础入门_第26张图片

4.1.2 样条曲线

——NurbsCurve.ByPoints
【Dynamo学习笔记】基础入门_第27张图片

4.1.3 螺旋线

使用Code Block创建螺旋线:
【Dynamo学习笔记】基础入门_第28张图片
使用节点Helix.ByAxis生成空间螺旋线:
【Dynamo学习笔记】基础入门_第29张图片

4.2 曲线的编辑

4.2.1 获取曲线上的坐标点

——Curve.PointAtParameter。可以将曲线看作是长度为1,使用[0,1]之间的任意数值作为参数,且由该参数定义的连续的坐标点的集合。那么可以通过参数param得到曲线上的坐标点。
【Dynamo学习笔记】基础入门_第30张图片
也可以通过输入弧长,来获取从曲线起点处开始,至给定弧长处的坐标点——Curve.PointAtSegmentLength
【Dynamo学习笔记】基础入门_第31张图片

4.2.2 曲线的翻转

——Curve.Reverse
因为曲线是有方向性的,曲线的翻转就是改变其起点和终点。
翻转前,获取到的坐标点靠右侧:
【Dynamo学习笔记】基础入门_第32张图片
翻转后,获取到的坐标点靠左侧:
【Dynamo学习笔记】基础入门_第33张图片

4.2.3 曲线的延伸

延伸起点——Curve.ExtendStart
【Dynamo学习笔记】基础入门_第34张图片
延伸终点——Curve.ExtendEnd
【Dynamo学习笔记】基础入门_第35张图片

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中的列表用中括号[]表示。
【Dynamo学习笔记】基础入门_第36张图片
选取从参数为0.2处的坐标点到曲线终点之间的一段曲线——Curve.TrimByStartParameter
【Dynamo学习笔记】基础入门_第37张图片
选取从起点开始到参数为0.90处的坐标点之间的一段曲线——Curve.TrimByEndParameter
【Dynamo学习笔记】基础入门_第38张图片
选取从曲线参数为0.2至参数为0.9的坐标点之间的一段曲线——Curve.TrimByParameter
【Dynamo学习笔记】基础入门_第39张图片
删除从曲线参数为0.2至参数为0.9的坐标点之间的一段曲线——Curve.TrimInteriorByParameter
【Dynamo学习笔记】基础入门_第40张图片

4.2.5 曲线的切线和法线

切线——Curve.TangentAtParameter。这里的0..1..0.5表示取[0,1]之间的值的列表,步长为0.5。

法线——Curve.NormalAtParameter

4.2.6 曲线的偏移

——Curve.Offset
【Dynamo学习笔记】基础入门_第41张图片

4.2.7 曲线的投影

——Curve.Project

5 曲面的创建与编辑

5.1 曲面的创建

曲面可以看作是由包含两个参数u和v的函数所定义的连续的坐标点的几何。在Dynamo中,二维曲面和三维曲面都称作Surface。曲面的创建方式有很多种。
由曲线向某个方向拉伸生成曲面——Curve.Extrude
【Dynamo学习笔记】基础入门_第42张图片
可以通过填充生成曲面——Surface.ByPatch。该方法仅适用于闭合曲线。
【Dynamo学习笔记】基础入门_第43张图片
通过对多条曲线,进行按顺序的放样,生成曲面——Surface.ByLoft
【Dynamo学习笔记】基础入门_第44张图片
上面的例子都是在生成PolySurface,NurbsSurface的创建通常是通过给定一系列坐标点生成——NurbsSurface.ByPoints
在这里插入图片描述

5.2 曲面的编辑

5.2.1 曲面上的点及法向量

获取曲面上的坐标点——Surface.PointAtParameter

获取一系列曲面上的向量——Surface.NormalAtParameter
【Dynamo学习笔记】基础入门_第45张图片

5.2.2 曲面的参数线曲线

曲面上uv值对应的曲线,称为参数线曲线。可以通过Surface.GetIsoLine来获取。
【Dynamo学习笔记】基础入门_第46张图片

5.2.3 曲面的偏移

通过输入偏移距离实现,偏移方向为曲面法向量方向——Surface.Offset
【Dynamo学习笔记】基础入门_第47张图片

6 列表的创建与编辑

6.1 列表的创建

使用Range创建
【Dynamo学习笔记】基础入门_第48张图片
使用Sequence创建
【Dynamo学习笔记】基础入门_第49张图片
使用Code Block创建
【Dynamo学习笔记】基础入门_第50张图片
使用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
【Dynamo学习笔记】基础入门_第51张图片
【Dynamo学习笔记】基础入门_第52张图片
列表的翻转及列表按照逆序重新排序——List.Reverse
【Dynamo学习笔记】基础入门_第53张图片
列表的转置,常用于多级列表——List.Transpose
【Dynamo学习笔记】基础入门_第54张图片
获取指定的列表索引项——List.GetItemAtIndexL
ist.
【Dynamo学习笔记】基础入门_第55张图片
去除列表中某个索引的值——List.RemoveItemAtIndex

【Dynamo学习笔记】基础入门_第56张图片
替换列表中某个索引的值——List.ReplaceItemAtIndex
【Dynamo学习笔记】基础入门_第57张图片
将多个子列表合并为一个大列表——List.Create
【Dynamo学习笔记】基础入门_第58张图片
将多个子列表合并为单个列表——List.Join
【Dynamo学习笔记】基础入门_第59张图片
将列表分割为指定长度的一组连续子列表——List.Chop
在这里插入图片描述
计算列表中的项数——List.Count
【Dynamo学习笔记】基础入门_第60张图片
列表编组——List.GroupByKey
【Dynamo学习笔记】基础入门_第61张图片

6.3 列表数据的导入和导出

列表数据的导入
【Dynamo学习笔记】基础入门_第62张图片
列表数据的导出
【Dynamo学习笔记】基础入门_第63张图片

你可能感兴趣的:(BIM,学习,笔记,BIM,Dynamo)