本文介绍如何创建关联参数模型,以介绍支撑计算设计的基本概念,同时探索 Dynamo 软件中的可视化编程。我们将使用从AutoCAD软件和Civil 3D对象中检索到的参数进行增强。我们将展示如何组织和导出表示地形的点云并将其链接到Civil 3D。然后,我们将该地貌作为不规则三角网(TIN)模型整合到现有环境的模型中,并进行多项分析,包括分级、雨水和明挖平衡。基于此分析,我们将优化参数模型。由于模型是动态链接的,我们可以立即在Civil 3D中检查改进情况,并方便地迭代该过程。我们还将展示如何使用 Dynamo 将设计师创建的地貌作为 NURBS 与工程师可以使用的 TIN 表面联系起来。 介绍参数化、计算和创成式设计参数化设计过程基于规则和参数来定义和描述设计意图和设计响应。在计算设计过程中,设计在使用编程语言的编程环境中进行描述。创成式设计通过迭代(改变参数)和约束来扩展此过程,以生成一定数量的有效输出。设计者或学习算法通过改变参数满足约束集的区间的最小值和最大值来微调可行区域,以减少或增加可供选择的输出数量(拟合幸存者)并创建下一代。 衍生式设计不仅限于计算机或人工智能,尽管数字技术无疑是创建大量设计选项以及对可以量化目标的解决方案进行排名的好工具。 适用于Civil 3D,DesignScript,Python和Zero Touch节点的Dynamo。发电机节点Dynamo 是一种可视化编程环境,允许没有编程背景的用户构建算法流程以作为工具和资源实现。Dynamo 程序不是通过键入代码创建的,而是通过操作称为“节点”的图形元素来创建的。 每个节点执行特定任务。节点具有输入和输出。一个节点的输出使用“电线”连接到另一个节点上的输入。程序或“图形”通过电线网络从一个节点流向另一个节点。结果是实现最终设计所需步骤的图形表示。这种编程方法更适合面向视觉的类型,如建筑师、设计师和工程师。 Dynamo for Civil 3D 扩展了这一概念,它提供了节点,这些节点通过 Civil 3D API(应用程序编程接口)以比 C# 或 C++ 等典型编程语言更易于访问的方式访问 Civil 3D 对象,如 TINS、特征线和走廊。它允许重复性任务的自动化、对民用对象数据的访问、多个设计选项的生成和测试性能。
设计脚本可视化数据流编程使用非常简单的规则将节点连接在一起。所有节点都遵循这种简单的图形节点约定,允许用户从不熟悉的节点发现更多功能。因此,可视化编程具有直观的访问质量,因此只需最少的培训用户就可以立即提高工作效率并能够探索新功能。然而,随着项目变得更加复杂,可视化编程的这种初始易用性优势也可能成为一个劣势。 通过实现一系列中间编程技术,DesignScript 是可视化数据流编程和基于文本的脚本之间的软过渡。因此,DesignScript提供了一个温和的学习曲线,允许逐步引入更高级的编程概念和符号。DesignScript将设计自动化和生产的实用世界与计算机科学和算法思维的世界联系起来。有了这些新的可能性,用户可以超越自动化现有的设计流程,转向新的计算设计和架构表达形式。从技术角度来看,DesignScript 是一种多范式特定领域的最终用户语言和建模环境,用于建筑和工程计算。 DesignScript最初是在Autodesk新加坡研发中心开发的,现在是Dynamo 内部的计算引擎。具有有线逻辑的节点或节点组可以自动转换为 DesignScript。Civil 3D 和 AutoCAD 元素通过开箱即用的节点公开。 蟒在 Dynamo 中创建程序的第三种方法是使用 Python,这是一种高级、通用、解释型开源编程语言。使用Python使用户可以访问数学和数据科学任务的各种模块和包。Python 可以通过 API 访问 AutoCAD 和 Civil 3D 对象。 零接触节点零接触节点是用 C# 编写和编译的自定义、即用型节点。用 C# 编写自定义节点可以提高代码的类型安全性和健壮性,并支持开发使用 Python 和 DesignScript 难以实现的程序。由于在运行时之前编译的用 C# 编写的程序,它们的执行速度比 Python 快,使其成为需要高性能的项目的理想选择。零接触节点提供对Civil 3D对象的访问,这些对象目前无法通过开箱即用的节点访问。 工程、景观设计和艺术中的地貌分级和地形建模是场地工程、景观设计和大地艺术的关键部分。塑造地球表面不仅要开发美学潜力,还需要生态敏感性和深厚的技术能力。艺术家、设计师和工程师之间的成功合作取决于用于分析任务的找形过程工程软件的工具和数据的集成,以及用于创成式设计的工具。 本文将该过程分解为较小的任务和灵活的方法。在第一部分中,重点是 AutoCAD 的原生参数化设计元素(NURBS 和程序曲面)及其在 TIN 曲面中的集成。第二部分重点介绍参数化找形过程的计算建模技术。第三部分重点介绍利用每种工具优势的工作流程。 学习资源
1) 将 NURBS 和直纹曲面连接到土木 3D TIN 曲面该图纸包含两条路径和三个楼梯(使用我的 LX-Stair 附加组件构建)。在这五个元素之间是两个平缓起伏的地貌,一个是规则表面,一个是NURBS。 从“管理”选项卡打开 Dynamo 并启动。所有可用节点都位于左侧“库”窗格(可选)的组和子组中。使用两个“选择对象”节点(来自 AutoCAD 选择节点组),我们可以访问两个曲面(或任何其他图形对象)。许多 AutoCAD 对象可以转换为 Dynamo 对象。但目前,此节点没有针对 NURBS 或规则曲面的实现。所以我构建了一个ZeroTouchNode,可以直接从这些对象中提取点。节点可以通过包管理器安装。 安装 ALC-ZTN 后,您就有了“NURBS”。GetPoints“和”Surface.GetPoints“节点可用。因此,让我们使用“选择对象”节点,从Civil 3D工程图中选择NURBS曲面并添加“NURBS”。GetPoints的节点。连接节点后,将创建一个表示 NURBS 的发电机点字段。节点计算 NURBS 的“u”和“v”参数处的点。对于表面的“udiv”和“vdiv”值,我们可以通过两个“Integer.slider”节点来增加点的密度(以及表面表示的准确性)。 此节点的输出是 Dynamo 点的结构化列表,正如我们在“监视”节点中看到的那样,但不是 Civil 3D CSV 导入中点列表的预期格式。使用“Point.X”“Point.Y”和“Point.Z”节点,我们只能在三个单独的列表中提取值。我们将三个列表合二为一,“List.Create”节点显示在“监视节点”中。 我们需要转置列表以获得正确的列表顺序和排名,适合连接到“Data.ExportCSV”节点。此节点还需要由字符串输入节点提供的文件位置输入。我们通过复制/粘贴复制所有节点,更改复制的输入字符串中的文件名,并使用复制的“选择对象”节点选择规则曲面。迪纳摩给了我们一个警告,作为复制的'NURBS。GetPoints 的节点不能将规则表面作为输入。我们需要用“Surface.GetPoints”节点替换这个节点,并相应地重新连接。为了提高可读性,我们重新排列和分组节点。该节点创建两个 CSV 文件:
我们现在可以使用他的两个CSV文件作为Civil 3D中TIN表面的定义,因此我们可以利用Civil 3D中的所有工具来分析表面。 如有必要,我们可以调整表面,再次运行Dynamo,然后重建表面。 2) 在 Dynamo 中创建算法驱动的地形,并将其作为点组添加到表面定义中创建单点(峰值)该过程从空的指标绘图开始。我们还将发电机模式设置为自动。我们将图形从输出向后开发到必要的输入。Civil 3D 的输出将是使用“Point.ByCoordinates”节点(来自Civil 3D节点)的单个COGO点。此节点的输入包括文档、图层、几何图形和原始描述。我们可以使用“Document.Current”节点和“Document.CurrentLayer”(均来自AutoCAD节点)获取这些值,并将它们绑定到“CogoPoint.ByGemetry节点”。几何体是指使用“Point.ByCoordinates”节点(来自 Dynamo 几何节点)创建的 Dynamo 几何对象,在本例中为发电机点。点节点需要三个输入值。我们使用“数字滑动”节点作为点的高度,绑定到“Point.ByCoordinates”的 Z 输入。我们可以将 X 和 Y 的值保留为节点的标准值 (0)。最后缺少的部分是原始描述。“字符串输入”节点将提供此值。 从输出向后开发图形是一种合理的方法,因为这也是 Dynamo 在运行时如何评估此图形的逻辑。在最后一步中,我们重新排列图表以提高可读性。 通过使用滑块,我们相应地移动了 Dynamo 和 Civil 3D 中的点。这个点后来将成为锥体的峰值。 创建单个圆锥一系列点将近似于底部的圆。因此,我们需要一个“Circle.ByCenterPointRadius”节点(来自几何组)和第二个“Point.ByCoordinates”节点以及半径的附加“数字滑块”。如果我们尝试将“Circle.ByCenterPointRadius”节点直接绑定到“CogoPoints.ByGeometry”节点,我们将收到错误消息,因为该节点只能接受点。 我们需要使用一个节点,该节点可以沿圆的路径创建一系列点。节点“Curve.PointsAtEqalSegmentLength”可以解决这个问题。可以通过添加另一个具有合理值的“整数滑块”节点(即开始 6、结束 90、步骤 6)轻松调整点数。此节点的输出是点列表。通过将列表输出绑定到 CogoPoint 节点中,CogoPoint 节点获取 Curve.PointsAtEqalSegmentLength 提供的每个值并对其进行处理。为了获得处理的峰值点和底点,我们只需将它们组合到带有“List.Create”节点的单个列表中即可。 我们需要添加曲线的起点或终点,以使用“Curve.StartPoint”或“Curve.EndPoint”节点完成圆。由于圆是闭合曲线,因此点是相同的,因此哪一个并不重要。我们也把这一点放在清单上。关闭中心点和圆的预览,并重命名类似节点以获得更好的可读性。由于现在创建了单个圆锥的所有点,因此我们可以使用 COGO 点在 Civil 3D 中定义 TIN。 在下一步中,我们通过在 X 和 Y 方向上移动圆锥体来相对于项目的原点定位圆锥体。为了进行测试,让我们在 X 中移动圆锥体 50 m,分别在 Y 中移动 10 m,由两个数字输入节点提供。一种选择是使用平移节点移动完整列表,但将 x 和 Y 值绑定到点节点的输入端更容易。 创建多个圆锥现在我们继续沿曲线(弧)放置圆锥体。对曲线上的点使用圆柱坐标比对笛卡尔坐标容易得多。因此,我们将圆心的节点“Point.ByCoordinates”替换为“Point.ByCylindricalCoordinates”。我们可以使用此点的 X 和 Y 值来控制峰值的“Point.ByCoordinates”节点。“Point.ByCylindricalCoordantes”有四个输入。我们可以使用标准值将 cs(坐标系)和高程留空。对于半径,我们使用“Number.Input”节点。对于输入角度,我们将提供来自“范围”节点的角度列表,而不是单个值。“范围”节点需要三个“数字输入”节点提供的三个输入。0 表示起始值,180 表示结束值,30 表示步长,我们创建了一个六个角度的序列。我们可以通过“监视”节点来监视它。 随着现在点数的增加,我建议从自动运行更改为手动运行模式,以及解开CogoPoint节点,仅在几何创建完美后才将节点花边。因此,我们保持 Dynamo 快速运行。 Andreas Luka是一位拥有超过25年工作经验的德国景观设计师。在他的职业生涯中,他在德国和中国担任设计师、项目经理和设计总监,参与过备受瞩目的项目。他对新技术充满热情,最初是CAD的早期采用者,现在致力于帮助景观团队掌握向LIM的过渡,即在景观设计中采用BIM。他的方法务实,协作,并专注于快速实现BIM / LIM的好处。他使用相关软件进行培训并实施标准、模板和程序。他还是LX-Stair应用程序等景观设计插件的开发人员,并经常为Autodesk Civil 3D开发人员论坛撰稿。他目前与位于拉珀斯维尔的瑞士东部应用科技大学和北京清华大学的景观系合作,为Revit和Civil 3D开发动态树。访问 http://www.luka-consult.de/about.html 了解更多信息。 |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-6-3 17:57
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.