【轉】【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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM