Rhino.Inside®.Revit中文手册4:Python脚本
为了方便中文用户更好地体验 Rhino.Inside®.Revit,我们在 Rhino3D 中文讨论区更新了 Rhino.Inside®.Revit 中文手册的相关内容,您可以浏览访问以下链接进行系统化学习:
Rhino.Inside®.Revit 中文手册 1 介绍了学习的必备内容;Rhino.Inside®.Revit 中文手册 2 主要介绍用来创建原生图元的 Grasshopper 专用运算器;Rhino.Inside®.Revit 中文手册 3 主要讲解文档、容器和设置;本次更新的 Rhino.Inside®.Revit 中文手册 4 主要讲解 Python 脚本。
1.Revit 中的 Python 组件
Grasshopper 中有三个脚本组件,分别对应 Python(目前只支持IronPython)、VB.NET 和 C# 三种语言,用户可以通过这三个脚本组件编写自己的计算逻辑,这三个组件都可以定义输入和输出接口的数量。
由于 Rhino.Inside.Revit 将 Rhino 和 Grasshopper 引入到 Autodesk Revit® 环境中,因此这些脚本组件也可以调用 Revit API 的运行,在这篇文章中,我们将讨论使用 Python 脚本来为 Revit 创建自定义组件。
2.设置
在 Grasshopper 画布上添加一个 python 组件以后,您能够看到一些默认的导入包:
如果要调用其他的一些 API,就需要先把这些包导入到脚本中来,要调用 Revit 和 {{ site.terms.rir }} 我们还需要先导入 CLR (通用语言运行时)模块和其他一些必要的模块:
现在就可以在脚本中导入这些命名空间了:
3.自定义组件
每当新建一个 python 组件的时候,都要重新导入所需要的模块,如果您觉得太麻烦,可以把您经常使用的模块设置到一个导入模板并保存在 Grasshopper 的 用户组件 中:
创建用户对象以后,您可以很容易从用户对象中创建一个新的 Python 组件,打开以后,它的 Python 脚本中就已经包含了您设置到模板的所有模块了。
下面的这个脚本模板适用于大部分情况:
点击这个按钮可以下载包含这个模板的用户对象:
4.范例
这个范例演示了在 Revit 和 Rhino 中创建一个可以调整半径的球体。通过输出端可以将这个球体传递给其他 Grashopper 组件,按下连接到输入端的按钮,就可以在 Revit 中创建球体并 Bake 到 Rhino 中。
正如上图所示,我们重新命名了输入组件,也重新命名了 python 组件上的输入和输出端口上的参数名称,它使得定义更加清晰,这对刚开始使用这个组件的用户来说非常的友好。准备工作做好以后,就可以继续创建脚本了。
4.1
创建球形几何体
●
我们使用下面的脚本演示在Grasshopper中创建的几何体并在 Rhino 和 Revit 中动态预览,这个脚本将根据 Radius 端口输入的值创建一个球体:
Sphere() 方法来自于 Rhino.Geometry 命名空间,此命名空间是 RhinoCommon API 中的一部分。
设置的输出端口参数是 Sphere,把生成的球体赋值给 Sphere 变量以后,Grasshopper 会同时在 Rhino 和 Revit 中显示出预览。(Grasshopper 可以识别到输出参数的几何体并将其显示出来)。可以通过组件上的 Preview 选项切换是否显示预览,输出端口的球体也可以传到后续的组件中去。
现在就可以调整滑块的数值来更改球体的半径了,滑块的数值变化范围设置的大一些,设置的太小在 Revit 和 Rhino 中预览的时候可能很难观察到变化。
4.2
烘焙到 Revit 和 Rhino
●
我们可以在脚本中插入自定义的烘焙函数,可以把这个脚本当做一个可以重复使用的模板,每当需要从 Grsshopper 中创建 Revit 物件时就可以用到这个模板。
因为我们很长时间才需要在 Revit 中执行一次烘焙的操作,因此只有当组件的 Trigger 输入端的值为 True 时才会去执行烘焙函数,这样我们就可以在需要的时候把结果输出到 Revit。
首先,创建一个烘焙函数:
函数创建完成后,修改脚本,让它可以监听 trigger 并调用函数。
完整的范例代码:
5.处理事务
要在 Grasshopper python 组件中有效地创建新的事务并处理对模型的更改,请使用下面的模板示例:
6.查看 Revit 版本
在模板中脚本中使用 REVIT_VERSION 全局变量可以查看 Revit 的版本,范例如下:
7.在代码中调用组件
您可以在代码中调用 Grasshopper 的组件,将其当做函数来使用。不需要编写复杂的代码,就可以组成功能更强大的脚本。就像调用库函数一样调用 Grasshopper 组件,可以在完成工作的同时维护更少量的代码。要在代码中使用 Grasshopper 组件首先要使用下面的代码导入组件:
现在就可以像使用函数一样使用组件了,为了避免命名冲突,这些函数名的前缀是它们的 Grasshopper 插件名。下面的范例演示如何在代码中访问 {% include ltr/comp.html uuid=“3aedba3c-” %} 组件:
现在结合前面的知识写一个脚本,将一个 Brep 几何体输出到 Revit 并为其赋材质。这个脚本将三个不同的 Grasshopper 组件组合成了一个,请注意,显然有更简单的方法来实现同样的效果,但这只是一个简单的范例,演示如何在脚本中将组件组合在一起。
我们将使用上面创建的模板脚本,在 Grasshopper 中将变量参数修改成这样:
首先找到要使用的组件,如果组件不存在还需要提醒用户。
如果这些组件不存在就提醒用户:
现在创建脚本的主要逻辑:
完整的脚本:
8.其它相关内容
这里有一些关于文中用到所有 API 的相关资源的链接:
~更多精彩文章请您持续关注 Rhino 原厂服务号 Rhino3d 和微信订阅号 Shaper3D 所推送的相关内容~
近期 Rhino.Inside.Revit更新介绍系列
请点击图片或扫描图中二维码了解详情
Rhino原厂
近期面授课程安排
详细排程及课程介绍请点击下图进入
近期相关文章
关注Rhino原厂微信公众号获取更多优质内容





