分类目录归档:翻译转载

[翻译] 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成为一个建筑信息管理的优秀平台。

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

Code Block 宝典(转载&翻译)

原文链接:http://dynamobim.org/cbns-for-dummies

简单地说,Code Block就是个大杀器。如果你在关注最近半年的Dynamo开发状态,就知道我在说什么了。那一个个小方块里头名堂可大了。以下是一篇关于它的速成宝典。

“这东西从哪来的?”你问道。Dynamo和DesignScript,一个是可视化编程工具,一个是计算式设计语言。两者强强联合,结果就是,我已经算不清楚有多少种创建三维点阵的方法了。当然还有更多其它的好东西。

这两样好东西放在一块儿,就好像把巧克力和花生酱放在一块儿,又好像布拉德·皮特和安吉丽娜·朱莉的孩子,反正就是配的好!

everything-about-code-block-chocobutter

在0.7.0或以后的版本中,你都可以在工作区中双击创建Code Block。

继续阅读

“Dynamo的今世前生”——Dynamo问答(转载&翻译)

原文链接:Q&A about Dynamo

有一回,Marcello Sgambelluri AutodeskMatt JezykZach Kron译注:这两位是Dynamo在市场和产品功能方面的主要负责人逼到角落里,用一大堆关于Dynamo起源和未来方向的问题把他们搞得焦头烂额。我们觉得把这段故事拿出来跟大家分享应该会很有趣。你也可以从Marcello 博客中找到更多好东西。

为什么会想到开发Dynamo?

[Matt] Ian Keough(译注:Dynamo创始人)在纽约的Buro Happold公司工作时,经常需要在RhinoRevit之间交换数据。为了让这一繁琐的工作变得更有效率,他编写了Dynamo。当时的基本想法是:既然Grasshopper可以用参数化,计算生成的方式驱动Rhino中的形体,我们应该完全可以在Revit里做类似的事。

继续阅读