コード例 #1
0
        public SystemType(IfcSystem ifcSystem, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcSystem);
            externalID         = helper.ExternalEntityIdentity(ifcSystem);
            externalSystemName = helper.ExternalSystemName(ifcSystem);
            SystemName         = ifcSystem.Name;
            SystemDescription  = ifcSystem.Description;
            SystemCategory     = helper.GetClassification(ifcSystem);

            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcSystem);

            if (ifcAttributes != null && ifcAttributes.Any())
            {
                SystemAttributes = new AttributeCollectionType {
                    Attribute = ifcAttributes
                }
            }
            ;

            //TODO:
            //System Issues
            //System Documents
        }
コード例 #2
0
ファイル: FloorType.cs プロジェクト: McLeanBH/XbimExchange
        //[System.Xml.Serialization.XmlIgnoreAttribute()]
        //private IfcBuildingStorey _ifcBuildingStorey;

   
        public FloorType(IfcBuildingStorey ifcBuildingStorey, CoBieLiteHelper helper)
            : this()
        {
         //   _ifcBuildingStorey = ifcBuildingStorey;
            externalEntityName = helper.ExternalEntityName(ifcBuildingStorey);
            externalID = helper.ExternalEntityIdentity(ifcBuildingStorey);
            externalSystemName = helper.ExternalSystemName(ifcBuildingStorey);
            FloorName = ifcBuildingStorey.Name;
            FloorCategory = helper.GetClassification(ifcBuildingStorey);
            FloorDescription = ifcBuildingStorey.Description;
            //set the fall backs
            
            if (ifcBuildingStorey.Elevation.HasValue)
            {
                FloorElevationValue = new DecimalValueType
                {
                    DecimalValue = ifcBuildingStorey.Elevation.Value,
                    DecimalValueSpecified = true
                };
                //TODO: work out if the units can change
                //FloorElevationValue.UnitName = 
            }
            FloorHeightValue = helper.GetCoBieAttribute<DecimalValueType>("FloorHeightValue", ifcBuildingStorey);
            //var heightProperty = ifcBuildingStorey.GetTotalHeightProperty();
            //if (heightProperty != null)
            //{
            //    FloorHeightValue = new DecimalValueType
            //    {
            //        DecimalValue = heightProperty.LengthValue,
            //        DecimalValueSpecified = true,
            //        UnitName = heightProperty.Unit.GetName()
            //    };
            //}
           
            var spaces = ifcBuildingStorey.GetSpaces();
            var ifcSpaces = spaces as IList<IfcSpace> ?? spaces.ToList();
            if (ifcSpaces.Any())
            {
                Spaces = new SpaceCollectionType {Space = new List<SpaceType>(ifcSpaces.Count)};
                for (var i = 0; i < ifcSpaces.Count; i++)
                {
                    Spaces.Add(new SpaceType(ifcSpaces[i], helper));
                }
            }

            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcBuildingStorey);
            if (ifcAttributes != null && ifcAttributes.Any())
                FloorAttributes = new AttributeCollectionType { Attribute = ifcAttributes };

            //TODO:
            //Space Issues
            //Space Documents
        }
コード例 #3
0
        public AssetInfoType(IfcElement ifcElement, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcElement);
            externalID = helper.ExternalEntityIdentity(ifcElement);
            externalSystemName = helper.ExternalSystemName(ifcElement);
            AssetName = ifcElement.Name;
            AssetDescription = ifcElement.Description;
            
            AssetSerialNumber = helper.GetCoBieProperty("AssetSerialNumber", ifcElement);
            AssetInstallationDate = helper.GetCoBieProperty<DateTime>("AssetInstallationDate", ifcElement);
            AssetInstallationDateSpecified = AssetInstallationDate != default(DateTime);
            AssetInstalledModelNumber = helper.GetCoBieProperty("AssetInstalledModelNumber", ifcElement);
            AssetWarrantyStartDate = helper.GetCoBieProperty<DateTime>("AssetWarrantyStartDate", ifcElement);
            AssetWarrantyStartDateSpecified = AssetWarrantyStartDate != default(DateTime);
            AssetStartDate = helper.GetCoBieProperty("AssetStartDate", ifcElement); //why isn't this a date in the schema?
            AssetTagNumber = helper.GetCoBieProperty("AssetTagNumber", ifcElement);
            AssetBarCode = helper.GetCoBieProperty("AssetBarCode", ifcElement);
            AssetIdentifier = helper.GetCoBieProperty("AssetIdentifier", ifcElement);
            AssetLocationDescription = helper.GetCoBieProperty("AssetLocationDescription", ifcElement);
            
            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcElement);
            if (ifcAttributes != null && ifcAttributes.Any())
                AssetAttributes = new AttributeCollectionType { Attribute = ifcAttributes };
            
            //System Assignments
            List<IfcSystem> systems;
            if (helper.SystemLookup.TryGetValue(ifcElement, out systems))
            {
                AssetSystemAssignments = new SystemAssignmentCollectionType { SystemAssignment = new List<SystemKeyType>(systems.Count) };
                for (int i = 0; i < systems.Count; i++)
                {
                    AssetSystemAssignments.SystemAssignment.Add(new SystemKeyType(systems[i], helper));
                }
            }

             //Space Assignments
            List<IfcSpace> spaces;
            if (helper.SpaceAssetLookup.TryGetValue(ifcElement, out spaces))
            {
                AssetSpaceAssignments = new SpaceAssignmentCollectionType { SpaceAssignment = new List<SpaceKeyType>(spaces.Count) };
                for (int i = 0; i < spaces.Count; i++)
                {
                    AssetSpaceAssignments.SpaceAssignment.Add(new SpaceKeyType(spaces[i], helper));
                }
            }
            
            //Issues

            //Documents


        }
コード例 #4
0
        //private IfcSpace _ifcSpace;

        public SpaceType(IIfcSpace ifcSpace, CoBieLiteHelper helper)
            : this()
        {
            // _ifcSpace = ifcSpace;
            externalEntityName     = helper.ExternalEntityName(ifcSpace);
            externalID             = helper.ExternalEntityIdentity(ifcSpace);
            externalSystemName     = helper.ExternalSystemName(ifcSpace);
            SpaceName              = ifcSpace.Name;
            SpaceCategory          = helper.GetClassification(ifcSpace);
            SpaceDescription       = ifcSpace.Description;
            SpaceSignageName       = helper.GetCoBieAttribute <StringValueType>("SpaceSignageName", ifcSpace).StringValue;
            SpaceUsableHeightValue = helper.GetCoBieAttribute <DecimalValueType>("SpaceUsableHeightValue", ifcSpace);
            SpaceGrossAreaValue    = helper.GetCoBieAttribute <DecimalValueType>("SpaceGrossAreaValue", ifcSpace);
            SpaceNetAreaValue      = helper.GetCoBieAttribute <DecimalValueType>("SpaceNetAreaValue", ifcSpace);

            //Zone Assignment
            var zones = helper.GetZones(ifcSpace);

            if (zones != null)
            {
                var ifcZones = zones.ToArray();
                SpaceZoneAssignments = new ZoneAssignmentCollectionType {
                    ZoneAssignment = new List <ZoneKeyType>(ifcZones.Length)
                };
                for (int i = 0; i < ifcZones.Length; i++)
                {
                    var zoneAssignment = new ZoneKeyType();
                    zoneAssignment.ZoneCategory        = helper.GetClassification(ifcZones[i]);
                    zoneAssignment.ZoneName            = ifcZones[i].Name;
                    zoneAssignment.externalIDReference = helper.ExternalEntityIdentity(ifcZones[i]);
                    SpaceZoneAssignments.Add(zoneAssignment);
                }
            }
            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcSpace);

            if (ifcAttributes != null && ifcAttributes.Any())
            {
                SpaceAttributes = new AttributeCollectionType {
                    Attribute = ifcAttributes
                }
            }
            ;

            //TODO:
            //Space Issues
            //Space Documents
        }
コード例 #5
0
ファイル: ZoneType.cs プロジェクト: McLeanBH/XbimExchange
        public ZoneType(IfcZone ifcZone, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcZone);
            externalID = helper.ExternalEntityIdentity(ifcZone);
            externalSystemName = helper.ExternalSystemName(ifcZone);
            ZoneDescription = ifcZone.Description;
            ZoneCategory = helper.GetClassification(ifcZone);
            ZoneName = ifcZone.Name;
            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcZone);
            if (ifcAttributes != null && ifcAttributes.Any())
                ZoneAttributes = new AttributeCollectionType { Attribute = ifcAttributes };

            //TODO:
            //Space Issues
            //Space Documents
        }
コード例 #6
0
ファイル: SystemType.cs プロジェクト: McLeanBH/XbimExchange
        public SystemType(IfcSystem ifcSystem, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcSystem);
            externalID = helper.ExternalEntityIdentity(ifcSystem);
            externalSystemName = helper.ExternalSystemName(ifcSystem);
            SystemName = ifcSystem.Name;
            SystemDescription = ifcSystem.Description;
            SystemCategory = helper.GetClassification(ifcSystem);
            
            //Attributes
           var ifcAttributes = helper.GetAttributes(ifcSystem);
            if (ifcAttributes != null && ifcAttributes.Any())
                SystemAttributes = new AttributeCollectionType { Attribute = ifcAttributes };

             //TODO:
            //System Issues
            //System Documents
        }
コード例 #7
0
ファイル: SpaceType.cs プロジェクト: McLeanBH/XbimExchange
        //private IfcSpace _ifcSpace;

        public SpaceType(IfcSpace ifcSpace, CoBieLiteHelper helper)
            : this()
        {
           // _ifcSpace = ifcSpace;
            externalEntityName = helper.ExternalEntityName(ifcSpace);
            externalID = helper.ExternalEntityIdentity(ifcSpace);
            externalSystemName = helper.ExternalSystemName(ifcSpace);
            SpaceName = ifcSpace.Name;
            SpaceCategory = helper.GetClassification(ifcSpace);
            SpaceDescription = ifcSpace.Description;
            SpaceSignageName = helper.GetCoBieAttribute<StringValueType>("SpaceSignageName", ifcSpace).StringValue;
            SpaceUsableHeightValue = helper.GetCoBieAttribute<DecimalValueType>("SpaceUsableHeightValue", ifcSpace);
            SpaceGrossAreaValue = helper.GetCoBieAttribute<DecimalValueType>("SpaceGrossAreaValue", ifcSpace);
            SpaceNetAreaValue = helper.GetCoBieAttribute<DecimalValueType>("SpaceNetAreaValue", ifcSpace);

            //Zone Assignment
            var zones = helper.GetZones(ifcSpace);
            if (zones != null)
            {
                var ifcZones = zones.ToArray();
                SpaceZoneAssignments = new ZoneAssignmentCollectionType { ZoneAssignment = new List<ZoneKeyType>(ifcZones.Length) };
                for (int i = 0; i < ifcZones.Length; i++)
                {
                    var zoneAssignment = new ZoneKeyType();
                    zoneAssignment.ZoneCategory = helper.GetClassification(ifcZones[i]);
                    zoneAssignment.ZoneName = ifcZones[i].Name;
                    zoneAssignment.externalIDReference = helper.ExternalEntityIdentity(ifcZones[i]);
                    SpaceZoneAssignments.Add(zoneAssignment);
                }
            }
            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcSpace);
            if (ifcAttributes != null && ifcAttributes.Any())
                SpaceAttributes = new AttributeCollectionType { Attribute = ifcAttributes };
    
            //TODO:
            //Space Issues
            //Space Documents
        }
コード例 #8
0
ファイル: ZoneType.cs プロジェクト: save2004/XbimExchange
        public ZoneType(IIfcZone ifcZone, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcZone);
            externalID         = helper.ExternalEntityIdentity(ifcZone);
            externalSystemName = helper.ExternalSystemName(ifcZone);
            ZoneDescription    = ifcZone.Description;
            ZoneCategory       = helper.GetClassification(ifcZone);
            ZoneName           = ifcZone.Name;
            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcZone);

            if (ifcAttributes != null && ifcAttributes.Any())
            {
                ZoneAttributes = new AttributeCollectionType {
                    Attribute = ifcAttributes
                }
            }
            ;

            //TODO:
            //Space Issues
            //Space Documents
        }
コード例 #9
0
        public FacilityType(IIfcBuilding ifcBuilding, CoBieLiteHelper helper)
            : this()
        {
            //   _ifcBuilding = ifcBuilding;
            var model = ifcBuilding.Model;

            externalEntityName  = helper.ExternalEntityName(ifcBuilding);
            externalID          = helper.ExternalEntityIdentity(ifcBuilding);
            externalSystemName  = helper.ExternalSystemName(ifcBuilding);
            FacilityName        = ifcBuilding.Name;
            FacilityDescription = ifcBuilding.Description;
            FacilityCategory    = helper.GetClassification(ifcBuilding);
            var ifcProject = model.Instances.OfType <IIfcProject>().FirstOrDefault();

            if (ifcProject != null)
            {
                ProjectAssignment = new ProjectType(ifcProject, helper);
                var ifcSite = ifcProject.SpatialStructuralElements.FirstOrDefault(p => p is IIfcSite) as IIfcSite;
                if (ifcSite != null)
                {
                    SiteAssignment = new SiteType(ifcSite, helper);
                }
                SetDefaultUnits(helper);
                FacilityDeliverablePhaseName = ifcProject.Phase;
                var storeys            = ifcBuilding.BuildingStoreys;
                var ifcBuildingStories = storeys as IList <IIfcBuildingStorey> ?? storeys.ToList();
                if (ifcBuildingStories.Any())
                {
                    Floors = new FloorCollectionType {
                        Floor = new List <FloorType>(ifcBuildingStories.Count)
                    };
                    for (int i = 0; i < ifcBuildingStories.Count; i++)
                    {
                        Floors.Add(new FloorType(ifcBuildingStories[i], helper));
                    }
                }
            }
            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcBuilding);

            if (ifcAttributes != null && ifcAttributes.Any())
            {
                FacilityAttributes = new AttributeCollectionType {
                    Attribute = ifcAttributes
                }
            }
            ;

            //Zones

            var allSpaces = GetAllSpaces(ifcBuilding);
            var allZones  = GetAllZones(allSpaces, helper);
            var ifcZones  = allZones.ToArray();

            if (ifcZones.Any())
            {
                Zones = new ZoneCollectionType {
                    Zone = new List <ZoneType>(ifcZones.Length)
                };
                for (int i = 0; i < ifcZones.Length; i++)
                {
                    Zones.Add(new ZoneType(ifcZones[i], helper));
                }
            }

            //Assets
            var allAssetsinThisFacility = new HashSet <IIfcElement>(helper.GetAllAssets(ifcBuilding));

            //AssetTypes
            //Get all assets that are in this facility/building
            var allAssetTypesInThisFacility = AllAssetTypesInThisFacility(ifcBuilding, allAssetsinThisFacility, helper);

            if (allAssetTypesInThisFacility.Any())
            {
                AssetTypes = new AssetTypeCollectionType
                {
                    AssetType = new List <AssetTypeInfoType>(allAssetTypesInThisFacility.Count)
                };
                for (int i = 0; i < allAssetTypesInThisFacility.Count; i++)
                {
                    AssetTypes.Add(new AssetTypeInfoType(allAssetTypesInThisFacility[i], helper));
                }
            }

            //Systems
            var allSystemsInThisFacility = helper.SystemAssignment
                                           .Where(v => v.Value.Any(allAssetsinThisFacility.Contains))
                                           .Select(k => k.Key).ToArray();

            if (allSystemsInThisFacility.Any())
            {
                Systems = new SystemCollectionType
                {
                    System = new List <SystemType>(allSystemsInThisFacility.Length)
                };

                for (int i = 0; i < allSystemsInThisFacility.Length; i++)
                {
                    Systems.Add(new SystemType(allSystemsInThisFacility[i], helper));
                }
            }

            //Contacts
            var contacts  = helper.GetContacts();
            var ifcActors = contacts as IIfcActorSelect[] ?? contacts.ToArray();

            if (ifcActors.Any())
            {
                Contacts = new ContactCollectionType
                {
                    Contact = new List <ContactType>(ifcActors.Length)
                };

                for (int i = 0; i < ifcActors.Length; i++)
                {
                    Contacts.Add(new ContactType(ifcActors[i], helper));
                }
            }
        }
コード例 #10
0
        public AssetTypeInfoType(IfcTypeObject ifcTypeObject, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcTypeObject);
            externalID = helper.ExternalEntityIdentity(ifcTypeObject);
            externalSystemName = helper.ExternalSystemName(ifcTypeObject);
            AssetTypeName = ifcTypeObject.Name;
            AssetTypeCategory = helper.GetClassification(ifcTypeObject);
            string accCategoryString =  helper.GetCoBieProperty("AssetTypeAccountingCategory", ifcTypeObject);
            AssetPortabilitySimpleType accCategoryEnum;
            if (Enum.TryParse(accCategoryString, true, out accCategoryEnum))
                AssetTypeAccountingCategory = accCategoryEnum;
            else
            {
                CoBieLiteHelper.Logger.WarnFormat("AssetTypeAccountingCategory: An illegal value of [{0}] has been passed for the category of #{1}={2}. It has been replaced with a value of 'Item'", accCategoryString, ifcTypeObject.EntityLabel, ifcTypeObject.GetType().Name);
                AssetTypeAccountingCategory = AssetPortabilitySimpleType.Item;
            }
            if (string.IsNullOrWhiteSpace(AssetTypeCategory)) //try the asset assignment
            {
                IfcAsset ifcAsset;
                if(helper.AssetAsignments.TryGetValue(ifcTypeObject, out ifcAsset))
                    AssetTypeCategory = helper.GetCoBieAttribute<StringValueType>("AssetTypeAccountingCategory", ifcAsset).StringValue;
            }
            AssetTypeDescription = ifcTypeObject.Description;
            AssetTypeModelNumber = helper.GetCoBieProperty("AssetTypeModelNumber", ifcTypeObject);
            AssetTypeReplacementCostValue = helper.GetCoBieAttribute<DecimalValueType>("AssetTypeReplacementCostValue", ifcTypeObject);
            AssetTypeExpectedLifeValue = helper.GetCoBieAttribute<IntegerValueType>("AssetTypeExpectedLifeValue", ifcTypeObject);
            AssetTypeNominalLength = helper.GetCoBieAttribute<DecimalValueType>("AssetTypeNominalLength", ifcTypeObject);
            AssetTypeNominalWidth = helper.GetCoBieAttribute<DecimalValueType>("AssetTypeNominalWidth", ifcTypeObject);
            AssetTypeNominalHeight = helper.GetCoBieAttribute<DecimalValueType>("AssetTypeNominalHeight", ifcTypeObject);
            AssetTypeAccessibilityText = helper.GetCoBieProperty("AssetTypeAccessibilityText", ifcTypeObject);
            AssetTypeColorCode = helper.GetCoBieProperty("AssetTypeColorCode", ifcTypeObject);
            AssetTypeConstituentsDescription = helper.GetCoBieProperty("AssetTypeConstituentsDescription", ifcTypeObject);
            AssetTypeFeaturesDescription = helper.GetCoBieProperty("AssetTypeFeaturesDescription", ifcTypeObject);
            AssetTypeGradeDescription = helper.GetCoBieProperty("AssetTypeGradeDescription", ifcTypeObject);
            AssetTypeMaterialDescription = helper.GetCoBieProperty("AssetTypeMaterialDescription", ifcTypeObject);
            AssetTypeShapeDescription = helper.GetCoBieProperty("AssetTypeShapeDescription", ifcTypeObject);
            AssetTypeSizeDescription = helper.GetCoBieProperty("AssetTypeSizeDescription", ifcTypeObject);
            AssetTypeSustainabilityPerformanceDescription = helper.GetCoBieProperty("AssetTypeSustainabilityPerformanceDescription", ifcTypeObject);

            //The Assets
            List<IfcElement> allAssetsofThisType;
            if (helper.DefiningTypeObjectMap.TryGetValue(ifcTypeObject, out allAssetsofThisType)) //should always work
            {
                Assets = new AssetCollectionType { Asset =  new List<AssetInfoType>(allAssetsofThisType.Count)};
                foreach (IfcElement t in allAssetsofThisType)
                {
                    Assets.Add(new AssetInfoType(t, helper));
                }
            }
            else
            {
                //just in case we have a problem
                CoBieLiteHelper.Logger.ErrorFormat("Asset Type: Failed to locate Asset Type #{0}={1}", ifcTypeObject.EntityLabel,ifcTypeObject.GetType().Name);
            }

            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcTypeObject);
            if (ifcAttributes != null && ifcAttributes.Any())
                AssetTypeAttributes = new AttributeCollectionType { Attribute = ifcAttributes };
           
        }
コード例 #11
0
        //[System.Xml.Serialization.XmlIgnoreAttribute()]
        //private IfcBuildingStorey _ifcBuildingStorey;


        public FloorType(IfcBuildingStorey ifcBuildingStorey, CoBieLiteHelper helper)
            : this()
        {
            //   _ifcBuildingStorey = ifcBuildingStorey;
            externalEntityName = helper.ExternalEntityName(ifcBuildingStorey);
            externalID         = helper.ExternalEntityIdentity(ifcBuildingStorey);
            externalSystemName = helper.ExternalSystemName(ifcBuildingStorey);
            FloorName          = ifcBuildingStorey.Name;
            FloorCategory      = helper.GetClassification(ifcBuildingStorey);
            FloorDescription   = ifcBuildingStorey.Description;
            //set the fall backs

            if (ifcBuildingStorey.Elevation.HasValue)
            {
                FloorElevationValue = new DecimalValueType
                {
                    DecimalValue          = ifcBuildingStorey.Elevation.Value,
                    DecimalValueSpecified = true
                };
                //TODO: work out if the units can change
                //FloorElevationValue.UnitName =
            }
            FloorHeightValue = helper.GetCoBieAttribute <DecimalValueType>("FloorHeightValue", ifcBuildingStorey);
            //var heightProperty = ifcBuildingStorey.GetTotalHeightProperty();
            //if (heightProperty != null)
            //{
            //    FloorHeightValue = new DecimalValueType
            //    {
            //        DecimalValue = heightProperty.LengthValue,
            //        DecimalValueSpecified = true,
            //        UnitName = heightProperty.Unit.GetName()
            //    };
            //}

            var spaces    = ifcBuildingStorey.GetSpaces();
            var ifcSpaces = spaces as IList <IfcSpace> ?? spaces.ToList();

            if (ifcSpaces.Any())
            {
                Spaces = new SpaceCollectionType {
                    Space = new List <SpaceType>(ifcSpaces.Count)
                };
                for (var i = 0; i < ifcSpaces.Count; i++)
                {
                    Spaces.Add(new SpaceType(ifcSpaces[i], helper));
                }
            }

            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcBuildingStorey);

            if (ifcAttributes != null && ifcAttributes.Any())
            {
                FloorAttributes = new AttributeCollectionType {
                    Attribute = ifcAttributes
                }
            }
            ;

            //TODO:
            //Space Issues
            //Space Documents
        }
コード例 #12
0
        public AssetTypeInfoType(IIfcTypeObject ifcTypeObject, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcTypeObject);
            externalID         = helper.ExternalEntityIdentity(ifcTypeObject);
            externalSystemName = helper.ExternalSystemName(ifcTypeObject);
            AssetTypeName      = ifcTypeObject.Name;
            AssetTypeCategory  = helper.GetClassification(ifcTypeObject);
            string accCategoryString = helper.GetCoBieProperty("AssetTypeAccountingCategory", ifcTypeObject);
            AssetPortabilitySimpleType accCategoryEnum;

            if (Enum.TryParse(accCategoryString, true, out accCategoryEnum))
            {
                AssetTypeAccountingCategory = accCategoryEnum;
            }
            else
            {
                CoBieLiteHelper.Logger.WarnFormat("AssetTypeAccountingCategory: An illegal value of [{0}] has been passed for the category of #{1}={2}. It has been replaced with a value of 'Item'", accCategoryString, ifcTypeObject.EntityLabel, ifcTypeObject.GetType().Name);
                AssetTypeAccountingCategory = AssetPortabilitySimpleType.Item;
            }
            if (string.IsNullOrWhiteSpace(AssetTypeCategory)) //try the asset assignment
            {
                IIfcAsset ifcAsset;
                if (helper.AssetAsignments.TryGetValue(ifcTypeObject, out ifcAsset))
                {
                    AssetTypeCategory = helper.GetCoBieAttribute <StringValueType>("AssetTypeAccountingCategory", ifcAsset).StringValue;
                }
            }
            AssetTypeDescription             = ifcTypeObject.Description;
            AssetTypeModelNumber             = helper.GetCoBieProperty("AssetTypeModelNumber", ifcTypeObject);
            AssetTypeReplacementCostValue    = helper.GetCoBieAttribute <DecimalValueType>("AssetTypeReplacementCostValue", ifcTypeObject);
            AssetTypeExpectedLifeValue       = helper.GetCoBieAttribute <IntegerValueType>("AssetTypeExpectedLifeValue", ifcTypeObject);
            AssetTypeNominalLength           = helper.GetCoBieAttribute <DecimalValueType>("AssetTypeNominalLength", ifcTypeObject);
            AssetTypeNominalWidth            = helper.GetCoBieAttribute <DecimalValueType>("AssetTypeNominalWidth", ifcTypeObject);
            AssetTypeNominalHeight           = helper.GetCoBieAttribute <DecimalValueType>("AssetTypeNominalHeight", ifcTypeObject);
            AssetTypeAccessibilityText       = helper.GetCoBieProperty("AssetTypeAccessibilityText", ifcTypeObject);
            AssetTypeColorCode               = helper.GetCoBieProperty("AssetTypeColorCode", ifcTypeObject);
            AssetTypeConstituentsDescription = helper.GetCoBieProperty("AssetTypeConstituentsDescription", ifcTypeObject);
            AssetTypeFeaturesDescription     = helper.GetCoBieProperty("AssetTypeFeaturesDescription", ifcTypeObject);
            AssetTypeGradeDescription        = helper.GetCoBieProperty("AssetTypeGradeDescription", ifcTypeObject);
            AssetTypeMaterialDescription     = helper.GetCoBieProperty("AssetTypeMaterialDescription", ifcTypeObject);
            AssetTypeShapeDescription        = helper.GetCoBieProperty("AssetTypeShapeDescription", ifcTypeObject);
            AssetTypeSizeDescription         = helper.GetCoBieProperty("AssetTypeSizeDescription", ifcTypeObject);
            AssetTypeSustainabilityPerformanceDescription = helper.GetCoBieProperty("AssetTypeSustainabilityPerformanceDescription", ifcTypeObject);

            //The Assets
            List <IIfcElement> allAssetsofThisType;

            if (helper.DefiningTypeObjectMap.TryGetValue(ifcTypeObject, out allAssetsofThisType)) //should always work
            {
                Assets = new AssetCollectionType {
                    Asset = new List <AssetInfoType>(allAssetsofThisType.Count)
                };
                foreach (IIfcElement t in allAssetsofThisType)
                {
                    Assets.Add(new AssetInfoType(t, helper));
                }
            }
            else
            {
                //just in case we have a problem
                CoBieLiteHelper.Logger.ErrorFormat("Asset Type: Failed to locate Asset Type #{0}={1}", ifcTypeObject.EntityLabel, ifcTypeObject.GetType().Name);
            }

            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcTypeObject);

            if (ifcAttributes != null && ifcAttributes.Any())
            {
                AssetTypeAttributes = new AttributeCollectionType {
                    Attribute = ifcAttributes
                }
            }
            ;
        }
コード例 #13
0
        public AssetInfoType(IfcElement ifcElement, CoBieLiteHelper helper)
            : this()
        {
            externalEntityName = helper.ExternalEntityName(ifcElement);
            externalID         = helper.ExternalEntityIdentity(ifcElement);
            externalSystemName = helper.ExternalSystemName(ifcElement);
            AssetName          = ifcElement.Name;
            AssetDescription   = ifcElement.Description;

            AssetSerialNumber               = helper.GetCoBieProperty("AssetSerialNumber", ifcElement);
            AssetInstallationDate           = helper.GetCoBieProperty <DateTime>("AssetInstallationDate", ifcElement);
            AssetInstallationDateSpecified  = AssetInstallationDate != default(DateTime);
            AssetInstalledModelNumber       = helper.GetCoBieProperty("AssetInstalledModelNumber", ifcElement);
            AssetWarrantyStartDate          = helper.GetCoBieProperty <DateTime>("AssetWarrantyStartDate", ifcElement);
            AssetWarrantyStartDateSpecified = AssetWarrantyStartDate != default(DateTime);
            AssetStartDate           = helper.GetCoBieProperty("AssetStartDate", ifcElement); //why isn't this a date in the schema?
            AssetTagNumber           = helper.GetCoBieProperty("AssetTagNumber", ifcElement);
            AssetBarCode             = helper.GetCoBieProperty("AssetBarCode", ifcElement);
            AssetIdentifier          = helper.GetCoBieProperty("AssetIdentifier", ifcElement);
            AssetLocationDescription = helper.GetCoBieProperty("AssetLocationDescription", ifcElement);

            //Attributes
            AttributeType[] ifcAttributes = helper.GetAttributes(ifcElement);
            if (ifcAttributes != null && ifcAttributes.Length > 0)
            {
                AssetAttributes = new AttributeCollectionType {
                    Attribute = ifcAttributes
                }
            }
            ;

            //System Assignments
            List <IfcSystem> systems;

            if (helper.SystemLookup.TryGetValue(ifcElement, out systems))
            {
                AssetSystemAssignments = new SystemAssignmentCollectionType {
                    SystemAssignment = new SystemKeyType[systems.Count]
                };
                for (int i = 0; i < systems.Count; i++)
                {
                    AssetSystemAssignments.SystemAssignment[i] = new SystemKeyType(systems[i], helper);
                }
            }

            //Space Assignments
            List <IfcSpace> spaces;

            if (helper.SpaceAssetLookup.TryGetValue(ifcElement, out spaces))
            {
                AssetSpaceAssignments = new SpaceAssignmentCollectionType {
                    SpaceAssignment = new SpaceKeyType[spaces.Count]
                };
                for (int i = 0; i < spaces.Count; i++)
                {
                    AssetSpaceAssignments.SpaceAssignment[i] = new SpaceKeyType(spaces[i], helper);
                }
            }

            //Issues

            //Documents
        }
    }
コード例 #14
0
ファイル: FacilityType.cs プロジェクト: McLeanBH/XbimExchange
        public FacilityType(IfcBuilding ifcBuilding, CoBieLiteHelper helper)
            : this()
        {
            //   _ifcBuilding = ifcBuilding;
            var model = ifcBuilding.ModelOf;
            externalEntityName = helper.ExternalEntityName(ifcBuilding);
            externalID = helper.ExternalEntityIdentity(ifcBuilding);
            externalSystemName = helper.ExternalSystemName(ifcBuilding);
            FacilityName = ifcBuilding.Name;
            FacilityDescription = ifcBuilding.Description;
            FacilityCategory = helper.GetClassification(ifcBuilding);
            var ifcProject = model.Instances.OfType<IfcProject>().FirstOrDefault();
            if (ifcProject != null)
            {
                ProjectAssignment = new ProjectType(ifcProject, helper);
                var ifcSite = ifcProject.GetSpatialStructuralElements().FirstOrDefault(p => p is IfcSite) as IfcSite;
                if (ifcSite != null) SiteAssignment = new SiteType(ifcSite, helper);
                SetDefaultUnits(helper);
                FacilityDeliverablePhaseName = ifcProject.Phase;
                var storeys = ifcBuilding.GetBuildingStoreys(true);
                var ifcBuildingStories = storeys as IList<IfcBuildingStorey> ?? storeys.ToList();
                if (ifcBuildingStories.Any())
                {
                    Floors = new FloorCollectionType {Floor = new List<FloorType>(ifcBuildingStories.Count)};
                    for (int i = 0; i < ifcBuildingStories.Count; i++)
                    {
                        Floors.Add(new FloorType(ifcBuildingStories[i], helper));
                    }
                }
            }
            //Attributes
            var ifcAttributes = helper.GetAttributes(ifcBuilding);
            if (ifcAttributes != null && ifcAttributes.Any())
                FacilityAttributes = new AttributeCollectionType {Attribute = ifcAttributes};

            //Zones

            var allSpaces = GetAllSpaces(ifcBuilding);
            var allZones = GetAllZones(allSpaces, helper);
            var ifcZones = allZones.ToArray();
            if (ifcZones.Any())
            {
                Zones = new ZoneCollectionType {Zone = new List<ZoneType>(ifcZones.Length)};
                for (int i = 0; i < ifcZones.Length; i++)
                {
                    Zones.Add(new ZoneType(ifcZones[i], helper));
                }
            }

            //Assets
            var allAssetsinThisFacility = new HashSet<IfcElement>(helper.GetAllAssets(ifcBuilding));

            //AssetTypes
            //Get all assets that are in this facility/building
            var allAssetTypesInThisFacility = AllAssetTypesInThisFacility(ifcBuilding, allAssetsinThisFacility, helper);
            if (allAssetTypesInThisFacility.Any())
            {
                AssetTypes = new AssetTypeCollectionType
                {
                    AssetType = new List<AssetTypeInfoType>(allAssetTypesInThisFacility.Count)
                };
                for (int i = 0; i < allAssetTypesInThisFacility.Count; i++)
                {
                    AssetTypes.Add(new AssetTypeInfoType(allAssetTypesInThisFacility[i], helper));
                }
            }

            //Systems
            var allSystemsInThisFacility = helper.SystemAssignment
                .Where(v => v.Value.Any(allAssetsinThisFacility.Contains))
                .Select(k => k.Key).ToArray();
            if (allSystemsInThisFacility.Any())
            {
                Systems = new SystemCollectionType
                {
                    System = new List<SystemType>(allSystemsInThisFacility.Length)
                };

                for (int i = 0; i < allSystemsInThisFacility.Length; i++)
                {
                    Systems.Add(new SystemType(allSystemsInThisFacility[i], helper));
                }
            }

            //Contacts
            var contacts = helper.GetContacts();
            var ifcActors = contacts as IfcActorSelect[] ?? contacts.ToArray();
            if (ifcActors.Any())
            {
                Contacts = new ContactCollectionType
                {
                    Contact = new List<ContactType>(ifcActors.Length)
                };

                for (int i = 0; i < ifcActors.Length; i++)
                {
                    Contacts.Add(new ContactType(ifcActors[i], helper));
                }
            }

        }