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对应的是当前的打勾层次: