Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
            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));
            }