Revit 二次開發之 結構層次
- 結構層次
對於樓板和牆體來說,其都具有一定的層次類型,其層次編輯器主要通過以下界面進行添加和刪減,如下圖1-1所示:
在程序中,要獲取當前牆體、樓板的結構層次,需要到當前牆體、樓板的類型定義中獲取,其代碼如下:
FloorType floorType = floor.FloorType;
//獲取樓板的結構層
CompoundStructure compoundStructure = floorType.GetCompoundStructure();
CompoundStructure類描述着當前構件的結構層次。
- 2. CompoundStructureLayer類
CompoundStructure類是描述當前構件層次的類,其主要是有一個集合IList<CompoundStructureLayer> layers 記錄着所有的層次信息,主要通過類CompoundStructureLayer來描述一個層次,CompoundStructureLayer類有8中類型,其主要通過當前類的Function屬性定義,這8種類型分別是:
編號 |
名稱 |
描述 |
1 |
None |
沒有再使用 |
2 |
Structure |
Priority = 1 結構層,最高優先級 |
3 |
Substrate |
Priority = 2 襯底,作為其他材質基礎的材質(例如膠合板或石膏板) |
4 |
Insulation |
Priority = 3 保溫層/空氣層,隔絕並防止空氣滲透, |
5 |
Finish1 |
Priority = 4 面層 1 通常是外層。 |
6 |
Finish2 |
Priority = 5 面層 2 通常是內層。 |
7 |
Membrane |
塗膜層:通常用於防止水蒸氣滲透的薄膜。塗膜層的厚度應該為零。 |
8 |
StructuralDeck |
標識壓型板,表示層是結構層 |
CompoundStructureLayer定義對應的集合屬性如下:
編號 |
名稱 |
描述 |
1 |
DeckEmbeddingType |
壓型板的類型信息, StructDeckEmbeddingType枚舉,其包含MergeWithLayerAbove、Standalone兩種方式 |
2 |
DeckProfileId |
壓型板的族的ElementId-僅適用於功能為structural deck的層 |
3 |
Function |
層次類型 |
4 |
IsValidObject |
是否是可驗證對象 |
5 |
LayerCapFlag |
標識圖層是否參與在端點封口和/或插入處的環繞 |
6 |
LayerId |
層的id,這可能不同於CompoundStructure中層數組中的索引 |
7 |
MaterialId |
當前層次對應的材質 |
8 |
Width |
為了保持和牆體的同意,其實表示層次的厚度,在這里用寬度描述 |
其與界面的關聯信息如下:
- 3. CompoundStructure類
通過CompoundStructure類,我們可以對當前的層次進行操作,如創建層次,刪除層次,獲取層次的信息等,其主要函數定義如下:
編號 |
名稱 |
描述 |
1 |
AddWallSweep |
向復合結構添加新牆飾條或分隔縫。WallSweepInfo類 |
2 |
AssociateRegionWithLayer |
將區域與指定的圖層進行關聯。 |
3 |
CanLayerBeStructuralMaterial |
判斷指定層次是否是結構材質 |
4 |
CanLayerBeVariable |
標識輸入層是否可以指定為可變厚度層 |
5 |
CanLayerWidthBeNonZero |
標識將現有層的寬度從零更改為正值是否會創建矩形區域 |
6 |
ChangeRegionWidth |
調整現有簡單區域的寬度 |
7 |
ClearWallSweeps |
從復合結構中刪除所有放樣或分隔縫。 |
8 |
CreateSimpleCompoundStructure |
創建由平行層組成的非垂直復合結構。 |
9 |
CreateSingleLayerCompoundStructure(MaterialFunctionAssignment, Double, ElementId) |
創建包含單個層的CompoundStructure。 |
10 |
CreateSingleLayerCompoundStructure(Double, MaterialFunctionAssignment, Double, ElementId) |
創建包含單個層的CompoundStructure。 |
11 |
DeleteLayer |
從此復合結構中刪除指定的層。 |
12 |
FindEnclosingRegionAndSegments |
給定一對網格坐標和分割方向,返回封閉區域和通過網格點的直線相交的兩段。 |
13 |
GetAdjacentRegions |
獲取綁定到指定段的區域的ID。 |
14 |
GetCoreBoundaryLayerIndex |
返回核心邊界正下方層的索引。 |
15 |
GetDeckEmbeddingType |
檢索用於指定結構層組的層組嵌入類型。 |
16 |
GetDeckProfileId |
檢索用於指定結構層面板的輪廓循環。 |
17 |
GetExtendableRegionIds |
獲取復合結構的可擴展區域ID。 |
18 |
GetFirstCoreLayerIndex |
獲取第一個核心層的索引。 |
19 |
GetLastCoreLayerIndex |
獲取最后一個核心層的索引。 |
20 |
GetLayerAssociatedToRegion |
獲取與特定區域關聯的層。 |
21 |
GetLayerFunction |
檢索指定層的函數。 |
22 |
GetLayers |
定義此復合結構的層的副本。 |
23 |
GetLayerWidth |
檢索指定層的寬度。 |
24 |
GetMaterialId |
檢索指定層的材質元素id。 |
25 |
GetMinimumLayerThickness |
獲得最小允許層厚度。 |
26 |
GetNumberOfShellLayers |
檢索內部或外部殼層的數量。 |
27 |
GetOffsetForLocationLine |
返回從復合結構中心到給定位置行值的偏移量。 |
28 |
GetPreviousNonZeroLayerIndex |
返回此層之前最接近的非零寬度層的索引。 |
29 |
GetRegionEnvelope |
獲取指定區域跨越的封套。 |
30 |
GetRegionIds |
獲取此復合結構的區域ID。 |
31 |
GetRegionsAlongLevel |
返回當垂直復合結構在應用此結構的牆底部上方的固定高度上遍歷時遇到的區域的ID |
32 |
GetRegionsAssociatedToLayer |
獲取與特定層關聯的區域ID集。 |
33 |
GetSegmentCoordinate |
獲取線段的坐標。 |
34 |
GetSegmentEndPoints |
獲取段的端點。 |
35 |
GetSegmentIds |
獲取此復合結構的段ID。 |
36 |
GetSegmentOrientation |
獲取段的方向。 |
37 |
GetSimpleCompoundStructure |
通過應用此復合結構的示例牆獲取水平切片,並返回描述該切片的簡單復合結構,即一系列平行層。 |
38 |
GetWallSweepsInfo |
獲取此復合結構中內在牆飾條或分隔縫的列表。 |
39 |
GetWidth() |
這個復合結構所暗示的寬度。 |
40 |
GetWidth(Int32) |
計算指定區域的封套(二維邊界框)的寬度。 |
41 |
IsCoreLayer |
檢查指定的層是否為核心層。 |
42 |
IsLayerValid |
驗證此層中的數據是否內部一致。 |
43 |
IsRectangularRegion |
確定指定區域是否為矩形。 |
44 |
IsSimpleRegion |
確定區域是否是此復合結構中的簡單區域。 |
45 |
IsStructuralDeck |
確定指定層是否為結構層面板。 |
46 |
IsValid |
檢查此復合結構中的數據是否存在錯誤或不一致。 |
47 |
IsValidRegionId |
確定指定的整數是否實際是此CompoundStructure中某個區域的id。 |
48 |
IsValidSampleHeight |
指定的高度是否是此復合結構的有效樣本高度? |
49 |
IsValidSegmentId |
確定指定的整數是否實際是此CompoundStructure中某個段的id。 |
50 |
IsVerticallyHomogeneous |
指示此CompoundStructure是否表示單個平行層集。 |
51 |
MergeRegionsAdjacentToSegment |
合並共享指定段的兩個區域。 |
52 |
ParticipatesInWrapping |
標識層是否包含在鑲件和末端的環繞中。 |
53 |
RemoveWallSweep |
從復合結構中刪除單個放樣或分隔縫。 |
54 |
SetDeckEmbeddingType |
設置要用於指定結構層面板的層面板嵌入類型。 |
55 |
SetDeckProfileId |
設置要用於指定結構層面板的輪廓回路。 |
56 |
SetExtendableRegionIds |
設置復合結構的可擴展區域ID。 |
57 |
SetLayer |
為此復合結構設置單個層。 |
58 |
SetLayerFunction |
設置指定圖層的功能。 |
59 |
SetLayers |
完全重置此復合結構並應用一組新層。 |
60 |
SetLayerWidth |
設置指定圖層的寬度。 |
61 |
SetMaterialId |
設置指定圖層的材質元素。 |
62 |
SetNumberOfShellLayers |
設置內部或外部殼層的數量。 |
63 |
SetParticipatesInWrapping |
指定層是否包含在插入和結束處的環繞中。 |
64 |
SplitRegion(UV, RectangularGridSegmentOrientation) |
將包含指定柵格點的區域拆分為具有指定方向的線。 |
65 |
SplitRegion(UV, RectangularGridSegmentOrientation, Int32%) |
將包含指定柵格點的區域拆分為具有指定方向的線。 |
對應的屬性信息如下:
編號 |
名稱 |
描述 |
1 |
CutoffHeight |
低於或位於截斷高度處的水平段與牆底部的距離固定,高於截斷高度處的水平段與牆頂部的距離固定。 |
2 |
EndCap |
指示定義哪些殼層將參與端部包裹的端蓋條件。 |
3 |
HasStructuralDeck |
檢查復合結構是否具有結構面板。 |
4 |
IsEmpty |
檢查此復合結構是否為空。 |
5 |
IsValidObject |
指定.NET對象是否表示有效的Revit實體。 |
6 |
IsVerticallyCompound |
標識此復合結構是否表示比一組簡單的平行層更復雜的布局。 |
7 |
LayerCount |
返回此CompoundStructure中包含的層數。 |
8 |
MinimumSampleHeight |
由當前采樣高度和水平段確定的最小采樣高度。 |
9 |
OpeningWrapping |
指示洞口環繞條件,用於定義在平面視圖中牆的哪些殼層在插入件和洞口處環繞。 |
10 |
SampleHeight |
樣本高度是應用此復合結構中數據的牆的假定高度。 |
11 |
StructuralMaterialIndex |
指定當前對應的是否是核心結構材質,對應關系如下圖 |
12 |
VariableLayerIndex |
表示指定為變量的層的索引。 |
StructuralMaterialIndex對應的是當前的打勾層次: