private MeshGeometry3D Build(MDT.CountersinkTool t)
        {
            const double hSvasatore = 10.0;
            var          builder    = new MeshBuilder();
            var          p1         = new Vector3(0.0f, 0.0f, -(float)(t.Length1 - hSvasatore));
            var          p12        = new Vector3(0.0f, 0.0f, -(float)t.Length1);
            var          p2         = new Vector3(0.0f, 0.0f, -(float)(t.Length1 + t.Length2));
            var          p3         = new Vector3(0.0f, 0.0f, -(float)(t.Length1 + t.Length2 + t.Length3));

            builder.AddCylinder(new Vector3(),
                                p1,
                                t.Diameter1 / 2.0);
            builder.AddCylinder(p1,
                                p12,
                                t.Diameter2 / 2.0);
            builder.AddCone(p12,
                            new Vector3(0.0f, 0.0f, -1.0f),
                            t.Diameter2 / 2.0,
                            t.Diameter1 / 2.0,
                            t.Length2,
                            false,
                            false,
                            20);
            builder.AddCylinder(p2,
                                p3,
                                t.Diameter1 / 2.0);

            return(builder.ToMesh());
        }
        private static MDT.Tool ToCountersink(MMT.Tool tool)
        {
            var t   = new MDT.CountersinkTool();
            var cst = tool as MMT.CountersinkTool;

            t.Diameter1    = cst.Diameter1;
            t.Diameter2    = cst.Diameter2;
            t.Length1      = cst.Length1;
            t.Length2      = cst.Length2;
            t.Length3      = cst.Length3;
            t.UsefulLength = cst.UsefulLength;

            UpdateBaseData(t, tool);

            return(t);
        }