コード例 #1
0
        public override void Parse(int propIndex, IPropertyValue value, int[] nestedIndex)
        {
            switch (propIndex)
            {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
                base.Parse(propIndex, value, nestedIndex);
                return;

            case 7:
                _predefinedType = (IfcStructuralCurveMemberTypeEnum)System.Enum.Parse(typeof(IfcStructuralCurveMemberTypeEnum), value.EnumVal, true);
                return;

            case 8:
                _axis = (IfcDirection)(value.EntityVal);
                return;

            default:
                throw new XbimParserException(string.Format("Attribute index {0} is out of range for {1}", propIndex + 1, GetType().Name.ToUpper()));
            }
        }
コード例 #2
0
        public static iso_10303 buildFailingMinimumExampleObject()
        {
            iso_10303 iso10303 = new iso_10303();

            iso10303.uos = new uos1();
            iso10303.uos.configuration = new string[] { "i-ifc2x3" };

            iso10303.version = "2.0";

            iso10303.iso_10303_28_header                      = new iso_10303_28_header();
            iso10303.iso_10303_28_header.author               = "John Hancock";
            iso10303.iso_10303_28_header.organization         = "MegaCorp";
            iso10303.iso_10303_28_header.time_stamp           = new DateTime(2010, 11, 12, 13, 04, 00);
            iso10303.iso_10303_28_header.name                 = "An Example";
            iso10303.iso_10303_28_header.preprocessor_version = "a preprocessor";
            iso10303.iso_10303_28_header.originating_system   = "IfcDotNet Library";
            iso10303.iso_10303_28_header.authorization        = "none";
            iso10303.iso_10303_28_header.documentation        = "documentation";

            IfcOrganization organization = new IfcOrganization();

            organization.entityid = "i1101";
            organization.Name     = "MegaCorp";

            IfcCartesianPoint point = new IfcCartesianPoint("i101", 2500, 0, 0);

            IfcDirection dir = new IfcDirection("i102", 0, 1, 0);

            ((uos1)iso10303.uos).Items = new Entity[] { organization, point, dir };

            return(iso10303);
        }
コード例 #3
0
 /// <summary>
 /// Compares two objects for geometric equality
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b">object to compare with</param>
 /// <returns></returns>
 public static bool GeometricEquals(this IfcDirection a, IfcDirection b)
 {
     if (a.Equals(b)) return true;
     XbimVector3D va = a.XbimVector3D();
     XbimVector3D vb = b.XbimVector3D();
     return va.IsEqual(vb,b.ModelOf.ModelFactors.Precision);
 }
コード例 #4
0
 internal static double IfcDotProduct(Direction dir1, IfcDirection dir2)
 {
     return
         (dir1.X * dir2.X +
          dir1.Y * dir2.Y +
          dir1.Z * dir2.Z);
 }
コード例 #5
0
        public override void Parse(int propIndex, IPropertyValue value, int[] nestedIndex)
        {
            switch (propIndex)
            {
            case 0:
            case 1:
                base.Parse(propIndex, value, nestedIndex);
                return;

            case 2:
                _coordinateSpaceDimension = value.IntegerVal;
                return;

            case 3:
                _precision = value.RealVal;
                return;

            case 4:
                _worldCoordinateSystem = (IfcAxis2Placement)(value.EntityVal);
                return;

            case 5:
                _trueNorth = (IfcDirection)(value.EntityVal);
                return;

            default:
                throw new XbimParserException(string.Format("Attribute index {0} is out of range for {1}", propIndex + 1, GetType().Name.ToUpper()));
            }
        }
コード例 #6
0
        public BbDirectionGeometry(
            BbDirection3D bbDirection
            )
        {
            _ifcDirection = bbDirection.IfcDirection;



            _ifcShapeRepresentation = new IfcShapeRepresentation
            {
                ContextOfItems           = BbHeaderSetting.Setting3D.GeometricRepresentationContext,
                RepresentationIdentifier = "Body",
                RepresentationType       = "GeometricCurveSet",
                Items = new List <IfcRepresentationItem>(),
            };
            _ifcShapeRepresentation.Items.Add(_ifcDirection);

            _ifcProductDefinitionShape = new IfcProductDefinitionShape
            {
                // Name=
                // Description =
                Representations = new List <IfcRepresentation>(),
            };
            _ifcProductDefinitionShape.Representations.Add(_ifcShapeRepresentation);
        }
コード例 #7
0
        public override void Parse(int propIndex, IPropertyValue value, int[] nestedIndex)
        {
            switch (propIndex)
            {
            case 0:
            case 1:
                base.Parse(propIndex, value, nestedIndex);
                return;

            case 2:
                _directrix = (IfcCurve)(value.EntityVal);
                return;

            case 3:
                _startParam = value.RealVal;
                return;

            case 4:
                _endParam = value.RealVal;
                return;

            case 5:
                _fixedReference = (IfcDirection)(value.EntityVal);
                return;

            default:
                throw new XbimParserException(string.Format("Attribute index {0} is out of range for {1}", propIndex + 1, GetType().Name.ToUpper()));
            }
        }
コード例 #8
0
ファイル: InitWCS.cs プロジェクト: doubility-fzm/BuildingRepo
        private void Init(IfcStore m)
        {
            using (var txn = m.BeginTransaction("Initialise WCS"))
            {
                var context3D = m.Instances.OfType <IfcGeometricRepresentationContext>()
                                .Where(c => c.CoordinateSpaceDimension == 3)
                                .FirstOrDefault();
                if (context3D.WorldCoordinateSystem is IfcAxis2Placement3D wcs)
                {
                    WCS              = wcs;
                    Origin3D         = wcs.Location;
                    AxisZ3D          = toolkit_factory.MakeDirection(m, 0, 0, 1);
                    wcs.Axis         = AxisZ3D;
                    AxisX3D          = toolkit_factory.MakeDirection(m, 1, 0, 0);
                    wcs.RefDirection = AxisX3D;
                    AxisY3D          = toolkit_factory.MakeDirection(m, 0, 1, 0);
                }

                var context2D = m.Instances.OfType <IfcGeometricRepresentationContext>()
                                .Where(c => c.CoordinateSpaceDimension == 2)
                                .FirstOrDefault();
                if (context2D.WorldCoordinateSystem is IfcAxis2Placement2D wcs2d)
                {
                    WCS2D              = wcs2d;
                    Origin2D           = wcs2d.Location;
                    AxisX2D            = toolkit_factory.MakeDirection(m, 1, 0);
                    wcs2d.RefDirection = AxisX2D;
                    AxisY2D            = toolkit_factory.MakeDirection(m, 0, 1, 0);
                }

                txn.Commit();
            }
        }
コード例 #9
0
        /// <summary>
        /// returns a Hash for the geometric behaviour of this object
        /// </summary>
        /// <param name="solid"></param>
        /// <returns></returns>
        public static int GetGeometryHashCode(this IfcDirection dir)
        {
            if (dir == null)
            {
                return(0);
            }

            var model            = dir.ModelOf;
            Func <double, int> f = model.ModelFactors.GetGeometryDoubleHash;

            switch (dir.Dim)
            {
            case 1:
                return(f(dir.X));

            case 2:
                return(f(dir.X) ^ f(dir.Y));

            case 3:
                return(f(dir.X) ^ f(dir.Y) ^ f(dir.Z));

            default:
                throw new NotImplementedException();
            }
        }
コード例 #10
0
        public override void IfcParse(int propIndex, IPropertyValue value)
        {
            switch (propIndex)
            {
            case 0:
            case 1:
                base.IfcParse(propIndex, value);
                break;

            case 2:
                _coordinateSpaceDimension = (sbyte)value.IntegerVal;
                break;

            case 3:
                _precision = value.RealVal;
                break;

            case 4:
                _worldCoordinateSystem = (IfcAxis2Placement)value.EntityVal;
                break;

            case 5:
                _trueNorth = (IfcDirection)value.EntityVal;
                break;

            default:
                this.HandleUnexpectedAttribute(propIndex, value); break;
            }
        }
コード例 #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BlackBox.Aisc.EM11.DerivedProfile"/> class.
        /// </summary>
        /// <param name='parentProfile'>
        /// Parent profile.
        /// </param>
        /// <param name='mirrorXAxis'>
        /// If set to <c>true</c> mirror X axis.
        /// </param>
        /// <param name='mirrorYAxis'>
        /// If set to <c>true</c> mirror Y axis.
        /// </param>
        public BbDerivedProfile(BbProfile parentProfile, bool mirrorXAxis, bool mirrorYAxis)
            : this(parentProfile)
        {
            IfcDirection axis1 = null;
            IfcDirection axis2 = null;

            if (mirrorXAxis && mirrorYAxis)
            {
                axis1 = BbHeaderSetting.Setting3D.XAxisMinus2D.IfcDirection;
                axis2 = BbHeaderSetting.Setting3D.YAxisMinus2D.IfcDirection;
            }
            else if (mirrorXAxis && !mirrorYAxis)
            {
                axis1 = BbHeaderSetting.Setting3D.XAxis2D.IfcDirection;
                axis2 = BbHeaderSetting.Setting3D.YAxisMinus2D.IfcDirection;
            }
            else if (!mirrorXAxis && mirrorYAxis)
            {
                axis1 = BbHeaderSetting.Setting3D.XAxisMinus2D.IfcDirection;
                axis2 = BbHeaderSetting.Setting3D.YAxis2D.IfcDirection;
            }


            var ifcCartesianTransformationOperator2D
                = new IfcCartesianTransformationOperator2D {
                Axis1       = axis1,
                Axis2       = axis2,
                LocalOrigin = BbHeaderSetting.Setting3D.Origin2D.IfcCartesianPoint,
                Scale       = 1,
                };
            _ifcDerivedProfileDef.Operator = ifcCartesianTransformationOperator2D;
        }
        private static XbimMatrix3D ConvertCartesianTransform3D(IfcCartesianTransformationOperator3D ct3D)
        {
            XbimVector3D u3; //Z Axis Direction
            XbimVector3D u2; //X Axis Direction
            XbimVector3D u1; //Y axis direction

            if (ct3D.Axis3 != null)
            {
                IfcDirection dir = ct3D.Axis3;
                u3 = new XbimVector3D(dir.DirectionRatios[0], dir.DirectionRatios[1], dir.DirectionRatios[2]);
                u3.Normalize();
            }
            else
            {
                u3 = new XbimVector3D(0, 0, 1);
            }
            if (ct3D.Axis1 != null)
            {
                IfcDirection dir = ct3D.Axis1;
                u1 = new XbimVector3D(dir.DirectionRatios[0], dir.DirectionRatios[1], dir.DirectionRatios[2]);
                u1.Normalize();
            }
            else
            {
                XbimVector3D defXDir = new XbimVector3D(1, 0, 0);
                u1 = u3 != defXDir ? defXDir : new XbimVector3D(0, 1, 0);
            }
            XbimVector3D xVec  = XbimVector3D.Multiply(XbimVector3D.DotProduct(u1, u3), u3);
            XbimVector3D xAxis = XbimVector3D.Subtract(u1, xVec);

            xAxis.Normalize();

            if (ct3D.Axis2 != null)
            {
                IfcDirection dir = ct3D.Axis2;
                u2 = new XbimVector3D(dir.DirectionRatios[0], dir.DirectionRatios[1], dir.DirectionRatios[2]);
                u2.Normalize();
            }
            else
            {
                u2 = new XbimVector3D(0, 1, 0);
            }

            XbimVector3D tmp   = XbimVector3D.Multiply(XbimVector3D.DotProduct(u2, u3), u3);
            XbimVector3D yAxis = XbimVector3D.Subtract(u2, tmp);

            tmp   = XbimVector3D.Multiply(XbimVector3D.DotProduct(u2, xAxis), xAxis);
            yAxis = XbimVector3D.Subtract(yAxis, tmp);
            yAxis.Normalize();
            u2 = yAxis;
            u1 = xAxis;

            XbimPoint3D lo = ct3D.LocalOrigin.XbimPoint3D(); //local origin

            return(new XbimMatrix3D(u1.X, u1.Y, u1.Z, 0,
                                    u2.X, u2.Y, u2.Z, 0,
                                    u3.X, u3.Y, u3.Z, 0,
                                    lo.X, lo.Y, lo.Z, 1));
        }
コード例 #13
0
 public IfcGeometricRepresentationContext(IfcLabel?__ContextIdentifier, IfcLabel?__ContextType, IfcDimensionCount __CoordinateSpaceDimension, IfcReal?__Precision, IfcAxis2Placement __WorldCoordinateSystem, IfcDirection __TrueNorth)
     : base(__ContextIdentifier, __ContextType)
 {
     this._CoordinateSpaceDimension = __CoordinateSpaceDimension;
     this._Precision             = __Precision;
     this._WorldCoordinateSystem = __WorldCoordinateSystem;
     this._TrueNorth             = __TrueNorth;
 }
コード例 #14
0
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     if (propIndex == 0) base.IfcParse(propIndex, value);
     else if (propIndex == 1)
         _axis = (IfcDirection) value.EntityVal;
     else
         this.HandleUnexpectedAttribute(propIndex, value);
 }
コード例 #15
0
 public IfcLightSourceSpot(IfcLabel?__Name, IfcColourRgb __LightColour, IfcNormalisedRatioMeasure?__AmbientIntensity, IfcNormalisedRatioMeasure?__Intensity, IfcCartesianPoint __Position, IfcPositiveLengthMeasure __Radius, IfcReal __ConstantAttenuation, IfcReal __DistanceAttenuation, IfcReal __QuadricAttenuation, IfcDirection __Orientation, IfcReal?__ConcentrationExponent, IfcPositivePlaneAngleMeasure __SpreadAngle, IfcPositivePlaneAngleMeasure __BeamWidthAngle)
     : base(__Name, __LightColour, __AmbientIntensity, __Intensity, __Position, __Radius, __ConstantAttenuation, __DistanceAttenuation, __QuadricAttenuation)
 {
     this._Orientation           = __Orientation;
     this._ConcentrationExponent = __ConcentrationExponent;
     this._SpreadAngle           = __SpreadAngle;
     this._BeamWidthAngle        = __BeamWidthAngle;
 }
コード例 #16
0
 public IfcFixedReferenceSweptAreaSolid(IfcProfileDef __SweptArea, IfcAxis2Placement3D __Position, IfcCurve __Directrix, IfcParameterValue?__StartParam, IfcParameterValue?__EndParam, IfcDirection __FixedReference)
     : base(__SweptArea, __Position)
 {
     this.Directrix      = __Directrix;
     this.StartParam     = __StartParam;
     this.EndParam       = __EndParam;
     this.FixedReference = __FixedReference;
 }
コード例 #17
0
 public Direction(IfcDirection from)
 {
     DirectionRatios    = new[] { 0.0, 0.0, 0.0 };
     DirectionRatios[0] = from.X;
     DirectionRatios[1] = from.Y;
     DirectionRatios[2] = from.Z;
     Dim = (int)@from.Dim;
 }
コード例 #18
0
 static public IfcAxis2Placement2D Create(this IfcAxis2Placement2D ax, IfcCartesianPoint centre, IfcDirection xAxisDirection)
 {
     IfcAxis2Placement2D ax2 = new IfcAxis2Placement2D()
     {
         RefDirection = xAxisDirection,
         Location = centre
     };
     return ax2;
 }
コード例 #19
0
        public static void AssertIsMinimumExample(iso_10303 iso10303)
        {
            Assert.IsNotNull(iso10303);
            Assert.IsNotNull(iso10303.iso_10303_28_header);
            Assert.AreEqual("An Example", iso10303.iso_10303_28_header.name);
            Assert.AreEqual(new DateTime(2010, 11, 12, 13, 04, 00), iso10303.iso_10303_28_header.time_stamp);
            Assert.AreEqual("John Hancock", iso10303.iso_10303_28_header.author);
            Assert.AreEqual("MegaCorp", iso10303.iso_10303_28_header.organization);
            Assert.AreEqual("IfcDotNet Library", iso10303.iso_10303_28_header.originating_system);
            Assert.AreEqual("a preprocessor", iso10303.iso_10303_28_header.preprocessor_version);
            Assert.AreEqual("documentation", iso10303.iso_10303_28_header.documentation);
            Assert.AreEqual("none", iso10303.iso_10303_28_header.authorization);

            Assert.IsNotNull(iso10303.uos, "iso10303.uos is null");
            uos uos = iso10303.uos;

            Assert.AreEqual("uos_1", uos.id);
            Assert.IsNotNull(uos.configuration, "iso10303.uos.configuration is null");
            Assert.AreEqual(1, uos.configuration.Length, "uos.configuration does not have 1 item in it");
            Assert.AreEqual("i-ifc2x3", uos.configuration[0]);

            Assert.IsNotNull(uos as uos1, "uos cannot be converted to uos1");
            uos1 uos1 = uos as uos1;

            Assert.IsNotNull(uos1, "uos1 is null");
            Assert.IsNotNull(uos1.Items, "uos1.items is null");
            Assert.AreEqual(3, uos1.Items.Length, "uos1.Items does not have 3 items in it");

            IfcOrganization org = uos1.Items[0] as IfcOrganization;

            Assert.IsNotNull(org, "org is null");
            Assert.AreEqual("i1101", org.entityid, "entityid is not i1101");
            Assert.AreEqual("MegaCorp", org.Name);

            IfcCartesianPoint pnt = uos1.Items[1] as IfcCartesianPoint;

            Assert.IsNotNull(pnt, "pnt is null");
            Assert.AreEqual("i101", pnt.entityid);
            Assert.IsNotNull(pnt.Coordinates);
            Assert.IsNotNull(pnt.Coordinates.Items);
            Assert.AreEqual(3, pnt.Coordinates.Items.Length);
            Assert.AreEqual(2500, pnt.Coordinates[0].Value);  //TODO shorten the number of properties needed to be called to get the value. pnt.Coordinates[0] would be perfect!
            Assert.AreEqual(0, pnt.Coordinates[1].Value);
            Assert.AreEqual(0, pnt.Coordinates[2].Value);

            IfcDirection dir = uos1.Items[2] as IfcDirection;

            Assert.IsNotNull(dir, "dir is null");
            Assert.AreEqual("i102", dir.entityid);
            Assert.IsNotNull(dir.DirectionRatios);
            Assert.IsNotNull(dir.DirectionRatios.Items);
            Assert.AreEqual(3, dir.DirectionRatios.Items.Length);
            Assert.AreEqual(0, dir.DirectionRatios[0].Value);
            Assert.AreEqual(1, dir.DirectionRatios[1].Value);
            Assert.AreEqual(0, dir.DirectionRatios[0].Value);
        }
コード例 #20
0
 public static IfcAxis2Placement3D MakeAxis2Placement3D(IfcStore m, IfcCartesianPoint origin = null,
                                                        IfcDirection localZ = null, IfcDirection localX = null)
 {
     return(m.Instances.New <IfcAxis2Placement3D>(a =>
     {
         a.Location = origin ?? MakeCartesianPoint(m, 0, 0, 0);
         a.Axis = localZ;
         a.RefDirection = localX;
     }));
 }
コード例 #21
0
 public static IfcAreaMeasure Area(this IfcPolyLoop loop, IfcDirection normal)
 {
     IfcCartesianPoint sum = new IfcCartesianPoint(0, 0, 0);
     IList<IfcCartesianPoint> pts = loop.Polygon;
     for (int i = 0; i < pts.Count - 1; i++)
     {
         sum.Add(pts[i].CrossProduct(pts[i + 1]));
     }
     IfcDirection n = normal.Normalise();
     return n.DotProduct(sum)/2;
 }
コード例 #22
0
        private static IfcDirection ApplyQuaternion(this IfcDirection direction,
                                                    Quaternion q)
        {
            var directionQ = new Quaternion(0,
                                            direction.DirectionRatios[0].Value,
                                            direction.DirectionRatios[1].Value,
                                            direction.DirectionRatios[2].Value);
            Quaternion result = q.Multiply(directionQ.Multiply(q.Conjugate()));

            return(new IfcDirection(result.x, result.y, result.z));
        }
コード例 #23
0
        public static IfcAxis2Placement3D ApplyQuaternion(this IfcAxis2Placement3D placement3D,
                                                          Quaternion q)
        {
            IfcDirection refDirection = placement3D.RefDirection ?? new IfcDirection(1, 0, 0);
            IfcDirection axis         = placement3D.Axis ?? new IfcDirection(0, 0, 1);

            placement3D.RefDirection = refDirection.ApplyQuaternion(q);
            placement3D.Axis         = axis.ApplyQuaternion(q);
            placement3D.Location     = placement3D.Location.ApplyQuaternion(q);
            return(placement3D);
        }
コード例 #24
0
 public static IfcExtrudedAreaSolid MakeExtrudedAreaSolid(IfcStore m, IfcProfileDef area, IfcAxis2Placement3D pos,
                                                          IfcDirection dir, double depth)
 {
     return(m.Instances.New <IfcExtrudedAreaSolid>(exSolid =>
     {
         exSolid.SweptArea = area;
         exSolid.Position = pos;
         exSolid.ExtrudedDirection = dir;
         exSolid.Depth = depth;
     }));
 }
コード例 #25
0
 public static IfcExtrudedAreaSolid MakeExtrudeAreaSolid(IfcStore m, IfcProfileDef profile, IfcAxis2Placement3D position,
                                                         IfcDirection direction, IfcPositiveLengthMeasure depth)
 {
     return(m.Instances.New <IfcExtrudedAreaSolid>(s =>
     {
         s.SweptArea = profile;
         s.Position = position;
         s.ExtrudedDirection = direction;
         s.Depth = depth;
     }));
 }
コード例 #26
0
        /// <summary>
        /// Compares two objects for geometric equality
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b">object to compare with</param>
        /// <returns></returns>
        public static bool GeometricEquals(this IfcDirection a, IfcDirection b)
        {
            if (a.Equals(b))
            {
                return(true);
            }
            XbimVector3D va = a.XbimVector3D();
            XbimVector3D vb = b.XbimVector3D();

            return(va.IsEqual(vb, b.ModelOf.ModelFactors.Precision));
        }
コード例 #27
0
        public static IfcAxis2Placement3D Rotate(this IfcAxis2Placement3D placement3D,
                                                 double[] rotation)
        {
            double[][]   rotationMatrix = RotationMatrix3D(rotation);
            IfcDirection refDirection   = placement3D.RefDirection ?? new IfcDirection(1, 0, 0);
            IfcDirection axis           = placement3D.Axis ?? new IfcDirection(0, 0, 1);

            placement3D.RefDirection = refDirection.ApplyMatrix3(rotationMatrix);
            placement3D.Axis         = axis.ApplyMatrix3(rotationMatrix);
            placement3D.Location     = placement3D.Location.ApplyMatrix3(rotationMatrix);
            return(placement3D);
        }
コード例 #28
0
 private static IfcDirection ApplyMatrix3(this IfcDirection direction,
                                          double[][] matrix)
 {
     double[] newDirection = { 0, 0, 0 };
     for (int i = 0; i < 3; ++i)
     {
         for (int j = 0; j < 3; ++j)
         {
             newDirection[i] += matrix[i][j] * direction.DirectionRatios[j].Value;
         }
     }
     return(new IfcDirection(newDirection[0], newDirection[1], newDirection[2]));
 }
コード例 #29
0
        public static IfcAreaMeasure Area(this IfcPolyLoop loop, IfcDirection normal)
        {
            var sum = new XbimPoint3D(0, 0, 0);
            var pts = loop.Polygon;

            for (var i = 0; i < pts.Count - 1; i++)
            {
                sum = XbimPoint3D.Add(sum, pts[i].CrossProduct(pts[i + 1]));
            }
            var n = normal.Normalise();

            return(n.DotProduct(new XbimVector3D(sum.X, sum.Y, sum.Z)) / 2);
        }
コード例 #30
0
        public static IfcAreaMeasure Area(this IfcPolyLoop loop, IfcDirection normal)
        {
            IfcCartesianPoint         sum = new IfcCartesianPoint(0, 0, 0);
            IList <IfcCartesianPoint> pts = loop.Polygon;

            for (int i = 0; i < pts.Count - 1; i++)
            {
                sum.Add(pts[i].CrossProduct(pts[i + 1]));
            }
            IfcDirection n = normal.Normalise();

            return(n.DotProduct(sum) / 2);
        }
コード例 #31
0
        private IfcSlab CreateIfcLanding(IfcStore model, LinearPath landingPline, double landingThickness)
        {
            //begin a transaction
            using (var trans = model.BeginTransaction("Create Wall"))
            {
                IfcSlab landing = model.Instances.New <IfcSlab>();


                IfcDirection extrusionDir = model.Instances.New <IfcDirection>();
                extrusionDir.SetXYZ(0, 0, -1);

                //Create a Definition shape to hold the geometry of the Stair 3D body
                IfcShapeRepresentation shape = IFCHelper.ShapeRepresentationCreate(model, "SweptSolid", "Body");


                IfcArbitraryClosedProfileDef stepProfile = IFCHelper.ArbitraryClosedProfileCreate(model, (landingPline.Vertices /*.Select(v => v * 1000)*/).ToList());

                IfcExtrudedAreaSolid body = IFCHelper.ProfileSweptSolidCreate(model, landingThickness, stepProfile, extrusionDir);


                body.BodyPlacementSet(model, 0, 0, 0);

                shape.Items.Add(body);

                //Create a Product Definition and add the model geometry to the wall
                IfcProductDefinitionShape prDefShape = model.Instances.New <IfcProductDefinitionShape>();
                prDefShape.Representations.Add(shape);

                landing.Representation = prDefShape;

                //Create Local axes system and assign it to the column
                IfcCartesianPoint location3D = model.Instances.New <IfcCartesianPoint>();
                location3D.SetXYZ(0, 0, 0);

                //var uvColLongDir = MathHelper.UnitVectorPtFromPt1ToPt2(cadSlab.CenterPt, cadSlab.PtLengthDir);

                IfcDirection localXDir = model.Instances.New <IfcDirection>();
                localXDir.SetXYZ(1, 0, 0);

                IfcDirection localZDir = model.Instances.New <IfcDirection>();
                localZDir.SetXYZ(0, 0, 1);

                IfcAxis2Placement3D ax3D = IFCHelper.LocalAxesSystemCreate(model, location3D, localXDir, localZDir);

                //now place the slab into the model
                IfcLocalPlacement lp = IFCHelper.LocalPlacemetCreate(model, ax3D);
                landing.ObjectPlacement = lp;
                trans.Commit();
                return(landing);
            }
        }
コード例 #32
0
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     switch (propIndex)
     {
         case 0:
             base.IfcParse(propIndex, value);
             break;
         case 1:
             _refDirection = (IfcDirection) value.EntityVal;
             break;
         default:
             this.HandleUnexpectedAttribute(propIndex, value); break;
     }
 }
コード例 #33
0
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     switch (propIndex)
     {
         case 0:
         case 1:
             base.IfcParse(propIndex, value);
             break;
         case 2:
             _extrudedDirection = (IfcDirection) value.EntityVal;
             break;
         case 3:
             _depth = value.RealVal;
             break;
         default:
             this.HandleUnexpectedAttribute(propIndex, value); break;
     }
 }
コード例 #34
0
        public override void IfcParse(int propIndex, IPropertyValue value)
        {
            switch (propIndex)
            {
            case 0:
            case 1:
            case 2:
            case 3:
                base.IfcParse(propIndex, value);
                break;

            case 4:
                _Orientation = (IfcDirection)value.EntityVal;
                break;

            default:
                this.HandleUnexpectedAttribute(propIndex, value); break;
            }
        }
コード例 #35
0
        private void InitialiseGeometry()
        {
            var modelInstances = TargetRepository.Instances;

            _origin3D      = modelInstances.New <IfcCartesianPoint>(c => c.SetXYZ(0, 0, 0));
            _origin2D      = modelInstances.New <IfcCartesianPoint>(c => c.SetXY(0, 0));
            _downDirection = modelInstances.New <IfcDirection>(d => d.SetXYZ(0, 0, -1));
            var mainContext = TargetRepository.IfcProject.ModelContext();

            mainContext.ContextIdentifier = null; //balnk of the main context
            _model3DContext = modelInstances.New <IfcGeometricRepresentationSubContext>(c =>
            {
                c.ContextType       = "Model";
                c.ContextIdentifier = "Body";
                c.ParentContext     = TargetRepository.IfcProject.ModelContext();
                c.TargetView        = IfcGeometricProjectionEnum.MODEL_VIEW;
            }
                                                                                        );
        }
コード例 #36
0
        public override void Parse(int propIndex, IPropertyValue value, int[] nestedIndex)
        {
            switch (propIndex)
            {
            case 0:
            case 1:
            case 2:
            case 3:
                base.Parse(propIndex, value, nestedIndex);
                return;

            case 4:
                _orientation = (IfcDirection)(value.EntityVal);
                return;

            default:
                throw new XbimParserException(string.Format("Attribute index {0} is out of range for {1}", propIndex + 1, GetType().Name.ToUpper()));
            }
        }
コード例 #37
0
ファイル: IfcVector.cs プロジェクト: bnaand/xBim-Toolkit
 public IfcVector(double x, double y, IfcLengthMeasure magnitude)
 {
     _orientation = new IfcDirection(x, y);
     _magnitude = magnitude;
 }
コード例 #38
0
ファイル: IfcVector.cs プロジェクト: bnaand/xBim-Toolkit
 public IfcVector(IfcDirection dir, IfcLengthMeasure magnitude)
 {
     _orientation = dir;
     _magnitude = magnitude;
 }
コード例 #39
0
ファイル: IfcVector.cs プロジェクト: bnaand/xBim-Toolkit
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     switch (propIndex)
     {
         case 0:
             _orientation = (IfcDirection) value.EntityVal;
             break;
         case 1:
             _magnitude = value.RealVal;
             break;
         default:
             this.HandleUnexpectedAttribute(propIndex, value); break;
     }
 }
コード例 #40
0
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     switch (propIndex)
     {
         case 0:
         case 1:
         case 2:
         case 3:
         case 4:
         case 5:
         case 6:
         case 7:
         case 8:
             base.IfcParse(propIndex, value);
             break;
         case 9:
             _Orientation = (IfcDirection)value.EntityVal;
             break;
         case 10:
             _ConcentrationExponent = value.RealVal;
             break;
         case 11:
             _SpreadAngle = value.RealVal;
             break;
         case 12:
             _BeamWidthAngle = value.RealVal;
             break;
         default:
             this.HandleUnexpectedAttribute(propIndex, value); break;
     }
 }
コード例 #41
0
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     switch (propIndex)
     {
         case 0:
             _basisCurve = (IfcCurve) value.EntityVal;
             break;
         case 1:
             _distance = value.RealVal;
             break;
         case 2:
             _selfIntersect = value.BooleanVal;
             break;
         case 3:
             _refDirection = (IfcDirection) value.EntityVal;
             break;
         default:
             this.HandleUnexpectedAttribute(propIndex, value); break;
     }
 }
コード例 #42
0
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     switch (propIndex)
     {
         case 0:
             _axis1 = (IfcDirection) value.EntityVal;
             break;
         case 1:
             _axis2 = (IfcDirection) value.EntityVal;
             break;
         case 2:
             _localOrigin = (IfcCartesianPoint) value.EntityVal;
             break;
         case 3:
             _scale = value.RealVal;
             break;
         default:
             this.HandleUnexpectedAttribute(propIndex, value); break;
     }
 }
コード例 #43
0
 public override void IfcParse(int propIndex, IPropertyValue value)
 {
     switch (propIndex)
     {
         case 0:
         case 1:
             base.IfcParse(propIndex, value);
             break;
         case 2:
             _coordinateSpaceDimension = (sbyte) value.IntegerVal;
             break;
         case 3:
             _precision = value.RealVal;
             break;
         case 4:
             _worldCoordinateSystem = (IfcAxis2Placement) value.EntityVal;
             break;
         case 5:
             _trueNorth = (IfcDirection) value.EntityVal;
             break;
         default:
             this.HandleUnexpectedAttribute(propIndex, value); break;
     }
 }
コード例 #44
0
ファイル: Utilities.cs プロジェクト: chenxx08/ifc-dotnet
        public static iso_10303 buildFailingMinimumExampleObject(){
            iso_10303 iso10303                               = new iso_10303();
            
            iso10303.uos                                        = new uos1();
            iso10303.uos.configuration                          = new string[]{"i-ifc2x3"};
            
            iso10303.version                                    = "2.0";
            
            iso10303.iso_10303_28_header                        = new iso_10303_28_header();
            iso10303.iso_10303_28_header.author                 = "John Hancock";
            iso10303.iso_10303_28_header.organization           = "MegaCorp";
            iso10303.iso_10303_28_header.time_stamp             = new DateTime(2010,11,12,13,04,00);
            iso10303.iso_10303_28_header.name                   = "An Example";
            iso10303.iso_10303_28_header.preprocessor_version   = "a preprocessor";
            iso10303.iso_10303_28_header.originating_system     = "IfcDotNet Library";
            iso10303.iso_10303_28_header.authorization          = "none";
            iso10303.iso_10303_28_header.documentation          = "documentation";

            IfcOrganization organization                        = new IfcOrganization();
            organization.entityid                               = "i1101";
            organization.Name                                   = "MegaCorp";

            IfcCartesianPoint point                             = new IfcCartesianPoint("i101", 2500, 0, 0);

            IfcDirection dir                                    = new IfcDirection("i102",0,1,0);

            ((uos1)iso10303.uos).Items                          = new Entity[]{organization, point, dir};

            return iso10303;
        }