internal static Snap.NX.Torus CreateTorus(Snap.Position center, Snap.Orientation matrix, double majorRadius, double minorRadius, Box2d boxUV) { Vector axisX = matrix.AxisX; Vector axisZ = matrix.AxisZ; Snap.Orientation orientation = new Snap.Orientation(axisX, axisZ); Snap.Position position = center + ((Snap.Position)(majorRadius * matrix.AxisX)); Snap.NX.Arc arc = Create.Arc(position, orientation, minorRadius, boxUV.MinV, boxUV.MaxV); Snap.NX.ICurve[] curves = new Snap.NX.ICurve[] { arc }; double x = matrix.AxisZ.X; double y = matrix.AxisZ.Y; double z = matrix.AxisZ.Z; string str = Snap.Number.ToString(boxUV.MinU); string str2 = Snap.Number.ToString(boxUV.MaxU); Snap.Number[] angles = new Snap.Number[] { str, str2 }; return(new Snap.NX.Torus(Create.RevolveSheet(curves, center, matrix.AxisZ, angles).NXOpenRevolve)); }
public Snap.NX.Arc[] IsoCurveU(double constantU) { Snap.NX.Curve[] nxObjects = Create.IsoparametricCurve(this, Create.DirectionUV.U, constantU, 0.0254); Snap.NX.Arc[] arcArray = new Snap.NX.Arc[nxObjects.Length]; for (int i = 0; i < nxObjects.Length; i++) { Snap.Position startPoint = nxObjects[i].StartPoint; Snap.Position endPoint = nxObjects[i].EndPoint; Snap.Position position3 = nxObjects[i].Position(((nxObjects[i].MaxU - nxObjects[i].MinU) / 2.0) + nxObjects[i].MinU); if (Snap.Position.Distance(startPoint, endPoint) <= 0.0001) { Snap.Position position4 = nxObjects[i].Position(nxObjects[i].MaxU / 3.0); arcArray[i] = Create.Circle(startPoint, position3, position4); } else { arcArray[i] = Create.Arc(startPoint, position3, endPoint); } } Snap.NX.NXObject.Delete(nxObjects); return(arcArray); }
private static Snap.NX.Arc SplineToArc(Snap.NX.Spline spline, double radius) { Vector vector = spline.Tangent(0.0); Snap.Position startPoint = spline.Position(0.0); Vector vector2 = spline.Tangent(1.0); Snap.Position endPoint = spline.Position(1.0); double num = (double)(-vector * vector2); double num2 = System.Math.Sqrt((1.0 - num) / 2.0); Vector vector3 = Vector.Unit(vector - vector2); Snap.Position p = (Snap.Position)(((startPoint + endPoint) / 2.0) + ((radius * (1.0 - num2)) * vector3)); Snap.Position position4 = (Snap.Position)(p - ((Snap.Position)((2.0 * radius) * vector3))); Snap.Position q = spline.Position(0.5); Snap.Position throughPoint = p; double num3 = Snap.Position.Distance(p, q); if (Snap.Position.Distance(position4, q) < num3) { throughPoint = position4; } return(Create.Arc(startPoint, throughPoint, endPoint)); }