8.12.6.1 IfcCorrectFillAreaStyle(正确填充区域样式)
8.12.6.1.1 语义定义(Semantic definition)
此函数在校验不同填充区域样式是否正确分配给 IfcFillAreaStyle 时返回真值。仅允许 IfcFillStyleSelect 所提供实体类型的特定组合。
返回假值的情况:
- 若分配了多个外部定义样式
- 若存在外部定义样式且同时附加了其他内部样式定义
- 若分配了多个背景颜色
- 若同时存在剖面线填充与平铺填充
其余情况返回真值
8.12.6.1.2 形式化表示(Formal representation)
FUNCTION IfcCorrectFillAreaStyle
(Styles : SET[1:?] OF IfcFillStyleSelect)
:LOGICAL;
LOCAL
Hatching : INTEGER := 0;
Tiles : INTEGER := 0;
Colour : INTEGER := 0;
External : INTEGER := 0;
END_LOCAL;
External := SIZEOF(QUERY(Style <* Styles |
'IFC4X3_DEV_62887e3f.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN
TYPEOF(Style)));
Hatching := SIZEOF(QUERY(Style <* Styles |
'IFC4X3_DEV_62887e3f.IFCFILLAREASTYLEHATCHING' IN
TYPEOF(Style)));
Tiles := SIZEOF(QUERY(Style <* Styles |
'IFC4X3_DEV_62887e3f.IFCFILLAREASTYLETILES' IN
TYPEOF(Style)));
Colour := SIZEOF(QUERY(Style <* Styles |
'IFC4X3_DEV_62887e3f.IFCCOLOUR' IN
TYPEOF(Style)));
IF (External > 1) THEN
RETURN (FALSE);
END_IF;
IF ((External = 1) AND ((Hatching > 0) OR (Tiles > 0) OR (Colour > 0))) THEN
RETURN (FALSE);
END_IF;
IF (Colour > 1) THEN
RETURN (FALSE);
END_IF;
IF ((Hatching > 0) AND (Tiles >0)) THEN
RETURN (FALSE);
END_IF;
RETURN(TRUE);
END_FUNCTION;