当前位置: 首页 > 工具软件 > Dynamo-BIM > 使用案例 >

Revit元素与Dynamo元素之间的相互转换

施俊驰
2023-12-01

欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207

一、背景

小伙伴们在revit二次开发时,可能需要在C#中使用dynamo中的元素,或者在dynamo中使用Revit的元素。由于C#中对元素的数据定义与dynamo中Ironpython对元素数据定义存在一定的差异,所以就需要用到数据转换了。

二、思路

  1. Revit元素,转dynamo元素,使用ToProtoType()方法
  2. dynamo元素,转Revit元素,使用ToRevitType()方法

接下来通过代码给小伙伴们演示一下

三、代码举例

  1. Revit转dyanmo元素
//---一.revit转dynamo元素-----
//1首先创建revit点元素
Autodesk.Revit.DB.Point revitPoint1= Autodesk.Revit.DB.Point.Create(new XYZ(1,2,3));
//2将其转为dynamo的点元素
//ToProtoType()方法需要引入以下命名空间
using Revit.GeometryConversion;
Autodesk.DesignScript.Geometry.Point dynamoPoint1 = revitPoint1.ToProtoType();
  1. dynamo转Revit元素
    需要引入电脑上的RevitNodes.dll文件,一般在dynamo for revit文件夹下面。
//---二.dyanmo转revit元素
//1首先创建dynamo点元素
Autodesk.DesignScript.Geometry.Point dynamoPoint2 = Autodesk.DesignScript.Geometry.Point.ByCoordinates(1, 2, 3);
//2将其转为Revit元素
Autodesk.Revit.DB.XYZ revitXYZ = dynamoPoint2.ToRevitType();//这里转换后得到的是Revit中的XYZ,对于Point得到需要进一步处理
Autodesk.Revit.DB.Point revitPoint2 = Autodesk.Revit.DB.Point.Create(revitXYZ);//通过Revit中的XYZ类型得到Revit中的Point类型

四、注意事项

1.本文通过对点的相互转换,说明了revit与dynamo元素的互相转换基本方法。
对于线,面,体等,方法都是第二部分中提到的两种基本方法,小伙伴们在转换后,需要对类型进行核对,如有必要,就做进一步的处理,比如对点我们需要进一步使用Autodesk.Revit.DB.Point.Create(revitXYZ)的这个操作。
2.大家好,我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货。

 类似资料: