IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

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;

8.12.6.1.3 参考文献