
IfcCorrectObjectAssignment
This function checks, whether the correct object types are used within the IfcRelAssigns relationship
(or one of its subtypes).
EXPRESS specification:
|
|
|
|
(Constraint: IfcObjectTypeEnum; Objects : SET[1:?] OF IfcObject)
: LOGICAL ;
LOCAL
Count : INTEGER := 0;
END_LOCAL;
IF (NOT(EXISTS(Constraint)) OR (Constraint = IfcObjectTypeEnum.NOTDEFINED))
THEN
RETURN(?);
ELSE
IF (Constraint = IfcObjectTypeEnum.PRODUCT)
THEN
Count := SIZEOF(QUERY(temp <* Objects | NOT('IFCKERNEL.IFCPRODUCT' IN TYPEOF(temp))));
RETURN(Count = 0);
ELSE
IF (Constraint = IfcObjectTypeEnum.PROCESS)
THEN
Count := SIZEOF(QUERY(temp <* Objects | NOT('IFCKERNEL.IFCPROCESS' IN TYPEOF(temp))));
RETURN(Count = 0);
ELSE
IF (Constraint = IfcObjectTypeEnum.CONTROL)
THEN
Count := SIZEOF(QUERY(temp <* Objects | NOT('IFCKERNEL.IFCCONTROL' IN TYPEOF(temp))));
RETURN(Count = 0);
ELSE
IF (Constraint = IfcObjectTypeEnum.RESOURCE)
THEN
Count := SIZEOF(QUERY(temp <* Objects | NOT('IFCKERNEL.IFCRESOURCE' IN TYPEOF(temp))));
RETURN(Count = 0);
ELSE
IF (Constraint = IfcObjectTypeEnum.ACTOR)
THEN
Count := SIZEOF(QUERY(temp <* Objects | NOT('IFCKERNEL.IFCACTOR' IN TYPEOF(temp))));
RETURN(Count = 0);
ELSE
IF (Constraint = IfcObjectTypeEnum.GROUP)
THEN
Count := SIZEOF(QUERY(temp <* Objects | NOT('IFCKERNEL.IFCGROUP' IN TYPEOF(temp))));
RETURN(Count = 0);
ELSE
IF (Constraint = IfcObjectTypeEnum.PROJECT)
THEN
Count := SIZEOF(QUERY(temp <* Objects | NOT('IFCKERNEL.IFCPROJECT' IN TYPEOF(temp))));
RETURN(Count = 0);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN(?);
|
|
|