Esempio n. 1
0
        private static IfcSurfaceCurveSweptAreaSolid ToIfcSurfaceCurveSweptAreaSolid(this ISweepAlongCurve sweep, Transform transform, Document doc)
        {
            var position  = transform.ToIfcAxis2Placement3D(doc);
            var sweptArea = sweep.Profile.Perimeter.ToIfcArbitraryClosedProfileDef(doc);
            var directrix = sweep.Curve.ToIfcCurve(doc);

            var extrudeDir = Vector3.ZAxis.ToIfcDirection();
            var profile    = new IfcArbitraryClosedProfileDef(IfcProfileTypeEnum.CURVE, directrix);
            var surface    = new IfcSurfaceOfLinearExtrusion(profile, position, extrudeDir, new IfcPositiveLengthMeasure(1.0));

            var solid = new IfcSurfaceCurveSweptAreaSolid(sweptArea, position, directrix, sweep.StartSetback, sweep.EndSetback, surface);

            doc.AddEntity(position);
            doc.AddEntity(sweptArea);
            doc.AddEntity(directrix);

            doc.AddEntity(extrudeDir);
            doc.AddEntity(profile);

            doc.AddEntity(surface);
            doc.AddEntity(solid);

            return(solid);
        }
Esempio n. 2
0
 /// <summary>
 /// Create a sweep along a curve.
 /// </summary>
 /// <param name="sweep">The ISweepAlongCurve object.</param>
 /// <returns>A solid.</returns>
 public Solid CreateSweepAlongCurve(ISweepAlongCurve sweep)
 {
     return(Solid.SweepFaceAlongCurve(sweep.Profile.Perimeter, sweep.Profile.Voids, sweep.Curve, sweep.StartSetback, sweep.EndSetback));
 }