- Autodesk Revit 二次开发基础教程(虽然版本很老,很多代码都无法运行,但几何的理论部分还是深入研究一下的的)
几何实例常用属性和方法
Transform
属性:表示从类型的局部坐标系到实例的世界坐标系的坐标变换SymbolGeometry
该族类型的几何元素GetInstanceGeometry()
:获取族实例的几何元素GetSymbolGeometry()
:获取族类型的几何元素
其中几何元素类型有三种:
- Curve线
- Solid实体
- Instance几何实例
注意:
- 使用
SymbolGeometry
和GetSymbolGeometry()
获取的几何元素需要坐标转换,否则会发生偏移
例子
public static void GetInstenceGeometry(ExternalCommandData commandData)
{
#region 获取几何元素
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;
Reference reference = uiDoc.Selection.PickObject(ObjectType.Element, "请选择元素");
Options options = new Options()
{
View = doc.ActiveView,
};
Instance instance = doc.GetElement(reference) as Instance;
GeometryElement ge = instance.get_Geometry(options);
#endregion
foreach (GeometryObject geobj in ge)
{
GeometryInstance geometryInstance = geobj as GeometryInstance;
if (geometryInstance != null)
{
foreach (GeometryObject ins in geometryInstance.SymbolGeometry)
{
Curve curve = ins as Curve;
if (curve != null)
{
// 需要进行坐标转换
curve = curve.CreateTransformed(geometryInstance.Transform);
// 进一步操作 ...
}
}
foreach (GeometryObject ins in geometryInstance.GetInstanceGeometry())
{
Curve curve = ins as Curve;
if (curve != null)
{
// 不需要进行坐标转换,进一步操作 ...
}
}
}
}
}
其他
几何基元类
均由GeometryObject
派生
graph LR
A[GeometryObject]
Profile-->A
B2[Face]-->A
B22[PlanarFace]-->B2
B23[RuledFace]-->B2
B24[ConicalFace]-->B2
Edge-->A
B4[Curve]-->A
B41[Line]-->B4
B42[Arc]-->B4
B43[Ellipse]-->B4
B44[HermiteSpline]-->B4
Point-->A
GeometryElement-->A
GeometryInstance-->A
Mesh-->A
Solid-->A
- 轮廓(Profile):用来生成形状的线,可以用它来修改形状
- 面(Face):三维空间的实体类
- 边(Edge):三维空间中实体的边
- 线(Curve):多段线和直线都是它的子类
- 点(Point):点
- 几何元素(
GeometryElement
):一个元素的几何表示,包含了所有的几何信息 - 几何实例(
GeometryInstance
):一个类型图元的实例, - 网格(Mesh):三角网格
- 实体(Solid):三维实体
注意:
- 开发过程用的比较多的应该就是面(Face)、边(Edge)、线(Curve)了。注意一下它们之间的转换关系,尤其要注意面和线的派生类(Line和平面)。
GeometryInstance
几何实例是开发过程的重点;
几何辅助类
根据使用频率
- XYZ :三维空间的坐标,可以用来表示点或向量(Point没用了),需要注意一下它的常用方法 (求距离、标准化)
- Reference:几何对象的稳定引用,可用于配合选择元素等动作
- Transform:仿射空间的变换(3*4)矩阵变换
- Options:解析几何的参数选择,获取几何元素时必选参数
- UV:二维空间坐标(没用过)
BoundingBoxXYZ
:三维长方体(没用过)BoundingBoxUX
:二维长方体(没用过)
Options属性:
ComputeReferences
:是否计算几何引用,获取几何引用时,需打开该选项,否则返回nullDetailLevel
:几何信息的详细程度View
:获取视图相关的元素几何信息IncludeNonVisibleObjects
:是否获取不可见元素的几何信息,默认为False
几何集合类
线