public COBieXBimEditScope(XbimModel model, IfcOwnerHistory owner) { Model = model; ifcOwnerHistory = Model.OwnerHistoryAddObject; Model.OwnerHistoryAddObject = owner; }
private void CreateSimpleProperty(XbimModel model, IfcWallStandardCase wall, IfcOwnerHistory ifcOwnerHistory) { var ifcPropertySingleValue = model.Instances.New<IfcPropertySingleValue>(psv => { psv.Name = "IfcPropertySingleValue:Time"; psv.Description = ""; psv.NominalValue = new IfcTimeMeasure(150.0); psv.Unit = model.Instances.New<IfcSIUnit>(siu => { siu.UnitType = IfcUnitEnum.TIMEUNIT; siu.Name = IfcSIUnitName.SECOND; siu.Dimensions = model.Instances.New<IfcDimensionalExponents>(de => { de.LengthExponent = 0; de.MassExponent = 0; de.TimeExponent = 1; de.ElectricCurrentExponent = 0; de.ThermodynamicTemperatureExponent = 0; de.AmountOfSubstanceExponent = 0; de.LuminousIntensityExponent = 0; }); }); }); var ifcPropertyEnumeratedValue = model.Instances.New<IfcPropertyEnumeratedValue>(pev => { pev.Name = "IfcPropertyEnumeratedValue:Music"; pev.EnumerationReference = model.Instances.New<IfcPropertyEnumeration>(pe => { pe.Name = "Notes"; pe.EnumerationValues.Add(new IfcLabel("Do")); pe.EnumerationValues.Add(new IfcLabel("Re")); pe.EnumerationValues.Add(new IfcLabel("Mi")); pe.EnumerationValues.Add(new IfcLabel("Fa")); pe.EnumerationValues.Add(new IfcLabel("So")); pe.EnumerationValues.Add(new IfcLabel("La")); pe.EnumerationValues.Add(new IfcLabel("Ti")); }); pev.EnumerationValues.Add(new IfcLabel("Do")); pev.EnumerationValues.Add(new IfcLabel("Re")); pev.EnumerationValues.Add(new IfcLabel("Mi")); }); var ifcPropertyBoundedValue = model.Instances.New<IfcPropertyBoundedValue>(pbv => { pbv.Name = "IfcPropertyBoundedValue:Mass"; pbv.Description = ""; pbv.UpperBoundValue = new IfcMassMeasure(5000.0); pbv.LowerBoundValue = new IfcMassMeasure(1000.0); pbv.Unit = model.Instances.New<IfcSIUnit>(siu => { siu.UnitType = IfcUnitEnum.MASSUNIT; siu.Name = IfcSIUnitName.GRAM; siu.Prefix = IfcSIPrefix.KILO; siu.Dimensions = model.Instances.New<IfcDimensionalExponents>(de => { de.LengthExponent = 0; de.MassExponent = 1; de.TimeExponent = 0; de.ElectricCurrentExponent = 0; de.ThermodynamicTemperatureExponent = 0; de.AmountOfSubstanceExponent = 0; de.LuminousIntensityExponent = 0; }); }); }); var definingValues = new List<IfcReal> { new IfcReal(100.0), new IfcReal(200.0), new IfcReal(400.0), new IfcReal(800.0), new IfcReal(1600.0), new IfcReal(3200.0), }; var definedValues = new List<IfcReal> { new IfcReal(20.0), new IfcReal(42.0), new IfcReal(46.0), new IfcReal(56.0), new IfcReal(60.0), new IfcReal(65.0), }; var ifcPropertyTableValue = model.Instances.New<IfcPropertyTableValue>(ptv => { ptv.Name = "IfcPropertyTableValue:Sound"; foreach (var item in definingValues) { ptv.DefiningValues.Add(item); } foreach (var item in definedValues) { ptv.DefinedValues.Add(item); } ptv.DefinedUnit = model.Instances.New<IfcContextDependentUnit>(cd => { cd.Dimensions = model.Instances.New<IfcDimensionalExponents>(de => { de.LengthExponent = 0; de.MassExponent = 0; de.TimeExponent = 0; de.ElectricCurrentExponent = 0; de.ThermodynamicTemperatureExponent = 0; de.AmountOfSubstanceExponent = 0; de.LuminousIntensityExponent = 0; }); cd.UnitType = IfcUnitEnum.FREQUENCYUNIT; cd.Name = "dB"; }); }); var listValues = new List<IfcLabel> { new IfcLabel("Red"), new IfcLabel("Green"), new IfcLabel("Blue"), new IfcLabel("Pink"), new IfcLabel("White"), new IfcLabel("Black"), }; var ifcPropertyListValue = model.Instances.New<IfcPropertyListValue>(plv => { plv.Name = "IfcPropertyListValue:Colours"; foreach (var item in listValues) { plv.ListValues.Add(item); } }); var ifcMaterial = model.Instances.New<IfcMaterial>(m => { m.Name = "Brick"; }); var ifcPrValueMaterial = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Material"; prv.PropertyReference = ifcMaterial; }); var ifcPrValuePerson = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Person"; prv.PropertyReference = ifcOwnerHistory.OwningUser.ThePerson; }); var ifcDateAndTime = model.Instances.New<IfcDateAndTime>(dt => { dt.DateComponent = model.Instances.New<IfcCalendarDate>(cd => { cd.DayComponent = 25; cd.MonthComponent = 3; cd.YearComponent = 2013; }); dt.TimeComponent = model.Instances.New<IfcLocalTime>(lt => { lt.HourComponent = 10; lt.MinuteComponent = 30; lt.SecondComponent = 0; }); }); var ifcPrValueDateTime = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:DateAndTime"; prv.PropertyReference = ifcDateAndTime; }); var ifcMaterialList = model.Instances.New<IfcMaterialList>(ml => { ml.Materials.Add(ifcMaterial); ml.Materials.Add(model.Instances.New<IfcMaterial>(m => { m.Name = "Cavity"; })); ml.Materials.Add(model.Instances.New<IfcMaterial>(m => { m.Name = "Block"; })); }); var ifcPrValueMatList = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:MaterialList"; prv.PropertyReference = ifcMaterialList; }); var ifcPrValueOrg = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Organization"; prv.PropertyReference = ifcOwnerHistory.OwningUser.TheOrganization; }); var ifcPrValueDate = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Date"; prv.PropertyReference = ifcDateAndTime.DateComponent; }); var ifcPrValueTime = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Time"; prv.PropertyReference = ifcDateAndTime.TimeComponent; }); var ifcPrValuePersonOrg = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:PersonOrganization"; prv.PropertyReference = ifcOwnerHistory.OwningUser; }); var ifcMaterialLayer = model.Instances.New<IfcMaterialLayer>(ml => { ml.Material = ifcMaterial; ml.LayerThickness = 100.0; }); var ifcPrValueMatLayer = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:MaterialLayer"; prv.PropertyReference = ifcMaterialLayer; }); var ifcDocumentReference = model.Instances.New<IfcDocumentReference>(dr => { dr.Name = "Document"; dr.Location = "c://Documents//TheDoc.Txt"; }); var ifcPrValueRef = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Document"; prv.PropertyReference = ifcDocumentReference; }); var ifcTimeSeries = model.Instances.New<IfcRegularTimeSeries>(ts => { ts.Name = "Regular Time Series"; ts.Description = "Time series of events"; ts.StartTime = model.Instances.New<IfcCalendarDate>(cd => { cd.DayComponent = 01; cd.MonthComponent = 1; cd.YearComponent = 2013; }); ts.EndTime = model.Instances.New<IfcCalendarDate>(cd => { cd.DayComponent = 01; cd.MonthComponent = 3; cd.YearComponent = 2013; }); ts.TimeSeriesDataType = IfcTimeSeriesDataTypeEnum.CONTINUOUS; ts.DataOrigin = IfcDataOriginEnum.MEASURED; ts.TimeStep = 604800; //7 days in secs }); var ifcPrValueTimeSeries = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:TimeSeries"; prv.PropertyReference = ifcTimeSeries; }); var ifcAddress = model.Instances.New<IfcPostalAddress>(a => { a.InternalLocation = "Room 101"; a.SetAddressLines(new[] { "12 New road", "DoxField" }); a.Town = "Sunderland"; a.PostalCode = "DL01 6SX"; }); var ifcPrValueAddress = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Address"; prv.PropertyReference = ifcAddress; }); var ifcTelecomAddress = model.Instances.New<IfcTelecomAddress>(a => { a.SetTelephoneNumbers(new[] { "01325 6589965" }); a.SetElectronicMailAddress(new[] { "*****@*****.**" }); }); var ifcPrValueTelecom = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:Telecom"; prv.PropertyReference = ifcTelecomAddress; }); var ifcCostValue = model.Instances.New<IfcCostValue>(cv => { cv.Name = "Cost Value"; cv.Description = ""; cv.Value = new IfcMonetaryMeasure(155.0); cv.ApplicableDate = model.Instances.New<IfcCalendarDate>(cd => { cd.DayComponent = 02; cd.MonthComponent = 02; cd.YearComponent = 2013; }); cv.FixedUntilDate = model.Instances.New<IfcCalendarDate>(cd => { cd.DayComponent = 31; cd.MonthComponent = 12; cd.YearComponent = 2013; }); cv.CostType = "Annual rate of return"; cv.Condition = ""; }); var ifcPrValueCostValue = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:CostValue"; prv.PropertyReference = ifcCostValue; }); var ifcEnvironmentalImpactValue = model.Instances.New<IfcEnvironmentalImpactValue>(cv => { cv.Name = "Environmental Impact"; cv.Description = ""; cv.Value = model.Instances.New<IfcMeasureWithUnit>(mwu => { mwu.ValueComponent = new IfcReal(111.0); mwu.UnitComponent = model.Instances.New<IfcSIUnit>(siu => { siu.UnitType = IfcUnitEnum.LENGTHUNIT; siu.Name = IfcSIUnitName.METRE; siu.Dimensions = model.Instances.New<IfcDimensionalExponents>(de => { de.LengthExponent = 1; de.MassExponent = 0; de.TimeExponent = 0; de.ElectricCurrentExponent = 0; de.ThermodynamicTemperatureExponent = 0; de.AmountOfSubstanceExponent = 0; de.LuminousIntensityExponent = 0; }); }); }); cv.ApplicableDate = model.Instances.New<IfcCalendarDate>(cd => { cd.DayComponent = 02; cd.MonthComponent = 02; cd.YearComponent = 2013; }); cv.FixedUntilDate = model.Instances.New<IfcCalendarDate>(cd => { cd.DayComponent = 31; cd.MonthComponent = 12; cd.YearComponent = 2013; }); cv.ImpactType = "Embodied energy"; cv.Category = IfcEnvironmentalImpactCategoryEnum.MANUFACTURE; }); var ifcPrValueEnvironmentalImpact = model.Instances.New<IfcPropertyReferenceValue>(prv => { prv.Name = "IfcPropertyReferenceValue:EnvironmentalImpact"; prv.PropertyReference = ifcEnvironmentalImpactValue; }); //lets create the IfcElementQuantity var ifcPropertySet = model.Instances.New<IfcPropertySet>(ps => { ps.OwnerHistory = ifcOwnerHistory; ps.Name = "Test:IfcPropertySet"; ps.Description = "Property Set"; ps.HasProperties.Add(ifcPropertySingleValue); ps.HasProperties.Add(ifcPropertyEnumeratedValue); ps.HasProperties.Add(ifcPropertyBoundedValue); ps.HasProperties.Add(ifcPropertyTableValue); ps.HasProperties.Add(ifcPropertyListValue); ps.HasProperties.Add(ifcPrValueMaterial); ps.HasProperties.Add(ifcPrValuePerson); ps.HasProperties.Add(ifcPrValueDateTime); ps.HasProperties.Add(ifcPrValueMatList); ps.HasProperties.Add(ifcPrValueOrg); ps.HasProperties.Add(ifcPrValueDate); ps.HasProperties.Add(ifcPrValueTime); ps.HasProperties.Add(ifcPrValuePersonOrg); ps.HasProperties.Add(ifcPrValueMatLayer); ps.HasProperties.Add(ifcPrValueRef); ps.HasProperties.Add(ifcPrValueTimeSeries); ps.HasProperties.Add(ifcPrValueAddress); ps.HasProperties.Add(ifcPrValueTelecom); ps.HasProperties.Add(ifcPrValueCostValue); ps.HasProperties.Add(ifcPrValueEnvironmentalImpact); }); //need to create the relationship model.Instances.New<IfcRelDefinesByProperties>(rdbp => { rdbp.OwnerHistory = ifcOwnerHistory; rdbp.Name = "Property Association"; rdbp.Description = "IfcPropertySet associated to wall"; rdbp.RelatedObjects.Add(wall); rdbp.RelatingPropertyDefinition = ifcPropertySet; }); }
public virtual void IfcParse(int propIndex, IPropertyValue value) { switch (propIndex) { case 0: _globalId = value.StringVal; break; case 1: _ownerHistory = (IfcOwnerHistory) value.EntityVal; break; case 2: _name = value.StringVal; break; case 3: _description = value.StringVal; break; default: this.HandleUnexpectedAttribute(propIndex, value); break; } }
private void CreateElementQuantity(XbimModel model, IfcWallStandardCase wall, IfcOwnerHistory ifcOwnerHistory) { //Create a IfcElementQuantity //first we need a IfcPhysicalSimpleQuantity,first will use IfcQuantityArea var ifcQuantityArea = model.Instances.New<IfcQuantityArea>(qa => { qa.Name = "IfcQuantityArea:Area"; qa.Description = ""; qa.Unit = model.Instances.New<IfcSIUnit>(siu => { siu.UnitType = IfcUnitEnum.AREAUNIT; siu.Prefix = IfcSIPrefix.MILLI; siu.Name = IfcSIUnitName.SQUARE_METRE; siu.Dimensions = model.Instances.New<IfcDimensionalExponents>(de => { de.LengthExponent = 1; de.MassExponent = 0; de.TimeExponent = 0; de.ElectricCurrentExponent = 0; de.ThermodynamicTemperatureExponent = 0; de.AmountOfSubstanceExponent = 0; de.LuminousIntensityExponent = 0; }); }); qa.AreaValue = 100.0; }); //next quantity IfcQuantityCount using IfcContextDependentUnit var ifcContextDependentUnit = model.Instances.New<IfcContextDependentUnit>(cd => { cd.Dimensions = model.Instances.New<IfcDimensionalExponents>(de => { de.LengthExponent = 1; de.MassExponent = 0; de.TimeExponent = 0; de.ElectricCurrentExponent = 0; de.ThermodynamicTemperatureExponent = 0; de.AmountOfSubstanceExponent = 0; de.LuminousIntensityExponent = 0; }); cd.UnitType = IfcUnitEnum.LENGTHUNIT; cd.Name = "Elephants"; }); var ifcQuantityCount = model.Instances.New<IfcQuantityCount>(qc => { qc.Name = "IfcQuantityCount:Elephant"; qc.CountValue = 12; qc.Unit = ifcContextDependentUnit; }); //next quantity IfcQuantityLength using IfcConversionBasedUnit var ifcConversionBasedUnit = model.Instances.New<IfcConversionBasedUnit>(cbu => { cbu.ConversionFactor = model.Instances.New<IfcMeasureWithUnit>(mu => { mu.ValueComponent = new IfcRatioMeasure(25.4); mu.UnitComponent = model.Instances.New<IfcSIUnit>(siu => { siu.UnitType = IfcUnitEnum.LENGTHUNIT; siu.Prefix = IfcSIPrefix.MILLI; siu.Name = IfcSIUnitName.METRE; }); }); cbu.Dimensions = model.Instances.New<IfcDimensionalExponents>(de => { de.LengthExponent = 1; de.MassExponent = 0; de.TimeExponent = 0; de.ElectricCurrentExponent = 0; de.ThermodynamicTemperatureExponent = 0; de.AmountOfSubstanceExponent = 0; de.LuminousIntensityExponent = 0; }); cbu.UnitType = IfcUnitEnum.LENGTHUNIT; cbu.Name = "Inch"; }); var ifcQuantityLength = model.Instances.New<IfcQuantityLength>(qa => { qa.Name = "IfcQuantityLength:Length"; qa.Description = ""; qa.Unit = ifcConversionBasedUnit; qa.LengthValue = 24.0; }); //lets create the IfcElementQuantity var ifcElementQuantity = model.Instances.New<IfcElementQuantity>(eq => { eq.OwnerHistory = ifcOwnerHistory; eq.Name = "Test:IfcElementQuantity"; eq.Description = "Measurement quantity"; eq.Quantities.Add(ifcQuantityArea); eq.Quantities.Add(ifcQuantityCount); eq.Quantities.Add(ifcQuantityLength); }); //need to create the relationship model.Instances.New<IfcRelDefinesByProperties>(rdbp => { rdbp.OwnerHistory = ifcOwnerHistory; rdbp.Name = "Area Association"; rdbp.Description = "IfcElementQuantity associated to wall"; rdbp.RelatedObjects.Add(wall); rdbp.RelatingPropertyDefinition = ifcElementQuantity; }); }
void IPersistIfcEntity.Activate(bool write) { lock(this) { if (_model != null && !_activated) _activated = _model.Activate(this, false)>0; } if (write) { _model.Activate(this, write); if (_model.AutoAddOwnerHistory && _ownerHistory != (_model.OwnerHistoryAddObject as IfcOwnerHistory)) //no need to do it if it is already set { if (_ownerHistory != (_model.OwnerHistoryModifyObject as IfcOwnerHistory)) { Transaction.AddPropertyChange(v => OwnerHistory = v, _ownerHistory, (IfcOwnerHistory)_model.OwnerHistoryModifyObject); ((ISupportChangeNotification)this).NotifyPropertyChanging("OwnerHistory"); _ownerHistory = (IfcOwnerHistory)_model.OwnerHistoryModifyObject; ((ISupportChangeNotification)this).NotifyPropertyChanged("OwnerHistory"); } } } }