X
返回顶部
当前位置: 首页> BIM资讯> BIM技术

Dynamo与Revit API之间的转换——Dynamo Python系列教程

发布:中文网小编3号 浏览:2874人 分享
发布于:2020-10-23 15:12

    文章来源:BIM的乐趣

image.png

    今天来聊聊Dynamo与Revit之间图元转换的基础知识,这些需要你牢牢记住哦,不然在Pythonscript中写代码,经常会报错的~

    通常来讲,所有来自Dynamo节点的几何图形都不是Revit的几何对象,所以它们需要与RevitAPI一起使用进行转换。

    Dynamo的几何图形单位是米,而Revit使用的英尺,这里要引入转换工具,用下面的方法:

    importclr

    clr.AddReference("RevitNodes")

    importRevit

    #引入ToProtoType,ToRevitType几何图形转换方法

    clr.ImportExtensions(Revit.GeometryConversion)

    接下来分别列下需要转换的图元:

    一、从Revit到Dynamo

    1、解封:

    unWrappedElement=Unwrapelement(wrappedElement)#我门常称之为"解封"

    unWrappedGeometry=wrappedGeometry.ToRevitType()

    Unwrapelement()方法不需要单独导入,可以直接使用,该方法完成了Dynamo类型到RevitAPI类型的转换。

    2、几何图元转换

    #Elements

    Element.ToDSType(bool);#如果是Revit生成的图元,则为真

    #Geometry

    XYZ.ToPoint()>Point

    XYZ.ToVector()>Vector

    Point.ToProtoType()>Point

    List<XYZ>.ToPoints()>List<Point>

    UV.ToProtoType()>UV

    Curve.ToProtoType()>Curve

    CurveArray.ToProtoType()>PolyCurve

    PolyLine.ToProtoType()>PolyCurve

    Plane.ToPlane()>Plane

    Solid.ToProtoType()>Solid

    Mesh.ToProtoType()>Mesh

    IEnumerable<Mesh>.ToProtoType()>Mesh[]

    Face.ToProtoType()>IEnumerable<Surface>

    Transform.ToCoordinateSystem()>CoordinateSystem

    BoundingBoxXYZ.ToProtoType()>BoundingBox

    二、从Dynamo到Revit

    1、封装

    wrappedElement=unWrappedElement.ToDSType(isRevitOwned)#我们常称之为"封装"

    wrappedGeometry=unWrappedGeometry.ToProtoType()

    该方法在调用之前需要导入,位于“RevitNodes”程序集中,且该方法为扩展方法,导入方法有所不同,需特别注意.

    2、几何图元转换

    #Elements

    Element.InternalElement

    #Geometry

    Point.ToRevitType()>XYZ

    Vector.ToRevitType()>XYZ

    Plane.ToPlane()>Plane

    List<Point>.ToXyzs()>List<XYZ>

    Curve.ToRevitType()>Curve

    PolyCurve.ToRevitType()>CurveLoop

    Surface.ToRevitType()>IList<GeometryObject>

    Solid.ToRevitType()>IList<GeometryObject>

    Mesh.ToRevitType()>IList<GeometryObject>

    CoordinateSystem.ToTransform()>Transform

    CoordinateSystem.ToRevitBoundingBox()>BoundingBoxXYZ

    BoundingBox.ToRevitType()>BoundingBoxXYZ

    接下来简单举个例子,把Dynamo里的点转换为Revit的点:

image.png

    这里就用到我最上面写的转换方法。

    对于点,还可以用ToXyz()的方法转换成Revit元素。

    同样的,我们还可以将Revit的元素转换为Dyanmo中的元素:

image.png

    好了,今天得教程分享就到这里,要多加练习哦~~


    Revit中文网作为国内知名BIM软件培训交流平台,几十万Revit软件爱好者和你一起学习Revit,不仅仅为广大用户提供相关BIM软件下载与相关行业资讯,同时也有部分网络培训与在线培训,欢迎广大用户咨询。

    网校包含各类BIM课程320余套,各类学习资源270余种,是目前国内BIM类网校中课程最有深度、涵盖性最广、资源最为齐全的网校。网校课程包含Revit、Dynamo、Lumion、Navisworks、Civil 3D等几十种BIM相关软件的教学课程,专业涵盖土建、机电、装饰、市政、后期、开发等多个领域。

    需要更多BIM考试教程或BIM视频教程,可以咨询客服获得更多免费Revit教学视频

l  BIM培训网校课程目录

l  Revit零基础培训教程

l  BIM项目实战训练营


BIM技术是未来的趋势,学习、了解掌握更多BIM前言技术是大势所趋,欢迎更多BIMer加入BIM中文网大家庭(http://www.wanbim.com),一起共同探讨学习BIM技术,了解BIM应用!