暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Dynamo节点包不够用?Python拓展功能,为所欲为!

卷它BIM 2022-04-22
1999

Python可以做一切,除了不会生孩子。

Python to Dynamo to Revit,实现市面上Revit插件的各种功能!
Python 提供了更多可实现的方法来编写条件语句(if/then)和循环。Python 是一个强大的工具,可以扩展 Dynamo 的功能,并允许用几行简洁的代码替换许多节点。

Python 节点

与代码块一样,Python 节点是可视化编程环境中的脚本接口。Python 节点可以在库中的 Core>Scripting 下找到。双击节点打开 python 脚本编辑器(也可以右键单击节点并选择Edit...)。

在该节点内写代码不会提示和补全,对小白不是很友好,可以到 PyCharm 软件中写代码,调试好后粘贴回来。

Revit元素的属性

元素除了可见的参数、几何属性外,还有部分藏在深处的用户不大用的上的属性,需要借助Lookup插件来获取。

通过Lookup查看属性

例如:文字注释元素的位置信息无法像可转化为几何图形的元素一样从solid 中 get 质心点,它的位置信息储存在 Coord 中,而这个参数在Dynamo中用节点 Parameter.ParameterByName 获取不到,虽然程序不报错,得到的是空值。

程序语言的方法

通过现有节点无法获取到值,而在属性中可以查询到,所以一定有方法拿到,使用 Python 来实现。

所有元素、事务的处理方法在软件的API文档中均可查询得到。但是,在前期熟悉过程中可以在  https://giobel.github.io/Dynamo-Python/  这里查找需要用到的常用方法。

https://giobel.github.io/Dynamo-Python/

例如:获取文字注释的 Coord 的值,用TextNote_coord = i.Coord就可以拿到,这个坐标是Revit空间中的,再用TextNote_point = TextNote_coord.ToPoint()转化为Dynamo中的XYZ坐标点图元。


    # 加载 Python Standard 和 DesignScript 库
    import sys
    import clr
    clr.AddReference('ProtoGeometry')
    from Autodesk.DesignScript.Geometry import *
    clr.AddReference("RevitNodes")
    import Revit
    # Import ToProtoType, ToRevitType geometry conversion extension methods
    clr.ImportExtensions(Revit.GeometryConversion)
    # Import DocumentManager and TransactionManager
    clr.AddReference("RevitServices")
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    doc = DocumentManager.Instance.CurrentDBDocument
    # Import RevitAPI
    clr.AddReference("RevitAPI")
    import Autodesk
    from Autodesk.Revit.DB import *
    # 该节点的输入内容将存储为 IN 变量中的一个列表。
    dataEnteringNode = IN
    list1 = []
    # 将代码放在该行下面
    if isinstance(IN[0], list):
    element_TextNote = UnwrapElement(IN[0])
    else:
    element_TextNote = [UnwrapElement(IN[0])]
    for i in element_TextNote:
    TextNote_coord = i.Coord
    TextNote_point = TextNote_coord.ToPoint()
    list1.append(TextNote_point)
    # 将输出内容指定给 OUT 变量。
    OUT = list1

    一个.dyn文件中的所有节点可以在Python Script代码化,优化混乱的界面,并且逻辑清晰更流畅。
    整个流程是Python to Dynamo to Revit的起点,后续的运用主要是思路的梳理以及解决所遇到的问题,这只是一个工具。


    在专业知识的加持下,实现更深入的实用功能开发!

    ------------End------------

    文章转载自卷它BIM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论