Revit中的零件,可以將一個圖元元素,分割成許多小的零件,而這些零件對原來元素的圖元沒影響,只會是顯示一個效果,零件可以單獨列入明細表、進行標記、過濾和導出。
一、不是所有元素都可以創建零件,能夠創建零件的元素有以下幾個:
- 牆(不包括疊層牆和幕牆);
- 基礎牆;
- 樓板(不包括多層的形狀編輯樓板);
- 屋頂;
- 天花板;
- 結構樓板基礎;
- 樓板邊緣;
- 封檐帶;
- 檐溝;
- 結構框架;
- 柱;
- 結構柱。
- 可以進行零件創建的圖元有:
二、創建零件主要通過PartUtils的幾個靜態方法:
1、AreElementsValidForCreateParts 驗證給定的元素是否能創建零件
//給定的元素是否能夠創建零件 public static bool AreElementsValidForCreateParts( Document document, ICollection<ElementId> elementIds )
2、ArePartsValidForDivide 驗證給定的元素是否能被當前零件分割
public static bool ArePartsValidForDivide( Document document, ICollection<ElementId> elementIdsToDivide )
3、ArePartsValidForMerge 驗證給定的零件元素是否能夠合並
public static bool ArePartsValidForMerge( Document document, ICollection<ElementId> partIds )
4、CreateMergedPart 將指定的部件合並為一個部件
public static PartMaker CreateMergedPart( Document document, ICollection<ElementId> partIds )
5、CreateParts 將指定的元素創建為部件
//將指定元素創建為零件 public static void CreateParts( Document document, ICollection<ElementId> elementIds ) //將鏈接元素創建為零件 public static void CreateParts( Document document, ICollection<LinkElementId> hostOrLinkElementIds )
5、DivideParts 拆分零件類,比較核心,需要詳細講解,其函數功能是將傳入的零件對象拆分更多小的零件,其函數的定義如下:
public static PartMaker DivideParts( Document document, ICollection<ElementId> elementIdsToDivide, ICollection<ElementId> intersectingReferenceIds, IList<Curve> curveArray, ElementId sketchPlaneId )
參數說明如下:
elementIdsToDivide 需要拆分的元素對象
intersectingReferenceIds 和當前元素相交的參照面
curveArray 用於划分元素的線段
sketchPlaneId :當前對應的草圖平面
其基本理解為:主要是在草圖平面上繪制線段和參照面,把草圖平面分割,然后拆分為小零件,比如一個樓板,其平行的兩個面共享一個草圖平面,所以一個樓板總共有三個草圖平面,牆體也是。
6、FindMergeableClusters 查找指定元素的子部件
public static IList<ICollection<ElementId>> FindMergeableClusters( Document doc, ICollection<ElementId> partIds )
7、GetAssociatedPartMaker 獲取指定元素關聯的部件集合
public static PartMaker GetAssociatedPartMaker( Document hostDocument, ElementId elementId )
8、HasAssociatedParts 判斷指定元素是否存在部件
public static bool HasAssociatedParts( Document hostDocument, ElementId elementId )
9、其他幾個函數,可以看API,很容易理解。
三、PartMaker與Part的區別
看類的名字就知道,PartMaker是零件創建器,Part是零件,零件不用說,代表一個零件的定義,那么零件創建器PartMaker是干什么用的呢?
我們將一個牆體創建零件后,會直接返回PartMaker對象,PartMaker對象起始就是Part的一個集合,PartMake元素管為一個或多個原始元素生成零件元素的策略。