首页 > 技术文章 > Revit 二次开发之 结构层次

minhost 2021-01-25 15:11 原文

Revit 二次开发之 结构层次

 

 

  1. 结构层次

对于楼板和墙体来说,其都具有一定的层次类型,其层次编辑器主要通过以下界面进行添加和删减,如下图1-1所示:

 

 

在程序中,要获取当前墙体、楼板的结构层次,需要到当前墙体、楼板的类型定义中获取,其代码如下:

FloorType floorType = floor.FloorType;

//获取楼板的结构层

CompoundStructure compoundStructure = floorType.GetCompoundStructure();

CompoundStructure类描述着当前构件的结构层次。

  1. 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

为了保持和墙体的同意,其实表示层次的厚度,在这里用宽度描述

其与界面的关联信息如下:

 

 

 

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

 

 

推荐阅读