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); }
/// <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)); }