Revit二次開發 零件創建


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元素管為一個或多個原始元素生成零件元素的策略。

 


免責聲明!

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



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