【转】【Revit】Revit二次开发--标注的创建,Reference的获取
1. Line的Reference
2. Face的Reference
3. FamilyInstance的Reference
a.在轴网标注功能中,获得轴网的Reference只需要对grid进行new Reference操作即可获得,即: var gridref = new Reference(grid).
b.Face的Reference操作主要用于对墙的标注,这里可能是大家用的最多的。要拿到Face首先要获取Solid , 获取Solid就要拿到构件的
GeometryElement ,这里的描述是逆推,正常的套路如下:
1. new options()。对options的属性进行设置
2.获取构件的GeometryElement
3.通过GeometryElement获取GeometryInstance
4.通过GeometryInstance拿到Solid
5.通过Solid拿到FaceArray
6.最后通过Face .Reference属性获取
如果不对options进行设置,得到的Reference就是null.
options的ComputeReferences设置为true .
options的Detail evel与IncludeNonVisibleObjects的设置会直接影响构件中几何的获取。举个例子,当IncludeNonVisibleObjects设置为
false的时候,获取构件的几何可能只包含Solid ,而当IncludeNonVisibleObjects设置为true时会发现构件的几何除了包含Solid还可能包含
Line等等。所以在IncludeNonVisibleObjects的设置 上我建议也是设置为true.
ViewDetailLevel的设置一般为Fine.
c. FamilyInstance的Reference这个是最神奇的,其函数有以下:
当你在为FamilyInstance进行标注一直找不到Reference的时候,你可以试试这个,因为有的Reference并不是从Solid里去找,也不太像在Line里面找,这时候就要试试上面的函数了,举个最简单的用法:
familyinstance. GetReferences(FamilyInstanceReferenceType.CenterLeftRight).FirstOrDefault();
尽量不要通过GetReferenceByName的方式去找. name并不是区分Reference的标示, FamilyInstanceReferenceType是最保险的:
附:顺带说一下AutoCAD里面的标注参数
XLine1Point、XLine2Point 指定尺寸界线的位置。
DimLinePoint 用于确定尺寸线的位置。
原文地址:https://blog.csdn.net/weixin_39479180/article/details/108655021