public static IBody2 CreateCirclularSheet ( this IModeler modeler , Vector3 center , Vector3 vNormal , Vector3 vRef , double radius) { // Should be orthogonal Debug.Assert(vRef.Dot(vNormal)<1e-9); var math = SwAddinBase.Active.Math; var centerSw = center.ToSwMathPoint(); var vNormalSw = vNormal.ToSwMathPoint(); var vNormalOrthSw = vRef.ToSWVector(math).Normalise(); var centerDbls = centerSw.ArrayData; var vNormalDbls = vNormalSw.ArrayData; var vNormalOrthDbls = vNormalOrthSw.ArrayData; var surf = (Surface) modeler.CreatePlanarSurface2(centerDbls, vNormalDbls, vNormalOrthDbls); var startPoint = centerSw.AddTs(vNormalOrthSw.ScaleTs(radius)); var startPointDbls = startPoint.ArrayData; var arco = modeler.CreateArc (centerDbls, vNormalDbls, radius, startPointDbls, startPointDbls); var arc = (Curve) arco; var arcStartPoint = arc.StartPoint(); var arcEndPoint = arc.EndPoint(); var trimmedArc = arc.CreateTrimmedCurve2(arcStartPoint.X,arcStartPoint.Y,arcStartPoint.Z,arcEndPoint.X,arcEndPoint.Y,arcEndPoint.Z); return (IBody2) surf.CreateTrimmedSheet(new[] {trimmedArc}); }
/// <summary> /// Create a surface from a plane definition /// </summary> /// <param name="activeModeler"></param> /// <param name="plane"></param> /// <returns></returns> public static ISurface CreatePlanarSurface(this IModeler activeModeler, PointDirection3 plane) { var planeDirection = plane.Direction; var vRef = planeDirection.Orthogonal(); var mathVector = planeDirection; var vRootPoint = plane.Point; return (ISurface) activeModeler.CreatePlanarSurface2(vRootPoint.ToDoubles(), mathVector.ToDoubles(), vRef.ToDoubles()); }
public static IBody2 CreateSemiCirclularSheet ( this IModeler modeler , Vector3 center , Vector3 vNormal , Vector3 vRef // Horizontal , double radius) { // Should be orthogonal Debug.Assert(vRef.Dot(vNormal)<1e-9); var math = SwAddinBase.Active.Math; var centerSw = center.ToSwMathPoint(); var vNormalSw = vNormal.ToSwMathPoint(); var vNormalOrthSw = vRef.ToSWVector(math).Normalise(); var centerDbls = centerSw.ArrayData; var vNormalDbls = vNormalSw.ArrayData; var vNormalOrthDbls = vNormalOrthSw.ArrayData; var surf = (Surface) modeler.CreatePlanarSurface2(centerDbls, vNormalDbls, vNormalOrthDbls); var startPoint = center + radius*vRef.Unit(); var endPoint = center - radius*vRef.Unit(); var startPointDbls = startPoint.ToDoubles(); var endPointDbls = endPoint.ToDoubles(); var arco = modeler.CreateArc (centerDbls, vNormalDbls, radius, startPointDbls, endPointDbls); var arc = (Curve) arco; var arcStartPoint = startPoint; var arcEndPoint = endPoint; var trimmedArc = arc.CreateTrimmedCurve2(arcStartPoint.X,arcStartPoint.Y,arcStartPoint.Z,arcEndPoint.X,arcEndPoint.Y,arcEndPoint.Z); var line = modeler.CreateTrimmedLine(arcEndPoint, arcStartPoint); return (IBody2) surf.CreateTrimmedSheet(new[] {trimmedArc, line}); }