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); }
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; } } }
//-------------------------------------------------------------------------------------------------- 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)); } } }
//-------------------------------------------------------------------------------------------------- public static Extrude CreateExtrude(SketchType sketchType = SketchType.Circle) { var sketch = new Sketch(); var body = CreateBody(sketch); FillSketch(sketch, sketchType); return(Extrude.Create(body)); }
//-------------------------------------------------------------------------------------------------- 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); }
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); } } } }
//-------------------------------------------------------------------------------------------------- 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); }
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)); }