public void InitProject(linearUnitsType units) { var model = Model; if (units == ProjectUnits.SIUnitsUK) { var ua = model.Instances.New <IfcUnitAssignment>(); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.LENGTHUNIT; s.Name = IfcSIUnitName.METRE; s.Prefix = IfcSIPrefix.MILLI; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.AREAUNIT; s.Name = IfcSIUnitName.SQUARE_METRE; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.VOLUMEUNIT; s.Name = IfcSIUnitName.CUBIC_METRE; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.SOLIDANGLEUNIT; s.Name = IfcSIUnitName.STERADIAN; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.PLANEANGLEUNIT; s.Name = IfcSIUnitName.RADIAN; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.MASSUNIT; s.Name = IfcSIUnitName.GRAM; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.TIMEUNIT; s.Name = IfcSIUnitName.SECOND; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.THERMODYNAMICTEMPERATUREUNIT; s.Name = IfcSIUnitName.DEGREE_CELSIUS; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.LUMINOUSINTENSITYUNIT; s.Name = IfcSIUnitName.LUMEN; })); UnitsInContext = ua; } }
/// <summary> /// Create a new sheet with some default views according to the format type. /// </summary> /// <param name="name">The name for the sheet.</param> /// <param name="units">The measurement system type for the sheet.</param> /// <param name="formatType">The <see cref="formatType"/>.</param> /// <remarks> /// It builds the format block and it adds the created BlockReference to the Sheet and the block to the Drawings Blocks collection. /// </remarks> public void AddSheet(string name, linearUnitsType units, formatType formatType, bool addDefaultView = true) { Tuple <double, double> size = DrawingsPanel.GetFormatSize(units, formatType); Sheet sheet = new Sheet(units, size.Item1, size.Item2, name); Block block; BlockReference br = drawingsPanel1.CreateFormatBlock(formatType, sheet, out block); drawings1.Blocks.Add(block); sheet.Entities.Add(br); // not possible adding the entity to Drawings because the control handle is not created yet. it will be added when this sheet will be set as the active one. drawings1.Sheets.Add(sheet); // adds a set of default views. if (addDefaultView) { AddDefaultViews(sheet); } }
public static void InitProject(this IfcProject project, linearUnitsType units) { var model = project.Model; var ua = model.Instances.New <IfcUnitAssignment>(); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.LENGTHUNIT; s.Name = IfcSIUnitName.METRE; if (units == linearUnitsType.Millimeters) { s.Prefix = IfcSIPrefix.MILLI; } })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.AREAUNIT; s.Name = IfcSIUnitName.SQUARE_METRE; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.VOLUMEUNIT; s.Name = IfcSIUnitName.CUBIC_METRE; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.SOLIDANGLEUNIT; s.Name = IfcSIUnitName.STERADIAN; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.PLANEANGLEUNIT; s.Name = IfcSIUnitName.RADIAN; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.MASSUNIT; s.Name = IfcSIUnitName.GRAM; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.TIMEUNIT; s.Name = IfcSIUnitName.SECOND; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.THERMODYNAMICTEMPERATUREUNIT; s.Name = IfcSIUnitName.DEGREE_CELSIUS; })); ua.Units.Add(model.Instances.New <IfcSIUnit>(s => { s.UnitType = IfcUnitEnum.LUMINOUSINTENSITYUNIT; s.Name = IfcSIUnitName.LUMEN; })); project.UnitsInContext = ua; if (project.ModelContext == null) { var origin = model.Instances.New <IfcCartesianPoint>(p => p.SetXYZ(0, 0, 0)); var axis3D = model.Instances.New <IfcAxis2Placement3D>(a => a.Location = origin); var gc = model.Instances.New <IfcGeometricRepresentationContext>(c => { c. ContextType = "Model"; c. ContextIdentifier = "Building Model"; c. CoordinateSpaceDimension = 3; c.Precision = 0.00001; c. WorldCoordinateSystem = axis3D; } ); project.RepresentationContexts.Add(gc); var origin2D = model.Instances.New <IfcCartesianPoint>(p => p.SetXY(0, 0)); var axis2D = model.Instances.New <IfcAxis2Placement2D>(a => a.Location = origin2D); var pc = model.Instances.New <IfcGeometricRepresentationContext>(c => { c. ContextType = "Plan"; c. ContextIdentifier = "Building Plan View"; c. CoordinateSpaceDimension = 2; c.Precision = 0.00001; c. WorldCoordinateSystem = axis2D; } ); project.RepresentationContexts.Add(pc); } }