Revit开发之读取几何信息


Revit中Element的几何信息可以通过get_Geometry(Options opt) 方法获取

这个函数需要一个Options类的参数,这个参数可以同过他的构造函数 new一个,

他有以下几个参数可以设置:

Public propertyComputeReferences
Determines whether or not references to geometric objects are computed.
Public propertyDetailLevel
The detail level for the geometry extracted with these options.
Public propertyIncludeNonVisibleObjects
Whether to extract element geometry objects not set as Visible. The default is false.
   
Public propertyView

ComputeReferences 这个是bool值 ,如果为true,返回的 Reference不为null,默认为false

DetailLevel 这个对应了视图 详细程度

IncludeNonVisibleObjects 这个是设置是否包含 不可见的几何

 View  返回这个视图中可见的几何


然后通过get_Geometry(Options opt)这个方法返回的是一个 GeometryElement

GeometryElement这里面包含了Element的所有GeometryObject

    Autodesk.Revit.DB..::..GeometryObject
      Autodesk.Revit.DB..::..Curve
      Autodesk.Revit.DB..::..Edge
      Autodesk.Revit.DB..::..Face
      Autodesk.Revit.DB..::..GeometryElement
      Autodesk.Revit.DB..::..GeometryInstance
      Autodesk.Revit.DB..::..Mesh
      Autodesk.Revit.DB..::..Point
      Autodesk.Revit.DB..::..PolyLine
      Autodesk.Revit.DB..::..Profile
      Autodesk.Revit.DB..::..Solid

GeometryObject有上面这些子类 

这里的 GeometryElementGeometryInstance 是我们不想要的GeometryObject类型

如果是这两个,我们要继续往下获取

GeometryElement 的获取和上面一样

GeometryInstance可以通过GetInstanceGeometry() 返回一个GeometryElement,他的获取和上面也是一样的


博主会经常更新一些技术文章,请大家多多关注,多多交流

更多技术交流,请加qq群480950299


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Revit 二次开发中,获取族实例几何信息的方法可以分为两种:使用 Revit API 提供的方法和使用 Geometry API 提供的方法。 首先,使用 Revit API 提供的方法可以通过以下代码获取族实例的几何信息: ```csharp // 获取当前文档 Document doc = uidoc.Document; // 获取选中的族实例 ElementId elementId = uidoc.Selection.GetElementIds().FirstOrDefault(); FamilyInstance familyInstance = doc.GetElement(elementId) as FamilyInstance; // 获取族实例的几何信息 GeometryElement geometryElement = familyInstance.get_Geometry(new Options()); foreach (GeometryObject geometryObject in geometryElement) { if (geometryObject is Solid solid) { // 获取实体的顶点信息 foreach (Face face in solid.Faces) { Mesh mesh = face.Triangulate(); foreach (XYZ vertex in mesh.Vertices) { // 获取顶点坐标 double x = vertex.X; double y = vertex.Y; double z = vertex.Z; } } } } ``` 其次,使用 Geometry API 提供的方法可以通过以下代码获取族实例的几何信息: ```csharp // 获取当前文档 Document doc = uidoc.Document; // 获取选中的族实例 ElementId elementId = uidoc.Selection.GetElementIds().FirstOrDefault(); FamilyInstance familyInstance = doc.GetElement(elementId) as FamilyInstance; // 获取族实例的几何信息 GeometryElement geometryElement = familyInstance.Symbol.Geometry; foreach (GeometryObject geometryObject in geometryElement) { if (geometryObject is Solid solid) { // 获取实体的顶点信息 foreach (Face face in solid.Faces) { Mesh mesh = face.Triangulate(); foreach (XYZ vertex in mesh.Vertices) { // 获取顶点坐标 double x = vertex.X; double y = vertex.Y; double z = vertex.Z; } } } } ``` 无论是哪种方法,都可以获取到族实例的几何信息。使用 Revit API 提供的方法可以更方便地获取当前文档和选中的族实例,而使用 Geometry API 提供的方法则可以直接从族类型中获取几何信息,避免了需要实例化后再获取几何信息的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值