public void Write(PanelDisplay panel) { PointCollection points = panel.GetPoints(); svgFile.Write("<polyline points=\""); foreach (Point p in points) { svgFile.Write(" " + p.X + "," + p.Y + " "); } svgFile.WriteLine("\" style=\"fill:none;stroke:black;stroke-width:1\" />"); }
public void Write(PanelDisplay panel) { Point lastPoint = new Point(0, 0); Point firstPoint = new Point(0, 0); PointCollection points = panel.GetPoints(); Boolean first = true; foreach (Point p in points) { if (first) { lastPoint = p; firstPoint = p; first = false; } else { stlFile.WriteLine("facet normal 0.0E1 0.0E1 0.0E1"); // normal vector stlFile.WriteLine("outer loop"); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", lastPoint.X, lastPoint.Y, -m_depth); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", lastPoint.X, lastPoint.Y, 0); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", p.X, p.Y, 0); stlFile.WriteLine("endloop"); stlFile.WriteLine("endfacet"); stlFile.WriteLine("facet normal ni nj nk"); // normal vector stlFile.WriteLine("outer loop"); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", lastPoint.X, lastPoint.Y, -m_depth); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", p.X, p.Y, 0); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", p.X, p.Y, -m_depth); stlFile.WriteLine("endloop"); stlFile.WriteLine("endfacet"); lastPoint = p; } } // go back to first point stlFile.WriteLine("facet normal 0.0E1 0.0E1 0.0E1"); // normal vector stlFile.WriteLine("outer loop"); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", lastPoint.X, lastPoint.Y, -m_depth); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", lastPoint.X, lastPoint.Y, 0); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", firstPoint.X, firstPoint.Y, 0); stlFile.WriteLine("endloop"); stlFile.WriteLine("endfacet"); stlFile.WriteLine("facet normal ni nj nk"); // normal vector stlFile.WriteLine("outer loop"); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", lastPoint.X, lastPoint.Y, -m_depth); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", firstPoint.X, firstPoint.Y, 0); stlFile.WriteLine("vertex {0:E} {1:E} {2:E}", firstPoint.X, firstPoint.Y, -m_depth); stlFile.WriteLine("endloop"); stlFile.WriteLine("endfacet"); }
public void Write(PanelDisplay panel, Point origin) { double offset = parameters.CutterDiameter / 2; PointCollection points = panel.GetPoints(); Boolean first = true; Point firstPoint = new Point(0, 0); // Get the tool path, which is an offset from the panel points PointCollection path; if (offset != 0) { path = Geometry.ParallelShape(points, offset, parameters.OffsetInside); } else { path = points; } double currentDepth = 0; while (currentDepth < parameters.MaterialThickness) { currentDepth += parameters.DepthPerCut; if (currentDepth > parameters.MaterialThickness) { currentDepth = parameters.MaterialThickness + parameters.CutthroughDepth; } foreach (Point p in path) { Point spot = new Point(p.X - origin.X, -(p.Y - origin.Y)); if (first) { firstPoint = spot; gCodeFile.WriteLine("G01 Z0.25 F{0}", parameters.PlungeSpeed); // Lift cutter gCodeFile.WriteLine("G00 X{0} Y{1}", spot.X, spot.Y); // Go to start point gCodeFile.WriteLine("G01 Z-{0} F{1}", currentDepth, parameters.PlungeSpeed); // cut into surface gCodeFile.WriteLine("G01 X{0} Y{1} F{2}", spot.X, spot.Y, parameters.CutSpeed); // set cutspeed first = false; } else { gCodeFile.WriteLine("G01 X{0} Y{1}", spot.X, spot.Y); } } first = true; } gCodeFile.WriteLine("G01 X{0} Y{1}", firstPoint.X, firstPoint.Y); gCodeFile.WriteLine("G01 Z0.25 F{0}", parameters.PlungeSpeed); // Lift cutter }