private static void SetConversionUnitsParameters(IModel model, IfcConversionBasedUnit unit, IfcLabel name,
                                                  IfcRatioMeasure ratio, IfcUnitEnum unitType, IfcSIUnitName siUnitName,
                                                  IfcSIPrefix?siUnitPrefix, IfcDimensionalExponents dimensions)
 {
     unit.Name             = name;
     unit.ConversionFactor = model.Instances.New <IfcMeasureWithUnit>();
     unit.ConversionFactor.ValueComponent = ratio;
     unit.ConversionFactor.UnitComponent  = model.Instances.New <IfcSIUnit>(s =>
     {
         s.UnitType = unitType;
         s.Name     = siUnitName;
         s.Prefix   = siUnitPrefix;
     });
     unit.Dimensions = dimensions;
 }
 private static void SetConversionUnitsParameters(IModel model, IfcConversionBasedUnit unit, IfcLabel name,
                                                  IfcRatioMeasure ratio, IfcUnitEnum unitType, IfcSIUnitName siUnitName,
                                                  IfcSIPrefix? siUnitPrefix, IfcDimensionalExponents dimensions)
 {
     unit.Name = name;
     unit.ConversionFactor = model.Instances.New<IfcMeasureWithUnit>();
     unit.ConversionFactor.ValueComponent = ratio;
     unit.ConversionFactor.UnitComponent = model.Instances.New<IfcSIUnit>(s =>
                                                                    {
                                                                        s.UnitType = unitType;
                                                                        s.Name = siUnitName;
                                                                        s.Prefix = siUnitPrefix;
                                                                    });
     unit.Dimensions = dimensions;
 }
 /// <summary>
 /// Set the Year Duration Unit
 /// </summary>
 private void SetYearDurationUnit()
 {
     SetSecondUnit();
     
     IfcMeasureWithUnit yearMeasure = Model.Instances.New<IfcMeasureWithUnit>(mwu =>
     {
         mwu.ValueComponent = new IfcReal(3.1536E7);
         mwu.UnitComponent = _secondUnit;
     });
     IfcConversionBasedUnit yearConBaseUnit = Model.Instances.New<IfcConversionBasedUnit>(s =>
     {
         s.UnitType = IfcUnitEnum.TIMEUNIT;
         s.Name = "Year";
         s.Dimensions = _dimensionalExponents;
         s.ConversionFactor = yearMeasure;
     });
     //set context units
     _ifcConversionBasedUnitYear = yearConBaseUnit;
 }
        /// <summary>
        /// Set the week duration unit
        /// </summary>
        private void SetMinuteDurationUnit()
        {
            SetSecondUnit();

            IfcMeasureWithUnit minuteMeasure = Model.Instances.New<IfcMeasureWithUnit>(mwu =>
            {
                mwu.ValueComponent = new IfcReal(60); //not accurate week but take average
                mwu.UnitComponent = _secondUnit;
            });
            IfcConversionBasedUnit minuteConBaseUnit = Model.Instances.New<IfcConversionBasedUnit>(s =>
            {
                s.UnitType = IfcUnitEnum.TIMEUNIT;
                s.Name = "Minute";
                s.Dimensions = _dimensionalExponents;
                s.ConversionFactor = minuteMeasure;
            });

            //set context units
            _ifcConversionBasedUnitMinute = minuteConBaseUnit;
        }
 public void Reset()
 {
     Contacts.Clear();
     _ifcConversionBasedUnitYear = null;
     _ifcConversionBasedUnitMonth = null;
     _ifcConversionBasedUnitWeek = null;
     _secondUnit = null;
     _dimensionalExponents = null;
     WorkBook = null;
 }