[翻译] Dynamo:远不止是Grasshopper简化版

原文链接:http://case-inc.com/blog/revit-dynamo-more-than-grasshopper

大家都在纷纷议论,Revit上的开源插件Dynamo,跟Rhino上的插件Grasshopper孰优孰劣。因为两个插件都可以让设计师用可视化编程界面开发自己的设计工具,很自然地,Dynamo经常被说成是Revit上的Grasshopper。这种比较看似精确,其实却掩盖了RhinoRevit这两种平台在更深层次上的差别。

Rhino的强项在于生成复杂几何形体,这在Grasshopper的扩展工具集中体现地淋漓尽至。而Dynamo要想在这方面跟Grasshopper做到类似程度,还有很长很长的路要早,因为创建自由几何形体并不是Revit的强项。Revit出色之处在于管理建筑信息,而且Dynamo可以在这方面让Revit做得更好。

这里提供三个案例,可以展示Dynamo在建筑信息管理方面的出色能力。

1. 创建智能、自我调节的建筑模型

在建筑项目中,我们经常要在空间、几何形体、模块功能之间创建一些简单的逻辑关系。比方说,一个办公室的大小决定了可以放置多少张办公桌。同时,这也决定了办公室人员密度。根据建筑规范或者设计规范,这些因素又决定了应该使用何种类型的房门。

在某项目中,我们有这样一条规则:如果办公室超过一定大小,房门必须加上安全锁。通常这件事情是手工完成的 手工计算一个房间中有多少张办公桌,据此决定是否使用有安全琐的门 繁琐而容易出错。

其实这个任务可以用Dynamo自动化起来。Dynamo可以确定每个门与哪个房间关联,计算该房间内有多少家具,然后把家具数量写到门的一个自定义参数上。有了这样的信息,我们就可以据此设计门族(door family)的行为,使之根据参数来选择正确的门锁类型。如果房间大小变化了,或者家具的排布变化了,我们都可以重新运行Dynamo脚本,更新所有的门锁设置。

Furniture-Counting_620

把门的类型和周围家具数量联系起来,我们其实是在利用BIM数据,让建筑构件获得更多的周围环境信息,从而表现地更加“智能”。这种方法可以被用在很多常见问题上。比如说,复核一个房间是否有合适数量的门窗或电器设备以满足光照和通风要求。

2. 自动化数据录入和文档编制

虽然Revit非常强调全方位的建筑信息,可它自身提供的数据录入工具实在非常有限。在Revit中作批量编辑通常是件很痛苦的事,特别是跟Excel的数据处理能力相比,更是一声叹息。这也可以解释为什么有那儿多受欢迎的Revit插件,全是用来跟Excel表格交换数据的。

问题是,并非所有的建筑信息数据都可以转化成一张Excel二维表格。比如说,我们经常需要在一张楼层平面图上对大量的房间作命名和标号,而依据的是它们的排列顺序。这种空间信息其实从几何上很容易理解,却很难转化成数据表格进行处理。

为了解决这个问题,我们开发了一个Dynamo脚本。设计师只要在平面图上画一根路径,穿过所有需要命名的房间,Dynamo就可以依次对每个房间进行顺序的命名和编号。用户也可以选择在处理中跳过某些特定名称的房间,比如大堂或走道。如果在设计过程中有房间发生调整,只要重新运行这个脚本就行了。

Numbering_620

这个动画中,我们画了一根穿越一系列房间的曲线。当运行Dynamo脚本后,所有的房间都会依次序编号。同时我们在脚本设置中明确跳过了环形走道。

3. 提升设计质量

下一个脚本会抽取一些Revit外部工具无法取得的数据。在建模过程中,Revit的一些建筑构件会丢失它们的主体信息,以至于最后有成千上百个悬空的灯具或水管配件。没有任何内置的工具可以检查丢失主体的物体,但是我们可以使用Dynamo来抽取这一信息,并且写到一个自定义的项目参数里。这样,建筑构件的主体信息就可以在清单中查看,成为我们在建模过程中做质量检查的一个步骤。

QAQC_620_3

Dynamo脚本会把主体信息写到一个自定义参数中,并且在清单里显示出来。这里Dynamo没有改动任何的模型数据,只是作为信息提取工具。

QAQC_04_cropped

最后的清单清晰地显示了那些悬空构件,这些都是在建模过程中要更正的错误。

清单一直是Revit用户的重要工具,可以分析建筑模型和追踪错误。遗憾的是很多构件信息没有在Revit清单功能中开放出来,而Dynamo可以帮助抽取这些数据,组织成有意义的格式,并且添加到Revit清单中。

看看Revit内部有什么

Dynamo提供给设计师一些Revit内部的东西,让用户可以在不借助API编程的情况下开发Revit插件。这使得用户可以更加轻松地定制自己的Revit,而不用先花两年时间学习怎么写代码,编译和调试。

如果发现Dynamo自带的结点无法满足需求,Dynamo还允许我们用Python脚本直接调用所有的Revit API。这跟Autodesk以往的做法有很大不同。以前“易用性”被定义为用户无需更多的定制化即可顺利使用软件。现在的“易用性”则是指定制化可以有多方便。

很长一段时间以来,Dynamo一直被诟病为Grasshopper的粗劣仿制品。在CASE咨询公司,我们发现,如果把DynamoRevit的优势领域结合起来,可以显著提高工作效率。现在我们有了很好的机会定制Revit,使之更符合我们的需求。我们也希望Dynamo能帮助大家思考,如何让Revit成为一个建筑信息管理的优秀平台。

建筑极客恭祝大家新年快乐——礼包再次袭来

AU(Autodesk University)是欧特克公司历年举办的技术分享,探索行业最新动态,增进与客户交流的活动,在世界各地都开展了一系列的活动,其中有大量技术课程,可供线上观看。

au

在刚刚过去的美国Autodesk University上Dynamo再次成为了热点话题,其中有7个专门的课程是针对Dynamo的应用,在辞旧迎新之际,我们将这些课程进行分类总结,希望给中国的Dynamo爱好者们一些新的灵感与启发。

第一部分:Dynamo的基础介绍

  • Dynamo的未来无可限量(Dynamo:The future is wide open)

视频连接:AB6644: Dynamo: The Future is Wide Open

课程介绍:演讲者Zach介绍了Dynamo最新的插件,如何来自定义编辑插件以及如何在日常工作中探索程式化设计。
  • 探索可视化BIM设计的可能性(Explore the Possibilities with Computational BIM)

视频连接:AB6542: Explore the Possibilities with Computational BIM

课程介绍:演讲者Ian介绍了程式化设计(Computational Design)的基本概念以及Autodesk在这方面的探索。

第二部分:来自BIM等领域的技术专家的分享

  •  实际应用中的Dynamo:在Revit环境中如何结合实际案例应用Dynamo(Practically Dynamo: Practical Uses for Dynamo Within Revit)

视频连接:AB6557: Practically Dynamo: Practical Uses for Dynamo Within Revit

  • Dynamo的大趋势:如何用程式化设计的方法来塑造你的Revit模型(The Great Dynamo Dig: Mine Your Revit Model with Computation)

视频连接:AB5482: The Great Dynamo Dig: Mine Your Revit Model with Computation

  • Revit与Dynamo结合就相当于一个建筑自动计算器(Revit Plus Dynamo Equals the Building Calculator)

视频连接:AB6798: Revit Plus Dynamo Equals the Building Calculator

第三部分:来自建筑师们的分享

  • 程式化设计专题讨论(Design Computation Symposium)

视频连接:AB7537: Design Computation Symposium

课程介绍:程式化设计将介绍建筑事务所是如何将程式化设计与BIM结合起来的。演讲者的主题包括了如何在日常设计中引入切实可行的数字化设计,同时进行更加深入的思考和研究,在这个专题中有以下三个主要的方面:
1) 性能设计驱动的设计,性能分析与模拟
2)数字化装配式生产与建造的流程
3)在真实与数字化环境中的数据流
  • 性能化设计中,进行同步的能量与日照分析(Synchronizing Thermal and Lighting Analysis in Performance-Based Design)

视频连接:AB6905: Synchronizing Thermal and Lighting Analysis in Performance-Based Design

ArchGeek的微信公众号发布啦!

IMG_0964

作为ArchGeek官方博客的配套服务:ArchGeek微信公众号已经成功运行了一个月了,可以更加方便Dynamo爱好者们通过这个微信平台在第一时间了解到第一手的信息。

在博客中我们将着重于视频教学以及案例介绍,而在微信平台上会以前沿研究,延伸阅读以及推广活动为主。请大家可以持续地给予我们更多的建议。

以下是最新的微信信息截屏,以作广告,欢迎大家订阅!

Optimo



“再探Dynamo”系列——体育馆案例第3/3讲

最后一部分体育场网架:幕墙系统的创建,其主要的编程思路是:从桁架系统的5条结构弧线中,去除第五条弧线,通过侧向的4个点构筑新的弧线,在弧线上进行12等分,然后形成12条新的横向弧线,在横向弧线上再根据桁架的个数进行20等分。最后取得的240个点,每4个一组重新形成类似长方形的序列,并且将自适应幕墙嵌板加载上去,最后形成完整的网架系统。

具体的操作步骤请参考视频:

 

 

Dynamo发布0.7.4版

原文作者:Zach Kron

原文链接:http://dynamobim.com/dynamo-0-7-4-release/

翻译:The Geek

欢迎使用最新的Dynamo升级版!我们已经作好了Autodesk University的各项准备工作,努力让基于Dynamo开发其它功能的同事满意,同时升级版包含 一些Bug修正和功能改进。不要忘了抽空读一下Dynamo功能的扩展延伸文章,比如OptimoUnfolding。随时关注Package Manager,那上面经常有好东西。

如果需要完整的版本更新列表,请参阅Readme文档。已知问题列在这篇文章的末尾部分。以下是一些特别希望关注的内容。

文件读取

0.7.3及以前版本中,Dynamo会一次性地从磁盘读取文件,以后运行时不会再次检测文件是否被修改。被Dynamo读取的文件同时会被锁定,运行过程中没法更改文件,带来很多不便。在Dynamo0.7.4中,我们新增了监测文件改动的功能。如果文件有改动,Dynamo会自动更新相应数据,且不会锁定文件。为了做到这一点,对已有的结点不得不做一些改动。以前读取数据的结点可以直接输入一个文件路径,现在必须传入一个文件对象。比如说,在0.7.3中读取Excel数据是这样的:

read_excel_file

现在Excel结点以及其它读取数据的结点都需要一个中间结点,用来监视对应的文件内容是否被改动:

read_file_from_disk

老文件里如果使用了这些结点,在升级到0.7.4时会有警示,告知用户应该使用新的连接方式。老结点仍然保持跟以前一样的行为,即只读取一次文件。

结构杆件:

structural_framing_old

创建结构杆件比以前会容易很多。在0.7.3中创建结构杆件需要5个输入参数,其中至少有两个对非程序员来说很不直观,另外还有一个不起作用(UpVector,至少不会起明显的作用)。这个旧结点依然会被保留,因为极少数情况下确实会用到那几个参数。同时我们把这个功能分拆为三个更加具体的结点:创建梁,杆,柱。每个结点都只需要3个输入参数。

如果需要旋转结构杆件,以前是通过UpVector来控制的(虽然大部分情况下不管用)。现在用户可以直接修改“Cross-Section Rotation”参数来控制旋转角度。这是结构杆件的一个内置参数。

structural_framing_new

还有两个东西也希望能看一眼:

Package Manager改进:对发布和使用共享工具包的用户,我们做了一些用户界面上的改进。现在只有指定的结点才会被显示出来(以前辅助库里的东西也会被搜索出来,使得搜索结果乱七八糟的)。

可以通过Package Manager发布的数据类型:这个功能在0.7.3里已经有了,这里再重点推荐一下。现在用户可以通过Package Manager发布dyn文件,rvt文件,或者其它格式的文件,以便向使用者解释你的发布功能。我们希望Package Manager的这个功能可以成为一个很好的教学工具。这些额外的数据存放在%AppData%\Roaming\Dynamo\0.7\packages下。

已知且正在解决中的问题:

Element.GeometryRevit 2015下,Dynamo 0.7.2-0.7.4版本中可能会引发Crash,特别是处理大量Revit几何数据时。

Excel.Write结点在升级后会显示为“Unresolved”。用户可以用新的输入文件对象的Excel.Write结点替换它。

View.ExportAsImage只能导出{3d}视图。

Cancel按钮在执行云渲染和日照分析时无效。

Revit2015中,如果UnifiMaxwellKiwi Bonu Tools插件已经被安装,Dynamo可能无法启动。如果你发现了这样的问题,可以试试最新的预发布版:http://dynamobim.org/download/

老文件中的代码块可能会存在跟新安装结点有命名冲突的情况。比如,Point.ByCoordinates会跟Rhynamo工具包中的Point操作冲突,并且弹出警告框“Warning: Dereferencing a non-pointer. Dereferencing a non-pointer.”。如果遇到这种情况,需要在代码块中重新输入方法名称。自动完成功能会提示出一个更加具体的引用名称。

dereferening_non_pointer

0..4 小技巧

原文链接: http://dynamobim.com/0-4_tips/

为祝贺这周的Autodesk University 2014活动(有几百人在拉斯维加斯参加Dynamo学习活动),我会分享一些小技巧,帮助大家更好地使用Dynamo。敬请期待后续的更多内容。

[0] 快捷键

[0] 按F5运行Dynamo程序… 只是起个头,你懂的。
F5ToRun-300x171
[1] 按住ESC键可以浏览视图中的形体,或者用CTRL + G来切换形体观察模式/结点编辑模式。
[2] 按ESC键可以清空工具箱搜索框中的文字。
[3] 一些常用的组合键:

[0] CTRL + C 拷贝结点或者文字
[1] CTRL + N 创建新文件
[2] CTRL + O 打开一个已有文件
[3] CTRL + S 保存,CTRL + Shift + S 另存为
[4] CTRL + V 粘贴结点或文字
[5] CTRL + X 剪切结点或文字
[6] CTRL + Y 重做
[7] CTRL + Z 撤销

[4] 使用 CTRL + L 自动整理所有结点
[5] 使用 CTRL + W 创建注释
note
[6] 使用 CTRL + Shift + UP 显示或隐藏控制台输出窗口(或者直接拖动顶部的分隔条)

[1] 创建列表

[0] 使用Number SequenceNumber Range
ranges
[1] 使用范围语义。现在你明白文章标题是什么意思了吧?(标题取自Dynamo帮助文档,参见 Help/Samples/Core/CoreRangeSyntax)
ranges2
[2] 使用List.Create。也可以使用一系列列表来创建嵌套列表。
lists4
[3] 使用List.Join。这个结点和List.Create不一样,它不会在连接多个列表再创建上一级列表结构。
lists5
[4] 在代码块(Code Block)中使用 { } 。记得在一行代码的末尾加上分号 。使用嵌套的大括号来创建嵌套列表。
lists6

[2] 存取列表中的元素

[0] Dynamo跟大多数程序设计语言一样,以零作为列表元素的起始序号。所以列表的第一个元素称为0号元素,而最后一个元素是第(元素总个数 – 1)号元素。
fingers-300x200
[1] 使用结点List.GetItemAtIndex
lists1
[2] 使用范围表达式获取多个元素。
lists2
[3] 在代码块中使用中括号[ ]
lists3

[3] 结点选项

[0] 右键菜单中可以切换是否显示当前结点的形体预览(starShape.dyn)
preview
[1] 右键菜单中可以显示形体预览的元素序号 (circlePacking.dyn)
showLabels

[4] 自动完成

[0] 双击工作区可以创建一个代码块。你可以在代码块中直接用其它结点的名字来调用它们,而不需要直接创建那些结点。下面这篇文章里有更详细的解释:

http://dynamobim.com/cbns-for-dummies/

[1] 代码块中的自动完成功能可以帮助你找到正确的方法名称,避免拼写错误。按Enter键接受当前的自动完成建议。按ESC键忽略建议。
autocomplete1
[2] 使用点号(跟结点名称中的点号类似)可以浏览某个类的所有可用方法
autocomplete2
[3] 现在代码块中会提示同一方法名的不同输入参数形态。这可以帮助你找到正确的参数输入类型和顺序。
autocomplete3

“再探Dynamo”系列——体育馆案例第2/3讲

体育场的桁架系统同样是通过由五个自适应点驱动的自适应构件来组建而成。桁架系统的主要结构线是五条弧线,其起始与结束位置,半径以及高度都与之前创建的座椅系统有关联。通过参数化设计可以通过参数驱动,进行整体的调节。

关键的注意点:在弧线上根据桁架的个数进行等分,等分之后形成的点重新排序,以五个一组的方式构建自适应桁架。

具体的操作步骤请参考视频:


 

Rhynamo工具包发布了!

原文链接:http://www.theprovingground.org/2014/11/get-rhynamo-package.html

RhynamoPackageManager

Rhynamo终于结束Beta版,作为一个正式的Dynamo工具包发布了!跟Dynamo一样,Rhynamo是完全免费的。

虽然作者还在最后完善源代码的过程中,但是您已经可以放心地下载工具包,在实际工作中使用起来了。

之前的非公开内测非常成功,超过300位用户测试Rhynamo并且提供了很有价值的反馈。这个工具仍在不断的完善中,但是我们正在CASE自己的项目中积极使用它。我们觉得现在已经可以把这个工具开放出来,让更多的人在计算式设计方面获益。

试一下吧!Rhynamo对应的Dynamo版本是当前的最新稳定版(0.7.4或以后版本)。
• 请确保使用的是Dynamo最新版本(作者本人正在使用0.7.5开发版)。
• 您可以在Dynamo的工具包管理器(Package Manager)里下载Rhynamo。
• Rhynamo自带了一些示例文件和一个介绍文档帮助您学习使用方法。
RhynamoStandardSetup
RhynamoSample_ReadBREP-1

“再探Dynamo”系列——体育馆案例第1/3讲

通过Dynamo来创建体育场馆的关键结构线以及重要杆件,是非常实用的案例,可以帮助大家快速掌握基本的建模思路和步骤。整个案例分为三个步骤:

  • 创建座椅
  • 创建支撑桁架
  • 创建外表皮幕墙

在创建座椅中需要特别注意的是:体育场视线分析的算法,通过自适应构件来创建座椅基本单元以及弧线的构建。

具体的操作可以参考视频:

 

可供下载的文件:

自定义结点:

Calculate Facade Elevation

Calculate Riser Elevation

Calculate Facade Radius

Revit项目模板:StadiumIntegrationTemplate

Dynamo文件:Stadium_Final_WellOrganized