public void ToolSketch(Part workPart, Session theSession)
    {
        string com;

        try
        {
            //CordSystemAndGeometry Class object
            CordSystemAndGeometry geomObj = new CordSystemAndGeometry();

            //ReadFile Class object
            ReadFile data = new ReadFile();
            data.ReadData();

            // Definition of cradle center point
            //Point ptCradleCenter = geomObj.Point3DCreation(workPart, 0, 0, 0);
            Point3d ptCradleCenter = new Point3d(0, 0, 0);

            //Definition of cradle Csys
            // Point ptX = geomObj.Point3DCreation(workPart, 10, 0, 0);
            // Point ptY = geomObj.Point3DCreation(workPart, 0, 10, 0);
            Point3d ptX = new Point3d(10, 0, 0);
            Point3d ptY = new Point3d(0, 10, 0);
            NXOpen.Features.DatumCsys csysCradle = geomObj.CsysCreation(workPart, ptCradleCenter, ptX, ptY);

            //Definition of Cradle Angle sign
            // Hand of spiral
            // -- LEFT: -Q
            // -- RIGHT: +Q
            if (data.kierunekLinii == 0)
            {
                data.q = -data.q;
            }
            else if (data.kierunekLinii != 1 && data.kierunekLinii != 0)
            {
                throw new Exception("Niepoprawne dane dotyczace Pochylenia Linii Zeba");
            }
            if (data.q == 0)
            {
                throw new Exception("Niepoprawne dane dotyczace Ustawienia Katowego Glowicy");
            }

            // Taken Q to calculations:
            com = "Q przyjete do obliczen: " + data.q.ToString();
            data.PrintComToLog(theSession, com);

            //Changing polar to cartesian cordinates
            double H = data.u * Math.Cos(data.q * (Math.PI / 180));
            double V = data.u * Math.Sin(data.q * (Math.PI / 180));

            //------ Cutter sketch creation ------

            //Total tooth depth
            double mat = data.hae + data.hfe;
            //Starting points and line
            Point3d pGlo1 = new Point3d(ptCradleCenter.X - data.wys, ptCradleCenter.Y + H, ptCradleCenter.Z + V);
            Point3d pGlo2 = geomObj.Point3DPolar(workPart, pGlo1, -mat, 0);
            Line    lGlo1 = geomObj.UnAssLines(workPart, pGlo1, pGlo2);

            //cutter outline
            Point3d pGlo8  = geomObj.Point3DPolar(workPart, pGlo2, data.d0 / 2, -90);
            Point3d pGlo10 = geomObj.Point3DPolar(workPart, pGlo8, data.wys + mat, 0);
            Point3d pGlo9  = geomObj.Point3DPolar(workPart, pGlo10, data.w2 / 2, -90);
            Point3d pGlo5  = pGlo9;
            Point3d pGlo4  = geomObj.Point3DPolar(workPart, pGlo5, data.wys / Math.Cos(data.alf2wk * Math.PI / 180), 180 + data.alf2wk);
            Point3d pGlo3  = geomObj.Point3DPolar(workPart, pGlo4, mat, 180);
            Point3d pGlo6  = geomObj.Point3DPolar(workPart, pGlo9, data.w2 / 2, 90);
            Point3d pGlo7  = geomObj.Point3DPolar(workPart, pGlo6, data.wys / Math.Cos(data.alf2wp * Math.PI / 180), 180 - data.alf2wp);
            Line    lGlo2  = geomObj.UnAssLines(workPart, pGlo2, pGlo3);
            Line    lGlo3  = geomObj.UnAssLines(workPart, pGlo4, pGlo3);
            Line    lGlo4  = geomObj.UnAssLines(workPart, pGlo5, pGlo4);
            Line    lGlo5  = geomObj.UnAssLines(workPart, pGlo5, pGlo6);
            Line    lGlo6  = geomObj.UnAssLines(workPart, pGlo6, pGlo7);
            Line    lGlo7  = geomObj.UnAssLines(workPart, pGlo7, pGlo1);

            Point3d pointt = new Point3d(0, 0, 0);
            //Point pointInput = workPart.Points.CreatePoint(pointt);
            Point3d pointt2 = new Point3d(0, 20, 0);
            //Point pointInput2 = workPart.Points.CreatePoint(pointt2);

            Curve linia1 = workPart.Curves.CreateLine(pointt, pointt2);
            linia1.SetVisibility(SmartObject.VisibilityOption.Visible);

            //Sketch def
            //Axis normal do sketch plane
            Point3d    helpPointN = new Point3d(0, 0, 1);
            DatumAxis  axisNor    = geomObj.DatumAxisCreation(workPart, ptCradleCenter, helpPointN);
            DatumPlane plane      = geomObj.DatumPlaneCreation(workPart, pGlo2, axisNor);

            //Axis perpendicular to the sketch plane
            Point3d   helpPointP = new Point3d(1, 0, 0);
            DatumAxis axisPer    = geomObj.DatumAxisCreation(workPart, ptCradleCenter, helpPointP);
            Sketch    sketchTool = geomObj.SketchCreation(workPart, theSession, pGlo2, axisPer, plane, csysCradle);

            //Attach geometry to the sketch
            sketchTool.AddGeometry(lGlo2);
            sketchTool.AddGeometry(lGlo3);
            sketchTool.AddGeometry(lGlo4);
            sketchTool.AddGeometry(lGlo5);
            sketchTool.AddGeometry(lGlo6);
            sketchTool.AddGeometry(lGlo7);
            sketchTool.Update();

            //Cutter radius creation
            //Concave side
            Point3d helpPoint1 = geomObj.Point3dOnCurve(workPart, "0.5", lGlo5);
            Point3d helpPoint2 = geomObj.Point3dOnCurve(workPart, "0.5", lGlo4);
            Arc     r02wk      = geomObj.FilletOnSketch(theSession, lGlo5, lGlo4, helpPoint1, helpPoint2, data.r02wk);
            //Convex side
            helpPoint1 = geomObj.Point3dOnCurve(workPart, "0.5", lGlo5);
            helpPoint2 = geomObj.Point3dOnCurve(workPart, "0.5", lGlo6);
            Arc r02wp = geomObj.FilletOnSketch(theSession, lGlo5, lGlo6, helpPoint1, helpPoint2, data.r02wp);
            sketchTool.Update();

            //Creation a solid cutter
            //Axis def
            Vector3d vectorCutterAxis = new Vector3d(1, 0, 0);
            Axis     axisCutter       = geomObj.AxisCreation(workPart, pGlo1, vectorCutterAxis);
            Body     cutter           = geomObj.Revolve(workPart, axisCutter, sketchTool, lGlo6, pGlo1, 0, 360);
        }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }
    }
Example #2
0
    public Body BlankGeometryCreation(Part workPart, Session theSession)
    {
        try
        {
            //CordSystemAndGeometry Class object
            CordSystemAndGeometry geomObj = new CordSystemAndGeometry();

            //ReadFile Class object
            ReadFile data = new ReadFile();
            data.ReadData();

            //Creating a pitch cone
            Point3d pOto1 = new Point3d(0, 0, data.A);
            Point3d pOto2 = geomObj.Point3DPolar(workPart, pOto1, data.re, 90);
            Line    lOto1 = geomObj.UnAssLines(workPart, pOto1, pOto2);

            //Creating a symmetry line
            Point3d pOto90 = geomObj.Point3DPolar(workPart, pOto1, data.re, (90 - data.del));
            Line    lOto90 = geomObj.UnAssLines(workPart, pOto1, pOto90);

            //Toe line
            Point3d pOto91 = geomObj.Point3DPolar(workPart, pOto1, (data.re - data.B), 90);
            Point3d pOto92 = geomObj.Point3DPolar(workPart, pOto91, (data.hae + data.hfe), 0);
            Point3d pOto93 = geomObj.Point3DPolar(workPart, pOto91, (data.hae + data.hfe), 180);
            Line    lOto94 = geomObj.UnAssLines(workPart, pOto92, pOto93);

            //Heel line
            Point3d pOto95 = geomObj.Point3DPolar(workPart, pOto2, (data.hae + data.hfe), 0);
            Point3d pOto96 = geomObj.Point3DPolar(workPart, pOto2, (data.hae + data.hfe), 180);
            Line    lOto95 = geomObj.UnAssLines(workPart, pOto95, pOto96);

            //Lwa point
            Point3d pOto100 = geomObj.Point3DPolar(workPart, pOto1, -data.lwa, (90 - data.del));

            //Lwf point
            Point3d pOto101 = geomObj.Point3DPolar(workPart, pOto1, -data.lwf, (90 - data.del));

            //Addendum line
            Point3d pOto102 = geomObj.Point3DPolar(workPart, pOto100, data.re + data.B, 90 - data.del + data.delA);
            Line    lOto102 = geomObj.UnAssLines(workPart, pOto100, pOto102);

            //Dedendum line
            Point3d pOto103 = geomObj.Point3DPolar(workPart, pOto101, data.re + data.B, 90 - data.del + data.delF);
            Line    lOto103 = geomObj.UnAssLines(workPart, pOto101, pOto103);

            //---Sketch----
            //Toe
            Point3d pOto104 = geomObj.Point3dByIntersection(workPart, lOto94, lOto102);
            Point3d pOto105 = geomObj.Point3dByIntersection(workPart, lOto94, lOto103);
            Line    lOto104 = geomObj.UnAssLines(workPart, pOto104, pOto105);

            //Heel
            Point3d pOto106 = geomObj.Point3dByIntersection(workPart, lOto95, lOto102);
            Point3d pOto107 = geomObj.Point3dByIntersection(workPart, lOto95, lOto103);
            Line    lOto106 = geomObj.UnAssLines(workPart, pOto106, pOto107);

            //Addendum line
            Line lOto120 = geomObj.UnAssLines(workPart, pOto104, pOto106);

            //Closing line Toe side
            Point3d pOto108 = geomObj.Point3DPolar(workPart, pOto105, data.re, -data.del);
            Line    lOto108 = geomObj.UnAssLines(workPart, pOto105, pOto108);
            Point3d pOto110 = geomObj.Point3dByIntersection(workPart, lOto90, lOto108);
            Line    lOto112 = geomObj.UnAssLines(workPart, pOto110, pOto105);

            //Closing line Heel side
            Point3d pOto109 = geomObj.Point3DPolar(workPart, pOto107, data.re, -data.del);
            Line    lOto109 = geomObj.UnAssLines(workPart, pOto107, pOto109);
            Point3d pOto111 = geomObj.Point3dByIntersection(workPart, lOto90, lOto109);
            Line    lOto113 = geomObj.UnAssLines(workPart, pOto107, pOto111);

            //Sketch
            Point3d ptX            = new Point3d(10, 0, 0);
            Point3d ptY            = new Point3d(0, 10, 0);
            Point3d ptZ            = new Point3d(0, 0, 10);
            Point3d ptCradleCenter = new Point3d(0, 0, 0);
            NXOpen.Features.DatumCsys csysCradle = geomObj.CsysCreation(workPart, ptCradleCenter, ptX, ptY);
            DatumAxis  datumAxisNor   = geomObj.DatumAxisCreation(workPart, ptCradleCenter, ptZ);
            DatumAxis  datumAxisHoriz = geomObj.DatumAxisCreation(workPart, pOto1, pOto90);
            DatumPlane datumPlane     = geomObj.DatumPlaneCreation(workPart, pOto1, datumAxisNor);
            Sketch     sketchBlank    = geomObj.SketchCreation(workPart, theSession, pOto1, datumAxisHoriz, datumPlane, csysCradle);
            sketchBlank.AddGeometry(lOto104);
            sketchBlank.AddGeometry(lOto106);
            sketchBlank.AddGeometry(lOto120);
            sketchBlank.AddGeometry(lOto112);
            sketchBlank.AddGeometry(lOto113);

            //Axis for body revolution
            Axis axisBodyRev = geomObj.AxisCreation(workPart, pOto1, lOto90);

            //Blank creation
            Body blank = geomObj.Revolve(workPart, axisBodyRev, sketchBlank, lOto104, pOto104, 0, 360);

            //Rotation of Blank to have dedendum linie parallel to the cutter plane
            //Axis of rotation - Cradle axis Z
            Line lineZ   = geomObj.UnAssLines(workPart, ptCradleCenter, ptZ);
            Axis axisZ   = geomObj.AxisCreation(workPart, ptCradleCenter, lineZ);
            Body bodyRot = geomObj.RotationBodyAboutAxis(workPart, blank, axisZ, data.del - data.del2);


            // Moving the Blank by XP
            Line      dedendumLine = geomObj.UnAssLines(workPart, pOto105, pOto107);
            Direction directionXB  = workPart.Directions.CreateDirection(dedendumLine, Sense.Forward, SmartObject.UpdateOption.WithinModeling);
            Body      bodyXP       = geomObj.MoveBodyAlongVector(workPart, bodyRot, directionXB, data.xp);

            // Moving the Blank by XB
            Line      xLine      = geomObj.UnAssLines(workPart, ptCradleCenter, ptX);
            Direction directionX = workPart.Directions.CreateDirection(xLine, Sense.Forward, SmartObject.UpdateOption.WithinModeling);
            Body      bodyXB     = geomObj.MoveBodyAlongVector(workPart, bodyXP, directionX, data.xb);

            bodyBlank = bodyXB;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        return(bodyBlank);
    }