IfcGeometricConstraintResource(几何约束资源)
IfcGeometricConstraintResource(几何约束资源)
IfcGeometricConstraintResource定义了用于确定产品的形状表示在项目的几何表示上下文中的位置的资源。它还包含要分配给产品连接定义的资源定义,以确定这些产品之间的连接几何约束。
此资源的主要应用程序是:
●确定用于对象形状表示的对象位置
●确定应用于两个对象形状之间的连接的约束
位置
产品形状的放置由IfcObjectPlacement给出,IfcProduct的属性ObjectPlacement使用它。对象放置定义了本地对象坐标系,在该坐标系中定义了该产品的所有形状表示。它要么作为
①绝对位置,
使用IfcLocalPlacement并省略PlacementRelTo属性指定绝对位置。
②相对位置:
通过使用IfcLocalPlacement并将PlacementRelTo属性指向另一个IfcProduct实例中使用的IfcObjectPlacement来指定相对位置;
③相对于网格的位置:
相对于网格的放置是通过使用指向ICFGRIDAXIS的一个(或两个)虚拟交叉点的IFCGRIdIt指定的。如果两个虚拟交点是参照,则第二个虚拟交点指定对象放置的方向。或者,也可以通过ifcDirection显式地提供方向。
■注意当使用相对放置时,每个产品的形状表示在object placement提供的本地对象坐标系中定义。该局部对象坐标系是相对于PlacementRelTo引用的对象坐标系定义的,PlacementRelTo也可以是相对位置。最后,没有PlacementRelTo属性的ObjectPlacement定义了到全局坐标系的转换。必须按此顺序将当前坐标系转换为父坐标系。
连接几何
连接几何定义了两个产品形状之间的连接。约束可以由几何表示项定义:
●点
●线
●面
●体
或通过具有关联几何图形的拓扑表示项:
●顶点
●边缘曲线
●表面
●封闭外壳 : 作为一种特殊类型的点连接,包括表示偏心率的规定,即连接中涉及的两点之间的物理距离。
Types
1 IfcCurveOrEdgeCurve (曲线或边缘曲线类型)
2 IfcGridPlacementDirectionSelect (网格放置方向选择类型)
3 IfcPointOrVertexPoint (点或顶点类型)
4 IfcSolidOrShell (实体或壳体类型)
5 IfcSurfaceOrFaceSurface (表面类型)
Entities
1 IfcConnectionCurveGeometry (连接曲线几何实体)
2 IfcConnectionGeometry (连接几何实体)
3 IfcConnectionPointEccentricity (连接点偏心实体)
4 IfcConnectionPointGeometry (连接点几何实体)
5 IfcConnectionSurfaceGeometry (连接面几何实体)
6 IfcConnectionVolumeGeometry (连接体几何实体)
7 IfcGridAxis (网格轴实体)
8 IfcGridPlacement (网格放置实体)
9 IfcLocalPlacement (绝对位置坐标实体)
10 IfcObjectPlacement (局部位置坐标实体)
11 IfcVirtualGridIntersection (虚拟网格实体)
Functions
1 IfcCorrectLocalPlacement (真正的局部坐标计算函数)
类型:
1 IfcCurveOrEdgeCurve (曲线或边缘曲线类型)
Enumeration definition
Constant | Description |
---|---|
IfcBoundedCurve | |
IfcEdgeCurve |
2 IfcGridPlacementDirectionSelect (网格放置方向选择类型)
Enumeration definition
Constant | Description |
---|---|
IfcVirtualGridIntersection | |
IfcDirection |
3 IfcPointOrVertexPoint (点或顶点类型)
Enumeration definition
Constant | Description |
---|---|
IfcPoint | |
IfcVertexPoint |
4 IfcSolidOrShell (实体或壳体类型)
Constant | Description |
---|---|
IfcSolidModel | |
IfcClosedShell |
5 IfcSurfaceOrFaceSurface (表面类型)
Enumeration definition
Constant | Description |
---|---|
IfcSurface | |
IfcFaceSurface | |
IfcFaceBasedSurfaceModel |
实体:
1 IfcConnectionCurveGeometry (连接曲线几何实体)
IfcConnectionCurveGeometry用于描述有助于两个对象在曲线或与曲线几何相关联的边上物理连接的几何约束。它被设想为应用于元素连接关系的控件。
curveOnRelationElement属性处的IfcCurve(或具有关联IfcCurve的IfcEdgeCurve)定义了连接元素的基本几何项所连接的曲线。曲线几何图形和坐标在RelatingElement的局部坐标系内提供,如在使用IfcConnectionCurveGeometry的IfcRelConnects子类型中指定的。或者,也可以使用CurveOnRelatedElement属性在RelatedElement的本地坐标系中提供相同的曲线几何图形和坐标。
示例:两墙之间的连接关系有一个几何约束,该约束描述了第一墙的CurveOnRelationElement和第二墙的CurveOnRelationElement的端盖(或墙端的截断)。IfcConnectionCurveGeometry的确切用法在使用它的元素的几何使用部分中进一步定义。
通过仅应用IfcPolyline,可以进一步限制连接约束的可用几何图形仅允许直线段。这种使用约束是在IfcElement子类型的对象定义中提供的,它通过引用IfcRelConnects的子类型和相关的IfcConnectionCurveGeometry来利用元素连接。
# | Attribute | Type | Cardinality | Description | C |
---|---|---|---|---|---|
1 | CurveOnRelatingElement | IfcCurveOrEdgeCurve | [1:1] | The bounded curve at which the connected objects are aligned at the relating element, given in the LCS of the relating element. | X |
2 | CurveOnRelatedElement | IfcCurveOrEdgeCurve | [0:1] | The bounded curve at which the connected objects are aligned at the related element, given in the LCS of the related element. If the information is omitted, then the origin of the related element is used. | X |
Inherited definitions from supertypes
Entity inheritanceAttribute inheritance
2 IfcConnectionGeometry (连接几何实体)
点|顶点
曲线|边缘曲线
表面|表面
Entity inheritance
3 IfcConnectionPointEccentricity (连接点偏心实体)
4 IfcConnectionPointGeometry (连接点几何实体)
5 IfcConnectionSurfaceGeometry (连接面几何实体)
6 IfcConnectionVolumeGeometry (连接体几何实体)
7 IfcGridAxis (网格轴实体)
8 IfcGridPlacement (网格放置实体)
9 IfcLocalPlacement (绝对位置坐标实体)
IfcLocalPlacement定义了一个产品相对于另一个产品的放置的相对放置,或者在项目的几何表示上下文中产品的绝对放置。
IfcLocalPlacement允许此IfcLocalPlacement(通过attributeObjectPlacement)将IfcProduct放置在另一个IfcProduct(由PlacementRelTo引用)的对象放置的本地坐标系中。必须在应用程序级别引入防止循环相对放置的规则。
如果未给出PlacementRelTo,则IfcProduct将绝对放置在世界坐标系内。
如果使用相对位置,下列约定应作为默认相对位置适用。给出了IfcProduct的所有五个直接子类型的约定:ifcspatialstructurelement、IfcElement、IfcAnnotation、IfcGrid、IfcPort。在上述五种类型的子类型级别给出了更详细的位置信息。
●对于ifcspatialstructurelement的子类型,以下约定适用
①IfcSite应完全位于由IfcProject的几何表示上下文建立的世界坐标系内
②IfcBuilding应相对于IfcSite的本地放置进行放置
③IfcBuildingStorey应相对于IfcBuilding的本地位置放置
●对于IfcGrid和IfcAnnotation,公约适用于将其置于相对位置
■到其容器的本地位置,IfcSite、IfcBuilding或IfcBuildingStorey
■它应该是IfcRelContainedInSpatialStructure包含关系引用的同一容器元素,
●对于IfcPort,本公约适用于将其置于相对位置
它所属的IfcElement的本地位置
它应该与IfcRelConnectsPortToElement连接关系所引用的元素相同,
●为方便起见,本公约适用于以下情况:
到其容器的本地位置,IfcSite、IfcBuilding或IfcBuildingStorey
它应该是IfcRelContainedInSpatialStructure包含关系引用的同一容器元素,
■与元素组成关系相关联的IfcElement的本地位置
对于相对于主要部件(如开口)的特征,如IfcRelVoidsElement和IfcRelProjectsElement所表示;
用于填充开口的构件(如门或窗),如IfcRelFillsElement所表示;
用于覆盖元件的覆盖物,如ifcrelcoversbldelements所表示;
对于聚合到主组件的子组件,如ifcrelaggregegregates和IfcRelNests所表示。
10 IfcObjectPlacement (局部位置坐标实体)
ifcObjectPlacement是定义对象坐标系的特殊类型的抽象超类型。必须为每个具有形状表示的产品提供IfcObjectPlacement。
可以给出对象的位置:
●绝对值:通过AxIS2放置,相对于世界坐标系,
●相对:通过AxIS2布局,相对于另一个产品的对象放置,
●按网格参考:由设计网格的两个轴给出的虚拟交点和参考方向。
Attribute definitions
# | Attribute | Type | Cardinality | Description | C |
---|---|---|---|---|---|
PlacesObject | IfcProduct @ObjectPlacement |
S[0:?] | The IfcObjectPlacement shall be used to provide a placement and an object coordinate system for instances of IfcProduct.
If an IfcObjectPlacement is shared by many instances of IfcProduct it does not apply a semantic meaning of being a shared placement that needs to be maintained. The same instance of IfcObjectPlacement could simply be used to reduce exchange file size. |
X | |
ReferencedByPlacements | IfcLocalPlacement @PlacementRelTo |
S[0:?] | Placements that are given relative to this placement of an object. | X |
Inherited definitions from supertypes
Entity inheritanceAttribute inheritance
11 IfcVirtualGridIntersection (虚拟网格实体)
函数:
1 IfcCorrectLocalPlacement (真正的局部坐标计算函数)
函数检查三维局部放置的相对放置(即相对于另一个局部放置,而不是栅格放置)必须相对于三维父放置(而不是二维父放置)。注:IFC2x版本2中的新功能。
FUNCTION IfcCorrectLocalPlacement (AxisPlacement:IfcAxis2Placement; RelPlacement : IfcObjectPlacement):LOGICAL; IF (EXISTS(RelPlacement)) THEN IF ('IFCGEOMETRICCONSTRAINTRESOURCE.IFCGRIDPLACEMENT' IN TYPEOF(RelPlacement)) THEN RETURN(?); END_IF; IF ('IFCGEOMETRICCONSTRAINTRESOURCE.IFCLOCALPLACEMENT' IN TYPEOF(RelPlacement)) THEN IF ('IFCGEOMETRYRESOURCE.IFCAXIS2PLACEMENT2D' IN TYPEOF(AxisPlacement)) THEN RETURN(TRUE); END_IF; IF ('IFCGEOMETRYRESOURCE.IFCAXIS2PLACEMENT3D' IN TYPEOF(AxisPlacement)) THEN IF (RelPlacement\IfcLocalPlacement.RelativePlacement.Dim = 3) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; END_IF; END_IF; ELSE RETURN(TRUE); END_IF; RETURN(?); END_FUNCTION;