/// <summary> /// Test for empty object /// </summary> /// <returns>bool</returns> public bool IsEmpty() { return(IfcProductFilter.IsEmpty() && IfcTypeObjectFilter.IsEmpty() && IfcAssemblyFilter.IsEmpty() && ZoneFilter.IsEmpty() && TypeFilter.IsEmpty() && SpaceFilter.IsEmpty() && FloorFilter.IsEmpty() && FacilityFilter.IsEmpty() && SpareFilter.IsEmpty() && ComponentFilter.IsEmpty() && CommonFilter.IsEmpty()); }
/// <summary> /// Merge OutPutFilters /// </summary> /// <param name="mergeFilter">OutPutFilters</param> public void Merge(OutPutFilters mergeFilter) { IfcProductFilter.MergeInc(mergeFilter.IfcProductFilter); IfcTypeObjectFilter.MergeInc(mergeFilter.IfcTypeObjectFilter); IfcAssemblyFilter.MergeInc(mergeFilter.IfcAssemblyFilter); ZoneFilter.Merge(mergeFilter.ZoneFilter); TypeFilter.Merge(mergeFilter.TypeFilter); SpaceFilter.Merge(mergeFilter.SpaceFilter); FloorFilter.Merge(mergeFilter.FloorFilter); FacilityFilter.Merge(mergeFilter.FacilityFilter); SpareFilter.Merge(mergeFilter.SpareFilter); ComponentFilter.Merge(mergeFilter.ComponentFilter); CommonFilter.Merge(mergeFilter.CommonFilter); }
/// <summary> /// Clear OutPutFilters /// </summary> public void Clear() { AppliedRoles = 0; IfcProductFilter.Clear(); IfcTypeObjectFilter.Clear(); IfcAssemblyFilter.Clear(); ZoneFilter.Clear(); TypeFilter.Clear(); SpaceFilter.Clear(); FloorFilter.Clear(); FacilityFilter.Clear(); SpareFilter.Clear(); ComponentFilter.Clear(); CommonFilter.Clear(); }
/// <summary> /// Copy the OutPutFilters /// </summary> /// <param name="copyFilter">OutPutFilters to copy </param> public void Copy(OutPutFilters copyFilter) { AppliedRoles = copyFilter.AppliedRoles; IfcProductFilter.Copy(copyFilter.IfcProductFilter); IfcTypeObjectFilter.Copy(copyFilter.IfcTypeObjectFilter); IfcAssemblyFilter.Copy(copyFilter.IfcAssemblyFilter); ZoneFilter.Copy(copyFilter.ZoneFilter); TypeFilter.Copy(copyFilter.TypeFilter); SpaceFilter.Copy(copyFilter.SpaceFilter); FloorFilter.Copy(copyFilter.FloorFilter); FacilityFilter.Copy(copyFilter.FacilityFilter); SpareFilter.Copy(copyFilter.SpareFilter); ComponentFilter.Copy(copyFilter.ComponentFilter); CommonFilter.Copy(copyFilter.CommonFilter); }
/// <summary> /// Filter IfcProduct and IfcTypeObject types /// </summary> /// <param name="obj">CobieObject</param> /// <param name="parent">Parent object</param> /// <param name="preDefinedType">strings for the ifcTypeObject predefinedtype enum property</param> /// <returns>bool, true = exclude</returns> public bool ObjFilter(CobieObject obj, CobieObject parent = null, string preDefinedType = null) { bool exclude = false; if (!string.IsNullOrEmpty(obj.ExternalEntity)) { if (obj is Asset) { exclude = IfcProductFilter.ItemsFilter(obj.ExternalEntity); //check the element is not defined by a type which is excluded, by default if no type, then no element included if (!exclude && parent is AssetType) { exclude = IfcTypeObjectFilter.ItemsFilter(parent.ExternalEntity, preDefinedType); } } else if (obj is AssetType) { exclude = IfcTypeObjectFilter.ItemsFilter(obj.ExternalEntity, preDefinedType); } } return(FlipResult ? !exclude : exclude); }
//TODO: Check function below, see if it works! /// <summary> /// filter on IfcObjectDefinition objects /// </summary> /// <param name="obj"></param> /// <param name="checkType"></param> /// <returns>bool true = exclude</returns> public bool ObjFilter(IIfcObjectDefinition obj, bool checkType = true) { bool exclude = false; if (obj is IIfcProduct) { exclude = IfcProductFilter.ItemsFilter(obj); //check the element is not defined by a type which is excluded, by default if no type, then no element included if (!exclude && checkType) { var objType = Enumerable.OfType <IIfcRelDefinesByType>(((IIfcProduct)obj).IsDefinedBy).Select(rdbt => rdbt.RelatingType).FirstOrDefault(); //assuming only one IfcRelDefinesByType if (objType != null) //if no type defined lets include it for now { exclude = IfcTypeObjectFilter.ItemsFilter(objType); } } } else if (obj is IIfcTypeProduct) { exclude = IfcTypeObjectFilter.ItemsFilter(obj); } return(FlipResult ? !exclude : exclude); }