GroupSceneNode CreateFrames(double width, double height, double deep, double radius) { var baseSketch = CreateSketch(radius, deep); //TopLeft var s11 = Project(baseSketch, new GPnt(0, 0, height), new GDir(-1, 0, -1), GP.DZ()); //BottomLeft var s20 = Project(baseSketch, GP.Origin(), new GDir(-1, 0, 1), GP.DZ()); //BottomRight var s12 = Project(s20, new GPnt(width, 0, 0), new GDir(1, 0, 1), GP.DX()); //TopRight var s21 = Project(s11, new GPnt(width, 0, height), new GDir(-1, 0, 1), GP.DX()); var frame1 = FeatureTool.Loft(s11, s20, false); var frame2 = FeatureTool.Loft(s20, s12, false); var frame3 = FeatureTool.Loft(s12, s21, false); var frame4 = FeatureTool.Loft(s21, s11, false); var frameMaterial = MeshStandardMaterial.Create("window-frame"); frameMaterial.SetColor(Vector3.LightGray); frameMaterial.SetMetalness(0.5f); frameMaterial.SetFaceSide(EnumFaceSide.DoubleSide); var group = new GroupSceneNode(); group.AddNode(BrepSceneNode.Create(frame1, frameMaterial, null)); group.AddNode(BrepSceneNode.Create(frame2, frameMaterial, null)); group.AddNode(BrepSceneNode.Create(frame3, frameMaterial, null)); group.AddNode(BrepSceneNode.Create(frame4, frameMaterial, null)); return(group); }
public override void Run(RenderControl render) { var sketch = SketchBuilder.MakeEllipse(GP.Origin(), 5, 3, GP.DX(), GP.DZ()); // 1. Sweep { GPntList points = new GPntList { GP.Origin(), new GPnt(20, 10, 30), new GPnt(50, 50, 50), }; var path = SketchBuilder.MakeBSpline(points); render.ShowShape(path, Vector3.Green); var feature = FeatureTool.Sweep(sketch, path, EnumGeomFillTrihedron.ConstantNormal); render.ShowShape(feature, Vector3.Blue); } // 2. Revol { var feature = FeatureTool.Revol(sketch, new GAx1(new GPnt(-20, 0, 0), GP.DY()), 90); render.ShowShape(feature, Vector3.Green); } // 3. Loft { var baseWire = SketchBuilder.MakeRectangle(new GAx2(new GPnt(50, -50, 0), GP.DZ()), 20, 20, 5, false); var topWire = SketchBuilder.MakeCircle(new GPnt(60, -40, 40), 5, GP.DZ()); var loft = FeatureTool.Loft(baseWire, topWire, true); render.ShowShape(loft, Vector3.Red); } }
public override void Run(RenderControl renderer) { var ellipse = SketchBuilder.MakeEllipse(GP.Origin(), 10, 5, GP.DX(), GP.DZ()); renderer.ShowShape(ellipse, Vector3.Blue); ParametricCurve pc = new ParametricCurve(ellipse); var paramsList = pc.SplitByUniformLength(1, 0.01); uint itemCount = (uint)paramsList.Count; var points = new ParticleSceneNode(itemCount, Vector3.Green, 5.0f); var lines = new SegmentsSceneNode(itemCount, Vector3.Red, 2); Random random = new Random(); for (int ii = 0; ii < paramsList.Count; ++ii) { var value = pc.D1(paramsList[ii]); var pos = value.GetPoint(); var dir = value.GetVectors()[0]; var end = new GPnt(pos.XYZ().Added(dir.XYZ())); lines.SetPositions((uint)ii, Vector3.From(pos), Vector3.From(end)); lines.SetColors((uint)ii, Vector3.Red, Vector3.From(random.NextDouble(), random.NextDouble(), random.NextDouble())); points.SetPosition((uint)ii, Vector3.From(pos)); } renderer.ShowSceneNode(points); renderer.ShowSceneNode(lines); }
public override void Run(RenderControl render) { var path = SketchBuilder.MakeArcOfCircle(new GPnt(0, 0, 0), new GPnt(10, 0, 10), new GPnt(5, 0, 8)); var baseSketch = SketchBuilder.MakeRectangle(new GAx2(new GPnt(-5, -10, 0), GP.DZ(), GP.DX()), 10, 20, 2, false); var topSketch = SketchBuilder.MakeCircle(new GPnt(10, 0, 10), 5, GP.DX()); var shapeList = new TopoShapeList(); shapeList.Add(baseSketch); shapeList.Add(topSketch); var shape = FeatureTool.SweepByFrenet2(shapeList, path, EnumSweepTransitionMode.RoundCorner, true); render.ShowShape(shape, ColorTable.Beige); }
public override void Run(RenderControl render) { var line = SketchBuilder.MakeLine(new GPnt(10, 10, 10), new GPnt(-10, -10, -10)); render.ShowShape(line, new Vector3(1, 1, 0)); var ellips = SketchBuilder.MakeEllipse(GP.Origin(), 10, 5, GP.DX(), GP.DZ()); render.ShowShape(ellips, Vector3.Blue); var circle = SketchBuilder.MakeCircle(GP.Origin(), 4, new GDir(0, 1, 0)); render.ShowShape(circle, Vector3.Green); var arc = SketchBuilder.MakeArcOfCircle(GP.Origin(), new GPnt(50, 0, 50), new GPnt(20, 0, 40)); render.ShowShape(arc, Vector3.Red); var rect = SketchBuilder.MakeRectangle(GP.XOY(), 30, 40, 5, false); render.ShowShape(rect, Vector3.Green); }
public override void Run(RenderControl render) { var rect1 = SketchBuilder.MakeRectangle(GP.XOY(), 10, 5, 1, true); var rect2 = SketchBuilder.MakeRectangle(new GAx2(new GPnt(1, 1, 0), GP.DZ(), GP.DX()), 8, 3, 1, true); var cut = BooleanTool.Cut(rect1, rect2); var extrude = FeatureTool.Extrude(cut, 100, GP.DZ()); render.ShowShape(extrude, Vector3.Blue); }