示例#1
0
 /// <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());
 }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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();
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
        //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);
        }