Core.Shapes.Sketch CreateSketch(SketchType sketchType)
        {
            var sketch = new Core.Shapes.Sketch();

            Assert.IsNotNull(sketch);

            var body = TestGeomGenerator.CreateBody(sketch);

            body.Rotation = new Quaternion(Dir.DZ.ToVec(), new Vec(0.4, 0.5, 0.1));

            sketch.Points.Add(0, new Pnt2d(0, 30));
            sketch.Points.Add(1, new Pnt2d(20, 30));
            sketch.Segments.Add(0, new SketchSegmentLine(0, 1));

            sketch.Points.Add(2, new Pnt2d(30, 0));
            sketch.Points.Add(3, new Pnt2d(30, 20));
            sketch.Segments.Add(1, new SketchSegmentArc(1, 2, 3));

            sketch.Points.Add(4, new Pnt2d(10, 0));
            sketch.Points.Add(5, new Pnt2d(0, -20));
            sketch.Segments.Add(2, new SketchSegmentBezier(2, 4, 5));

            sketch.Segments.Add(3, new SketchSegmentLine(5, 0));

            if (sketchType == SketchType.MultiCurve)
            {
                sketch.Points.Add(6, new Pnt2d(5, 10));
                sketch.Points.Add(7, new Pnt2d(10, 0));
                sketch.Points.Add(8, new Pnt2d(5, -10));
                sketch.Segments.Add(4, new SketchSegmentLine(6, 7));
                sketch.Segments.Add(5, new SketchSegmentLine(7, 8));
                sketch.Segments.Add(6, new SketchSegmentLine(8, 6));
            }
            return(sketch);
        }
Beispiel #2
0
        private void LineDraw(ksDocument2D sketch,
                              KeyboardParametersStorage data, SketchType sketchType)
        {
            switch (sketchType)
            {
            case SketchType.BlackKeyCut:
            {
                sketch.ksLineSeg(-data.BodyHeight + 0.1, 5.5,
                                 -data.BodyHeight + 0.1, 6.5, 1);
                sketch.ksLineSeg(-data.BodyHeight + 0.1, 6.5,
                                 -data.BodyHeight + 1.4, 5.5, 1);
                sketch.ksLineSeg(-data.BodyHeight + 1.4, 5.5,
                                 -data.BodyHeight + 0.1, 5.5, 1);

                sketch.ksLineSeg(-data.BodyHeight + 0.1, 15.5,
                                 -data.BodyHeight + 0.1, 15.0, 1);
                sketch.ksLineSeg(-data.BodyHeight + 0.1, 15.0,
                                 -data.BodyHeight + 1.375, 15.0, 1);
                sketch.ksLineSeg(-data.BodyHeight + 1.375, 15.0,
                                 -data.BodyHeight + 1.375, 15.5, 1);
                sketch.ksLineSeg(-data.BodyHeight + 1.375, 15.5,
                                 -data.BodyHeight + 0.1, 15.5, 1);
                break;
            }

            default:
            {
                break;
            }
            }
        }
Beispiel #3
0
        //--------------------------------------------------------------------------------------------------

        public static void FillSketch(Sketch sketch, SketchType sketchType)
        {
            if (sketchType == SketchType.Ellipse)
            {
                sketch.Points.Add(0, new Pnt2d(0, 0));
                sketch.Points.Add(1, new Pnt2d(1.5, 5));
                sketch.Points.Add(2, new Pnt2d(2.5, 2.5));
                sketch.Segments.Add(0, new SketchSegmentEllipse(0, 1, 2));
            }
            else if (sketchType == SketchType.Rectangle)
            {
                sketch.Points.Add(0, new Pnt2d(5, 5));
                sketch.Points.Add(1, new Pnt2d(-5, 5));
                sketch.Points.Add(2, new Pnt2d(-5, -5));
                sketch.Points.Add(3, new Pnt2d(5, -5));
                sketch.Segments.Add(0, new SketchSegmentLine(0, 1));
                sketch.Segments.Add(1, new SketchSegmentLine(1, 2));
                sketch.Segments.Add(2, new SketchSegmentLine(2, 3));
                sketch.Segments.Add(3, new SketchSegmentLine(3, 0));
                sketch.Constraints.Add(new SketchConstraintPerpendicular(0, 1));
                sketch.Constraints.Add(new SketchConstraintPerpendicular(1, 2));
                sketch.Constraints.Add(new SketchConstraintPerpendicular(2, 3));
                sketch.Constraints.Add(new SketchConstraintPerpendicular(3, 0));
            }
            else if (sketchType == SketchType.SimpleAsymmetric)
            {
                sketch.Points.Add(0, new Pnt2d(0, 10));
                sketch.Points.Add(1, new Pnt2d(2, -10));
                sketch.Points.Add(2, new Pnt2d(7, 7));
                sketch.Points.Add(3, new Pnt2d(10, -2));

                sketch.Segments.Add(0, new SketchSegmentLine(0, 1));
                sketch.Segments.Add(1, new SketchSegmentLine(0, 2));
                sketch.Segments.Add(2, new SketchSegmentArc(1, 2, 3));
            }
            else
            {
                sketch.Points.Add(0, new Pnt2d(0, 0));
                sketch.Points.Add(1, new Pnt2d(5, 5));
                sketch.Segments.Add(0, new SketchSegmentCircle(0, 1));

                if (sketchType == SketchType.Ring)
                {
                    sketch.Points.Add(2, new Pnt2d(2.5, 2.5));
                    sketch.Segments.Add(1, new SketchSegmentCircle(0, 2));
                }
                else if (sketchType == SketchType.MultiCircle)
                {
                    sketch.Points.Add(2, new Pnt2d(8, 8));
                    sketch.Points.Add(3, new Pnt2d(9.5, 9.5));
                    sketch.Segments.Add(1, new SketchSegmentCircle(2, 3));
                    sketch.Points.Add(4, new Pnt2d(-8, -8));
                    sketch.Points.Add(5, new Pnt2d(-9.5, -9.5));
                    sketch.Segments.Add(2, new SketchSegmentCircle(4, 5));
                }
            }
        }
Beispiel #4
0
        //--------------------------------------------------------------------------------------------------

        public static Extrude CreateExtrude(SketchType sketchType = SketchType.Circle)
        {
            var sketch = new Sketch();
            var body   = CreateBody(sketch);

            FillSketch(sketch, sketchType);

            return(Extrude.Create(body));
        }
Beispiel #5
0
        //--------------------------------------------------------------------------------------------------

        public static Sketch CreateSketch(SketchType sketchType = SketchType.Circle, bool createBody = false)
        {
            var sketch = new Sketch();

            FillSketch(sketch, sketchType);
            if (createBody)
            {
                TestGeomGenerator.CreateBody(sketch);
            }
            return(sketch);
        }
Beispiel #6
0
        private void OffsetSketchSet(ksDocument3D document3D,
                                     KeyboardParametersStorage data, string sketchName,
                                     double offset, Obj3dType obj3DType)
        {
            SketchType sketchType = SketchType.BlackKeyCut;


            part = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);

            var entityOffsetPlane = (ksEntity)part.NewEntity((short)Obj3dType.o3d_planeOffset);
            var entitySketch      = (ksEntity)part.NewEntity((short)Obj3dType.o3d_sketch);

            entitySketch.name = sketchName;
            if (entityOffsetPlane != null)
            {
                var offsetDef = (ksPlaneOffsetDefinition)entityOffsetPlane.GetDefinition();
                if (offsetDef != null)
                {
                    offsetDef.direction = true;
                    offsetDef.offset    = offset;

                    var basePlane = (ksEntity)part.GetDefaultEntity((short)obj3DType);
                    basePlane.name = "Начальная плоскость";

                    offsetDef.SetPlane(basePlane);

                    entityOffsetPlane.name   = "Смещенная плоскость";
                    entityOffsetPlane.hidden = true;
                    entityOffsetPlane.Create();

                    var sketchDef = (ksSketchDefinition)entitySketch.GetDefinition();
                    if (sketchDef != null)
                    {
                        sketchDef.SetPlane(entityOffsetPlane);
                        entitySketch.Create();

                        var sketchEdit = (ksDocument2D)sketchDef.BeginEdit();

                        LineDraw(sketchEdit, data, sketchType);

                        sketchDef.EndEdit();
                        BlackKeyCut(part, entitySketch, data);
                    }
                }
            }
        }
Beispiel #7
0
        //--------------------------------------------------------------------------------------------------

        public static Imprint CreateImprint(SketchType sketchType = SketchType.Circle)
        {
            var baseShape = new Box
            {
                DimensionX = 20,
                DimensionY = 20,
                DimensionZ = 5,
            };
            var body = CreateBody(baseShape, new Pnt(-10, -10, 0));

            var imprint = Imprint.Create(body, baseShape.GetSubshapeReference(SubshapeType.Face, 5));

            var sketch = imprint.Operands[1] as Sketch;

            Assert.IsNotNull(sketch);

            FillSketch(sketch, sketchType);

            return(imprint);
        }
Beispiel #8
0
        Revolve CreateRevolve(SketchType sketchType)
        {
            var sketch = new Sketch();
            var body   = TestGeomGenerator.CreateBody(sketch, new Pnt(10, 0, 0), new XYZ(45, 0, 0));

            sketch.Points.Add(0, new Pnt2d(0, 30));
            sketch.Points.Add(1, new Pnt2d(20, 30));
            sketch.Segments.Add(0, new SketchSegmentLine(0, 1));

            sketch.Points.Add(2, new Pnt2d(30, 0));
            sketch.Points.Add(3, new Pnt2d(30, 20));
            sketch.Segments.Add(1, new SketchSegmentArc(1, 2, 3));

            sketch.Points.Add(4, new Pnt2d(10, 0));
            sketch.Points.Add(5, new Pnt2d(0, -20));
            sketch.Segments.Add(2, new SketchSegmentBezier(2, 4, 5));

            sketch.Segments.Add(3, new SketchSegmentLine(5, 0));

            if (sketchType == SketchType.MultiCurve)
            {
                sketch.Points.Add(6, new Pnt2d(5, 10));
                sketch.Points.Add(7, new Pnt2d(10, 0));
                sketch.Points.Add(8, new Pnt2d(5, -10));
                sketch.Segments.Add(4, new SketchSegmentLine(6, 7));
                sketch.Segments.Add(5, new SketchSegmentLine(7, 8));
                sketch.Segments.Add(6, new SketchSegmentLine(8, 6));
                AssertHelper.IsSameModel2D(sketch, Path.Combine(_BasePath, "SketchMultiCurve"));
            }
            else
            {
                AssertHelper.IsSameModel2D(sketch, Path.Combine(_BasePath, "Sketch"));
            }

            return(Revolve.Create(body));
        }