public override void Run(RenderControl render) { var material = MeshStandardMaterial.Create("workpiece"); material.SetColor(new Vector3(0.9f)); material.SetFaceSide(EnumFaceSide.DoubleSide); var shape = ShapeBuilder.MakeCylinder(GP.YOZ(), 5, 50, 0); mWorkpiece = BrepSceneNode.Create(shape, material, null); render.ShowSceneNode(mWorkpiece); var coord = new GAx2(new GPnt(0, 0, 5), GP.DZ()); var toolShape = ShapeBuilder.MakeCone(coord, 0, 2, 5, 0); var toolNode = render.ShowShape(toolShape, ColorTable.Blue); render.ShowSceneNode(mMotionTrail); // Initialize Animation mAnimation = new RigidAnimation(); var rotation = Matrix4.makeRotationAxis(new Vector3(1, 0, 0), (float)Math.PI); var trf = Matrix4.makeTranslation(-50, 0, 0) * rotation; mAnimation.Add(new MatrixAnimationClip(mWorkpiece, mWorkpiece.GetTransform(), trf, 0, 10)); mAnimation.Add(new MatrixAnimationClip(toolNode, toolNode.GetTransform(), trf, 10, 15)); mAnimation.Add(new RotateAnimationClip(toolNode, Vector3.UNIT_Z, (float)Math.PI * 4, 16, 20)); }
public override void Run(RenderControl render) { Random rand = new Random(); GPntList points = new GPntList(); for (int ii = 0; ii < 5; ++ii) { for (int jj = 0; jj < 5; ++jj) { points.Add(new GPnt(ii, jj, rand.NextDouble())); } } var surf = SurfaceBuilder.PointsToBSplineSurface(points, 5); var material = MeshStandardMaterial.Create("plastic"); material.SetRoughness(0.1f); material.SetMetalness(0.4f); material.SetColor(new Vector3(0.98f, 0.55f, 0.33f)); material.SetFaceSide(EnumFaceSide.DoubleSide); var node = BrepSceneNode.Create(surf, material, null); render.ShowSceneNode(node); }
public override void Run(RenderControl renderer) { var shape = ShapeBuilder.MakeSphere(new GPnt(), 1); var bufferShape = new BufferShape(shape, null, null, 0.1); bufferShape.Build(); float distance = 3.0f; int halfCount = 5; var scene = renderer.GetScene(); for (int ii = -halfCount; ii < halfCount; ++ii) { for (int jj = -halfCount; jj < halfCount; ++jj) { for (int kk = -halfCount; kk < halfCount; ++kk) { var node = new BrepSceneNode(bufferShape); node.SetTransform(Matrix4.makeTranslation(ii * distance, jj * distance, kk * distance)); scene.AddNode(node); } } } renderer.ZoomAll(); Matrix4 m1 = new Matrix4(1); Matrix4 m2 = new Matrix4(1); Matrix4 x = m1 * m2; }
public override void Run(RenderControl render) { RedMaterial = MeshPhongMaterial.Create("phong.color"); RedMaterial.SetColor(Vector3.Red); GrayMaterial = MeshPhongMaterial.Create("phong.color"); GrayMaterial.SetColor(Vector3.LightGray); GrayMaterial.SetTransparent(true); GrayMaterial.SetOpacity(0.5f); var tube = ShapeBuilder.MakeTube(new GPnt(0, 0, 5), GP.DZ(), 10, 2, 50); TubeNode = BrepSceneNode.Create(tube, RedMaterial, null); var cylinder = ShapeBuilder.MakeCylinder(GP.XOY(), 10, 60, 0); CylinderNode = BrepSceneNode.Create(cylinder, GrayMaterial, null); render.ShowSceneNode(TubeNode); render.ShowSceneNode(CylinderNode); var cone = ShapeBuilder.MakeCone(GP.YOZ(), 5, 0, 10, 0); var bs = new BufferShape(cone, RedMaterial, null, 0.1); bs.Build(); ConeNode1 = new BrepSceneNode(bs); ConeNode2 = new BrepSceneNode(bs); render.ShowSceneNode(ConeNode1); render.ShowSceneNode(ConeNode2); }
public override void Run(RenderControl render) { base.Run(render); // Let's iterate the scene using (FileStream fs = new FileStream("d:/myZip.zip", FileMode.Create)) { using (ZipArchive zipArchive = new ZipArchive(fs, ZipArchiveMode.Create)) { for (var itr = render.GetScene().CreateIterator(); itr.More(); itr.Next()) { var node = BrepSceneNode.Cast(itr.Current()); if (node == null) { continue; } ZipArchiveEntry entry = zipArchive.CreateEntry(String.Format("{0}.brep", node.GetUuid())); using (StreamWriter writer = new StreamWriter(entry.Open(), Encoding.Default)) { writer.Write(node.GetTopoShape().Write()); } } } } }
private void MainForm_Load(object sender, EventArgs e) { mRenderView.SetSelectCallback((PickedItem item) => { this.listBox1.Items.Clear(); if (item.IsNull()) { return; } var ssn = BrepSceneNode.Cast(item.GetNode()); if (ssn != null) { this.listBox1.Items.Add(ssn.GetType().Name); } else { this.listBox1.Items.Add(item.GetNode().GetType().Name); } this.listBox1.Items.Add(String.Format("NodeId: {0}", item.GetNodeId())); this.listBox1.Items.Add(item.GetPoint().GetPosition().ToString()); this.listBox1.Items.Add(item.GetShapeType().ToString()); this.listBox1.Items.Add(String.Format("SubIndex: {0}", item.GetShapeIndex())); }); mRenderView.SetAnimationCallback((float timer) => { TestCase.RunAnimation(mRenderView, timer); }); }
public override void Run(RenderControl renderer) { string fileName = GetResourcePath("Holes.stp"); var shape = StepIO.Open(fileName); if (shape == null) { return; } renderer.ShowSceneNode(BrepSceneNode.CreateBatch(shape, null, null)); var bbox = shape.GetBBox(); var shape2 = ShapeBuilder.MakeBox(new GAx2(bbox.CornerMax(), GP.DZ()), 100, 100, 10); renderer.ShowShape(shape2, ColorTable.LightSlateGray); ExtremaShapeShape ess = new ExtremaShapeShape(); if (!ess.Initialize(shape, shape2, 0.001)) { return; } var pt1 = ess.GetPointOnShape1(0); var pt2 = ess.GetPointOnShape2(0); var line = SketchBuilder.MakeLine(pt1, pt2); renderer.ShowShape(line, ColorTable.Red); }
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) { PrepareMaterials(); //1. Load part models of the robot. List <string> files = new List <string>(); files.Add("Base.brep"); files.Add("AXIS1.brep"); files.Add("AXIS2.brep"); files.Add("AXIS3.brep"); files.Add("AXIS4.brep"); files.Add("AXIS5.brep"); files.Add("AXIS6.brep"); var rootPath = GetResourcePath(@"models\6R\"); List <BrepSceneNode> links = new List <BrepSceneNode>(); for (int ii = 0; ii < files.Count; ++ii) { var shape = ShapeIO.Open(rootPath + files[ii]); if (shape == null) { return; } links.Add(BrepSceneNode.Create(shape, mRobotMaterial, null, 0.1)); } //2. Create the arm mRobot.AddJoint(EnumRobotJointType.Fixed, 0, 0, 200, 0); mRobot.AddJoint(EnumRobotJointType.Revolute, 0, 0, 130, 0); // Link1 mRobot.AddJoint(EnumRobotJointType.Revolute, 90, 30, 0, 180, new RobotDH(90, 0, 480, 0)); // Link2 mRobot.AddJoint(EnumRobotJointType.Revolute, 90, 0, 0, 270, new RobotDH(90, 0, 100, 0)); // Link3 mRobot.AddJoint(EnumRobotJointType.Revolute, 0, 0, 380, 0); // Link4 mRobot.AddJoint(EnumRobotJointType.Revolute, 270, 0, 0, 0); // Link5 mRobot.AddJoint(EnumRobotJointType.Revolute, 90, 0, 100, 0); // Link6 for (int ii = 0; ii < 7; ++ii) { mRobot.AddLink((uint)ii, links[ii]); } mRobot.ResetInitialState(); //3. Show it. render.ShowSceneNode(mRobot); render.ShowSceneNode(mMotionTrail); // 4. Enable animation mRobotAnimation = new RobotAnimation(mRobot); mRobotAnimation.AddClip(new RobotAnimationClip(1, 0, 90, 0, 5)); mRobotAnimation.AddClip(new RobotAnimationClip(2, 180, 270, 0, 5)); mRobotAnimation.AddClip(new RobotAnimationClip(3, 270, 360, 0, 5)); mRobotAnimation.AddClip(new RobotAnimationClip(2, 270, 90, 5, 15)); mRobotAnimation.AddClip(new RobotAnimationClip(3, 360, 90, 5, 15)); }
public override void Run(RenderControl render) { var material = MeshStandardMaterial.Create("workpiece"); material.SetColor(new Vector3(0.9f)); material.SetFaceSide(EnumFaceSide.DoubleSide); var shape = ShapeBuilder.MakeCylinder(GP.YOZ(), 5, 50, 0); mWorkpiece = BrepSceneNode.Create(shape, material, null); render.ShowSceneNode(mWorkpiece); { var coord = new GAx2(new GPnt(0, 0, 5), GP.DZ()); var toolShape = ShapeBuilder.MakeCone(coord, 0, 2, 5, 0); render.ShowShape(toolShape, Vector3.Blue); } render.ShowSceneNode(mMotionTrail); mLength = 0; mTheta = 0; }
public override void Run(RenderControl render) { var paramCurve = Sketch2dBuilder.MakeLine(new GPnt2d(0, 0), new GPnt2d(Math.PI * 20, 20)); // curve one cone { var cone = ShapeBuilder.MakeCone(GP.XOY(), 1, 10, 20, 0); var coneFace = cone.FindChild(EnumTopoShapeType.Topo_FACE, 0); var curveOnConeSurface = SketchBuilder.MakeCurveOnSurface(paramCurve, coneFace); var material = LineDashedMaterial.Create("my.dashed.material"); material.SetColor(ColorTable.Hex(0x0FFAA)); var node = BrepSceneNode.Create(curveOnConeSurface, null, material); node.ComputeLineDistances(); // Enable dashed line style. render.ShowSceneNode(node); } // curve one cylinder { var cylinder = ShapeBuilder.MakeCylinder(GP.XOY(), 2, 20, 0); var cylinderFace = cylinder.FindChild(EnumTopoShapeType.Topo_FACE, 0); var curveOnCylinderSurface = SketchBuilder.MakeCurveOnSurface(paramCurve, cylinderFace); var node2 = BrepSceneNode.Create(curveOnCylinderSurface, null, null); render.ShowSceneNode(node2); } }
public override void Run(RenderControl renderer) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "IGES (*.igs;*.iges)|*.igs;*.iges|STEP (*.stp;*.step)|*.stp;*.step|Brep (*.brep)|*.brep"; if (dialog.ShowDialog() != DialogResult.OK) { return; } var shape = ShapeIO.Open(dialog.FileName); if (shape == null) { return; } var bs = new BufferShape(shape, null, null, 0); bs.Build(); // 1. Compute var holeExp = new HoleExplor(); if (!holeExp.Initialize(bs)) { return; } var dir = holeExp.ComputeDirection(); holeExp.Compute(dir); var defaultMaterial = MeshPhongMaterial.Create("face-x"); defaultMaterial.SetFaceSide(EnumFaceSide.DoubleSide); bs.SetFaceMaterial(defaultMaterial); // 2. Set hole faces with red color var material = BasicMaterial.Create("hole-face"); material.SetFaceSide(EnumFaceSide.DoubleSide); material.SetColor(new Vector3(0.5f, 0, 0)); var holeNumber = holeExp.GetHoleCount(); for (uint ii = 0; ii < holeNumber; ++ii) { var faceIDs = holeExp.GetHoleFaces(ii); foreach (var faceIdx in faceIDs) { bs.SetFaceMaterial(faceIdx, material); } } // 2. Show the faces var shapeNode = new BrepSceneNode(bs); renderer.ShowSceneNode(shapeNode); }
public override void Run(RenderControl render) { var material = MeshPhongMaterial.Create("phong.bspline"); material.SetUniform("diffuse", Uniform.Create(new Vector3(1, 0, 1))); var shape = CreateShape(); var node = BrepSceneNode.Create(shape, material, null); render.ShowSceneNode(node); }
public override void Run(RenderControl renderer) { string fileName = GetResourcePath("Holes.stp"); var shape = StepIO.Open(fileName); if (shape == null) { return; } var face = shape.FindChild(EnumTopoShapeType.Topo_FACE, 148); var surface = new ParametricSurface(face); var wireExp = new WireExplor(face); var wires = wireExp.GetInnerWires(); foreach (var wire in wires) { // Show wire renderer.ShowShape(wire, Vector3.Red); var curve = new ParametricCurve(wire); var paramList = curve.SplitByUniformLength(1, 0.01); var lines = new SegmentsSceneNode((uint)paramList.Count, Vector3.Green, 2); uint idx = 0; foreach (var p in paramList) { var pt = curve.Value(p); var pointSur = new ExtremaPointSurface(); if (pointSur.Initialize(surface, pt, GP.Resolution(), GP.Resolution())) { var uv = pointSur.GetParameter(0); var normal = surface.GetNormal(uv.X(), uv.Y()); lines.SetPositions(idx++, Vector3.From(pt), Vector3.From(pt.XYZ().Added(normal.XYZ()))); } } lines.UpdateBoundingBox(); renderer.ShowSceneNode(lines); } // Show face var faceMaterial = MeshStandardMaterial.Create("pbr.face"); faceMaterial.SetColor(Vector3.LightGray); faceMaterial.SetFaceSide(EnumFaceSide.DoubleSide); var faceNode = BrepSceneNode.Create(face, faceMaterial, null); faceNode.SetDisplayFilter(EnumShapeFilter.Face); renderer.ShowSceneNode(faceNode); }
BrepSceneNode CreateGlass(GAx2 ax, double width, double height, double thickness) { var shape = ShapeBuilder.MakeBox(ax, width, thickness, height); var frameMaterial = MeshStandardMaterial.Create("window-glass"); frameMaterial.SetColor(ColorTable.Hex(0xAAAAAA)); frameMaterial.SetFaceSide(EnumFaceSide.DoubleSide); frameMaterial.SetTransparent(true); frameMaterial.SetOpacity(0.5f); return(BrepSceneNode.Create(shape, frameMaterial, null)); }
public override void Run(RenderControl render) { var material = MeshStandardMaterial.Create("robot"); material.SetColor(new Vector3(0.9f)); material.SetFaceSide(EnumFaceSide.DoubleSide); material.SetOpacity(0.5f); material.SetTransparent(true); List <string> files = new List <string>(); files.Add("Base.brep"); files.Add("AXIS1.brep"); files.Add("AXIS2.brep"); files.Add("AXIS3.brep"); files.Add("AXIS4.brep"); files.Add("AXIS5.brep"); files.Add("AXIS6.brep"); var rootPath = GetResourcePath(@"models\6R\"); double scale = 1; mRobot.AddJoint(EnumRobotJointType.Fixed, 0, 0, 200 * scale, 0); mRobot.AddJoint(EnumRobotJointType.Revolute, 0, 0, 130 * scale, 0); // Link1 mRobot.AddJoint(EnumRobotJointType.Revolute, 90, 30, 0, 180, new RobotDH(90, 0, 480 * scale, 0)); // Link2 mRobot.AddJoint(EnumRobotJointType.Revolute, 90, 0, 0, 270, new RobotDH(90, 0, 100 * scale, 0)); // Link3 mRobot.AddJoint(EnumRobotJointType.Revolute, 0, 0, 380 * scale, 0); // Link4 mRobot.AddJoint(EnumRobotJointType.Revolute, 270, 0, 0, 0); // Link5 mRobot.AddJoint(EnumRobotJointType.Revolute, 90, 0, 100 * scale, 0); // Link6 mRobot.AddLink(0, BrepSceneNode.Create(BrepIO.Open(rootPath + files[0]), material, null, 0.1)); //Link1 mRobot.AddLink(1, BrepSceneNode.Create(BrepIO.Open(rootPath + files[1]), material, null, 0.1)); //Link2 mRobot.AddLink(2, BrepSceneNode.Create(BrepIO.Open(rootPath + files[2]), material, null, 0.1)); ////Link3 mRobot.AddLink(3, BrepSceneNode.Create(BrepIO.Open(rootPath + files[3]), material, null, 0.1)); //Link4 mRobot.AddLink(4, BrepSceneNode.Create(BrepIO.Open(rootPath + files[4]), material, null, 0.1)); //Link5 mRobot.AddLink(5, BrepSceneNode.Create(BrepIO.Open(rootPath + files[5]), material, null, 0.1)); //Link6 mRobot.AddLink(6, BrepSceneNode.Create(BrepIO.Open(rootPath + files[6]), material, null, 0.1)); mRobot.ResetInitialState(); render.ShowSceneNode(mRobot); render.ShowSceneNode(mMotionTrail); }
public override void Animation(RenderControl render, float time) { if (mRobotAnimation.Play(time)) { Vector3 pt = new Vector3(0); pt = pt * mRobot.GetFinalTransform(); mMotionTrail.SetPosition(mCount, pt); mMotionTrail.UpdateBoundingBox(); ++mCount; //Blink blink effect BrepSceneNode.Cast(mRobot.GetLink((mCount - 1) % 7).GetVisualNode()).GetShape().SetFaceMaterial(mRobotMaterial); BrepSceneNode.Cast(mRobot.GetLink(mCount % 7).GetVisualNode()).GetShape().SetFaceMaterial(mMaterial); render.RequestDraw(EnumUpdateFlags.Scene); } }
public override void Run(RenderControl renderer) { var shape = ShapeIO.Open(GetResourcePath("hole/30-30.IGS")); if (shape == null) { return; } var edgeMaterial = BasicMaterial.Create("hole-edge"); edgeMaterial.SetColor(ColorTable.Hex(0xFF0000)); edgeMaterial.SetLineWidth(2); // 1. Find the exterial holes var holeExp = new HoleExplorLegacy(); if (!holeExp.Initialize(shape)) { return; } var holeNumber = holeExp.ComputeExteriorHoles(); for (int ii = 0; ii < holeNumber; ++ii) { var wire = holeExp.GetExteriorHoleWire(ii); var wireNode = BrepSceneNode.Create(wire, null, edgeMaterial); renderer.ShowSceneNode(wireNode); } // 2. Show the faces var material = MeshStandardMaterial.Create("hole-face"); material.SetColor(ColorTable.Hex(0xBBAA33)); material.SetRoughness(0.8f); material.SetFaceSide(EnumFaceSide.DoubleSide); var shapeNode = BrepSceneNode.Create(shape, material, null); shapeNode.SetDisplayFilter(EnumShapeFilter.Face); renderer.ShowSceneNode(shapeNode); }
public override void Run(RenderControl render) { var arrowMaterial = MeshPhongMaterial.Create("arrow"); arrowMaterial.SetColor(ColorTable.Red); mArrow = ArrowWidget.Create(2, 10, arrowMaterial); mArrow.SetPickable(false); render.ShowSceneNode(mArrow); var shape = ShapeBuilder.MakeBox(GP.XOY(), 10, 20, 30); var mat = MeshStandardMaterial.Create("ss"); mat.SetColor(Vector3.LightGray); var node = BrepSceneNode.Create(shape, mat, null); render.ShowSceneNode(node); }
public override void OnSelectionChanged(RenderControl render, PickedResult result) { var item = result.GetItem(); if (item.GetNode() == null) { return; } var ssn = BrepSceneNode.Cast(item.GetNode()); if (ssn == null) { return; } if (item.GetShapeType() == EnumShapeFilter.Face) { var face = ssn.GetShape().GetShape().FindChild(EnumTopoShapeType.Topo_FACE, (int)item.GetShapeIndex()); if (face != null) { var surface = new ParametricSurface(face); var pt = item.GetPoint().GetPosition(); var param = surface.ComputeClosestPoint(pt.ToPnt(), GP.Resolution(), GP.Resolution()); var values = surface.D1(param.X(), param.Y()); var postion = Vector3.From(values.GetPoint()); var vecs = values.GetVectors(); var dir = Vector3.From(vecs[0].Crossed(vecs[1])); dir.normalize(); mArrow.SetLocation(postion, dir); mArrow.RequstUpdate(); mArrow.Update(); render.GetContext().GetSelection().Clear(); render.RequestDraw(EnumUpdateFlags.Scene); } } }
public override void Run(RenderControl render) { var material = MeshStandardMaterial.Create("metal-double"); material.SetColor(new Vector3(1.0f, 0.8f, 0.0f)); material.SetMetalness(0.8f); material.SetRoughness(0.5f); material.SetFaceSide(EnumFaceSide.DoubleSide); var startPt = new GVec(0, 100, 0); var points = new GPntList(); points.Add(new GPnt(startPt.XYZ())); points.Add(new GPnt(startPt.Added(new GVec(0, 0, 150)).XYZ())); points.Add(new GPnt(startPt.Added(new GVec(0, 100, 150)).XYZ())); points.Add(new GPnt(startPt.Added(new GVec(-100, 100, 150)).XYZ())); points.Add(new GPnt(startPt.Added(new GVec(-100, 300, 150)).XYZ())); points.Add(new GPnt(startPt.Added(new GVec(100, 300, 150)).XYZ())); TopoShape path = SketchBuilder.MakePolygon(points, false); var sectionList = new TopoShapeList(); GAx2 coord1 = new GAx2(new GPnt(startPt.Added(new GVec(-25, -25, 0)).XYZ()), GP.DY()); TopoShape section1 = SketchBuilder.MakeRectangle(coord1, 50, 50, 10, false); render.ShowShape(section1, ColorTable.Red); render.ShowShape(path, ColorTable.Green); TopoShape pipe = FeatureTool.SweepByFrenet(section1, path, EnumSweepTransitionMode.RoundCorner, false); BufferShape bs = new BufferShape(pipe, material, null, 0.1f); bs.Build(); var node = new BrepSceneNode(bs); render.ShowSceneNode(node); }
public override void Run(RenderControl render) { var material = MeshStandardMaterial.Create("my-material"); material.SetRoughness(0.75f); material.SetMetalness(0.1f); material.SetColor(ColorTable.Hex(0xFFC107)); for (uint ii = 0; ii < 10; ++ii) { TopoShape shape = ShapeBuilder.MakePyramid(new GAx2(new GPnt(ii * 11, 0, 0), GP.DZ()), ii + 3, 5, 5 + ii); var node = BrepSceneNode.Create(shape, material, null); render.ShowSceneNode(node); } //var bottom = SketchBuilder.MakeRectangle(GP.XOY(), 10, 20, 2, false); //var shape2 = FeatureTool.Loft(bottom, new GPnt(5, 10, 10)); //render.ShowShape(shape2, ColorTable.Blue); //var shape3 = ShapeBuilder.MakeCone(GP.XOY(), 10, 0, 10, 0); //render.ShowShape(shape3, ColorTable.Blue); }
static void Main(string[] args) { GlobalInstance.Initialize(); WindowCanvas canvas = new WindowCanvas("AnyCAD", false); canvas.Initialize(0, 600, 400); var box = ShapeBuilder.MakeBox(GP.XOY(), 10, 20, 30); var node = BrepSceneNode.Create(box, null, null, 0.01); var scene = canvas.GetContext().GetScene(); scene.AddNode(node); //canvas.Run(); scene.UpdateWorld(); canvas.ZoomToExtend(); canvas.Redraw(0); canvas.CaptureScreenShot("image.bmp"); canvas.Destroy(); GlobalInstance.Destroy(); }
public override void Run(RenderControl render) { mMaterial1 = MeshPhongMaterial.Create("phong.texture"); mMaterial1.SetColor(new Vector3(1, 0, 1)); var texture = ImageTexture2D.Create(GetResourcePath("textures/bricks2.jpg")); texture.SetRepeat(new Vector2(2.0f, 2.0f)); texture.UpdateTransform(); mMaterial1.SetColorMap(texture); var shape = ShapeBuilder.MakeBox(GP.XOY(), 4, 4, 8); mNode = BrepSceneNode.Create(shape, mMaterial1, null); mMaterial2 = MeshPhongMaterial.Create("phong.texture"); var texture2 = ImageTexture2D.Create(GetResourcePath("textures/water.png")); mMaterial2.SetColorMap(texture2); render.ShowSceneNode(mNode); }
public override void Run(RenderControl render) { //1. Create Shape TopoShapeList tg = new TopoShapeList(); GPntList points = new GPntList(); using (var sr = new StreamReader(GetResourcePath("data/Stage4_Rotor4_Profile.curve"))) { string line; while ((line = sr.ReadLine()) != null) { if (line.StartsWith("# Profile")) { if (points.Count > 0) { var temp2 = SketchBuilder.MakeBSpline(points); if (temp2 != null) { tg.Add(temp2); } } points = new GPntList(); } else { var temp = line.Split('\t'); points.Add(new GPnt(double.Parse(temp[0]), double.Parse(temp[1]), double.Parse(temp[2]))); } } } var shape = FeatureTool.Loft(tg, true, true); //2. Compute Curvature var material = BasicMaterial.Create("vertex-color"); material.SetVertexColors(true); material.SetFaceSide(EnumFaceSide.DoubleSide); var bs = new BufferShape(shape, material, null, 0.01f); bs.Build(); ColorLookupTable clt = new ColorLookupTable(); clt.SetColorMap(ColorMapKeyword.Create(EnumSystemColorMap.Rainbow)); float scale = 100; clt.SetMinValue(-0.2f * scale); clt.SetMaxValue(scale); for (uint ii = 0; ii < bs.GetFaceCount(); ++ii) { var sc = new SurfaceCurvature(bs); if (sc.Compute(ii, EnumCurvatureType.MeanCurvature)) { Console.WriteLine("{0}, {1}", sc.GetMinValue(), sc.GetMaxValue()); var colorBuffer = sc.ComputeColors(clt, scale); bs.SetVertexColors(ii, colorBuffer); } } // 3. Show it! var node = new BrepSceneNode(bs); render.ShowSceneNode(node); }