├── .gitignore
├── .gitmodules
├── GeneratedPathsDemo
├── App.config
├── GeneratePathsDemo.cs
├── GeneratedPathsDemo.csproj
└── Properties
│ └── AssemblyInfo.cs
├── LICENSE
├── MeshToGCodeDemo
├── App.config
├── MeshToGCodeDemo.csproj
├── Program.cs
└── Properties
│ └── AssemblyInfo.cs
├── README.md
├── bin
├── LICENSE.txt
├── gpx
├── gpx.exe
└── readme.txt
├── dlpView
├── DLPViewCanvas.cs
├── DLPViewerMain.cs
├── Properties
│ └── AssemblyInfo.cs
├── SkiaUtil.cs
├── app.config
├── dlpViewer.csproj
└── packages.config
├── gsSlicer.sln
├── gsSlicerEXE
├── App.config
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── SlicerMain.cs
├── gsSlicerEXE.csproj
└── gsSlicerEXE.csproj.user
├── sample_files
├── 50x50x1_box.obj
├── Slim_Type1.stl
├── arrow_posx.obj
├── basic_step.obj
├── box_and_cylsheet.obj
├── box_and_opensheet.obj
├── box_infill_50.gcode
├── bunny_hollow_5cm.obj
├── bunny_open.obj
├── bunny_solid_2p5cm.obj
├── bunny_solid_5cm.obj
├── bunny_solid_5cm_min.obj
├── cotan_cylinder.obj
├── crop_bracket.obj
├── disc_0p6mm.gcode
├── disc_2mm.gcode
├── disc_single_layer.gcode
├── edge_overhang.obj
├── edge_overhang_2.obj
├── edge_overhang_support.obj
├── inverted_cone_1.obj
├── large_bunny_yup.obj
├── notch_test_1.obj
├── overhang_slab_1.obj
├── planar_clearance_test_1.obj
├── radial_fins.mix
├── radial_fins.obj
├── radial_fins_larger.obj
├── ring_2p2_makerbot.gcode
├── slab_5deg.gcode
├── slab_5deg.obj
├── sphere_angles_1cm.obj
├── square_linearfill.gcode
├── square_linearfill_2layer.gcode
├── support_mintip.obj
├── support_mintip_vtx.obj
├── support_tilted_cone.obj
├── thin_hex_test_part.gcode
├── thinwall1.obj
├── thinwall2.obj
├── tilted_thin_slab.obj
├── tiny.obj
├── tube_1.obj
├── tube_adapter.obj
├── tube_adapter_makerbot.gcode
├── tube_adapter_slice.obj
├── unsupported_slab_5deg.obj
└── variable_thins.obj
├── sample_output
└── gitkeepdir.txt
└── sliceViewGTK
├── DebugViewCanvas.cs
├── GtkUtil.cs
├── PanZoomCanvas2D.cs
├── Properties
└── AssemblyInfo.cs
├── SkiaUtil.cs
├── SliceViewCanvas.cs
├── SliceViewer.csproj
├── SliceViewerMain.cs
├── SliceViewerTests.cs
├── app.config
└── packages.config
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Object files
2 | *.slo
3 | *.lo
4 | *.o
5 | *.obj
6 |
7 | # Precompiled Headers
8 | *.gch
9 | *.pch
10 |
11 |
12 | # Fortran module files
13 | *.mod
14 | *.smod
15 |
16 | # Compiled Static libraries
17 | *.lai
18 | *.la
19 | *.a
20 | *.lib
21 |
22 | # Executables
23 | *.out
24 | *.app
25 | gsSlicer/obj/
26 | gsSlicer/bin/
27 | .vs/gsSlicer/v14/.suo
28 | gsSlicer/gsSlicer.csproj.user
29 | gsSlicerEXE/obj/
30 | gsSlicerEXE/bin/
31 | packages/
32 | sliceViewGTK/bin/
33 | sliceViewGTK/obj/x86/
34 |
35 | gsSlicer/thirdparty/clipper_library/bin
36 | gsSlicer/thirdparty/clipper_library/obj
37 | *.userprefs
38 |
39 | dlpView/bin
40 | dlpView/obj
41 |
42 | !/sample_files/*.obj
43 |
44 | sample_output/*
45 | !/sample_output/gitkeepdir.txt
46 |
47 | .vs/
48 | SLIC3R_LAST.gcode
49 | sample_files/external_gcode/
50 | sample_files/local/
51 | MeshToGCodeDemo/bin/
52 | MeshToGCodeDemo/obj/
53 | GeneratedPathsDemo/bin/
54 | GeneratedPathsDemo/obj/
55 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "geometry3Sharp"]
2 | path = geometry3Sharp
3 | url = https://github.com/gradientspace/geometry3Sharp
4 | [submodule "gsGCode"]
5 | path = gsGCode
6 | url = https://github.com/gradientspace/gsGCode
7 | [submodule "gsSlicer"]
8 | path = gsSlicer
9 | url = https://github.com/gradientspace/gsSlicer
10 |
--------------------------------------------------------------------------------
/GeneratedPathsDemo/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/GeneratedPathsDemo/GeneratePathsDemo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Collections.Generic;
4 | using g3;
5 | using gs;
6 | using gs.info;
7 |
8 | namespace GeneratedPathsDemo
9 | {
10 | class Program
11 | {
12 | static string OUT_PATH = Util.IsRunningOnMono() ? "../../../sample_output/" : "c:\\demo\\";
13 |
14 | static void Main(string[] args)
15 | {
16 | var gcode_accumulator = new GCodeFileAccumulator();
17 | var builder = new GCodeBuilder(gcode_accumulator);
18 | MakerbotSettings settings = new MakerbotSettings();
19 |
20 | SingleMaterialFFFCompiler compiler = new SingleMaterialFFFCompiler(
21 | builder, settings, MakerbotAssembler.Factory);
22 | settings.ExtruderTempC = 200;
23 |
24 | compiler.Begin();
25 |
26 | //generate_stacked_polygon(compiler, settings);
27 | //generate_stacked_wavy_circle(compiler, settings);
28 | //generate_square(compiler, settings);
29 | //generate_vertical(compiler, settings);
30 | generate_vertical_wave(compiler, settings);
31 |
32 | compiler.End();
33 |
34 | GCodeFile gcode = gcode_accumulator.File;
35 | using (StreamWriter w = new StreamWriter(OUT_PATH+"generated.gcode")) {
36 | StandardGCodeWriter writer = new StandardGCodeWriter();
37 | writer.WriteFile(gcode, w);
38 | }
39 | }
40 |
41 |
42 |
43 | static void generate_stacked_polygon(SingleMaterialFFFCompiler compiler,
44 | SingleMaterialFFFSettings settings)
45 | {
46 | int NLayers = 10;
47 | for (int layer_i = 0; layer_i < NLayers; ++layer_i) {
48 |
49 | // create data structures for organizing this layer
50 | ToolpathSetBuilder layer_builder = new ToolpathSetBuilder();
51 | SequentialScheduler2d scheduler = new SequentialScheduler2d(layer_builder, settings);
52 | if (layer_i == 0)
53 | scheduler.SpeedHint = SchedulerSpeedHint.Careful;
54 |
55 | // initialize layer
56 | layer_builder.Initialize(compiler.NozzlePosition);
57 |
58 | // layer-up
59 | layer_builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
60 |
61 | // schedule a circle
62 | FillPolygon2d circle_poly = new FillPolygon2d(Polygon2d.MakeCircle(25.0f, 64));
63 | circle_poly.TypeFlags = FillTypeFlags.OuterPerimeter;
64 | scheduler.AppendPolygon2d(circle_poly);
65 |
66 | // pass paths to compiler
67 | compiler.AppendPaths(layer_builder.Paths, settings);
68 | }
69 | }
70 |
71 |
72 |
73 |
74 |
75 | static void generate_stacked_wavy_circle(SingleMaterialFFFCompiler compiler,
76 | SingleMaterialFFFSettings settings)
77 | {
78 | double height = 20.0; // mm
79 | int NLayers = (int)(height / settings.LayerHeightMM); // 20mm
80 | int NSteps = 128;
81 | double radius = 15.0;
82 | double frequency = 6;
83 | double scale = 5.0;
84 |
85 | for (int layer_i = 0; layer_i < NLayers; ++layer_i) {
86 |
87 | // create data structures for organizing this layer
88 | ToolpathSetBuilder layer_builder = new ToolpathSetBuilder();
89 | SequentialScheduler2d scheduler = new SequentialScheduler2d(layer_builder, settings);
90 | if (layer_i == 0)
91 | scheduler.SpeedHint = SchedulerSpeedHint.Careful;
92 |
93 | // initialize and layer-up
94 | layer_builder.Initialize(compiler.NozzlePosition);
95 | layer_builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
96 |
97 | // start with circle
98 | FillPolygon2d circle_poly = new FillPolygon2d(Polygon2d.MakeCircle(radius, NSteps));
99 |
100 | // apply a wave deformation to circle, with wave height increasing with Z
101 | double layer_scale = MathUtil.Lerp(0, scale, (double)layer_i / (double)NLayers);
102 | for ( int i = 0; i < NSteps; ++i ) {
103 | Vector2d v = circle_poly[i];
104 | double angle = Math.Atan2(v.y, v.x);
105 | double r = v.Length;
106 | r += layer_scale * Math.Sin(frequency * angle);
107 | circle_poly[i] = r * v.Normalized;
108 | }
109 |
110 | circle_poly.TypeFlags = FillTypeFlags.OuterPerimeter;
111 | scheduler.AppendPolygon2d(circle_poly);
112 |
113 | // pass paths to compiler
114 | compiler.AppendPaths(layer_builder.Paths, settings);
115 | }
116 | }
117 |
118 |
119 |
120 |
121 | static void generate_square(SingleMaterialFFFCompiler compiler,
122 | SingleMaterialFFFSettings settings)
123 | {
124 |
125 | ToolpathSetBuilder builder = new ToolpathSetBuilder();
126 | builder.Initialize(compiler.NozzlePosition);
127 |
128 | // layer-up
129 | builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
130 |
131 | // draw rectangle
132 | float left = 0, right = 50, bottom = -20, top = 20;
133 | builder.AppendTravel(new Vector2d(left, bottom), settings.RapidTravelSpeed);
134 | builder.AppendExtrude(new Vector2d(right, bottom), settings.CarefulExtrudeSpeed);
135 | builder.AppendExtrude(new Vector2d(right, top), settings.CarefulExtrudeSpeed);
136 | builder.AppendExtrude(new Vector2d(left, top), settings.CarefulExtrudeSpeed);
137 | builder.AppendExtrude(new Vector2d(left, bottom), settings.CarefulExtrudeSpeed);
138 |
139 | compiler.AppendPaths(builder.Paths, settings);
140 | }
141 |
142 |
143 |
144 | static void generate_vertical(SingleMaterialFFFCompiler compiler,
145 | SingleMaterialFFFSettings settings)
146 | {
147 |
148 | ToolpathSetBuilder builder = new ToolpathSetBuilder();
149 | builder.Initialize(compiler.NozzlePosition);
150 |
151 | // layer-up
152 | builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
153 |
154 | // draw circle
155 | int N = 32;
156 | Polygon2d circle = Polygon2d.MakeCircle(25.0f, N, -MathUtil.HalfPI);
157 |
158 | builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
159 | for (int k = 1; k <= N; k++)
160 | builder.AppendExtrude(circle[k%N], settings.CarefulExtrudeSpeed);
161 |
162 | // layer-up
163 | builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
164 |
165 | double height = 5.0f;
166 | double z_layer = builder.Position.z;
167 | double z_high = z_layer + height;
168 | for ( int k = 1; k <= N; k++ ) {
169 | Vector2d p2 = circle[k%N];
170 | double z = (k % 2 == 1) ? z_high : z_layer;
171 | Vector3d p3 = new Vector3d(p2.x, p2.y, z);
172 | builder.AppendExtrude(p3, settings.CarefulExtrudeSpeed / 4);
173 |
174 | // dwell at tops
175 | if ( z == z_high ) {
176 | AssemblerCommandsToolpath dwell_path = new AssemblerCommandsToolpath() {
177 | AssemblerF = make_tip
178 | };
179 | builder.AppendPath(dwell_path);
180 | }
181 | }
182 |
183 | // move up to z_high
184 | builder.AppendZChange(height, settings.ZTravelSpeed);
185 |
186 | // draw circle again
187 | builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
188 | for (int k = 1; k <= N; k++)
189 | builder.AppendExtrude(circle[k % N], settings.RapidExtrudeSpeed);
190 |
191 |
192 | // draw teeth again
193 |
194 | z_layer = builder.Position.z;
195 | z_high = z_layer + height;
196 | for (int k = 1; k <= N; k++) {
197 | Vector2d p2 = circle[k % N];
198 | double z = (k % 2 == 1) ? z_high : z_layer;
199 | Vector3d p3 = new Vector3d(p2.x, p2.y, z);
200 | builder.AppendExtrude(p3, settings.CarefulExtrudeSpeed / 4);
201 |
202 | // dwell at tops
203 | if (z == z_high) {
204 | AssemblerCommandsToolpath dwell_path = new AssemblerCommandsToolpath() {
205 | AssemblerF = make_tip
206 | };
207 | builder.AppendPath(dwell_path);
208 | }
209 | }
210 |
211 |
212 | // move up to z_high
213 | builder.AppendZChange(height, settings.ZTravelSpeed);
214 |
215 | // draw circle again
216 | builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
217 | for (int k = 1; k <= N; k++)
218 | builder.AppendExtrude(circle[k % N], settings.RapidExtrudeSpeed);
219 |
220 |
221 | compiler.AppendPaths(builder.Paths, settings);
222 | }
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 | static void generate_vertical_wave(SingleMaterialFFFCompiler compiler,
233 | SingleMaterialFFFSettings settings)
234 | {
235 |
236 | ToolpathSetBuilder builder = new ToolpathSetBuilder();
237 | builder.Initialize(compiler.NozzlePosition);
238 |
239 | // layer-up
240 | builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
241 |
242 | int N = 24;
243 | Polygon2d circle = Polygon2d.MakeCircle(15.0f, N, -MathUtil.HalfPI);
244 |
245 | int REPEAT = 5;
246 |
247 | for (int ri = 0; ri < REPEAT; ++ri) {
248 |
249 | builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
250 | for (int k = 1; k <= N; k++)
251 | builder.AppendExtrude(circle[k % N], settings.CarefulExtrudeSpeed / 4);
252 | builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
253 |
254 | builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
255 | for (int k = 1; k <= N; k++)
256 | builder.AppendExtrude(circle[k % N], settings.CarefulExtrudeSpeed / 4);
257 | builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);
258 |
259 | if (ri == REPEAT - 1)
260 | break;
261 |
262 | // make on the move up we should also move 'back' a bit,
263 | // to counteract forward pull force?
264 |
265 | double height = 1.0f;
266 | double h_fudge = 0.0f;
267 | double z_stick = -0.05f;
268 | double z_layer = builder.Position.z;
269 | double top_z = z_layer + height + h_fudge;
270 | for (int k = 0; k < N-1; k++) {
271 | Vector2d pcur = circle[k%N], pnext = circle[(k+1)%N];
272 | Vector3d pUp = new Vector3d(pcur.x, pcur.y, top_z);
273 | builder.AppendExtrude(pUp, settings.CarefulExtrudeSpeed / 8);
274 | builder.AppendDwell(500, false);
275 | Vector3d pDown = new Vector3d(pnext.x, pnext.y, z_layer+z_stick);
276 | builder.AppendExtrude(pDown, settings.CarefulExtrudeSpeed / 8);
277 | }
278 |
279 | // move up to z_high
280 | Vector3d vpos = new Vector3d(circle[0].x, circle[0].y, z_layer+height);
281 | builder.AppendExtrude(vpos, settings.CarefulExtrudeSpeed / 8);
282 | }
283 |
284 | compiler.AppendPaths(builder.Paths, settings);
285 | }
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 | static void make_tip(IGCodeAssembler iassember, ICNCCompiler icompiler)
295 | {
296 | BaseDepositionAssembler assembler = iassember as BaseDepositionAssembler;
297 | assembler.FlushQueues();
298 | assembler.BeginRetractRelativeDist(assembler.NozzlePosition, 9999, -1.0f);
299 | assembler.AppendDwell(500);
300 | assembler.EndRetract(assembler.NozzlePosition, 9999);
301 | }
302 |
303 |
304 |
305 | }
306 | }
307 |
--------------------------------------------------------------------------------
/GeneratedPathsDemo/GeneratedPathsDemo.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}
8 | Exe
9 | GeneratedPathsDemo
10 | GeneratedPathsDemo
11 | v4.6.1
12 | 512
13 | true
14 |
15 |
16 | AnyCPU
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | AnyCPU
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | {0c518dda-28fe-44ca-9ab0-f9773974f13a}
54 | geometry3Sharp
55 |
56 |
57 | {25de77c9-14a4-4562-9a24-0bf1e612d9a9}
58 | gsGCode
59 |
60 |
61 | {6c2e415e-37d9-4c5a-8fd5-60b0133872cf}
62 | gsSlicer
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/GeneratedPathsDemo/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("GeneratedPathsDemo")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("GeneratedPathsDemo")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("4ea4d31d-287a-4f62-afc0-c8281a88ef35")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 gradientspace
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/MeshToGCodeDemo/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MeshToGCodeDemo/MeshToGCodeDemo.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}
8 | Exe
9 | MeshToGCodeDemo
10 | MeshToGCodeDemo
11 | v4.6.1
12 | 512
13 | true
14 |
15 |
16 | AnyCPU
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | AnyCPU
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | {0c518dda-28fe-44ca-9ab0-f9773974f13a}
54 | geometry3Sharp
55 |
56 |
57 | {25de77c9-14a4-4562-9a24-0bf1e612d9a9}
58 | gsGCode
59 |
60 |
61 | {6c2e415e-37d9-4c5a-8fd5-60b0133872cf}
62 | gsSlicer
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/MeshToGCodeDemo/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using g3;
4 | using gs;
5 | using gs.info;
6 |
7 | namespace MeshToGCodeDemo
8 | {
9 | class Program
10 | {
11 | static void Main(string[] args)
12 | {
13 | CappedCylinderGenerator cylgen = new CappedCylinderGenerator() {
14 | BaseRadius = 10, TopRadius = 5, Height = 20, Slices = 32
15 | };
16 | DMesh3 mesh = cylgen.Generate().MakeDMesh();
17 | MeshTransforms.ConvertYUpToZUp(mesh); // g3 meshes are usually Y-up
18 |
19 | // center mesh above origin
20 | AxisAlignedBox3d bounds = mesh.CachedBounds;
21 | Vector3d baseCenterPt = bounds.Center - bounds.Extents.z*Vector3d.AxisZ;
22 | MeshTransforms.Translate(mesh, -baseCenterPt);
23 |
24 | // create print mesh set
25 | PrintMeshAssembly meshes = new PrintMeshAssembly();
26 | meshes.AddMesh(mesh, PrintMeshOptions.Default());
27 |
28 | // create settings
29 | //MakerbotSettings settings = new MakerbotSettings(Makerbot.Models.Replicator2);
30 | //PrintrbotSettings settings = new PrintrbotSettings(Printrbot.Models.Plus);
31 | //MonopriceSettings settings = new MonopriceSettings(Monoprice.Models.MP_Select_Mini_V2);
32 | RepRapSettings settings = new RepRapSettings(RepRap.Models.Unknown);
33 |
34 | // do slicing
35 | MeshPlanarSlicer slicer = new MeshPlanarSlicer() {
36 | LayerHeightMM = settings.LayerHeightMM };
37 | slicer.Add(meshes);
38 | PlanarSliceStack slices = slicer.Compute();
39 |
40 | // run print generator
41 | SingleMaterialFFFPrintGenerator printGen =
42 | new SingleMaterialFFFPrintGenerator(meshes, slices, settings);
43 | if ( printGen.Generate() ) {
44 | // export gcode
45 | GCodeFile gcode = printGen.Result;
46 | using (StreamWriter w = new StreamWriter("c:\\demo\\cone.gcode")) {
47 | StandardGCodeWriter writer = new StandardGCodeWriter();
48 | writer.WriteFile(gcode, w);
49 | }
50 | }
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/MeshToGCodeDemo/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("MeshToGCodeDemo")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("MeshToGCodeDemo")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("33da100d-8dc1-4aa1-97a0-792a1ab661ac")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # gsSlicerApps
2 |
3 | command line and interactive front-ends to [gsSlicer](https://github.com/gradientspace/gsSlicer)
4 |
5 | C#, MIT License (but see note about dependencies below). Copyright 2017 ryan schmidt / gradientspace
6 |
7 | questions? get in touch on twitter: @rms80 or @gradientspace, or email rms@gradientspace.com.
8 |
9 | # Overview
10 |
11 | The intention of this project is that it will provide GUI and command-line access to gsSlicer. At present this project is mainly used for testing and debugging of gsSlicer.
12 |
13 |
14 |
15 | # sliceViewGTK
16 |
17 | 2D viewer for GCode files. Current code will also slice and toolpath a mesh file on startup. Path is currently hardcoded in **SliceViewerMain**.
18 |
19 | # dlpView
20 |
21 | basic 2D tool for slicing a mesh and generating/browsing per-layer bitmaps, suitable for DLP printing. Path is currently hardcoded in **DLPViewerMain**.
22 |
23 |
24 |
25 | # Dependencies
26 |
27 | The **sliceViewGTK** and **dlpView** code is MIT-license, but they depends on Gdk/Gtk/GtkSharp (LGPL) and the SkiaSharp wrapper (MIT) around the Skia library (BSD).
28 |
--------------------------------------------------------------------------------
/bin/LICENSE.txt:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 2, June 1991
3 |
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6 | Everyone is permitted to copy and distribute verbatim copies
7 | of this license document, but changing it is not allowed.
8 |
9 | Preamble
10 |
11 | The licenses for most software are designed to take away your
12 | freedom to share and change it. By contrast, the GNU General Public
13 | License is intended to guarantee your freedom to share and change free
14 | software--to make sure the software is free for all its users. This
15 | General Public License applies to most of the Free Software
16 | Foundation's software and to any other program whose authors commit to
17 | using it. (Some other Free Software Foundation software is covered by
18 | the GNU Lesser General Public License instead.) You can apply it to
19 | your programs, too.
20 |
21 | When we speak of free software, we are referring to freedom, not
22 | price. Our General Public Licenses are designed to make sure that you
23 | have the freedom to distribute copies of free software (and charge for
24 | this service if you wish), that you receive source code or can get it
25 | if you want it, that you can change the software or use pieces of it
26 | in new free programs; and that you know you can do these things.
27 |
28 | To protect your rights, we need to make restrictions that forbid
29 | anyone to deny you these rights or to ask you to surrender the rights.
30 | These restrictions translate to certain responsibilities for you if you
31 | distribute copies of the software, or if you modify it.
32 |
33 | For example, if you distribute copies of such a program, whether
34 | gratis or for a fee, you must give the recipients all the rights that
35 | you have. You must make sure that they, too, receive or can get the
36 | source code. And you must show them these terms so they know their
37 | rights.
38 |
39 | We protect your rights with two steps: (1) copyright the software, and
40 | (2) offer you this license which gives you legal permission to copy,
41 | distribute and/or modify the software.
42 |
43 | Also, for each author's protection and ours, we want to make certain
44 | that everyone understands that there is no warranty for this free
45 | software. If the software is modified by someone else and passed on, we
46 | want its recipients to know that what they have is not the original, so
47 | that any problems introduced by others will not reflect on the original
48 | authors' reputations.
49 |
50 | Finally, any free program is threatened constantly by software
51 | patents. We wish to avoid the danger that redistributors of a free
52 | program will individually obtain patent licenses, in effect making the
53 | program proprietary. To prevent this, we have made it clear that any
54 | patent must be licensed for everyone's free use or not licensed at all.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | GNU GENERAL PUBLIC LICENSE
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61 |
62 | 0. This License applies to any program or other work which contains
63 | a notice placed by the copyright holder saying it may be distributed
64 | under the terms of this General Public License. The "Program", below,
65 | refers to any such program or work, and a "work based on the Program"
66 | means either the Program or any derivative work under copyright law:
67 | that is to say, a work containing the Program or a portion of it,
68 | either verbatim or with modifications and/or translated into another
69 | language. (Hereinafter, translation is included without limitation in
70 | the term "modification".) Each licensee is addressed as "you".
71 |
72 | Activities other than copying, distribution and modification are not
73 | covered by this License; they are outside its scope. The act of
74 | running the Program is not restricted, and the output from the Program
75 | is covered only if its contents constitute a work based on the
76 | Program (independent of having been made by running the Program).
77 | Whether that is true depends on what the Program does.
78 |
79 | 1. You may copy and distribute verbatim copies of the Program's
80 | source code as you receive it, in any medium, provided that you
81 | conspicuously and appropriately publish on each copy an appropriate
82 | copyright notice and disclaimer of warranty; keep intact all the
83 | notices that refer to this License and to the absence of any warranty;
84 | and give any other recipients of the Program a copy of this License
85 | along with the Program.
86 |
87 | You may charge a fee for the physical act of transferring a copy, and
88 | you may at your option offer warranty protection in exchange for a fee.
89 |
90 | 2. You may modify your copy or copies of the Program or any portion
91 | of it, thus forming a work based on the Program, and copy and
92 | distribute such modifications or work under the terms of Section 1
93 | above, provided that you also meet all of these conditions:
94 |
95 | a) You must cause the modified files to carry prominent notices
96 | stating that you changed the files and the date of any change.
97 |
98 | b) You must cause any work that you distribute or publish, that in
99 | whole or in part contains or is derived from the Program or any
100 | part thereof, to be licensed as a whole at no charge to all third
101 | parties under the terms of this License.
102 |
103 | c) If the modified program normally reads commands interactively
104 | when run, you must cause it, when started running for such
105 | interactive use in the most ordinary way, to print or display an
106 | announcement including an appropriate copyright notice and a
107 | notice that there is no warranty (or else, saying that you provide
108 | a warranty) and that users may redistribute the program under
109 | these conditions, and telling the user how to view a copy of this
110 | License. (Exception: if the Program itself is interactive but
111 | does not normally print such an announcement, your work based on
112 | the Program is not required to print an announcement.)
113 |
114 | These requirements apply to the modified work as a whole. If
115 | identifiable sections of that work are not derived from the Program,
116 | and can be reasonably considered independent and separate works in
117 | themselves, then this License, and its terms, do not apply to those
118 | sections when you distribute them as separate works. But when you
119 | distribute the same sections as part of a whole which is a work based
120 | on the Program, the distribution of the whole must be on the terms of
121 | this License, whose permissions for other licensees extend to the
122 | entire whole, and thus to each and every part regardless of who wrote it.
123 |
124 | Thus, it is not the intent of this section to claim rights or contest
125 | your rights to work written entirely by you; rather, the intent is to
126 | exercise the right to control the distribution of derivative or
127 | collective works based on the Program.
128 |
129 | In addition, mere aggregation of another work not based on the Program
130 | with the Program (or with a work based on the Program) on a volume of
131 | a storage or distribution medium does not bring the other work under
132 | the scope of this License.
133 |
134 | 3. You may copy and distribute the Program (or a work based on it,
135 | under Section 2) in object code or executable form under the terms of
136 | Sections 1 and 2 above provided that you also do one of the following:
137 |
138 | a) Accompany it with the complete corresponding machine-readable
139 | source code, which must be distributed under the terms of Sections
140 | 1 and 2 above on a medium customarily used for software interchange; or,
141 |
142 | b) Accompany it with a written offer, valid for at least three
143 | years, to give any third party, for a charge no more than your
144 | cost of physically performing source distribution, a complete
145 | machine-readable copy of the corresponding source code, to be
146 | distributed under the terms of Sections 1 and 2 above on a medium
147 | customarily used for software interchange; or,
148 |
149 | c) Accompany it with the information you received as to the offer
150 | to distribute corresponding source code. (This alternative is
151 | allowed only for noncommercial distribution and only if you
152 | received the program in object code or executable form with such
153 | an offer, in accord with Subsection b above.)
154 |
155 | The source code for a work means the preferred form of the work for
156 | making modifications to it. For an executable work, complete source
157 | code means all the source code for all modules it contains, plus any
158 | associated interface definition files, plus the scripts used to
159 | control compilation and installation of the executable. However, as a
160 | special exception, the source code distributed need not include
161 | anything that is normally distributed (in either source or binary
162 | form) with the major components (compiler, kernel, and so on) of the
163 | operating system on which the executable runs, unless that component
164 | itself accompanies the executable.
165 |
166 | If distribution of executable or object code is made by offering
167 | access to copy from a designated place, then offering equivalent
168 | access to copy the source code from the same place counts as
169 | distribution of the source code, even though third parties are not
170 | compelled to copy the source along with the object code.
171 |
172 | 4. You may not copy, modify, sublicense, or distribute the Program
173 | except as expressly provided under this License. Any attempt
174 | otherwise to copy, modify, sublicense or distribute the Program is
175 | void, and will automatically terminate your rights under this License.
176 | However, parties who have received copies, or rights, from you under
177 | this License will not have their licenses terminated so long as such
178 | parties remain in full compliance.
179 |
180 | 5. You are not required to accept this License, since you have not
181 | signed it. However, nothing else grants you permission to modify or
182 | distribute the Program or its derivative works. These actions are
183 | prohibited by law if you do not accept this License. Therefore, by
184 | modifying or distributing the Program (or any work based on the
185 | Program), you indicate your acceptance of this License to do so, and
186 | all its terms and conditions for copying, distributing or modifying
187 | the Program or works based on it.
188 |
189 | 6. Each time you redistribute the Program (or any work based on the
190 | Program), the recipient automatically receives a license from the
191 | original licensor to copy, distribute or modify the Program subject to
192 | these terms and conditions. You may not impose any further
193 | restrictions on the recipients' exercise of the rights granted herein.
194 | You are not responsible for enforcing compliance by third parties to
195 | this License.
196 |
197 | 7. If, as a consequence of a court judgment or allegation of patent
198 | infringement or for any other reason (not limited to patent issues),
199 | conditions are imposed on you (whether by court order, agreement or
200 | otherwise) that contradict the conditions of this License, they do not
201 | excuse you from the conditions of this License. If you cannot
202 | distribute so as to satisfy simultaneously your obligations under this
203 | License and any other pertinent obligations, then as a consequence you
204 | may not distribute the Program at all. For example, if a patent
205 | license would not permit royalty-free redistribution of the Program by
206 | all those who receive copies directly or indirectly through you, then
207 | the only way you could satisfy both it and this License would be to
208 | refrain entirely from distribution of the Program.
209 |
210 | If any portion of this section is held invalid or unenforceable under
211 | any particular circumstance, the balance of the section is intended to
212 | apply and the section as a whole is intended to apply in other
213 | circumstances.
214 |
215 | It is not the purpose of this section to induce you to infringe any
216 | patents or other property right claims or to contest validity of any
217 | such claims; this section has the sole purpose of protecting the
218 | integrity of the free software distribution system, which is
219 | implemented by public license practices. Many people have made
220 | generous contributions to the wide range of software distributed
221 | through that system in reliance on consistent application of that
222 | system; it is up to the author/donor to decide if he or she is willing
223 | to distribute software through any other system and a licensee cannot
224 | impose that choice.
225 |
226 | This section is intended to make thoroughly clear what is believed to
227 | be a consequence of the rest of this License.
228 |
229 | 8. If the distribution and/or use of the Program is restricted in
230 | certain countries either by patents or by copyrighted interfaces, the
231 | original copyright holder who places the Program under this License
232 | may add an explicit geographical distribution limitation excluding
233 | those countries, so that distribution is permitted only in or among
234 | countries not thus excluded. In such case, this License incorporates
235 | the limitation as if written in the body of this License.
236 |
237 | 9. The Free Software Foundation may publish revised and/or new versions
238 | of the General Public License from time to time. Such new versions will
239 | be similar in spirit to the present version, but may differ in detail to
240 | address new problems or concerns.
241 |
242 | Each version is given a distinguishing version number. If the Program
243 | specifies a version number of this License which applies to it and "any
244 | later version", you have the option of following the terms and conditions
245 | either of that version or of any later version published by the Free
246 | Software Foundation. If the Program does not specify a version number of
247 | this License, you may choose any version ever published by the Free Software
248 | Foundation.
249 |
250 | 10. If you wish to incorporate parts of the Program into other free
251 | programs whose distribution conditions are different, write to the author
252 | to ask for permission. For software which is copyrighted by the Free
253 | Software Foundation, write to the Free Software Foundation; we sometimes
254 | make exceptions for this. Our decision will be guided by the two goals
255 | of preserving the free status of all derivatives of our free software and
256 | of promoting the sharing and reuse of software generally.
257 |
258 | NO WARRANTY
259 |
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268 | REPAIR OR CORRECTION.
269 |
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278 | POSSIBILITY OF SUCH DAMAGES.
279 |
280 | END OF TERMS AND CONDITIONS
281 |
282 | How to Apply These Terms to Your New Programs
283 |
284 | If you develop a new program, and you want it to be of the greatest
285 | possible use to the public, the best way to achieve this is to make it
286 | free software which everyone can redistribute and change under these terms.
287 |
288 | To do so, attach the following notices to the program. It is safest
289 | to attach them to the start of each source file to most effectively
290 | convey the exclusion of warranty; and each file should have at least
291 | the "copyright" line and a pointer to where the full notice is found.
292 |
293 |
294 | Copyright (C)
295 |
296 | This program is free software; you can redistribute it and/or modify
297 | it under the terms of the GNU General Public License as published by
298 | the Free Software Foundation; either version 2 of the License, or
299 | (at your option) any later version.
300 |
301 | This program is distributed in the hope that it will be useful,
302 | but WITHOUT ANY WARRANTY; without even the implied warranty of
303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 | GNU General Public License for more details.
305 |
306 | You should have received a copy of the GNU General Public License along
307 | with this program; if not, write to the Free Software Foundation, Inc.,
308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309 |
310 | Also add information on how to contact you by electronic and paper mail.
311 |
312 | If the program is interactive, make it output a short notice like this
313 | when it starts in an interactive mode:
314 |
315 | Gnomovision version 69, Copyright (C) year name of author
316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317 | This is free software, and you are welcome to redistribute it
318 | under certain conditions; type `show c' for details.
319 |
320 | The hypothetical commands `show w' and `show c' should show the appropriate
321 | parts of the General Public License. Of course, the commands you use may
322 | be called something other than `show w' and `show c'; they could even be
323 | mouse-clicks or menu items--whatever suits your program.
324 |
325 | You should also get your employer (if you work as a programmer) or your
326 | school, if any, to sign a "copyright disclaimer" for the program, if
327 | necessary. Here is a sample; alter the names:
328 |
329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330 | `Gnomovision' (which makes passes at compilers) written by James Hacker.
331 |
332 | , 1 April 1989
333 | Ty Coon, President of Vice
334 |
335 | This General Public License does not permit incorporating your program into
336 | proprietary programs. If your program is a subroutine library, you may
337 | consider it more useful to permit linking proprietary applications with the
338 | library. If this is what you want to do, use the GNU Lesser General
339 | Public License instead of this License.
--------------------------------------------------------------------------------
/bin/gpx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gradientspace/gsSlicerApps/eaa54f1ce925da0ec58b193f35c675f9e61407d2/bin/gpx
--------------------------------------------------------------------------------
/bin/gpx.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gradientspace/gsSlicerApps/eaa54f1ce925da0ec58b193f35c675f9e61407d2/bin/gpx.exe
--------------------------------------------------------------------------------
/bin/readme.txt:
--------------------------------------------------------------------------------
1 | Compiled version of gpx
2 |
3 | source: https://github.com/markwal/GPX
4 | builds: https://github.com/markwal/GPX/releases
5 |
--------------------------------------------------------------------------------
/dlpView/DLPViewCanvas.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Gtk;
4 | using GLib;
5 | using SkiaSharp;
6 | using g3;
7 | using gs;
8 |
9 | namespace DLPViewer
10 | {
11 | class DLPViewCanvas : DrawingArea
12 | {
13 |
14 |
15 | public bool ShowOpenEndpoints = true;
16 |
17 | public float Zoom = 0.95f;
18 |
19 | // this is a pixel-space translate
20 | public Vector2f Translate = Vector2f.Zero;
21 |
22 |
23 | public DLPViewCanvas()
24 | {
25 | ExposeEvent += OnExpose;
26 |
27 | ButtonPressEvent += OnButtonPressEvent;
28 | ButtonReleaseEvent += OnButtonReleaseEvent;
29 | MotionNotifyEvent += OnMotionNotifyEvent;
30 | ScrollEvent += OnScrollEvent;
31 | Events = Gdk.EventMask.ExposureMask | Gdk.EventMask.LeaveNotifyMask |
32 | Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask | Gdk.EventMask.PointerMotionMask |
33 | Gdk.EventMask.ScrollMask;
34 |
35 | SetSlices(new PlanarSliceStack());
36 | }
37 |
38 | PlanarSliceStack Stack;
39 | int currentLayer = 0;
40 |
41 | public void SetSlices(PlanarSliceStack slices) {
42 | Stack = slices;
43 | CurrentLayer = 0;
44 | SliceImages = new List();
45 | }
46 |
47 | public int CurrentLayer {
48 | get { return currentLayer; }
49 | set {
50 | currentLayer = MathUtil.Clamp(value, 0, Stack.Slices.Count - 1);
51 | QueueDraw();
52 | }
53 | }
54 |
55 |
56 |
57 | List SliceImages = new List();
58 | float CurrentDPIMM = 1.0f;
59 |
60 |
61 | // compute bitmap for each slice (maybe do on demand?)
62 | void compute_slice_images() {
63 |
64 | // construct bounding box and add buffer region
65 | AxisAlignedBox3d bounds = Stack.Bounds;
66 | double bufferMM = 1;
67 | bounds.Expand(bufferMM);
68 | Vector3d center = bounds.Center;
69 |
70 | // will create a bitmap with this dots-per-inch
71 | double dpi = 300;
72 | double dpmm = dpi / Units.Convert(Units.Linear.Inches, Units.Linear.Millimeters);
73 | CurrentDPIMM = (float)dpmm;
74 |
75 | // pixel dimensions of image
76 | int width = (int)(bounds.Width * dpmm);
77 | int height = (int)(bounds.Height * dpmm);
78 |
79 | // backgroun and object colors
80 | SKColor bgColor = SkiaUtil.Color(0, 0, 0, 255);
81 | SKColor objColor = SkiaUtil.Color(255, 255, 255, 255);
82 |
83 | // function that maps from input coordinates to pixel space
84 | Func mapToSkiaF = (origPt) => {
85 | origPt.y = -origPt.y; // [RMS] !!! flip Y here? if we don't do this the
86 | // polylines we draw below don't match up. But maybe
87 | // its the polylines that are wrong??
88 | origPt *= dpmm;
89 | origPt.x += width / 2; origPt.y += height / 2;
90 | return new SKPoint((float)origPt.x, (float)origPt.y);
91 | };
92 |
93 | foreach (PlanarSlice slice in Stack.Slices) {
94 |
95 | var bitmap = new SKBitmap(width, height, SkiaUtil.ColorType(), SKAlphaType.Premul);
96 | IntPtr len;
97 | using (var skSurface = SKSurface.Create(bitmap.Info.Width, bitmap.Info.Height, SkiaUtil.ColorType(), SKAlphaType.Premul, bitmap.GetPixels(out len), bitmap.Info.RowBytes)) {
98 |
99 | var canvas = skSurface.Canvas;
100 | canvas.Clear(bgColor);
101 |
102 | using (var paint = new SKPaint()) {
103 | paint.IsAntialias = false;
104 | paint.Style = SKPaintStyle.Fill;
105 | paint.Color = objColor;
106 | foreach (GeneralPolygon2d poly in slice.Solids) {
107 | SKPath path = SkiaUtil.ToSKPath(poly, mapToSkiaF);
108 | canvas.DrawPath(path, paint);
109 | }
110 | }
111 | }
112 |
113 | SliceImages.Add(bitmap);
114 | }
115 |
116 |
117 | }
118 |
119 | SKBitmap get_slice_image(int i) {
120 | if (SliceImages.Count == 0)
121 | compute_slice_images();
122 | return SliceImages[i];
123 | }
124 |
125 |
126 |
127 |
128 | void OnExpose(object sender, ExposeEventArgs args)
129 | {
130 | DrawingArea area = (DrawingArea) sender;
131 | Cairo.Context cr = Gdk.CairoHelper.Create(area.GdkWindow);
132 |
133 | int width = area.Allocation.Width;
134 | int height = area.Allocation.Height;
135 |
136 | AxisAlignedBox3d bounds3 = Stack.Bounds;
137 | AxisAlignedBox2d bounds = (bounds3 == AxisAlignedBox3d.Empty) ?
138 | new AxisAlignedBox2d(0, 0, 500, 500) :
139 | new AxisAlignedBox2d(bounds3.Min.x, bounds3.Min.y, bounds3.Max.x, bounds3.Max.y );
140 |
141 | double sx = (double)width / bounds.Width;
142 | double sy = (double)height / bounds.Height;
143 |
144 | float scale = (float)Math.Min(sx, sy);
145 |
146 | // we apply this translate after scaling to pixel coords
147 | Vector2f pixC = Zoom * scale * (Vector2f)bounds.Center;
148 | Vector2f translate = new Vector2f(width/2, height/2) - pixC;
149 |
150 | using (var bitmap = new SKBitmap(width, height, SkiaUtil.ColorType(), SKAlphaType.Premul))
151 | {
152 | IntPtr len;
153 | using (var skSurface = SKSurface.Create(bitmap.Info.Width, bitmap.Info.Height, SkiaUtil.ColorType(), SKAlphaType.Premul, bitmap.GetPixels(out len), bitmap.Info.RowBytes))
154 | {
155 | var canvas = skSurface.Canvas;
156 | canvas.Clear(SkiaUtil.Color(240, 240, 240, 255));
157 |
158 | Func xformF = (pOrig) => {
159 | Vector2f pNew = (Vector2f)pOrig;
160 | pNew -= (Vector2f)bounds.Center;
161 | pNew = Zoom * scale * pNew;
162 | pNew += (Vector2f)pixC;
163 | pNew += translate + Zoom*Translate;
164 | pNew.y = canvas.LocalClipBounds.Height - pNew.y;
165 | return pNew;
166 | };
167 | Func mapToSkiaF = (pOrig) => {
168 | Vector2f p = xformF(pOrig);
169 | return new SKPoint(p.x, p.y);
170 | };
171 |
172 | using (var paint = new SKPaint())
173 | {
174 | SKBitmap sliceImg = get_slice_image(currentLayer);
175 | float w = sliceImg.Width / CurrentDPIMM, h = sliceImg.Height / CurrentDPIMM;
176 | w *= Zoom * scale;
177 | h *= Zoom * scale;
178 | SKPoint sliceCenter = mapToSkiaF(Vector2d.Zero);
179 | SKRect drawRect = new SKRect(
180 | sliceCenter.X - w / 2, sliceCenter.Y - h / 2,
181 | sliceCenter.X + w / 2, sliceCenter.Y + h / 2);
182 | canvas.DrawBitmap(sliceImg, drawRect, paint);
183 |
184 |
185 | paint.IsAntialias = true;
186 | paint.Style = SKPaintStyle.Stroke;
187 |
188 | PlanarSlice slice = Stack.Slices[currentLayer];
189 |
190 | paint.Color = SkiaUtil.Color(255, 0, 0, 255); ;
191 | paint.StrokeWidth = 2;
192 | foreach ( GeneralPolygon2d poly in slice.Solids ) {
193 | SKPath path = SkiaUtil.ToSKPath(poly, mapToSkiaF);
194 | canvas.DrawPath(path, paint);
195 | }
196 |
197 | }
198 |
199 | Cairo.Surface surface = new Cairo.ImageSurface(
200 | bitmap.GetPixels(out len),
201 | Cairo.Format.Argb32,
202 | bitmap.Width, bitmap.Height,
203 | bitmap.Width * 4);
204 |
205 | surface.MarkDirty();
206 | cr.SetSourceSurface(surface, 0, 0);
207 | cr.Paint();
208 | }
209 | }
210 |
211 | //return true;
212 | }
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 | // zoom
221 | private void OnScrollEvent(object o, ScrollEventArgs args)
222 | {
223 | if (args.Event.Direction == Gdk.ScrollDirection.Up)
224 | Zoom *= 1.05f;
225 | else
226 | Zoom = Math.Max(0.25f, Zoom * (1.0f / 1.05f));
227 | QueueDraw();
228 | }
229 |
230 |
231 | // pan support
232 | bool left_down = false;
233 | Vector2f start_pos = Vector2f.Zero;
234 | Vector2f pan_start;
235 | private void OnButtonPressEvent(object o, ButtonPressEventArgs args)
236 | {
237 | if (args.Event.Button == 1) {
238 | left_down = true;
239 | start_pos = new Vector2f((float)args.Event.X, (float)args.Event.Y);
240 | pan_start = Translate;
241 | }
242 | }
243 | private void OnButtonReleaseEvent(object o, ButtonReleaseEventArgs args)
244 | {
245 | if (left_down)
246 | left_down = false;
247 | }
248 | private void OnMotionNotifyEvent(object o, MotionNotifyEventArgs args)
249 | {
250 | if (left_down) {
251 | Vector2f cur_pos = new Vector2f((float)args.Event.X, (float)args.Event.Y);
252 | Vector2f delta = cur_pos - start_pos;
253 | delta.y = -delta.y;
254 | delta *= 1.0f; // speed
255 | Translate = pan_start + delta / Zoom;
256 | QueueDraw();
257 | }
258 | }
259 |
260 |
261 | void Reset()
262 | {
263 | Zoom = 1.0f;
264 | Translate = Vector2f.Zero;
265 | QueueDraw();
266 | }
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 | }
277 |
278 |
279 |
280 |
281 |
282 | }
283 |
--------------------------------------------------------------------------------
/dlpView/DLPViewerMain.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 |
5 | using Gtk;
6 | using GLib;
7 | using SkiaSharp;
8 | using g3;
9 | using gs;
10 |
11 | namespace DLPViewer
12 | {
13 |
14 |
15 | class MainClass
16 | {
17 |
18 | public static Window MainWindow;
19 | public static DLPViewCanvas View;
20 |
21 |
22 | public static void Main(string[] args)
23 | {
24 | ExceptionManager.UnhandledException += delegate (UnhandledExceptionArgs expArgs) {
25 | Console.WriteLine(expArgs.ExceptionObject.ToString());
26 | expArgs.ExitApplication = true;
27 | };
28 |
29 | Gtk.Application.Init();
30 |
31 | MainWindow = new Window("DLPViewer");
32 | MainWindow.SetDefaultSize(900, 600);
33 | MainWindow.SetPosition(WindowPosition.Center);
34 | MainWindow.DeleteEvent += delegate {
35 | Gtk.Application.Quit();
36 | };
37 |
38 |
39 |
40 | DMesh3 mesh = StandardMeshReader.ReadMesh("../../../sample_files/bunny_solid_5cm_min.obj");
41 |
42 |
43 | MeshPlanarSlicer slicer = new MeshPlanarSlicer();
44 | slicer.LayerHeightMM = 0.2;
45 | slicer.AddMesh(mesh);
46 | PlanarSliceStack sliceStack = slicer.Compute();
47 |
48 | View = new DLPViewCanvas();
49 | View.SetSlices(sliceStack);
50 | MainWindow.Add(View);
51 |
52 | MainWindow.KeyReleaseEvent += Window_KeyReleaseEvent;
53 |
54 | MainWindow.ShowAll();
55 |
56 | Gtk.Application.Run();
57 | }
58 |
59 | void OnException(object o, UnhandledExceptionArgs args)
60 | {
61 |
62 | }
63 |
64 |
65 | private static void Window_KeyReleaseEvent(object sender, KeyReleaseEventArgs args)
66 | {
67 | if (args.Event.Key == Gdk.Key.Up) {
68 | if ( (args.Event.State & Gdk.ModifierType.ShiftMask) != 0 )
69 | View.CurrentLayer = View.CurrentLayer + 10;
70 | else
71 | View.CurrentLayer = View.CurrentLayer + 1;
72 | } else if (args.Event.Key == Gdk.Key.Down) {
73 | if ((args.Event.State & Gdk.ModifierType.ShiftMask) != 0)
74 | View.CurrentLayer = View.CurrentLayer - 10;
75 | else
76 | View.CurrentLayer = View.CurrentLayer - 1;
77 | }
78 | }
79 |
80 |
81 |
82 |
83 |
84 |
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/dlpView/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 |
4 | // Information about this assembly is defined by the following attributes.
5 | // Change them to the values specific to your project.
6 |
7 | [assembly: AssemblyTitle("DLPViewer")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("gradientspace")]
11 | [assembly: AssemblyProduct("")]
12 | [assembly: AssemblyCopyright("gradientspace")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
17 | // The form "{Major}.{Minor}.*" will automatically update the build and revision,
18 | // and "{Major}.{Minor}.{Build}.*" will update just the revision.
19 |
20 | [assembly: AssemblyVersion("1.0.*")]
21 |
22 | // The following attributes are used to specify the signing key for the assembly,
23 | // if desired. See the Mono documentation for more information about signing.
24 |
25 | //[assembly: AssemblyDelaySign(false)]
26 | //[assembly: AssemblyKeyFile("")]
27 |
--------------------------------------------------------------------------------
/dlpView/SkiaUtil.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using SkiaSharp;
3 | using g3;
4 | using gs;
5 |
6 |
7 | namespace DLPViewer
8 | {
9 | public static class SkiaUtil
10 | {
11 | public static SKColorType ColorType() {
12 | return Util.IsRunningOnMono() ? SKColorType.Rgba8888 : SKColorType.Bgra8888;
13 | }
14 |
15 | public static SKColor Color(SKColor c, byte new_a)
16 | {
17 | return new SKColor(c.Red, c.Green, c.Blue, new_a);
18 | }
19 |
20 | public static SKColor Color(byte r, byte g, byte b, byte a = 255) {
21 | if ( Util.IsRunningOnMono() ) {
22 | return new SKColor(b, g, r, a);
23 | } else {
24 | return new SKColor(r, g, b, a);
25 | }
26 | }
27 |
28 |
29 | public static SKColor Blend(SKColor c0, SKColor c1, float t)
30 | {
31 | return new SKColor(
32 | (byte)MathUtil.Clamp(((1 - t) * c0.Red + (t) * c1.Red), 0, 255),
33 | (byte)MathUtil.Clamp(((1 - t) * c0.Green + (t) * c1.Green), 0, 255),
34 | (byte)MathUtil.Clamp(((1 - t) * c0.Blue + (t) * c1.Blue), 0, 255),
35 | (byte)MathUtil.Clamp(((1 - t) * c0.Alpha + (t) * c1.Alpha), 0, 255));
36 | }
37 |
38 |
39 | public static SKPath ToSKPath(GeneralPolygon2d g, Func mapF)
40 | {
41 | SKPath p = new SKPath();
42 |
43 | int N = g.Outer.VertexCount;
44 | p.MoveTo(mapF(g.Outer[0]));
45 | for (int i = 1; i < N; i++)
46 | p.LineTo(mapF(g.Outer[i]));
47 | p.Close();
48 |
49 | foreach (Polygon2d h in g.Holes) {
50 | int hN = h.VertexCount;
51 | p.MoveTo(mapF(h[0]));
52 | for (int i = 1; i < hN; ++i)
53 | p.LineTo(mapF(h[i]));
54 | p.Close();
55 | }
56 |
57 | return p;
58 | }
59 |
60 |
61 |
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/dlpView/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/dlpView/dlpViewer.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {27D42159-1910-4506-B62B-8A502084EAC1}
5 | WinExe
6 | v4.6
7 | DLPViewer
8 | true
9 | publish\
10 | true
11 | Disk
12 | false
13 | Foreground
14 | 7
15 | Days
16 | false
17 | false
18 | true
19 | 0
20 | 1.0.0.%2a
21 | false
22 | false
23 | true
24 |
25 |
26 | DLPViewer.MainClass
27 |
28 |
29 |
30 | true
31 | full
32 | false
33 | bin\Debug
34 | DEBUG;
35 | 4
36 | x86
37 |
38 |
39 | true
40 | bin\Release
41 | 4
42 | x86
43 |
44 |
45 | DLPViewer.MainClass
46 |
47 |
48 |
49 |
50 | ..\packages\SkiaSharp.1.60.2\lib\net45\SkiaSharp.dll
51 |
52 |
53 | ..\packages\SkiaSharp.Views.1.60.2\lib\net45\SkiaSharp.Views.Desktop.dll
54 |
55 |
56 | ..\packages\SkiaSharp.Views.1.60.2\lib\net45\SkiaSharp.Views.Gtk.dll
57 |
58 |
59 | ..\packages\SkiaSharp.Views.1.60.2\lib\net45\SkiaSharp.Views.WPF.dll
60 |
61 |
62 |
63 | False
64 |
65 |
66 | False
67 |
68 |
69 | False
70 |
71 |
72 | False
73 |
74 |
75 | False
76 |
77 |
78 | False
79 |
80 |
81 |
82 |
83 | ..\packages\Svg.2.3.0\lib\net35\Svg.dll
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | {6c2e415e-37d9-4c5a-8fd5-60b0133872cf}
99 | gsSlicer
100 |
101 |
102 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}
103 | geometry3Sharp
104 |
105 |
106 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}
107 | gsGCode
108 |
109 |
110 |
111 |
112 | False
113 | Microsoft .NET Framework 4.5.2 %28x86 and x64%29
114 | true
115 |
116 |
117 | False
118 | .NET Framework 3.5 SP1
119 | false
120 |
121 |
122 |
123 |
124 |
125 |
126 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
127 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/dlpView/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/gsSlicer.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27130.2027
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "geometry3Sharp", "geometry3Sharp\geometry3Sharp.csproj", "{0C518DDA-28FE-44CA-9AB0-F9773974F13A}"
7 | EndProject
8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{508067DB-D515-41DD-AD3D-02CBDDB20B82}"
9 | ProjectSection(SolutionItems) = preProject
10 | Performance1.psess = Performance1.psess
11 | EndProjectSection
12 | EndProject
13 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SliceViewer", "sliceViewGTK\SliceViewer.csproj", "{6348C5CD-6696-4B59-9851-43924A326BD4}"
14 | EndProject
15 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gsSlicer", "gsSlicer\gsSlicer.csproj", "{6C2E415E-37D9-4C5A-8FD5-60B0133872CF}"
16 | EndProject
17 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "gsGCode", "gsGCode\gsGCode.csproj", "{25DE77C9-14A4-4562-9A24-0BF1E612D9A9}"
18 | EndProject
19 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "clipper_library", "gsSlicer\thirdparty\clipper_library\clipper_library.csproj", "{9B062971-A88E-4A3D-B3C9-12B78D15FA66}"
20 | EndProject
21 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dlpViewer", "dlpView\dlpViewer.csproj", "{27D42159-1910-4506-B62B-8A502084EAC1}"
22 | EndProject
23 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeshToGCodeDemo", "MeshToGCodeDemo\MeshToGCodeDemo.csproj", "{33DA100D-8DC1-4AA1-97A0-792A1AB661AC}"
24 | EndProject
25 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GeneratedPathsDemo", "GeneratedPathsDemo\GeneratedPathsDemo.csproj", "{4EA4D31D-287A-4F62-AFC0-C8281A88EF35}"
26 | EndProject
27 | Global
28 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
29 | Debug|Any CPU = Debug|Any CPU
30 | Debug|x64 = Debug|x64
31 | Debug|x86 = Debug|x86
32 | Release|Any CPU = Release|Any CPU
33 | Release|x64 = Release|x64
34 | Release|x86 = Release|x86
35 | EndGlobalSection
36 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
37 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
38 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Debug|Any CPU.Build.0 = Debug|Any CPU
39 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Debug|x64.ActiveCfg = Debug|Any CPU
40 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Debug|x64.Build.0 = Debug|Any CPU
41 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Debug|x86.ActiveCfg = Debug|Any CPU
42 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Debug|x86.Build.0 = Debug|Any CPU
43 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Release|Any CPU.ActiveCfg = Release|Any CPU
44 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Release|Any CPU.Build.0 = Release|Any CPU
45 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Release|x64.ActiveCfg = Release|Any CPU
46 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Release|x64.Build.0 = Release|Any CPU
47 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Release|x86.ActiveCfg = Release|Any CPU
48 | {0C518DDA-28FE-44CA-9AB0-F9773974F13A}.Release|x86.Build.0 = Release|Any CPU
49 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Debug|Any CPU.ActiveCfg = Debug|x86
50 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Debug|Any CPU.Build.0 = Debug|x86
51 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Debug|x64.ActiveCfg = Debug|x86
52 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Debug|x64.Build.0 = Debug|x86
53 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Debug|x86.ActiveCfg = Debug|x86
54 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Debug|x86.Build.0 = Debug|x86
55 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Release|Any CPU.ActiveCfg = Release|x86
56 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Release|Any CPU.Build.0 = Release|x86
57 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Release|x64.ActiveCfg = Release|x86
58 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Release|x64.Build.0 = Release|x86
59 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Release|x86.ActiveCfg = Release|x86
60 | {6348C5CD-6696-4B59-9851-43924A326BD4}.Release|x86.Build.0 = Release|x86
61 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
62 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
63 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Debug|x64.ActiveCfg = Debug|Any CPU
64 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Debug|x64.Build.0 = Debug|Any CPU
65 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Debug|x86.ActiveCfg = Debug|Any CPU
66 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Debug|x86.Build.0 = Debug|Any CPU
67 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
68 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Release|Any CPU.Build.0 = Release|Any CPU
69 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Release|x64.ActiveCfg = Release|Any CPU
70 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Release|x64.Build.0 = Release|Any CPU
71 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Release|x86.ActiveCfg = Release|Any CPU
72 | {6C2E415E-37D9-4C5A-8FD5-60B0133872CF}.Release|x86.Build.0 = Release|Any CPU
73 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
74 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
75 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Debug|x64.ActiveCfg = Debug|Any CPU
76 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Debug|x64.Build.0 = Debug|Any CPU
77 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Debug|x86.ActiveCfg = Debug|Any CPU
78 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Debug|x86.Build.0 = Debug|Any CPU
79 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
80 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Release|Any CPU.Build.0 = Release|Any CPU
81 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Release|x64.ActiveCfg = Release|Any CPU
82 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Release|x64.Build.0 = Release|Any CPU
83 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Release|x86.ActiveCfg = Release|Any CPU
84 | {25DE77C9-14A4-4562-9A24-0BF1E612D9A9}.Release|x86.Build.0 = Release|Any CPU
85 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
86 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.Build.0 = Debug|Any CPU
87 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|x64.ActiveCfg = Debug|Any CPU
88 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|x64.Build.0 = Debug|Any CPU
89 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|x86.ActiveCfg = Debug|Any CPU
90 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|x86.Build.0 = Debug|Any CPU
91 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.ActiveCfg = Release|Any CPU
92 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.Build.0 = Release|Any CPU
93 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|x64.ActiveCfg = Release|Any CPU
94 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|x64.Build.0 = Release|Any CPU
95 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|x86.ActiveCfg = Release|Any CPU
96 | {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|x86.Build.0 = Release|Any CPU
97 | {27D42159-1910-4506-B62B-8A502084EAC1}.Debug|Any CPU.ActiveCfg = Debug|x86
98 | {27D42159-1910-4506-B62B-8A502084EAC1}.Debug|Any CPU.Build.0 = Debug|x86
99 | {27D42159-1910-4506-B62B-8A502084EAC1}.Debug|x64.ActiveCfg = Debug|x86
100 | {27D42159-1910-4506-B62B-8A502084EAC1}.Debug|x64.Build.0 = Debug|x86
101 | {27D42159-1910-4506-B62B-8A502084EAC1}.Debug|x86.ActiveCfg = Debug|x86
102 | {27D42159-1910-4506-B62B-8A502084EAC1}.Debug|x86.Build.0 = Debug|x86
103 | {27D42159-1910-4506-B62B-8A502084EAC1}.Release|Any CPU.ActiveCfg = Release|x86
104 | {27D42159-1910-4506-B62B-8A502084EAC1}.Release|Any CPU.Build.0 = Release|x86
105 | {27D42159-1910-4506-B62B-8A502084EAC1}.Release|x64.ActiveCfg = Release|x86
106 | {27D42159-1910-4506-B62B-8A502084EAC1}.Release|x64.Build.0 = Release|x86
107 | {27D42159-1910-4506-B62B-8A502084EAC1}.Release|x86.ActiveCfg = Release|x86
108 | {27D42159-1910-4506-B62B-8A502084EAC1}.Release|x86.Build.0 = Release|x86
109 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
110 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
111 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Debug|x64.ActiveCfg = Debug|Any CPU
112 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Debug|x64.Build.0 = Debug|Any CPU
113 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Debug|x86.ActiveCfg = Debug|Any CPU
114 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Debug|x86.Build.0 = Debug|Any CPU
115 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
116 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Release|Any CPU.Build.0 = Release|Any CPU
117 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Release|x64.ActiveCfg = Release|Any CPU
118 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Release|x64.Build.0 = Release|Any CPU
119 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Release|x86.ActiveCfg = Release|Any CPU
120 | {33DA100D-8DC1-4AA1-97A0-792A1AB661AC}.Release|x86.Build.0 = Release|Any CPU
121 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
122 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Debug|Any CPU.Build.0 = Debug|Any CPU
123 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Debug|x64.ActiveCfg = Debug|Any CPU
124 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Debug|x64.Build.0 = Debug|Any CPU
125 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Debug|x86.ActiveCfg = Debug|Any CPU
126 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Debug|x86.Build.0 = Debug|Any CPU
127 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Release|Any CPU.ActiveCfg = Release|Any CPU
128 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Release|Any CPU.Build.0 = Release|Any CPU
129 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Release|x64.ActiveCfg = Release|Any CPU
130 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Release|x64.Build.0 = Release|Any CPU
131 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Release|x86.ActiveCfg = Release|Any CPU
132 | {4EA4D31D-287A-4F62-AFC0-C8281A88EF35}.Release|x86.Build.0 = Release|Any CPU
133 | EndGlobalSection
134 | GlobalSection(SolutionProperties) = preSolution
135 | HideSolutionNode = FALSE
136 | EndGlobalSection
137 | GlobalSection(ExtensibilityGlobals) = postSolution
138 | SolutionGuid = {C5DB3B00-5C9B-4955-8934-8A51FA501820}
139 | EndGlobalSection
140 | GlobalSection(Performance) = preSolution
141 | HasPerformanceSessions = true
142 | EndGlobalSection
143 | GlobalSection(MonoDevelopProperties) = preSolution
144 | Policies = $0
145 | $0.DotNetNamingPolicy = $1
146 | $1.DirectoryNamespaceAssociation = PrefixedHierarchical
147 | EndGlobalSection
148 | EndGlobal
149 |
--------------------------------------------------------------------------------
/gsSlicerEXE/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/gsSlicerEXE/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("gsSlicer")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("gsSlicer")]
13 | [assembly: AssemblyCopyright("Copyright © gradientspace 2017")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("19b31e73-1328-4a5d-9922-32dfaccb84cd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/gsSlicerEXE/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace gsSlicer.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("gsSlicer.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/gsSlicerEXE/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/gsSlicerEXE/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace gsSlicer.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/gsSlicerEXE/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/gsSlicerEXE/SlicerMain.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using g3;
5 |
6 | namespace gsSlicer
7 | {
8 | static class SlicerMain
9 | {
10 |
11 | ///
12 | /// The main entry point for the application.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Polygon2d poly = new Polygon2d();
18 | poly.AppendVertex(new Vector2d(0, 0));
19 | poly.AppendVertex(new Vector2d(100, 0));
20 | poly.AppendVertex(new Vector2d(100, 100));
21 | poly.AppendVertex(new Vector2d(0, 1000));
22 |
23 |
24 |
25 |
26 | }
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/gsSlicerEXE/gsSlicerEXE.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {19B31E73-1328-4A5D-9922-32DFACCB84CD}
8 | Exe
9 | Properties
10 | gsSlicer
11 | gsSlicer
12 | v4.5.2
13 | 512
14 | true
15 | frame3Test.Program
16 | false
17 | publish\
18 | true
19 | Disk
20 | false
21 | Foreground
22 | 7
23 | Days
24 | false
25 | false
26 | true
27 | 0
28 | 1.0.0.%2a
29 | false
30 | true
31 |
32 |
33 | AnyCPU
34 | true
35 | full
36 | false
37 | bin\Debug\
38 | DEBUG;TRACE
39 | prompt
40 | 4
41 | false
42 |
43 |
44 | AnyCPU
45 | pdbonly
46 | true
47 | bin\Release\
48 | TRACE
49 | prompt
50 | 4
51 | false
52 |
53 |
54 | gsSlicer.SlicerMain
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | ResXFileCodeGenerator
74 | Resources.Designer.cs
75 | Designer
76 |
77 |
78 | True
79 | Resources.resx
80 | True
81 |
82 |
83 | SettingsSingleFileGenerator
84 | Settings.Designer.cs
85 |
86 |
87 | True
88 | Settings.settings
89 | True
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | {0c518dda-28fe-44ca-9ab0-f9773974f13a}
98 | geometry3Sharp
99 |
100 |
101 |
102 |
103 | False
104 | Microsoft .NET Framework 4.5.2 %28x86 and x64%29
105 | true
106 |
107 |
108 | False
109 | .NET Framework 3.5 SP1
110 | false
111 |
112 |
113 |
114 |
115 |
116 |
123 |
--------------------------------------------------------------------------------
/gsSlicerEXE/gsSlicerEXE.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | publish\
5 |
6 |
7 |
8 |
9 |
10 | en-US
11 | false
12 |
13 |
--------------------------------------------------------------------------------
/sample_files/Slim_Type1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gradientspace/gsSlicerApps/eaa54f1ce925da0ec58b193f35c675f9e61407d2/sample_files/Slim_Type1.stl
--------------------------------------------------------------------------------
/sample_files/basic_step.obj:
--------------------------------------------------------------------------------
1 | v 4.999995232 4.999995232 -2.910385266e-10
2 | vn 0 -6.123234263e-17 -1
3 | v -5.000000477 -5.000000477 -2.91037916e-10
4 | vn 0 -6.123234263e-17 -1
5 | v 4.999995232 -5.000000477 -2.91037916e-10
6 | vn 0 -6.123234263e-17 -1
7 | v -6.146773103e-06 9.999996185 -2.910388319e-10
8 | vn 0 0.2425355762 -0.9701424837
9 | v 9.999996185 -10.00000191 -2.910376107e-10
10 | vn 0.3123473227 -0.1561737806 -0.9370426536
11 | v -6.146773103e-06 -6.146773103e-06 -2.910382213e-10
12 | vn 0 -6.123234263e-17 -1
13 | v 9.999996185 -6.146773103e-06 -2.910382213e-10
14 | vn 0.242535606 -5.94040948e-17 -0.9701424837
15 | v -10.00000191 -10.00000191 -2.910376107e-10
16 | vn -0.156173721 -0.3123474419 -0.937042594
17 | v -10.00000191 -6.146773103e-06 -2.910382213e-10
18 | vn -0.2425356507 -5.94040948e-17 -0.9701424837
19 | v -6.14669716e-06 -6.14669716e-06 4.166666031
20 | vn 3.549873303e-27 1 -2.728488789e-11
21 | v -6.146773103e-06 -10.00000191 4.166666031
22 | vn 0 -1 -6.386209179e-07
23 | v -10.00000191 -6.14669716e-06 4.999999523
24 | vn -0.1622214913 0.1622214913 0.9733285308
25 | v -6.14669716e-06 -6.14669716e-06 4.999999523
26 | vn 4.700375831e-13 0.1240348667 0.9922778606
27 | v 9.999996185 -6.146773103e-06 1.666666627
28 | vn 1 0 0
29 | v -10.00000191 -10.00000191 1.666666627
30 | vn -0.7071067691 -0.7071067691 4.329780302e-17
31 | v -6.146773103e-06 9.999996185 1.666666627
32 | vn 0 1 -6.123234263e-17
33 | v -10.00000191 -10.00000191 3.333333015
34 | vn -0.8320503235 -0.5547001958 -4.649442928e-07
35 | v -6.146773103e-06 9.999996185 3.333333015
36 | vn 0 0.2425355911 0.9701424837
37 | v -6.146773103e-06 -10.00000191 3.333333015
38 | vn 0 -1 -2.793967724e-07
39 | v 4.999995232 -5.000000477 4.999999523
40 | vn 2.692644171e-24 3.104408819e-08 1
41 | v -10.00000191 -6.146773103e-06 4.166666031
42 | vn -0.7071067691 0.7071067691 -2.634498912e-07
43 | v 9.999996185 -10.00000191 4.166666031
44 | vn 0.8320501447 -0.5547004342 -3.099629282e-07
45 | v -6.146773103e-06 -10.00000191 5
46 | vn 0 -0.1240347326 0.9922778606
47 | v 9.999996185 -6.14669716e-06 4.999999523
48 | vn 0.1638464183 0.08192326128 0.983078301
49 | v 9.999996185 9.999996185 1.666666627
50 | vn 0.7071067691 0.7071067691 -4.329780302e-17
51 | v -6.146773103e-06 -10.00000191 1.666666627
52 | vn 0 -1 6.123234263e-17
53 | v -10.00000191 9.999996185 1.666666627
54 | vn -0.7071070075 0.7071065307 -4.329778978e-17
55 | v -5.000000477 4.999995232 3.333333015
56 | vn 0 6.123234263e-17 1
57 | v 9.999996185 9.999996185 3.333333015
58 | vn 0.3123474121 0.1561737061 0.937042594
59 | v 9.999996185 -6.146773103e-06 3.333333015
60 | vn 0.5025703907 0.07179580629 0.8615499735
61 | v -5.000000477 -5.000000477 4.999999523
62 | vn -2.692645749e-24 3.104408819e-08 1
63 | v -6.14669716e-06 -6.14669716e-06 3.333333015
64 | vn 7.294942591e-28 0.1643989682 0.9863939285
65 | v -5.000000477 4.999995232 -2.910385266e-10
66 | vn 0 -6.123234263e-17 -1
67 | v 9.999996185 9.999996185 -2.910388319e-10
68 | vn 0.156173721 0.3123474419 -0.937042594
69 | v -10.00000191 9.999996185 -2.910388319e-10
70 | vn -0.3123475313 0.1561736614 -0.937042594
71 | v -6.146773103e-06 -10.00000191 -2.910376107e-10
72 | vn 0 -0.2425356954 -0.9701424837
73 | v 9.999996185 -6.146773103e-06 4.166666031
74 | vn 0.5999997258 0.8000001907 -2.728489309e-11
75 | v -10.00000191 -10.00000191 4.166666031
76 | vn -0.7071067691 -0.7071067691 -5.268354357e-07
77 | v -10.00000191 -10.00000191 5
78 | vn -0.08276055753 -0.08276052028 0.993127048
79 | v 9.999996185 -10.00000191 5
80 | vn 0.08192314208 -0.1638463736 0.983078301
81 | v 9.999996185 -10.00000191 1.666666627
82 | vn 0.7071065307 -0.7071070671 4.329781956e-17
83 | v -10.00000191 -6.146773103e-06 1.666666627
84 | vn -1 0 0
85 | v 4.999995232 4.999995232 3.333333015
86 | vn 0 6.123234263e-17 1
87 | v 9.999996185 -10.00000191 3.333333015
88 | vn 0.5546999574 -0.8320504427 -3.099629282e-07
89 | v -10.00000191 9.999996185 3.333333015
90 | vn -0.1561737508 0.3123472929 0.9370426536
91 | v -10.00000191 -6.146773103e-06 3.333333015
92 | vn -0.5025705695 0.07179576904 0.8615498543
93 | # mm_gid 0
94 | g mmGroup0
95 | f 6//6 4//4 1//1
96 | f 1//1 34//34 7//7
97 | f 6//6 1//1 7//7
98 | f 9//9 35//35 33//33
99 | f 33//33 4//4 6//6
100 | f 9//9 33//33 6//6
101 | f 36//36 6//6 3//3
102 | f 3//3 7//7 5//5
103 | f 36//36 3//3 5//5
104 | f 8//8 9//9 2//2
105 | f 2//2 6//6 36//36
106 | f 8//8 2//2 36//36
107 | f 4//4 34//34 1//1
108 | f 35//35 4//4 33//33
109 | f 6//6 7//7 3//3
110 | f 9//9 6//6 2//2
111 | # mm_gid 2
112 | g mmGroup2
113 | f 38//38 39//39 12//12
114 | f 38//38 12//12 21//21
115 | f 10//10 12//12 13//13
116 | f 10//10 21//21 12//12
117 | f 37//37 13//13 24//24
118 | f 37//37 10//10 13//13
119 | f 22//22 24//24 40//40
120 | f 22//22 37//37 24//24
121 | f 11//11 40//40 23//23
122 | f 11//11 22//22 40//40
123 | f 38//38 23//23 39//39
124 | f 38//38 11//11 23//23
125 | f 17//17 38//38 21//21
126 | f 17//17 21//21 46//46
127 | f 32//32 21//21 10//10
128 | f 32//32 46//46 21//21
129 | f 32//32 10//10 37//37
130 | f 32//32 37//37 30//30
131 | f 44//44 37//37 22//22
132 | f 44//44 30//30 37//37
133 | f 44//44 22//22 11//11
134 | f 44//44 11//11 19//19
135 | f 17//17 11//11 38//38
136 | f 17//17 19//19 11//11
137 | f 25//25 18//18 29//29
138 | f 25//25 16//16 18//18
139 | f 12//12 31//31 13//13
140 | f 14//14 25//25 29//29
141 | f 13//13 20//20 24//24
142 | f 39//39 23//23 31//31
143 | f 31//31 23//23 13//13
144 | f 39//39 31//31 12//12
145 | f 23//23 40//40 20//20
146 | f 20//20 40//40 24//24
147 | f 23//23 20//20 13//13
148 | f 46//46 32//32 28//28
149 | f 28//28 32//32 18//18
150 | f 46//46 28//28 45//45
151 | f 16//16 45//45 18//18
152 | f 16//16 27//27 45//45
153 | f 34//34 16//16 25//25
154 | f 34//34 4//4 16//16
155 | f 7//7 25//25 14//14
156 | f 7//7 34//34 25//25
157 | f 5//5 14//14 41//41
158 | f 5//5 7//7 14//14
159 | f 36//36 41//41 26//26
160 | f 36//36 5//5 41//41
161 | f 8//8 26//26 15//15
162 | f 8//8 36//36 26//26
163 | f 9//9 15//15 42//42
164 | f 9//9 8//8 15//15
165 | f 35//35 42//42 27//27
166 | f 35//35 9//9 42//42
167 | f 4//4 27//27 16//16
168 | f 4//4 35//35 27//27
169 | f 32//32 30//30 43//43
170 | f 43//43 30//30 29//29
171 | f 32//32 43//43 18//18
172 | f 27//27 42//42 46//46
173 | f 27//27 46//46 45//45
174 | f 42//42 15//15 17//17
175 | f 42//42 17//17 46//46
176 | f 15//15 26//26 19//19
177 | f 15//15 19//19 17//17
178 | f 26//26 41//41 44//44
179 | f 26//26 44//44 19//19
180 | f 41//41 14//14 30//30
181 | f 18//18 43//43 29//29
182 | f 45//45 28//28 18//18
183 | f 41//41 30//30 44//44
184 | f 14//14 29//29 30//30
185 |
--------------------------------------------------------------------------------
/sample_files/disc_single_layer.gcode:
--------------------------------------------------------------------------------
1 | M136 (enable build)
2 | M73 P0
3 | G162 X Y F2000(home XY axes maximum)
4 | G161 Z F900(home Z axis minimum)
5 | G92 X0 Y0 Z-5 A0 B0 (set Z to -5)
6 | G1 Z0.0 F900(move Z to '0')
7 | G161 Z F100(home Z axis minimum)
8 | M132 X Y Z A B (Recall stored home offsets for XYZAB axis)
9 | G92 X152 Y75 Z0 A0 B0
10 | G1 X-141 Y-74 Z40 F3300.0 (move to waiting position)
11 | G130 X20 Y20 A20 B20 (Lower stepper Vrefs while heating)
12 | M135 T0
13 | M104 S210 T0
14 | M133 T0
15 | G130 X127 Y127 A127 B127 (Set Stepper motor Vref to defaults)
16 | ; Makerbot Industries
17 | ; Miracle Grue 3.9.4
18 | ; This file contains digital fabrication directives
19 | ; in G-Code format for your 3D printer
20 | ; http://www.makerbot.com/support/makerware/documentation/slicer/
21 | ;
22 | ; Right Toolhead Weight (grams): 0.187216
23 | ; Right Toolhead Distance (mm): 61.3601
24 | ; Duration: 103.453 seconds
25 | ; Active extruders in print: 0
26 | ; Chunk 0
27 | ; Lower Position 0
28 | ; Upper Position 0.2
29 | ; Thickness 0.2
30 | ; Width 0.4
31 | G1 X105.400 Y-74.000 Z0.270 F9000.000 (Extruder Prime Dry Move)
32 | G1 X-141 Y-74 Z0.270 F1800.000 E25.000 (Extruder Prime Start)
33 | G92 A0 B0 (Reset after prime)
34 | G1 Z0.000000 F1000
35 | G1 X-141.0 Y-74.0 Z0.0 F1000 E0.0
36 | G92 E0
37 | G1 X-141.000 Y-74.000 Z0.000 F1500 A-1.30000; Retract
38 | G1 X-141.000 Y-74.000 Z0.000 F3000; Retract
39 | G1 X-141.000 Y-74.000 Z0.200 F1380; Travel Move
40 | M73 P0; Update Progress
41 | G1 X-7.198 Y-12.470 Z0.200 F9000; Travel Move
42 | M73 P1; Update Progress
43 | G1 X-7.198 Y-12.470 Z0.200 F1500 A0.00000; Restart
44 | G1 X-9.633 Y-10.701 Z0.200 F1800 A0.10522; Inset
45 | G1 X-11.647 Y-8.463 Z0.200 F1800 A0.21045; Inset
46 | G1 X-13.152 Y-5.857 Z0.200 F1800 A0.31568; Inset
47 | M73 P2; Update Progress
48 | G1 X-14.082 Y-2.994 Z0.200 F1800 A0.42092; Inset
49 | G1 X-14.397 Y0.000 Z0.200 F1800 A0.52616; Inset
50 | G1 X-14.082 Y2.994 Z0.200 F1800 A0.63139; Inset
51 | G1 X-13.152 Y5.857 Z0.200 F1800 A0.73663; Inset
52 | G1 X-11.647 Y8.463 Z0.200 F1800 A0.84186; Inset
53 | G1 X-9.633 Y10.701 Z0.200 F1800 A0.94709; Inset
54 | M73 P3; Update Progress
55 | G1 X-7.198 Y12.470 Z0.200 F1800 A1.05231; Inset
56 | G1 X-4.449 Y13.694 Z0.200 F1800 A1.15754; Inset
57 | G1 X-1.505 Y14.320 Z0.200 F1800 A1.26276; Inset
58 | G1 X1.505 Y14.320 Z0.200 F1800 A1.36798; Inset
59 | G1 X4.449 Y13.694 Z0.200 F1800 A1.47319; Inset
60 | G1 X7.198 Y12.470 Z0.200 F1800 A1.57842; Inset
61 | M73 P4; Update Progress
62 | G1 X9.633 Y10.701 Z0.200 F1800 A1.68364; Inset
63 | G1 X11.647 Y8.463 Z0.200 F1800 A1.78887; Inset
64 | G1 X13.152 Y5.857 Z0.200 F1800 A1.89410; Inset
65 | G1 X14.082 Y2.994 Z0.200 F1800 A1.99934; Inset
66 | G1 X14.397 Y0.000 Z0.200 F1800 A2.10458; Inset
67 | G1 X14.082 Y-2.994 Z0.200 F1800 A2.20981; Inset
68 | M73 P5; Update Progress
69 | G1 X13.152 Y-5.857 Z0.200 F1800 A2.31505; Inset
70 | G1 X11.647 Y-8.463 Z0.200 F1800 A2.42028; Inset
71 | G1 X9.633 Y-10.701 Z0.200 F1800 A2.52551; Inset
72 | G1 X7.198 Y-12.470 Z0.200 F1800 A2.63073; Inset
73 | G1 X4.449 Y-13.694 Z0.200 F1800 A2.73596; Inset
74 | G1 X1.505 Y-14.320 Z0.200 F1800 A2.84118; Inset
75 | M73 P6; Update Progress
76 | G1 X-1.505 Y-14.320 Z0.200 F1800 A2.94640; Inset
77 | G1 X-4.449 Y-13.694 Z0.200 F1800 A3.05161; Inset
78 | G1 X-7.198 Y-12.470 Z0.200 F1800 A3.15684; Inset
79 | G1 X-7.198 Y-12.470 Z0.200 F1500 A1.85684; Retract
80 | G1 X-7.198 Y-12.470 Z0.200 F3000; Retract
81 | G1 X-7.399 Y-12.818 Z0.200 F9000; Travel Move
82 | G1 X-7.399 Y-12.818 Z0.200 F1500 A3.15684; Restart
83 | G1 X-9.902 Y-10.999 Z0.200 F1800 A3.26501; Inset
84 | G1 X-11.973 Y-8.700 Z0.200 F1800 A3.37317; Inset
85 | G1 X-13.519 Y-6.020 Z0.200 F1800 A3.48135; Inset
86 | M73 P7; Update Progress
87 | G1 X-14.475 Y-3.077 Z0.200 F1800 A3.58952; Inset
88 | G1 X-14.799 Y0.000 Z0.200 F1800 A3.69769; Inset
89 | G1 X-14.475 Y3.077 Z0.200 F1800 A3.80587; Inset
90 | G1 X-13.519 Y6.020 Z0.200 F1800 A3.91404; Inset
91 | G1 X-11.973 Y8.700 Z0.200 F1800 A4.02222; Inset
92 | G1 X-9.902 Y10.999 Z0.200 F1800 A4.13038; Inset
93 | M73 P8; Update Progress
94 | G1 X-7.399 Y12.818 Z0.200 F1800 A4.23855; Inset
95 | G1 X-4.573 Y14.077 Z0.200 F1800 A4.34671; Inset
96 | G1 X-1.547 Y14.720 Z0.200 F1800 A4.45487; Inset
97 | G1 X1.547 Y14.720 Z0.200 F1800 A4.56303; Inset
98 | G1 X4.573 Y14.077 Z0.200 F1800 A4.67119; Inset
99 | G1 X7.399 Y12.818 Z0.200 F1800 A4.77935; Inset
100 | M73 P9; Update Progress
101 | G1 X9.902 Y10.999 Z0.200 F1800 A4.88752; Inset
102 | G1 X11.973 Y8.700 Z0.200 F1800 A4.99569; Inset
103 | G1 X13.519 Y6.020 Z0.200 F1800 A5.10386; Inset
104 | G1 X14.475 Y3.077 Z0.200 F1800 A5.21203; Inset
105 | G1 X14.799 Y0.000 Z0.200 F1800 A5.32021; Inset
106 | G1 X14.475 Y-3.077 Z0.200 F1800 A5.42838; Inset
107 | M73 P10; Update Progress
108 | G1 X13.519 Y-6.020 Z0.200 F1800 A5.53656; Inset
109 | G1 X11.973 Y-8.700 Z0.200 F1800 A5.64473; Inset
110 | G1 X9.902 Y-10.999 Z0.200 F1800 A5.75290; Inset
111 | G1 X7.399 Y-12.818 Z0.200 F1800 A5.86106; Inset
112 | G1 X4.573 Y-14.077 Z0.200 F1800 A5.96923; Inset
113 | G1 X1.547 Y-14.720 Z0.200 F1800 A6.07738; Inset
114 | M73 P11; Update Progress
115 | G1 X-1.547 Y-14.720 Z0.200 F1800 A6.18554; Inset
116 | G1 X-4.573 Y-14.077 Z0.200 F1800 A6.29370; Inset
117 | G1 X-7.399 Y-12.818 Z0.200 F1800 A6.40186; Inset
118 | G1 X-7.399 Y-12.818 Z0.200 F1500 A5.10186; Retract
119 | G1 X-7.399 Y-12.818 Z0.200 F3000; Retract
120 | G1 X-6.919 Y-12.281 Z0.200 F9000; Travel Move
121 | G1 X-6.919 Y-12.281 Z0.200 F1500 A6.40186; Restart
122 | G1 X12.235 Y6.873 Z0.200 F1800 A7.34887; Infill
123 | M73 P13; Update Progress
124 | G1 X12.440 Y6.518 Z0.200 F1800 A7.36320; Connection
125 | G1 X-6.532 Y-12.454 Z0.200 F1800 A8.30118; Infill
126 | M73 P14; Update Progress
127 | G1 X-6.144 Y-12.626 Z0.200 F1800 A8.31601; Connection
128 | G1 X12.645 Y6.163 Z0.200 F1800 A9.24496; Infill
129 | M73 P16; Update Progress
130 | G1 X12.850 Y5.808 Z0.200 F1800 A9.25929; Connection
131 | G1 X-5.757 Y-12.799 Z0.200 F1800 A10.17922; Infill
132 | M73 P17; Update Progress
133 | G1 X-5.369 Y-12.971 Z0.200 F1800 A10.19405; Connection
134 | G1 X13.000 Y5.398 Z0.200 F1800 A11.10225; Infill
135 | M73 P19; Update Progress
136 | G1 X13.137 Y4.976 Z0.200 F1800 A11.11779; Connection
137 | G1 X-4.982 Y-13.144 Z0.200 F1800 A12.01363; Infill
138 | M73 P20; Update Progress
139 | G1 X-4.594 Y-13.316 Z0.200 F1800 A12.02846; Connection
140 | G1 X13.275 Y4.553 Z0.200 F1800 A12.91192; Infill
141 | M73 P21; Update Progress
142 | G1 X13.412 Y4.130 Z0.200 F1800 A12.92746; Connection
143 | G1 X-4.178 Y-13.459 Z0.200 F1800 A13.79711; Infill
144 | M73 P23; Update Progress
145 | G1 X-3.716 Y-13.558 Z0.200 F1800 A13.81362; Connection
146 | G1 X13.549 Y3.708 Z0.200 F1800 A14.66722; Infill
147 | M73 P24; Update Progress
148 | G1 X13.687 Y3.285 Z0.200 F1800 A14.68276; Connection
149 | G1 X-3.254 Y-13.656 Z0.200 F1800 A15.52031; Infill
150 | M73 P25; Update Progress
151 | G1 X-2.792 Y-13.754 Z0.200 F1800 A15.53682; Connection
152 | G1 X13.810 Y2.848 Z0.200 F1800 A16.35763; Infill
153 | M73 P27; Update Progress
154 | G1 X13.863 Y2.341 Z0.200 F1800 A16.37544; Connection
155 | G1 X-2.330 Y-13.852 Z0.200 F1800 A17.17605; Infill
156 | M73 P28; Update Progress
157 | G1 X-1.868 Y-13.950 Z0.200 F1800 A17.19255; Connection
158 | G1 X13.916 Y1.834 Z0.200 F1800 A17.97296; Infill
159 | M73 P29; Update Progress
160 | G1 X13.970 Y1.328 Z0.200 F1800 A17.99077; Connection
161 | G1 X-1.392 Y-14.034 Z0.200 F1800 A18.75026; Infill
162 | M73 P31; Update Progress
163 | G1 X-0.832 Y-14.034 Z0.200 F1800 A18.76984; Connection
164 | G1 X14.023 Y0.821 Z0.200 F1800 A19.50427; Infill
165 | M73 P32; Update Progress
166 | G1 X14.076 Y0.314 Z0.200 F1800 A19.52208; Connection
167 | G1 X-0.272 Y-14.034 Z0.200 F1800 A20.23146; Infill
168 | M73 P33; Update Progress
169 | G1 X0.288 Y-14.034 Z0.200 F1800 A20.25104; Connection
170 | G1 X14.084 Y-0.238 Z0.200 F1800 A20.93312; Infill
171 | M73 P34; Update Progress
172 | G1 X14.018 Y-0.864 Z0.200 F1800 A20.95512; Connection
173 | G1 X0.848 Y-14.034 Z0.200 F1800 A21.60626; Infill
174 | M73 P35; Update Progress
175 | G1 X1.408 Y-14.034 Z0.200 F1800 A21.62584; Connection
176 | G1 X13.953 Y-1.490 Z0.200 F1800 A22.24604; Infill
177 | M73 P36; Update Progress
178 | G1 X13.887 Y-2.115 Z0.200 F1800 A22.26804; Connection
179 | G1 X2.101 Y-13.901 Z0.200 F1800 A22.85071; Infill
180 | M73 P37; Update Progress
181 | G1 X2.813 Y-13.750 Z0.200 F1800 A22.87613; Connection
182 | G1 X13.821 Y-2.741 Z0.200 F1800 A23.42039; Infill
183 | M73 P38; Update Progress
184 | G1 X13.614 Y-3.508 Z0.200 F1800 A23.44816; Connection
185 | G1 X3.524 Y-13.598 Z0.200 F1800 A23.94703; Infill
186 | M73 P39; Update Progress
187 | G1 X4.235 Y-13.447 Z0.200 F1800 A23.97245; Connection
188 | G1 X13.345 Y-4.338 Z0.200 F1800 A24.42284; Infill
189 | G1 X13.075 Y-5.167 Z0.200 F1800 A24.45333; Connection
190 | G1 X5.192 Y-13.050 Z0.200 F1800 A24.84307; Infill
191 | M73 P40; Update Progress
192 | G1 X6.202 Y-12.600 Z0.200 F1800 A24.88170; Connection
193 | G1 X12.652 Y-6.150 Z0.200 F1800 A25.20062; Infill
194 | M73 P41; Update Progress
195 | G1 X11.888 Y-7.475 Z0.200 F1800 A25.25410; Connection
196 | G1 X7.373 Y-11.989 Z0.200 F1800 A25.47731; Infill
197 | G1 X9.422 Y-10.501 Z0.200 F1800 A25.56584; Connection
198 | G1 X9.488 Y-10.435 Z0.200 F1800 A25.56910; Infill
199 | G1 X9.488 Y-10.435 Z0.200 F1500 A24.26910; Retract
200 | G1 X9.488 Y-10.435 Z0.200 F3000; Retract
201 | G1 X-7.266 Y-12.067 Z0.200 F9000; Travel Move
202 | G1 X-7.266 Y-12.067 Z0.200 F1500 A25.56910; Restart
203 | G1 X12.030 Y7.228 Z0.200 F1800 A26.52309; Infill
204 | M73 P43; Update Progress
205 | G1 X11.825 Y7.583 Z0.200 F1800 A26.53742; Connection
206 | G1 X-7.590 Y-11.832 Z0.200 F1800 A27.49732; Infill
207 | M73 P44; Update Progress
208 | G1 X-7.914 Y-11.596 Z0.200 F1800 A27.51134; Connection
209 | G1 X11.620 Y7.938 Z0.200 F1800 A28.47713; Infill
210 | M73 P46; Update Progress
211 | G1 X11.415 Y8.294 Z0.200 F1800 A28.49147; Connection
212 | G1 X-8.239 Y-11.360 Z0.200 F1800 A29.46317; Infill
213 | M73 P47; Update Progress
214 | G1 X-8.563 Y-11.125 Z0.200 F1800 A29.47718; Connection
215 | M73 P48; Update Progress
216 | G1 X11.150 Y8.588 Z0.200 F1800 A30.45181; Infill
217 | M73 P49; Update Progress
218 | G1 X10.885 Y8.883 Z0.200 F1800 A30.46567; Connection
219 | G1 X-8.887 Y-10.889 Z0.200 F1800 A31.44322; Infill
220 | M73 P51; Update Progress
221 | G1 X-9.212 Y-10.653 Z0.200 F1800 A31.45723; Connection
222 | G1 X10.619 Y9.178 Z0.200 F1800 A32.43770; Infill
223 | M73 P52; Update Progress
224 | G1 X10.354 Y9.472 Z0.200 F1800 A32.45156; Connection
225 | G1 X-9.519 Y-10.400 Z0.200 F1800 A33.43408; Infill
226 | M73 P54; Update Progress
227 | G1 X-9.784 Y-10.106 Z0.200 F1800 A33.44795; Connection
228 | G1 X10.089 Y9.767 Z0.200 F1800 A34.43047; Infill
229 | M73 P55; Update Progress
230 | G1 X9.823 Y10.062 Z0.200 F1800 A34.44433; Connection
231 | G1 X-10.049 Y-9.811 Z0.200 F1800 A35.42686; Infill
232 | M73 P57; Update Progress
233 | G1 X-10.315 Y-9.516 Z0.200 F1800 A35.44072; Connection
234 | G1 X9.558 Y10.357 Z0.200 F1800 A36.42325; Infill
235 | M73 P58; Update Progress
236 | G1 X9.260 Y10.618 Z0.200 F1800 A36.43712; Connection
237 | G1 X-10.580 Y-9.221 Z0.200 F1800 A37.41801; Infill
238 | M73 P60; Update Progress
239 | G1 X-10.845 Y-8.927 Z0.200 F1800 A37.43188; Connection
240 | G1 X8.935 Y10.854 Z0.200 F1800 A38.40985; Infill
241 | M73 P62; Update Progress
242 | G1 X8.611 Y11.090 Z0.200 F1800 A38.42387; Connection
243 | G1 X-11.111 Y-8.632 Z0.200 F1800 A39.39893; Infill
244 | M73 P63; Update Progress
245 | G1 X-11.376 Y-8.337 Z0.200 F1800 A39.41279; Connection
246 | G1 X8.287 Y11.325 Z0.200 F1800 A40.38493; Infill
247 | M73 P65; Update Progress
248 | G1 X7.962 Y11.561 Z0.200 F1800 A40.39895; Connection
249 | G1 X-11.590 Y-7.991 Z0.200 F1800 A41.36562; Infill
250 | M73 P66; Update Progress
251 | G1 X-11.795 Y-7.636 Z0.200 F1800 A41.37995; Connection
252 | G1 X7.638 Y11.797 Z0.200 F1800 A42.34072; Infill
253 | M73 P68; Update Progress
254 | G1 X7.314 Y12.032 Z0.200 F1800 A42.35474; Connection
255 | G1 X-12.000 Y-7.281 Z0.200 F1800 A43.30960; Infill
256 | M73 P69; Update Progress
257 | G1 X-12.205 Y-6.926 Z0.200 F1800 A43.32394; Connection
258 | G1 X6.977 Y12.255 Z0.200 F1800 A44.27227; Infill
259 | M73 P71; Update Progress
260 | G1 X6.589 Y12.428 Z0.200 F1800 A44.28710; Connection
261 | G1 X-12.410 Y-6.571 Z0.200 F1800 A45.22641; Infill
262 | M73 P72; Update Progress
263 | G1 X-12.615 Y-6.216 Z0.200 F1800 A45.24075; Connection
264 | G1 X6.202 Y12.601 Z0.200 F1800 A46.17103; Infill
265 | M73 P74; Update Progress
266 | G1 X5.814 Y12.773 Z0.200 F1800 A46.18586; Connection
267 | G1 X-12.819 Y-5.861 Z0.200 F1800 A47.10713; Infill
268 | M73 P75; Update Progress
269 | G1 X-12.980 Y-5.461 Z0.200 F1800 A47.12218; Connection
270 | G1 X5.427 Y12.946 Z0.200 F1800 A48.03222; Infill
271 | M73 P77; Update Progress
272 | G1 X5.039 Y13.118 Z0.200 F1800 A48.04704; Connection
273 | G1 X-13.117 Y-5.038 Z0.200 F1800 A48.94471; Infill
274 | M73 P78; Update Progress
275 | G1 X-13.255 Y-4.615 Z0.200 F1800 A48.96025; Connection
276 | G1 X4.652 Y13.291 Z0.200 F1800 A49.84555; Infill
277 | M73 P79; Update Progress
278 | G1 X4.246 Y13.445 Z0.200 F1800 A49.86072; Connection
279 | G1 X-13.392 Y-4.193 Z0.200 F1800 A50.73274; Infill
280 | M73 P81; Update Progress
281 | G1 X-13.529 Y-3.770 Z0.200 F1800 A50.74828; Connection
282 | G1 X3.784 Y13.543 Z0.200 F1800 A51.60426; Infill
283 | M73 P82; Update Progress
284 | G1 X3.322 Y13.641 Z0.200 F1800 A51.62076; Connection
285 | G1 X-13.666 Y-3.347 Z0.200 F1800 A52.46070; Infill
286 | M73 P84; Update Progress
287 | G1 X-13.802 Y-2.923 Z0.200 F1800 A52.47628; Connection
288 | G1 X2.860 Y13.739 Z0.200 F1800 A53.30007; Infill
289 | M73 P85; Update Progress
290 | G1 X2.398 Y13.838 Z0.200 F1800 A53.31658; Connection
291 | G1 X-13.855 Y-2.416 Z0.200 F1800 A54.12017; Infill
292 | M73 P86; Update Progress
293 | G1 X-13.908 Y-1.909 Z0.200 F1800 A54.13799; Connection
294 | G1 X1.937 Y13.936 Z0.200 F1800 A54.92138; Infill
295 | M73 P87; Update Progress
296 | G1 X1.475 Y14.034 Z0.200 F1800 A54.93789; Connection
297 | G1 X-13.962 Y-1.402 Z0.200 F1800 A55.70108; Infill
298 | M73 P89; Update Progress
299 | G1 X-14.015 Y-0.896 Z0.200 F1800 A55.71889; Connection
300 | G1 X0.915 Y14.034 Z0.200 F1800 A56.45703; Infill
301 | M73 P90; Update Progress
302 | G1 X0.355 Y14.034 Z0.200 F1800 A56.47661; Connection
303 | G1 X-14.068 Y-0.389 Z0.200 F1800 A57.18969; Infill
304 | M73 P91; Update Progress
305 | G1 X-14.094 Y0.145 Z0.200 F1800 A57.20839; Connection
306 | G1 X-0.205 Y14.034 Z0.200 F1800 A57.89505; Infill
307 | M73 P92; Update Progress
308 | G1 X-0.765 Y14.034 Z0.200 F1800 A57.91463; Connection
309 | G1 X-14.028 Y0.771 Z0.200 F1800 A58.57035; Infill
310 | M73 P93; Update Progress
311 | G1 X-13.962 Y1.397 Z0.200 F1800 A58.59235; Connection
312 | G1 X-1.325 Y14.034 Z0.200 F1800 A59.21713; Infill
313 | M73 P94; Update Progress
314 | G1 X-1.996 Y13.923 Z0.200 F1800 A59.24090; Connection
315 | G1 X-13.897 Y2.023 Z0.200 F1800 A59.82926; Infill
316 | M73 P95; Update Progress
317 | G1 X-13.831 Y2.649 Z0.200 F1800 A59.85125; Connection
318 | G1 X-2.708 Y13.772 Z0.200 F1800 A60.40120; Infill
319 | M73 P96; Update Progress
320 | G1 X-3.419 Y13.621 Z0.200 F1800 A60.42662; Connection
321 | G1 X-13.654 Y3.385 Z0.200 F1800 A60.93267; Infill
322 | M73 P97; Update Progress
323 | G1 X-13.385 Y4.215 Z0.200 F1800 A60.96316; Connection
324 | G1 X-4.130 Y13.470 Z0.200 F1800 A61.42072; Infill
325 | M73 P98; Update Progress
326 | G1 X-5.043 Y13.116 Z0.200 F1800 A61.45494; Connection
327 | G1 X-13.115 Y5.044 Z0.200 F1800 A61.85403; Infill
328 | G1 X-12.766 Y5.954 Z0.200 F1800 A61.88810; Connection
329 | G1 X-6.053 Y12.667 Z0.200 F1800 A62.22000; Infill
330 | M73 P99; Update Progress
331 | G1 X-7.070 Y12.210 Z0.200 F1800 A62.25900; Connection
332 | G1 X-12.001 Y7.279 Z0.200 F1800 A62.50278; Infill
333 | G1 X-10.235 Y9.604 Z0.200 F1800 A62.60486; Connection
334 | G1 X-9.119 Y10.721 Z0.200 F1800 A62.66007; Infill
335 | M73 P100; Update Progress
336 | ; End of print
337 | G1 X-9.119 Y10.721 Z0.200 F1500 A61.36007; Retract
338 | M127 T0 (Fan Off)
339 | M18 A B(Turn off A and B Steppers)
340 | G1 Z155 F900
341 | G162 X Y F2000
342 | M18 X Y Z(Turn off steppers after a build)
343 | M104 S0 T0
344 | M70 P5 (We <3 Making Things!)
345 | M72 P1 ( Play Ta-Da song )
346 | M73 P100
347 | M137 (build end notification)
348 |
--------------------------------------------------------------------------------
/sample_files/radial_fins.mix:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gradientspace/gsSlicerApps/eaa54f1ce925da0ec58b193f35c675f9e61407d2/sample_files/radial_fins.mix
--------------------------------------------------------------------------------
/sample_files/square_linearfill.gcode:
--------------------------------------------------------------------------------
1 | M136 (enable build)
2 | M73 P0
3 | G162 X Y F2000(home XY axes maximum)
4 | G161 Z F900(home Z axis minimum)
5 | G92 X0 Y0 Z-5 A0 B0 (set Z to -5)
6 | G1 Z0.0 F900(move Z to '0')
7 | G161 Z F100(home Z axis minimum)
8 | M132 X Y Z A B (Recall stored home offsets for XYZAB axis)
9 | G92 X152 Y75 Z0 A0 B0
10 | G1 X-141 Y-74 Z40 F3300.0 (move to waiting position)
11 | G130 X20 Y20 A20 B20 (Lower stepper Vrefs while heating)
12 | M135 T0
13 | M104 S230 T0
14 | M133 T0
15 | G130 X127 Y127 A127 B127 (Set Stepper motor Vref to defaults)
16 | ; Makerbot Industries
17 | ; Miracle Grue 3.9.4
18 | ; This file contains digital fabrication directives
19 | ; in G-Code format for your 3D printer
20 | ; http://www.makerbot.com/support/makerware/documentation/slicer/
21 | ;
22 | ; Right Toolhead Weight (grams): 0.103757
23 | ; Right Toolhead Distance (mm): 34.0062
24 | ; Duration: 58.9226 seconds
25 | ; Active extruders in print: 0
26 | ; Chunk 0
27 | ; Lower Position 0
28 | ; Upper Position 0.2
29 | ; Thickness 0.2
30 | ; Width 0.4
31 | G1 X105.400 Y-74.000 Z0.270 F9000.000 (Extruder Prime Dry Move)
32 | G1 X-141 Y-74 Z0.270 F1800.000 E25.000 (Extruder Prime Start)
33 | G92 A0 B0 (Reset after prime)
34 | G1 Z0.000000 F1000
35 | G1 X-141.0 Y-74.0 Z0.0 F1000 E0.0
36 | G92 E0
37 | G1 X-141.000 Y-74.000 Z0.000 F1500 A-1.30000; Retract
38 | G1 X-141.000 Y-74.000 Z0.000 F3000; Retract
39 | G1 X-141.000 Y-74.000 Z0.200 F1380; Travel Move
40 | M73 P0; Update Progress
41 | G1 X-9.400 Y-9.400 Z0.200 F9000; Travel Move
42 | M73 P2; Update Progress
43 | G1 X-9.400 Y-9.400 Z0.200 F1500 A0.00000; Restart
44 | G1 X-9.400 Y9.400 Z0.200 F1800 A0.65725; Inset
45 | M73 P4; Update Progress
46 | G1 X9.400 Y9.400 Z0.200 F1800 A1.31449; Inset
47 | M73 P6; Update Progress
48 | G1 X9.400 Y-9.400 Z0.200 F1800 A1.97174; Inset
49 | M73 P8; Update Progress
50 | G1 X-9.400 Y-9.400 Z0.200 F1800 A2.62898; Inset
51 | M73 P10; Update Progress
52 | G1 X-9.400 Y-9.400 Z0.200 F1500 A1.32898; Retract
53 | G1 X-9.400 Y-9.400 Z0.200 F3000; Retract
54 | G1 X-9.800 Y-9.800 Z0.200 F9000; Travel Move
55 | G1 X-9.800 Y-9.800 Z0.200 F1500 A2.62898; Restart
56 | G1 X-9.800 Y9.800 Z0.200 F1800 A3.31420; Inset
57 | M73 P11; Update Progress
58 | G1 X9.800 Y9.800 Z0.200 F1800 A3.99941; Inset
59 | M73 P13; Update Progress
60 | G1 X9.800 Y-9.800 Z0.200 F1800 A4.68462; Inset
61 | M73 P15; Update Progress
62 | G1 X-9.800 Y-9.800 Z0.200 F1800 A5.36984; Inset
63 | M73 P17; Update Progress
64 | G1 X-9.800 Y-9.800 Z0.200 F1500 A4.06984; Retract
65 | G1 X-9.800 Y-9.800 Z0.200 F3000; Retract
66 | G1 X-8.994 Y-9.114 Z0.200 F9000; Travel Move
67 | G1 X-8.994 Y-9.114 Z0.200 F1500 A5.36984; Restart
68 | G1 X-8.994 Y9.114 Z0.200 F1800 A6.00708; Infill
69 | M73 P19; Update Progress
70 | G1 X-8.598 Y9.114 Z0.200 F1800 A6.02093; Connection
71 | G1 X-8.598 Y-9.114 Z0.200 F1800 A6.65818; Infill
72 | M73 P21; Update Progress
73 | G1 X-8.202 Y-9.114 Z0.200 F1800 A6.67202; Connection
74 | G1 X-8.202 Y9.114 Z0.200 F1800 A7.30927; Infill
75 | M73 P22; Update Progress
76 | G1 X-7.806 Y9.114 Z0.200 F1800 A7.32311; Connection
77 | M73 P23; Update Progress
78 | G1 X-7.806 Y-9.114 Z0.200 F1800 A7.96036; Infill
79 | M73 P24; Update Progress
80 | G1 X-7.410 Y-9.114 Z0.200 F1800 A7.97420; Connection
81 | G1 X-7.410 Y9.114 Z0.200 F1800 A8.61145; Infill
82 | M73 P26; Update Progress
83 | G1 X-7.014 Y9.114 Z0.200 F1800 A8.62530; Connection
84 | G1 X-7.014 Y-9.114 Z0.200 F1800 A9.26254; Infill
85 | M73 P28; Update Progress
86 | G1 X-6.618 Y-9.114 Z0.200 F1800 A9.27639; Connection
87 | G1 X-6.618 Y9.114 Z0.200 F1800 A9.91363; Infill
88 | M73 P30; Update Progress
89 | G1 X-6.222 Y9.114 Z0.200 F1800 A9.92748; Connection
90 | G1 X-6.222 Y-9.114 Z0.200 F1800 A10.56473; Infill
91 | M73 P31; Update Progress
92 | G1 X-5.826 Y-9.114 Z0.200 F1800 A10.57857; Connection
93 | G1 X-5.826 Y9.114 Z0.200 F1800 A11.21582; Infill
94 | M73 P33; Update Progress
95 | G1 X-5.430 Y9.114 Z0.200 F1800 A11.22966; Connection
96 | G1 X-5.430 Y-9.114 Z0.200 F1800 A11.86691; Infill
97 | M73 P35; Update Progress
98 | G1 X-5.034 Y-9.114 Z0.200 F1800 A11.88075; Connection
99 | G1 X-5.034 Y9.114 Z0.200 F1800 A12.51800; Infill
100 | M73 P37; Update Progress
101 | G1 X-4.638 Y9.114 Z0.200 F1800 A12.53184; Connection
102 | G1 X-4.638 Y-9.114 Z0.200 F1800 A13.16909; Infill
103 | M73 P39; Update Progress
104 | G1 X-4.242 Y-9.114 Z0.200 F1800 A13.18294; Connection
105 | G1 X-4.242 Y9.114 Z0.200 F1800 A13.82018; Infill
106 | M73 P40; Update Progress
107 | G1 X-3.846 Y9.114 Z0.200 F1800 A13.83403; Connection
108 | G1 X-3.846 Y-9.114 Z0.200 F1800 A14.47128; Infill
109 | M73 P42; Update Progress
110 | G1 X-3.450 Y-9.114 Z0.200 F1800 A14.48512; Connection
111 | G1 X-3.450 Y9.114 Z0.200 F1800 A15.12237; Infill
112 | M73 P44; Update Progress
113 | G1 X-3.054 Y9.114 Z0.200 F1800 A15.13621; Connection
114 | G1 X-3.054 Y-9.114 Z0.200 F1800 A15.77346; Infill
115 | M73 P46; Update Progress
116 | G1 X-2.658 Y-9.114 Z0.200 F1800 A15.78730; Connection
117 | G1 X-2.658 Y9.114 Z0.200 F1800 A16.42455; Infill
118 | M73 P48; Update Progress
119 | G1 X-2.262 Y9.114 Z0.200 F1800 A16.43839; Connection
120 | G1 X-2.262 Y-9.114 Z0.200 F1800 A17.07564; Infill
121 | M73 P49; Update Progress
122 | G1 X-1.866 Y-9.114 Z0.200 F1800 A17.08949; Connection
123 | G1 X-1.866 Y9.114 Z0.200 F1800 A17.72673; Infill
124 | M73 P51; Update Progress
125 | G1 X-1.470 Y9.114 Z0.200 F1800 A17.74058; Connection
126 | G1 X-1.470 Y-9.114 Z0.200 F1800 A18.37783; Infill
127 | M73 P53; Update Progress
128 | G1 X-1.074 Y-9.114 Z0.200 F1800 A18.39167; Connection
129 | G1 X-1.074 Y9.114 Z0.200 F1800 A19.02892; Infill
130 | M73 P55; Update Progress
131 | G1 X-0.678 Y9.114 Z0.200 F1800 A19.04276; Connection
132 | G1 X-0.678 Y-9.114 Z0.200 F1800 A19.68001; Infill
133 | M73 P57; Update Progress
134 | G1 X-0.282 Y-9.114 Z0.200 F1800 A19.69385; Connection
135 | G1 X-0.282 Y9.114 Z0.200 F1800 A20.33110; Infill
136 | M73 P58; Update Progress
137 | G1 X0.114 Y9.114 Z0.200 F1800 A20.34494; Connection
138 | G1 X0.114 Y-9.114 Z0.200 F1800 A20.98219; Infill
139 | M73 P60; Update Progress
140 | G1 X0.510 Y-9.114 Z0.200 F1800 A20.99604; Connection
141 | G1 X0.510 Y9.114 Z0.200 F1800 A21.63328; Infill
142 | M73 P62; Update Progress
143 | G1 X0.906 Y9.114 Z0.200 F1800 A21.64713; Connection
144 | G1 X0.906 Y-9.114 Z0.200 F1800 A22.28437; Infill
145 | M73 P64; Update Progress
146 | G1 X1.302 Y-9.114 Z0.200 F1800 A22.29822; Connection
147 | G1 X1.302 Y9.114 Z0.200 F1800 A22.93547; Infill
148 | M73 P65; Update Progress
149 | G1 X1.698 Y9.114 Z0.200 F1800 A22.94931; Connection
150 | M73 P66; Update Progress
151 | G1 X1.698 Y-9.114 Z0.200 F1800 A23.58656; Infill
152 | M73 P67; Update Progress
153 | G1 X2.094 Y-9.114 Z0.200 F1800 A23.60040; Connection
154 | G1 X2.094 Y9.114 Z0.200 F1800 A24.23765; Infill
155 | M73 P69; Update Progress
156 | G1 X2.490 Y9.114 Z0.200 F1800 A24.25149; Connection
157 | G1 X2.490 Y-9.114 Z0.200 F1800 A24.88874; Infill
158 | M73 P71; Update Progress
159 | G1 X2.886 Y-9.114 Z0.200 F1800 A24.90259; Connection
160 | G1 X2.886 Y9.114 Z0.200 F1800 A25.53983; Infill
161 | M73 P73; Update Progress
162 | G1 X3.282 Y9.114 Z0.200 F1800 A25.55368; Connection
163 | G1 X3.282 Y-9.114 Z0.200 F1800 A26.19092; Infill
164 | M73 P74; Update Progress
165 | G1 X3.678 Y-9.114 Z0.200 F1800 A26.20477; Connection
166 | G1 X3.678 Y9.114 Z0.200 F1800 A26.84202; Infill
167 | M73 P76; Update Progress
168 | G1 X4.074 Y9.114 Z0.200 F1800 A26.85586; Connection
169 | G1 X4.074 Y-9.114 Z0.200 F1800 A27.49311; Infill
170 | M73 P78; Update Progress
171 | G1 X4.470 Y-9.114 Z0.200 F1800 A27.50695; Connection
172 | G1 X4.470 Y9.114 Z0.200 F1800 A28.14420; Infill
173 | M73 P80; Update Progress
174 | G1 X4.866 Y9.114 Z0.200 F1800 A28.15804; Connection
175 | G1 X4.866 Y-9.114 Z0.200 F1800 A28.79529; Infill
176 | M73 P82; Update Progress
177 | G1 X5.262 Y-9.114 Z0.200 F1800 A28.80914; Connection
178 | G1 X5.262 Y9.114 Z0.200 F1800 A29.44638; Infill
179 | M73 P83; Update Progress
180 | G1 X5.658 Y9.114 Z0.200 F1800 A29.46023; Connection
181 | G1 X5.658 Y-9.114 Z0.200 F1800 A30.09747; Infill
182 | M73 P85; Update Progress
183 | G1 X6.054 Y-9.114 Z0.200 F1800 A30.11132; Connection
184 | G1 X6.054 Y9.114 Z0.200 F1800 A30.74857; Infill
185 | M73 P87; Update Progress
186 | G1 X6.450 Y9.114 Z0.200 F1800 A30.76241; Connection
187 | G1 X6.450 Y-9.114 Z0.200 F1800 A31.39966; Infill
188 | M73 P89; Update Progress
189 | G1 X6.846 Y-9.114 Z0.200 F1800 A31.41350; Connection
190 | G1 X6.846 Y9.114 Z0.200 F1800 A32.05075; Infill
191 | M73 P91; Update Progress
192 | G1 X7.242 Y9.114 Z0.200 F1800 A32.06459; Connection
193 | G1 X7.242 Y-9.114 Z0.200 F1800 A32.70184; Infill
194 | M73 P92; Update Progress
195 | G1 X7.638 Y-9.114 Z0.200 F1800 A32.71568; Connection
196 | G1 X7.638 Y9.114 Z0.200 F1800 A33.35293; Infill
197 | M73 P94; Update Progress
198 | G1 X8.034 Y9.114 Z0.200 F1800 A33.36678; Connection
199 | G1 X8.034 Y-9.114 Z0.200 F1800 A34.00402; Infill
200 | M73 P96; Update Progress
201 | G1 X8.430 Y-9.114 Z0.200 F1800 A34.01787; Connection
202 | G1 X8.430 Y9.114 Z0.200 F1800 A34.65512; Infill
203 | M73 P98; Update Progress
204 | G1 X8.826 Y9.114 Z0.200 F1800 A34.66896; Connection
205 | G1 X8.826 Y-9.114 Z0.200 F1800 A35.30621; Infill
206 | M73 P100; Update Progress
207 | ; End of print
208 | G1 X8.826 Y-9.114 Z0.200 F1500 A34.00621; Retract
209 | M127 T0 (Fan Off)
210 | M18 A B(Turn off A and B Steppers)
211 | G1 Z155 F900
212 | G162 X Y F2000
213 | M18 X Y Z(Turn off steppers after a build)
214 | M104 S0 T0
215 | M70 P5 (We <3 Making Things!)
216 | M72 P1 ( Play Ta-Da song )
217 | M73 P100
218 | M137 (build end notification)
219 |
--------------------------------------------------------------------------------
/sample_files/square_linearfill_2layer.gcode:
--------------------------------------------------------------------------------
1 | M136 (enable build)
2 | M73 P0
3 | G162 X Y F2000(home XY axes maximum)
4 | G161 Z F900(home Z axis minimum)
5 | G92 X0 Y0 Z-5 A0 B0 (set Z to -5)
6 | G1 Z0.0 F900(move Z to '0')
7 | G161 Z F100(home Z axis minimum)
8 | M132 X Y Z A B (Recall stored home offsets for XYZAB axis)
9 | G92 X152 Y75 Z0 A0 B0
10 | G1 X-141 Y-74 Z40 F3300.0 (move to waiting position)
11 | G130 X20 Y20 A20 B20 (Lower stepper Vrefs while heating)
12 | M135 T0
13 | M104 S230 T0
14 | M133 T0
15 | G130 X127 Y127 A127 B127 (Set Stepper motor Vref to defaults)
16 | ; Makerbot Industries
17 | ; Miracle Grue 3.9.4
18 | ; This file contains digital fabrication directives
19 | ; in G-Code format for your 3D printer
20 | ; http://www.makerbot.com/support/makerware/documentation/slicer/
21 | ;
22 | ; Right Toolhead Weight (grams): 0.214268
23 | ; Right Toolhead Distance (mm): 70.2261
24 | ; Duration: 81.3092 seconds
25 | ; Active extruders in print: 0
26 | ; Chunk 0
27 | ; Lower Position 0
28 | ; Upper Position 0.2
29 | ; Thickness 0.2
30 | ; Width 0.4
31 | G1 X105.400 Y-74.000 Z0.270 F9000.000 (Extruder Prime Dry Move)
32 | G1 X-141 Y-74 Z0.270 F1800.000 E25.000 (Extruder Prime Start)
33 | G92 A0 B0 (Reset after prime)
34 | G1 Z0.000000 F1000
35 | G1 X-141.0 Y-74.0 Z0.0 F1000 E0.0
36 | G92 E0
37 | G1 X-141.000 Y-74.000 Z0.000 F1500 A-1.30000; Retract
38 | G1 X-141.000 Y-74.000 Z0.000 F3000; Retract
39 | G1 X-141.000 Y-74.000 Z0.200 F1380; Travel Move
40 | M73 P0; Update Progress
41 | G1 X-8.200 Y-8.200 Z0.200 F9000; Travel Move
42 | M73 P2; Update Progress
43 | G1 X-8.200 Y-8.200 Z0.200 F1500 A0.00000; Restart
44 | G1 X-8.200 Y8.200 Z0.200 F1800 A0.57334; Inset
45 | M73 P3; Update Progress
46 | G1 X8.200 Y8.200 Z0.200 F1800 A1.14668; Inset
47 | M73 P4; Update Progress
48 | G1 X8.200 Y-8.200 Z0.200 F1800 A1.72002; Inset
49 | M73 P5; Update Progress
50 | G1 X-8.200 Y-8.200 Z0.200 F1800 A2.29337; Inset
51 | M73 P6; Update Progress
52 | G1 X-8.200 Y-8.200 Z0.200 F1500 A0.99337; Retract
53 | G1 X-8.200 Y-8.200 Z0.200 F3000; Retract
54 | G1 X-8.600 Y-8.600 Z0.200 F9000; Travel Move
55 | G1 X-8.600 Y-8.600 Z0.200 F1500 A2.29337; Restart
56 | G1 X-8.600 Y8.600 Z0.200 F1800 A2.89468; Inset
57 | M73 P7; Update Progress
58 | G1 X8.600 Y8.600 Z0.200 F1800 A3.49599; Inset
59 | M73 P9; Update Progress
60 | G1 X8.600 Y-8.600 Z0.200 F1800 A4.09730; Inset
61 | M73 P10; Update Progress
62 | G1 X-8.600 Y-8.600 Z0.200 F1800 A4.69861; Inset
63 | M73 P11; Update Progress
64 | G1 X-8.600 Y-8.600 Z0.200 F1500 A3.39861; Retract
65 | G1 X-8.600 Y-8.600 Z0.200 F3000; Retract
66 | G1 X-9.000 Y-9.000 Z0.200 F9000; Travel Move
67 | G1 X-9.000 Y-9.000 Z0.200 F1500 A4.69861; Restart
68 | G1 X-9.000 Y9.000 Z0.200 F1800 A5.32789; Inset
69 | M73 P12; Update Progress
70 | G1 X9.000 Y9.000 Z0.200 F1800 A5.95716; Inset
71 | M73 P13; Update Progress
72 | G1 X9.000 Y-9.000 Z0.200 F1800 A6.58644; Inset
73 | M73 P15; Update Progress
74 | G1 X-9.000 Y-9.000 Z0.200 F1800 A7.21572; Inset
75 | M73 P16; Update Progress
76 | G1 X-9.000 Y-9.000 Z0.200 F1500 A5.91572; Retract
77 | G1 X-9.000 Y-9.000 Z0.200 F3000; Retract
78 | G1 X-9.400 Y-9.400 Z0.200 F9000; Travel Move
79 | G1 X-9.400 Y-9.400 Z0.200 F1500 A7.21572; Restart
80 | G1 X-9.400 Y9.400 Z0.200 F1800 A7.87296; Inset
81 | M73 P17; Update Progress
82 | G1 X9.400 Y9.400 Z0.200 F1800 A8.53021; Inset
83 | M73 P19; Update Progress
84 | G1 X9.400 Y-9.400 Z0.200 F1800 A9.18745; Inset
85 | M73 P20; Update Progress
86 | G1 X-9.400 Y-9.400 Z0.200 F1800 A9.84470; Inset
87 | M73 P21; Update Progress
88 | G1 X-9.400 Y-9.400 Z0.200 F1500 A8.54470; Retract
89 | G1 X-9.400 Y-9.400 Z0.200 F3000; Retract
90 | G1 X-9.800 Y-9.800 Z0.200 F9000; Travel Move
91 | G1 X-9.800 Y-9.800 Z0.200 F1500 A9.84470; Restart
92 | G1 X-9.800 Y9.800 Z0.200 F1800 A10.52991; Inset
93 | M73 P23; Update Progress
94 | G1 X9.800 Y9.800 Z0.200 F1800 A11.21513; Inset
95 | M73 P24; Update Progress
96 | G1 X9.800 Y-9.800 Z0.200 F1800 A11.90034; Inset
97 | M73 P25; Update Progress
98 | G1 X-9.800 Y-9.800 Z0.200 F1800 A12.58556; Inset
99 | M73 P27; Update Progress
100 | G1 X-9.800 Y-9.800 Z0.200 F1500 A11.28556; Retract
101 | G1 X-9.800 Y-9.800 Z0.200 F3000; Retract
102 | G1 X-7.753 Y-7.914 Z0.200 F9000; Travel Move
103 | G1 X-7.753 Y-7.914 Z0.200 F1500 A12.58556; Restart
104 | G1 X7.914 Y7.753 Z0.200 F1800 A13.36014; Infill
105 | M73 P28; Update Progress
106 | G1 X7.515 Y7.914 Z0.200 F1800 A13.37518; Connection
107 | G1 X-7.914 Y-7.515 Z0.200 F1800 A14.13800; Infill
108 | M73 P30; Update Progress
109 | G1 X-7.914 Y-6.955 Z0.200 F1800 A14.15758; Connection
110 | G1 X6.955 Y7.914 Z0.200 F1800 A14.89271; Infill
111 | M73 P31; Update Progress
112 | G1 X6.395 Y7.914 Z0.200 F1800 A14.91229; Connection
113 | G1 X-7.914 Y-6.395 Z0.200 F1800 A15.61973; Infill
114 | M73 P33; Update Progress
115 | G1 X-7.914 Y-5.835 Z0.200 F1800 A15.63931; Connection
116 | G1 X5.835 Y7.914 Z0.200 F1800 A16.31907; Infill
117 | M73 P34; Update Progress
118 | G1 X5.275 Y7.914 Z0.200 F1800 A16.33865; Connection
119 | G1 X-7.914 Y-5.275 Z0.200 F1800 A16.99071; Infill
120 | M73 P36; Update Progress
121 | G1 X-7.914 Y-4.715 Z0.200 F1800 A17.01029; Connection
122 | G1 X4.715 Y7.914 Z0.200 F1800 A17.63467; Infill
123 | M73 P37; Update Progress
124 | G1 X4.155 Y7.914 Z0.200 F1800 A17.65425; Connection
125 | G1 X-7.914 Y-4.155 Z0.200 F1800 A18.25094; Infill
126 | M73 P38; Update Progress
127 | G1 X-7.914 Y-3.595 Z0.200 F1800 A18.27052; Connection
128 | G1 X3.595 Y7.914 Z0.200 F1800 A18.83952; Infill
129 | M73 P39; Update Progress
130 | G1 X3.035 Y7.914 Z0.200 F1800 A18.85910; Connection
131 | G1 X-7.914 Y-3.035 Z0.200 F1800 A19.40041; Infill
132 | M73 P40; Update Progress
133 | G1 X-7.914 Y-2.475 Z0.200 F1800 A19.41999; Connection
134 | G1 X2.475 Y7.914 Z0.200 F1800 A19.93361; Infill
135 | M73 P41; Update Progress
136 | G1 X1.915 Y7.914 Z0.200 F1800 A19.95319; Connection
137 | G1 X-7.914 Y-1.915 Z0.200 F1800 A20.43913; Infill
138 | M73 P42; Update Progress
139 | G1 X-7.914 Y-1.355 Z0.200 F1800 A20.45871; Connection
140 | G1 X1.355 Y7.914 Z0.200 F1800 A20.91696; Infill
141 | M73 P43; Update Progress
142 | G1 X0.795 Y7.914 Z0.200 F1800 A20.93653; Connection
143 | G1 X-7.914 Y-0.795 Z0.200 F1800 A21.36709; Infill
144 | M73 P44; Update Progress
145 | G1 X-7.914 Y-0.235 Z0.200 F1800 A21.38667; Connection
146 | G1 X0.235 Y7.914 Z0.200 F1800 A21.78955; Infill
147 | M73 P45; Update Progress
148 | G1 X-0.325 Y7.914 Z0.200 F1800 A21.80912; Connection
149 | G1 X-7.914 Y0.325 Z0.200 F1800 A22.18431; Infill
150 | M73 P46; Update Progress
151 | G1 X-7.914 Y0.885 Z0.200 F1800 A22.20389; Connection
152 | G1 X-0.885 Y7.914 Z0.200 F1800 A22.55138; Infill
153 | M73 P47; Update Progress
154 | G1 X-1.445 Y7.914 Z0.200 F1800 A22.57096; Connection
155 | G1 X-7.914 Y1.445 Z0.200 F1800 A22.89077; Infill
156 | G1 X-7.914 Y2.006 Z0.200 F1800 A22.91035; Connection
157 | G1 X-2.006 Y7.914 Z0.200 F1800 A23.20246; Infill
158 | M73 P48; Update Progress
159 | G1 X-2.566 Y7.914 Z0.200 F1800 A23.22204; Connection
160 | G1 X-7.914 Y2.566 Z0.200 F1800 A23.48647; Infill
161 | G1 X-7.914 Y3.126 Z0.200 F1800 A23.50605; Connection
162 | M73 P49; Update Progress
163 | G1 X-3.126 Y7.914 Z0.200 F1800 A23.74280; Infill
164 | G1 X-3.686 Y7.914 Z0.200 F1800 A23.76237; Connection
165 | G1 X-7.914 Y3.686 Z0.200 F1800 A23.97143; Infill
166 | G1 X-7.914 Y4.246 Z0.200 F1800 A23.99101; Connection
167 | G1 X-4.246 Y7.914 Z0.200 F1800 A24.17237; Infill
168 | M73 P50; Update Progress
169 | G1 X-4.806 Y7.914 Z0.200 F1800 A24.19195; Connection
170 | G1 X-7.914 Y4.806 Z0.200 F1800 A24.34563; Infill
171 | G1 X-7.914 Y5.366 Z0.200 F1800 A24.36521; Connection
172 | G1 X-5.366 Y7.914 Z0.200 F1800 A24.49120; Infill
173 | G1 X-5.926 Y7.914 Z0.200 F1800 A24.51078; Connection
174 | M73 P51; Update Progress
175 | G1 X-7.914 Y5.926 Z0.200 F1800 A24.60908; Infill
176 | G1 X-7.914 Y6.486 Z0.200 F1800 A24.62865; Connection
177 | G1 X-6.486 Y7.914 Z0.200 F1800 A24.69927; Infill
178 | G1 X-7.046 Y7.914 Z0.200 F1800 A24.71885; Connection
179 | G1 X-7.914 Y7.046 Z0.200 F1800 A24.76177; Infill
180 | G1 X-7.914 Y7.606 Z0.200 F1800 A24.78135; Connection
181 | G1 X-7.606 Y7.914 Z0.200 F1800 A24.79659; Infill
182 | G1 X-7.606 Y7.914 Z0.200 F1500 A23.49659; Retract
183 | G1 X-7.606 Y7.914 Z0.200 F3000; Retract
184 | G1 X7.914 Y7.193 Z0.200 F9000; Travel Move
185 | G1 X7.914 Y7.193 Z0.200 F1500 A24.79659; Restart
186 | G1 X-7.193 Y-7.914 Z0.200 F1800 A25.54348; Infill
187 | M73 P53; Update Progress
188 | G1 X-6.633 Y-7.914 Z0.200 F1800 A25.56306; Connection
189 | G1 X7.914 Y6.633 Z0.200 F1800 A26.28227; Infill
190 | M73 P54; Update Progress
191 | G1 X7.914 Y6.073 Z0.200 F1800 A26.30185; Connection
192 | G1 X-6.073 Y-7.914 Z0.200 F1800 A26.99337; Infill
193 | M73 P56; Update Progress
194 | G1 X-5.513 Y-7.914 Z0.200 F1800 A27.01295; Connection
195 | G1 X7.914 Y5.513 Z0.200 F1800 A27.67678; Infill
196 | M73 P57; Update Progress
197 | G1 X7.914 Y4.953 Z0.200 F1800 A27.69636; Connection
198 | G1 X-4.953 Y-7.914 Z0.200 F1800 A28.33250; Infill
199 | M73 P58; Update Progress
200 | G1 X-4.393 Y-7.914 Z0.200 F1800 A28.35208; Connection
201 | G1 X7.914 Y4.393 Z0.200 F1800 A28.96053; Infill
202 | M73 P60; Update Progress
203 | G1 X7.914 Y3.833 Z0.200 F1800 A28.98011; Connection
204 | G1 X-3.833 Y-7.914 Z0.200 F1800 A29.56088; Infill
205 | M73 P61; Update Progress
206 | G1 X-3.273 Y-7.914 Z0.200 F1800 A29.58046; Connection
207 | G1 X7.914 Y3.273 Z0.200 F1800 A30.13354; Infill
208 | M73 P62; Update Progress
209 | G1 X7.914 Y2.713 Z0.200 F1800 A30.15312; Connection
210 | G1 X-2.713 Y-7.914 Z0.200 F1800 A30.67851; Infill
211 | M73 P63; Update Progress
212 | G1 X-2.153 Y-7.914 Z0.200 F1800 A30.69808; Connection
213 | G1 X7.914 Y2.153 Z0.200 F1800 A31.19579; Infill
214 | M73 P64; Update Progress
215 | G1 X7.914 Y1.593 Z0.200 F1800 A31.21537; Connection
216 | G1 X-1.593 Y-7.914 Z0.200 F1800 A31.68538; Infill
217 | M73 P65; Update Progress
218 | G1 X-1.033 Y-7.914 Z0.200 F1800 A31.70496; Connection
219 | G1 X7.914 Y1.033 Z0.200 F1800 A32.14728; Infill
220 | M73 P66; Update Progress
221 | G1 X7.914 Y0.473 Z0.200 F1800 A32.16686; Connection
222 | G1 X-0.473 Y-7.914 Z0.200 F1800 A32.58150; Infill
223 | M73 P67; Update Progress
224 | G1 X0.087 Y-7.914 Z0.200 F1800 A32.60108; Connection
225 | G1 X7.914 Y-0.087 Z0.200 F1800 A32.98803; Infill
226 | M73 P68; Update Progress
227 | G1 X7.914 Y-0.647 Z0.200 F1800 A33.00761; Connection
228 | G1 X0.647 Y-7.914 Z0.200 F1800 A33.36687; Infill
229 | G1 X1.208 Y-7.914 Z0.200 F1800 A33.38644; Connection
230 | G1 X7.914 Y-1.208 Z0.200 F1800 A33.71802; Infill
231 | M73 P69; Update Progress
232 | G1 X7.914 Y-1.768 Z0.200 F1800 A33.73760; Connection
233 | G1 X1.768 Y-7.914 Z0.200 F1800 A34.04148; Infill
234 | M73 P70; Update Progress
235 | G1 X2.328 Y-7.914 Z0.200 F1800 A34.06106; Connection
236 | G1 X7.914 Y-2.328 Z0.200 F1800 A34.33725; Infill
237 | G1 X7.914 Y-2.888 Z0.200 F1800 A34.35683; Connection
238 | G1 X2.888 Y-7.914 Z0.200 F1800 A34.60534; Infill
239 | M73 P71; Update Progress
240 | G1 X3.448 Y-7.914 Z0.200 F1800 A34.62492; Connection
241 | G1 X7.914 Y-3.448 Z0.200 F1800 A34.84574; Infill
242 | G1 X7.914 Y-4.008 Z0.200 F1800 A34.86532; Connection
243 | G1 X4.008 Y-7.914 Z0.200 F1800 A35.05845; Infill
244 | M73 P72; Update Progress
245 | G1 X4.568 Y-7.914 Z0.200 F1800 A35.07803; Connection
246 | G1 X7.914 Y-4.568 Z0.200 F1800 A35.24347; Infill
247 | G1 X7.914 Y-5.128 Z0.200 F1800 A35.26305; Connection
248 | G1 X5.128 Y-7.914 Z0.200 F1800 A35.40080; Infill
249 | G1 X5.688 Y-7.914 Z0.200 F1800 A35.42038; Connection
250 | G1 X7.914 Y-5.688 Z0.200 F1800 A35.53045; Infill
251 | M73 P73; Update Progress
252 | G1 X7.914 Y-6.248 Z0.200 F1800 A35.55003; Connection
253 | G1 X6.248 Y-7.914 Z0.200 F1800 A35.63241; Infill
254 | G1 X6.808 Y-7.914 Z0.200 F1800 A35.65198; Connection
255 | G1 X7.914 Y-6.808 Z0.200 F1800 A35.70667; Infill
256 | G1 X7.914 Y-7.368 Z0.200 F1800 A35.72625; Connection
257 | G1 X7.368 Y-7.914 Z0.200 F1800 A35.75325; Infill
258 | ; Chunk 1
259 | ; Lower Position 0.2
260 | ; Upper Position 0.4
261 | ; Thickness 0.2
262 | ; Width 0.4
263 | G1 X7.368 Y-7.914 Z0.200 F1500 A34.45325; Retract
264 | G1 X7.368 Y-7.914 Z0.200 F3000; Retract
265 | G1 X7.368 Y-7.914 Z0.400 F1380; Travel Move
266 | G1 X-8.200 Y-8.200 Z0.400 F9000; Travel Move
267 | G1 X-8.200 Y-8.200 Z0.400 F1500 A35.75325; Restart
268 | M126 T0; Enable Fan
269 | G1 X-8.200 Y8.200 Z0.400 F5400 A36.32660; Inset
270 | M73 P74; Update Progress
271 | G1 X8.200 Y8.200 Z0.400 F5400 A36.89994; Inset
272 | G1 X8.200 Y-8.200 Z0.400 F5400 A37.47328; Inset
273 | M73 P75; Update Progress
274 | G1 X-8.200 Y-8.200 Z0.400 F5400 A38.04662; Inset
275 | M127 T0; Disable Fan
276 | G1 X-8.200 Y-8.200 Z0.400 F1500 A36.74662; Retract
277 | G1 X-8.200 Y-8.200 Z0.400 F3000; Retract
278 | G1 X-8.600 Y-8.600 Z0.400 F9000; Travel Move
279 | G1 X-8.600 Y-8.600 Z0.400 F1500 A38.04662; Restart
280 | M126 T0; Enable Fan
281 | G1 X-8.600 Y8.600 Z0.400 F5400 A38.64793; Inset
282 | G1 X8.600 Y8.600 Z0.400 F5400 A39.24924; Inset
283 | M73 P76; Update Progress
284 | G1 X8.600 Y-8.600 Z0.400 F5400 A39.85055; Inset
285 | G1 X-8.600 Y-8.600 Z0.400 F5400 A40.45186; Inset
286 | M73 P77; Update Progress
287 | M127 T0; Disable Fan
288 | G1 X-8.600 Y-8.600 Z0.400 F1500 A39.15186; Retract
289 | G1 X-8.600 Y-8.600 Z0.400 F3000; Retract
290 | G1 X-9.000 Y-9.000 Z0.400 F9000; Travel Move
291 | G1 X-9.000 Y-9.000 Z0.400 F1500 A40.45186; Restart
292 | M126 T0; Enable Fan
293 | G1 X-9.000 Y9.000 Z0.400 F5400 A41.08114; Inset
294 | G1 X9.000 Y9.000 Z0.400 F5400 A41.71042; Inset
295 | G1 X9.000 Y-9.000 Z0.400 F5400 A42.33970; Inset
296 | M73 P78; Update Progress
297 | G1 X-9.000 Y-9.000 Z0.400 F5400 A42.96897; Inset
298 | M127 T0; Disable Fan
299 | G1 X-9.000 Y-9.000 Z0.400 F1500 A41.66897; Retract
300 | G1 X-9.000 Y-9.000 Z0.400 F3000; Retract
301 | G1 X-9.400 Y-9.400 Z0.400 F9000; Travel Move
302 | G1 X-9.400 Y-9.400 Z0.400 F1500 A42.96897; Restart
303 | M126 T0; Enable Fan
304 | G1 X-9.400 Y9.400 Z0.400 F5400 A43.62622; Inset
305 | M73 P79; Update Progress
306 | G1 X9.400 Y9.400 Z0.400 F5400 A44.28346; Inset
307 | G1 X9.400 Y-9.400 Z0.400 F5400 A44.94071; Inset
308 | M73 P80; Update Progress
309 | G1 X-9.400 Y-9.400 Z0.400 F5400 A45.59795; Inset
310 | M127 T0; Disable Fan
311 | G1 X-9.400 Y-9.400 Z0.400 F1500 A44.29795; Retract
312 | G1 X-9.400 Y-9.400 Z0.400 F3000; Retract
313 | G1 X-9.800 Y-9.800 Z0.400 F9000; Travel Move
314 | G1 X-9.800 Y-9.800 Z0.400 F1500 A45.59795; Restart
315 | M126 T0; Enable Fan
316 | G1 X-9.800 Y9.800 Z0.400 F2400 A46.28317; Inset
317 | M73 P81; Update Progress
318 | G1 X9.800 Y9.800 Z0.400 F2400 A46.96838; Inset
319 | M73 P82; Update Progress
320 | G1 X9.800 Y-9.800 Z0.400 F2400 A47.65360; Inset
321 | M73 P83; Update Progress
322 | G1 X-9.800 Y-9.800 Z0.400 F2400 A48.33881; Inset
323 | M73 P84; Update Progress
324 | M127 T0; Disable Fan
325 | G1 X-9.800 Y-9.800 Z0.400 F1500 A47.03881; Retract
326 | G1 X-9.800 Y-9.800 Z0.400 F3000; Retract
327 | G1 X-7.606 Y-7.914 Z0.400 F9000; Travel Move
328 | G1 X-7.606 Y-7.914 Z0.400 F1500 A48.33881; Restart
329 | M126 T0; Enable Fan
330 | G1 X-7.914 Y-7.606 Z0.400 F5400 A48.35405; Infill
331 | G1 X-7.914 Y-7.046 Z0.400 F5400 A48.37362; Connection
332 | G1 X-7.046 Y-7.914 Z0.400 F5400 A48.41655; Infill
333 | G1 X-6.486 Y-7.914 Z0.400 F5400 A48.43613; Connection
334 | G1 X-7.914 Y-6.486 Z0.400 F5400 A48.50674; Infill
335 | G1 X-7.914 Y-5.926 Z0.400 F5400 A48.52632; Connection
336 | G1 X-5.926 Y-7.914 Z0.400 F5400 A48.62462; Infill
337 | G1 X-5.366 Y-7.914 Z0.400 F5400 A48.64420; Connection
338 | G1 X-7.914 Y-5.366 Z0.400 F5400 A48.77019; Infill
339 | G1 X-7.914 Y-4.806 Z0.400 F5400 A48.78977; Connection
340 | G1 X-4.806 Y-7.914 Z0.400 F5400 A48.94344; Infill
341 | G1 X-4.246 Y-7.914 Z0.400 F5400 A48.96302; Connection
342 | M73 P85; Update Progress
343 | G1 X-7.914 Y-4.246 Z0.400 F5400 A49.14439; Infill
344 | G1 X-7.914 Y-3.686 Z0.400 F5400 A49.16397; Connection
345 | G1 X-3.686 Y-7.914 Z0.400 F5400 A49.37302; Infill
346 | G1 X-3.126 Y-7.914 Z0.400 F5400 A49.39260; Connection
347 | G1 X-7.914 Y-3.126 Z0.400 F5400 A49.62934; Infill
348 | G1 X-7.914 Y-2.566 Z0.400 F5400 A49.64892; Connection
349 | G1 X-2.566 Y-7.914 Z0.400 F5400 A49.91335; Infill
350 | G1 X-2.006 Y-7.914 Z0.400 F5400 A49.93293; Connection
351 | G1 X-7.914 Y-2.006 Z0.400 F5400 A50.22505; Infill
352 | G1 X-7.914 Y-1.445 Z0.400 F5400 A50.24463; Connection
353 | G1 X-1.445 Y-7.914 Z0.400 F5400 A50.56443; Infill
354 | M73 P86; Update Progress
355 | G1 X-0.885 Y-7.914 Z0.400 F5400 A50.58401; Connection
356 | G1 X-7.914 Y-0.885 Z0.400 F5400 A50.93151; Infill
357 | G1 X-7.914 Y-0.325 Z0.400 F5400 A50.95109; Connection
358 | G1 X-0.325 Y-7.914 Z0.400 F5400 A51.32627; Infill
359 | G1 X0.235 Y-7.914 Z0.400 F5400 A51.34585; Connection
360 | G1 X-7.914 Y0.235 Z0.400 F5400 A51.74872; Infill
361 | G1 X-7.914 Y0.795 Z0.400 F5400 A51.76830; Connection
362 | G1 X0.795 Y-7.914 Z0.400 F5400 A52.19886; Infill
363 | M73 P87; Update Progress
364 | G1 X1.355 Y-7.914 Z0.400 F5400 A52.21844; Connection
365 | G1 X-7.914 Y1.355 Z0.400 F5400 A52.67669; Infill
366 | G1 X-7.914 Y1.915 Z0.400 F5400 A52.69627; Connection
367 | G1 X1.915 Y-7.914 Z0.400 F5400 A53.18220; Infill
368 | G1 X2.475 Y-7.914 Z0.400 F5400 A53.20178; Connection
369 | G1 X-7.914 Y2.475 Z0.400 F5400 A53.71541; Infill
370 | M73 P88; Update Progress
371 | G1 X-7.914 Y3.035 Z0.400 F5400 A53.73498; Connection
372 | G1 X3.035 Y-7.914 Z0.400 F5400 A54.27630; Infill
373 | G1 X3.595 Y-7.914 Z0.400 F5400 A54.29588; Connection
374 | G1 X-7.914 Y3.595 Z0.400 F5400 A54.86488; Infill
375 | G1 X-7.914 Y4.155 Z0.400 F5400 A54.88446; Connection
376 | G1 X4.155 Y-7.914 Z0.400 F5400 A55.48115; Infill
377 | M73 P89; Update Progress
378 | G1 X4.715 Y-7.914 Z0.400 F5400 A55.50072; Connection
379 | G1 X-7.914 Y4.715 Z0.400 F5400 A56.12510; Infill
380 | G1 X-7.914 Y5.275 Z0.400 F5400 A56.14468; Connection
381 | G1 X5.275 Y-7.914 Z0.400 F5400 A56.79675; Infill
382 | M73 P90; Update Progress
383 | G1 X5.835 Y-7.914 Z0.400 F5400 A56.81633; Connection
384 | G1 X-7.914 Y5.835 Z0.400 F5400 A57.49608; Infill
385 | G1 X-7.914 Y6.395 Z0.400 F5400 A57.51566; Connection
386 | G1 X6.395 Y-7.914 Z0.400 F5400 A58.22310; Infill
387 | M73 P91; Update Progress
388 | G1 X6.955 Y-7.914 Z0.400 F5400 A58.24268; Connection
389 | G1 X-7.914 Y6.955 Z0.400 F5400 A58.97781; Infill
390 | G1 X-7.914 Y7.515 Z0.400 F5400 A58.99739; Connection
391 | G1 X7.515 Y-7.914 Z0.400 F5400 A59.76021; Infill
392 | M73 P92; Update Progress
393 | G1 X7.914 Y-7.753 Z0.400 F5400 A59.77525; Connection
394 | G1 X-7.753 Y7.914 Z0.400 F5400 A60.54984; Infill
395 | G1 X-7.193 Y7.914 Z0.400 F5400 A60.56942; Connection
396 | G1 X7.914 Y-7.193 Z0.400 F5400 A61.31631; Infill
397 | M73 P93; Update Progress
398 | G1 X7.914 Y-6.633 Z0.400 F5400 A61.33589; Connection
399 | G1 X-6.633 Y7.914 Z0.400 F5400 A62.05510; Infill
400 | G1 X-6.073 Y7.914 Z0.400 F5400 A62.07468; Connection
401 | G1 X7.914 Y-6.073 Z0.400 F5400 A62.76620; Infill
402 | M73 P94; Update Progress
403 | G1 X7.914 Y-5.513 Z0.400 F5400 A62.78578; Connection
404 | G1 X-5.513 Y7.914 Z0.400 F5400 A63.44961; Infill
405 | G1 X-4.953 Y7.914 Z0.400 F5400 A63.46919; Connection
406 | G1 X7.914 Y-4.953 Z0.400 F5400 A64.10533; Infill
407 | M73 P95; Update Progress
408 | G1 X7.914 Y-4.393 Z0.400 F5400 A64.12491; Connection
409 | G1 X-4.393 Y7.914 Z0.400 F5400 A64.73336; Infill
410 | G1 X-3.833 Y7.914 Z0.400 F5400 A64.75294; Connection
411 | G1 X7.914 Y-3.833 Z0.400 F5400 A65.33371; Infill
412 | G1 X7.914 Y-3.273 Z0.400 F5400 A65.35329; Connection
413 | G1 X-3.273 Y7.914 Z0.400 F5400 A65.90637; Infill
414 | M73 P96; Update Progress
415 | G1 X-2.713 Y7.914 Z0.400 F5400 A65.92595; Connection
416 | G1 X7.914 Y-2.713 Z0.400 F5400 A66.45134; Infill
417 | G1 X7.914 Y-2.153 Z0.400 F5400 A66.47092; Connection
418 | G1 X-2.153 Y7.914 Z0.400 F5400 A66.96862; Infill
419 | G1 X-1.593 Y7.914 Z0.400 F5400 A66.98820; Connection
420 | G1 X7.914 Y-1.593 Z0.400 F5400 A67.45821; Infill
421 | M73 P97; Update Progress
422 | G1 X7.914 Y-1.033 Z0.400 F5400 A67.47779; Connection
423 | G1 X-1.033 Y7.914 Z0.400 F5400 A67.92011; Infill
424 | G1 X-0.473 Y7.914 Z0.400 F5400 A67.93969; Connection
425 | G1 X7.914 Y-0.473 Z0.400 F5400 A68.35433; Infill
426 | G1 X7.914 Y0.087 Z0.400 F5400 A68.37391; Connection
427 | G1 X0.087 Y7.914 Z0.400 F5400 A68.76086; Infill
428 | M73 P98; Update Progress
429 | G1 X0.647 Y7.914 Z0.400 F5400 A68.78044; Connection
430 | G1 X7.914 Y0.647 Z0.400 F5400 A69.13970; Infill
431 | G1 X7.914 Y1.208 Z0.400 F5400 A69.15928; Connection
432 | G1 X1.208 Y7.914 Z0.400 F5400 A69.49085; Infill
433 | G1 X1.768 Y7.914 Z0.400 F5400 A69.51043; Connection
434 | G1 X7.914 Y1.768 Z0.400 F5400 A69.81431; Infill
435 | G1 X7.914 Y2.328 Z0.400 F5400 A69.83389; Connection
436 | G1 X2.328 Y7.914 Z0.400 F5400 A70.11009; Infill
437 | M73 P99; Update Progress
438 | G1 X2.888 Y7.914 Z0.400 F5400 A70.12967; Connection
439 | G1 X7.914 Y2.888 Z0.400 F5400 A70.37817; Infill
440 | G1 X7.914 Y3.448 Z0.400 F5400 A70.39775; Connection
441 | G1 X3.448 Y7.914 Z0.400 F5400 A70.61857; Infill
442 | G1 X4.008 Y7.914 Z0.400 F5400 A70.63815; Connection
443 | G1 X7.914 Y4.008 Z0.400 F5400 A70.83128; Infill
444 | G1 X7.914 Y4.568 Z0.400 F5400 A70.85086; Connection
445 | G1 X4.568 Y7.914 Z0.400 F5400 A71.01630; Infill
446 | G1 X5.128 Y7.914 Z0.400 F5400 A71.03588; Connection
447 | G1 X7.914 Y5.128 Z0.400 F5400 A71.17364; Infill
448 | G1 X7.914 Y5.688 Z0.400 F5400 A71.19321; Connection
449 | G1 X5.688 Y7.914 Z0.400 F5400 A71.30328; Infill
450 | G1 X6.248 Y7.914 Z0.400 F5400 A71.32286; Connection
451 | G1 X7.914 Y6.248 Z0.400 F5400 A71.40524; Infill
452 | G1 X7.914 Y6.808 Z0.400 F5400 A71.42482; Connection
453 | G1 X6.808 Y7.914 Z0.400 F5400 A71.47951; Infill
454 | G1 X7.368 Y7.914 Z0.400 F5400 A71.49909; Connection
455 | G1 X7.914 Y7.368 Z0.400 F5400 A71.52609; Infill
456 | M73 P100; Update Progress
457 | M127 T0; Disable Fan
458 | ; End of print
459 | G1 X7.914 Y7.368 Z0.400 F1500 A70.22609; Retract
460 | M127 T0 (Fan Off)
461 | M18 A B(Turn off A and B Steppers)
462 | G1 Z155 F900
463 | G162 X Y F2000
464 | M18 X Y Z(Turn off steppers after a build)
465 | M104 S0 T0
466 | M70 P5 (We <3 Making Things!)
467 | M72 P1 ( Play Ta-Da song )
468 | M73 P100
469 | M137 (build end notification)
470 |
--------------------------------------------------------------------------------
/sample_files/thin_hex_test_part.gcode:
--------------------------------------------------------------------------------
1 | M136 (enable build)
2 | M73 P0
3 | G162 X Y F2000(home XY axes maximum)
4 | G161 Z F900(home Z axis minimum)
5 | G92 X0 Y0 Z-5 A0 B0 (set Z to -5)
6 | G1 Z0.0 F900(move Z to '0')
7 | G161 Z F100(home Z axis minimum)
8 | M132 X Y Z A B (Recall stored home offsets for XYZAB axis)
9 | G92 X152 Y75 Z0 A0 B0
10 | G1 X-141 Y-74 Z40 F3300.0 (move to waiting position)
11 | G130 X20 Y20 A20 B20 (Lower stepper Vrefs while heating)
12 | M135 T0
13 | M104 S230 T0
14 | M133 T0
15 | G130 X127 Y127 A127 B127 (Set Stepper motor Vref to defaults)
16 | ; Makerbot Industries
17 | ; Miracle Grue 3.9.4
18 | ; This file contains digital fabrication directives
19 | ; in G-Code format for your 3D printer
20 | ; http://www.makerbot.com/support/makerware/documentation/slicer/
21 | ;
22 | ; Right Toolhead Weight (grams): 0.0889037
23 | ; Right Toolhead Distance (mm): 29.1381
24 | ; Duration: 51.3445 seconds
25 | ; Active extruders in print: 0
26 | ; Chunk 0
27 | ; Lower Position 0
28 | ; Upper Position 0.2
29 | ; Thickness 0.2
30 | ; Width 0.4
31 | G1 X105.400 Y-74.000 Z0.270 F9000.000 (Extruder Prime Dry Move)
32 | G1 X-141 Y-74 Z0.270 F1800.000 E25.000 (Extruder Prime Start)
33 | G92 A0 B0 (Reset after prime)
34 | G1 Z0.000000 F1000
35 | G1 X-141.0 Y-74.0 Z0.0 F1000 E0.0
36 | G92 E0
37 | G1 X-141.000 Y-74.000 Z0.000 F1500 A-1.30000; Retract
38 | G1 X-141.000 Y-74.000 Z0.000 F3000; Retract
39 | G1 X-141.000 Y-74.000 Z0.200 F1380; Travel Move
40 | M73 P0; Update Progress
41 | G1 X-5.605 Y-3.934 Z0.200 F9000; Travel Move
42 | M73 P3; Update Progress
43 | G1 X-5.605 Y-3.934 Z0.200 F1500 A0.00000; Restart
44 | G1 X-0.407 Y-6.860 Z0.200 F1800 A0.20853; Inset
45 | M73 P4; Update Progress
46 | G1 X0.558 Y-6.849 Z0.200 F1800 A0.24226; Inset
47 | G1 X5.690 Y-3.809 Z0.200 F1800 A0.45079; Inset
48 | G1 X6.162 Y-2.968 Z0.200 F1800 A0.48450; Inset
49 | G1 X6.096 Y2.994 Z0.200 F1800 A0.69296; Inset
50 | M73 P5; Update Progress
51 | G1 X5.605 Y3.824 Z0.200 F1800 A0.72667; Inset
52 | G1 X0.407 Y6.750 Z0.200 F1800 A0.93520; Inset
53 | M73 P6; Update Progress
54 | G1 X-0.558 Y6.739 Z0.200 F1800 A0.96893; Inset
55 | G1 X-5.690 Y3.699 Z0.200 F1800 A1.17746; Inset
56 | M73 P7; Update Progress
57 | G1 X-6.162 Y2.858 Z0.200 F1800 A1.21118; Inset
58 | G1 X-6.096 Y-3.104 Z0.200 F1800 A1.41963; Inset
59 | G1 X-5.605 Y-3.934 Z0.200 F1800 A1.45334; Inset
60 | G1 X-5.605 Y-3.934 Z0.200 F1500 A0.15334; Retract
61 | G1 X-5.605 Y-3.934 Z0.200 F3000; Retract
62 | G1 X-5.315 Y-3.638 Z0.200 F9000; Travel Move
63 | G1 X-5.315 Y-3.638 Z0.200 F1500 A1.45334; Restart
64 | G1 X-0.304 Y-6.459 Z0.200 F1800 A1.65437; Inset
65 | M73 P8; Update Progress
66 | G1 X0.446 Y-6.450 Z0.200 F1800 A1.68061; Inset
67 | G1 X5.393 Y-3.519 Z0.200 F1800 A1.88165; Inset
68 | M73 P9; Update Progress
69 | G1 X5.761 Y-2.865 Z0.200 F1800 A1.90787; Inset
70 | G1 X5.697 Y2.883 Z0.200 F1800 A2.10883; Inset
71 | M73 P10; Update Progress
72 | G1 X5.315 Y3.528 Z0.200 F1800 A2.13505; Inset
73 | G1 X0.304 Y6.349 Z0.200 F1800 A2.33608; Inset
74 | G1 X-0.446 Y6.340 Z0.200 F1800 A2.36232; Inset
75 | G1 X-5.393 Y3.409 Z0.200 F1800 A2.56335; Inset
76 | M73 P11; Update Progress
77 | G1 X-5.761 Y2.755 Z0.200 F1800 A2.58958; Inset
78 | G1 X-5.697 Y-2.993 Z0.200 F1800 A2.79054; Inset
79 | M73 P12; Update Progress
80 | G1 X-5.315 Y-3.638 Z0.200 F1800 A2.81676; Inset
81 | G1 X-5.315 Y-3.638 Z0.200 F1500 A1.51676; Retract
82 | G1 X-5.315 Y-3.638 Z0.200 F3000; Retract
83 | G1 X-5.026 Y-3.342 Z0.200 F9000; Travel Move
84 | G1 X-5.026 Y-3.342 Z0.200 F1500 A2.81676; Restart
85 | G1 X-0.201 Y-6.058 Z0.200 F1800 A3.01030; Inset
86 | G1 X0.335 Y-6.052 Z0.200 F1800 A3.02904; Inset
87 | G1 X5.097 Y-3.230 Z0.200 F1800 A3.22257; Inset
88 | M73 P13; Update Progress
89 | G1 X5.360 Y-2.763 Z0.200 F1800 A3.24131; Inset
90 | G1 X5.299 Y2.771 Z0.200 F1800 A3.43477; Inset
91 | M73 P14; Update Progress
92 | G1 X5.026 Y3.232 Z0.200 F1800 A3.45350; Inset
93 | G1 X0.201 Y5.948 Z0.200 F1800 A3.64704; Inset
94 | G1 X-0.335 Y5.942 Z0.200 F1800 A3.66578; Inset
95 | G1 X-5.097 Y3.120 Z0.200 F1800 A3.85932; Inset
96 | M73 P15; Update Progress
97 | G1 X-5.360 Y2.653 Z0.200 F1800 A3.87805; Inset
98 | G1 X-5.299 Y-2.881 Z0.200 F1800 A4.07152; Inset
99 | M73 P16; Update Progress
100 | G1 X-5.026 Y-3.342 Z0.200 F1800 A4.09025; Inset
101 | G1 X-5.026 Y-3.342 Z0.200 F1500 A2.79025; Retract
102 | G1 X-5.026 Y-3.342 Z0.200 F3000; Retract
103 | G1 X-4.736 Y-3.046 Z0.200 F9000; Travel Move
104 | G1 X-4.736 Y-3.046 Z0.200 F1500 A4.09025; Restart
105 | G1 X-0.099 Y-5.656 Z0.200 F1800 A4.27629; Inset
106 | G1 X0.223 Y-5.653 Z0.200 F1800 A4.28754; Inset
107 | G1 X4.801 Y-2.940 Z0.200 F1800 A4.47358; Inset
108 | M73 P17; Update Progress
109 | G1 X4.959 Y-2.660 Z0.200 F1800 A4.48481; Inset
110 | G1 X4.900 Y2.659 Z0.200 F1800 A4.67079; Inset
111 | M73 P18; Update Progress
112 | G1 X4.736 Y2.936 Z0.200 F1800 A4.68203; Inset
113 | G1 X0.099 Y5.546 Z0.200 F1800 A4.86807; Inset
114 | G1 X-0.223 Y5.543 Z0.200 F1800 A4.87932; Inset
115 | G1 X-4.801 Y2.830 Z0.200 F1800 A5.06536; Inset
116 | M73 P19; Update Progress
117 | G1 X-4.959 Y2.550 Z0.200 F1800 A5.07660; Inset
118 | G1 X-4.900 Y-2.769 Z0.200 F1800 A5.26257; Inset
119 | M73 P20; Update Progress
120 | G1 X-4.736 Y-3.046 Z0.200 F1800 A5.27381; Inset
121 | G1 X-4.736 Y-3.046 Z0.200 F1500 A3.97381; Retract
122 | G1 X-4.736 Y-3.046 Z0.200 F3000; Retract
123 | G1 X-4.500 Y-2.720 Z0.200 F9000; Travel Move
124 | G1 X-4.500 Y-2.720 Z0.200 F1500 A5.27381; Restart
125 | G1 X0.058 Y-5.286 Z0.200 F1800 A5.45668; Inset
126 | G1 X4.558 Y-2.619 Z0.200 F1800 A5.63956; Inset
127 | M73 P21; Update Progress
128 | G1 X4.500 Y2.610 Z0.200 F1800 A5.82236; Inset
129 | G1 X-0.058 Y5.176 Z0.200 F1800 A6.00524; Inset
130 | M73 P22; Update Progress
131 | G1 X-4.558 Y2.509 Z0.200 F1800 A6.18811; Inset
132 | G1 X-4.500 Y-2.720 Z0.200 F1800 A6.37092; Inset
133 | M73 P23; Update Progress
134 | G1 X-4.500 Y-2.720 Z0.200 F1500 A5.07092; Retract
135 | G1 X-4.500 Y-2.720 Z0.200 F3000; Retract
136 | G1 X-8.200 Y-8.200 Z0.200 F9000; Travel Move
137 | G1 X-8.200 Y-8.200 Z0.200 F1500 A6.37092; Restart
138 | G1 X-8.200 Y8.200 Z0.200 F1800 A6.94426; Inset
139 | M73 P25; Update Progress
140 | G1 X8.200 Y8.200 Z0.200 F1800 A7.51760; Inset
141 | M73 P27; Update Progress
142 | G1 X8.200 Y-8.200 Z0.200 F1800 A8.09095; Inset
143 | M73 P29; Update Progress
144 | G1 X-8.200 Y-8.200 Z0.200 F1800 A8.66429; Inset
145 | M73 P30; Update Progress
146 | G1 X-8.200 Y-8.200 Z0.200 F1500 A7.36429; Retract
147 | G1 X-8.200 Y-8.200 Z0.200 F3000; Retract
148 | G1 X-8.600 Y-8.600 Z0.200 F9000; Travel Move
149 | G1 X-8.600 Y-8.600 Z0.200 F1500 A8.66429; Restart
150 | G1 X-8.600 Y8.600 Z0.200 F1800 A9.26560; Inset
151 | M73 P32; Update Progress
152 | G1 X8.600 Y8.600 Z0.200 F1800 A9.86691; Inset
153 | M73 P34; Update Progress
154 | G1 X8.600 Y-8.600 Z0.200 F1800 A10.46822; Inset
155 | M73 P36; Update Progress
156 | G1 X-8.600 Y-8.600 Z0.200 F1800 A11.06954; Inset
157 | M73 P38; Update Progress
158 | G1 X-8.600 Y-8.600 Z0.200 F1500 A9.76954; Retract
159 | G1 X-8.600 Y-8.600 Z0.200 F3000; Retract
160 | G1 X-9.000 Y-9.000 Z0.200 F9000; Travel Move
161 | G1 X-9.000 Y-9.000 Z0.200 F1500 A11.06954; Restart
162 | G1 X-9.000 Y9.000 Z0.200 F1800 A11.69881; Inset
163 | M73 P40; Update Progress
164 | G1 X9.000 Y9.000 Z0.200 F1800 A12.32809; Inset
165 | M73 P42; Update Progress
166 | G1 X9.000 Y-9.000 Z0.200 F1800 A12.95737; Inset
167 | M73 P44; Update Progress
168 | G1 X-9.000 Y-9.000 Z0.200 F1800 A13.58665; Inset
169 | M73 P46; Update Progress
170 | G1 X-9.000 Y-9.000 Z0.200 F1500 A12.28665; Retract
171 | G1 X-9.000 Y-9.000 Z0.200 F3000; Retract
172 | G1 X-9.400 Y-9.400 Z0.200 F9000; Travel Move
173 | G1 X-9.400 Y-9.400 Z0.200 F1500 A13.58665; Restart
174 | G1 X-9.400 Y9.400 Z0.200 F1800 A14.24390; Inset
175 | M73 P48; Update Progress
176 | G1 X9.400 Y9.400 Z0.200 F1800 A14.90114; Inset
177 | M73 P50; Update Progress
178 | G1 X9.400 Y-9.400 Z0.200 F1800 A15.55839; Inset
179 | M73 P52; Update Progress
180 | G1 X-9.400 Y-9.400 Z0.200 F1800 A16.21564; Inset
181 | M73 P54; Update Progress
182 | G1 X-9.400 Y-9.400 Z0.200 F1500 A14.91564; Retract
183 | G1 X-9.400 Y-9.400 Z0.200 F3000; Retract
184 | G1 X-9.800 Y-9.800 Z0.200 F9000; Travel Move
185 | G1 X-9.800 Y-9.800 Z0.200 F1500 A16.21564; Restart
186 | G1 X-9.800 Y9.800 Z0.200 F1800 A16.90085; Inset
187 | M73 P56; Update Progress
188 | G1 X9.800 Y9.800 Z0.200 F1800 A17.58607; Inset
189 | M73 P59; Update Progress
190 | G1 X9.800 Y-9.800 Z0.200 F1800 A18.27128; Inset
191 | M73 P61; Update Progress
192 | G1 X-9.800 Y-9.800 Z0.200 F1800 A18.95650; Inset
193 | M73 P63; Update Progress
194 | G1 X-9.800 Y-9.800 Z0.200 F1500 A17.65650; Retract
195 | G1 X-9.800 Y-9.800 Z0.200 F3000; Retract
196 | G1 X-7.753 Y-7.914 Z0.200 F9000; Travel Move
197 | G1 X-7.753 Y-7.914 Z0.200 F1500 A18.95650; Restart
198 | G1 X-4.643 Y-4.804 Z0.200 F1800 A19.11027; Infill
199 | M73 P64; Update Progress
200 | G1 X-4.284 Y-5.005 Z0.200 F1800 A19.12464; Connection
201 | G1 X-7.193 Y-7.914 Z0.200 F1800 A19.26844; Infill
202 | G1 X-6.633 Y-7.914 Z0.200 F1800 A19.28802; Connection
203 | G1 X-3.926 Y-5.207 Z0.200 F1800 A19.42184; Infill
204 | M73 P65; Update Progress
205 | G1 X-3.568 Y-5.409 Z0.200 F1800 A19.43622; Connection
206 | G1 X-6.073 Y-7.914 Z0.200 F1800 A19.56007; Infill
207 | G1 X-5.513 Y-7.914 Z0.200 F1800 A19.57965; Connection
208 | G1 X-3.209 Y-5.611 Z0.200 F1800 A19.69353; Infill
209 | G1 X-2.851 Y-5.812 Z0.200 F1800 A19.70791; Connection
210 | G1 X-4.953 Y-7.914 Z0.200 F1800 A19.81182; Infill
211 | M73 P66; Update Progress
212 | G1 X-4.393 Y-7.914 Z0.200 F1800 A19.83139; Connection
213 | G1 X-2.493 Y-6.014 Z0.200 F1800 A19.92533; Infill
214 | G1 X-2.134 Y-6.216 Z0.200 F1800 A19.93970; Connection
215 | G1 X-3.833 Y-7.914 Z0.200 F1800 A20.02367; Infill
216 | G1 X-3.273 Y-7.914 Z0.200 F1800 A20.04325; Connection
217 | G1 X-1.776 Y-6.417 Z0.200 F1800 A20.11724; Infill
218 | M73 P67; Update Progress
219 | G1 X-1.418 Y-6.619 Z0.200 F1800 A20.13161; Connection
220 | G1 X-2.713 Y-7.914 Z0.200 F1800 A20.19563; Infill
221 | G1 X-2.153 Y-7.914 Z0.200 F1800 A20.21521; Connection
222 | G1 X-1.060 Y-6.821 Z0.200 F1800 A20.26926; Infill
223 | G1 X-0.701 Y-7.023 Z0.200 F1800 A20.28363; Connection
224 | G1 X-1.593 Y-7.914 Z0.200 F1800 A20.32770; Infill
225 | G1 X-1.033 Y-7.914 Z0.200 F1800 A20.34728; Connection
226 | G1 X-0.263 Y-7.144 Z0.200 F1800 A20.38533; Infill
227 | M73 P68; Update Progress
228 | G1 X0.303 Y-7.138 Z0.200 F1800 A20.40513; Connection
229 | G1 X-0.473 Y-7.914 Z0.200 F1800 A20.44349; Infill
230 | G1 X0.087 Y-7.914 Z0.200 F1800 A20.46307; Connection
231 | G1 X1.200 Y-6.801 Z0.200 F1800 A20.51809; Infill
232 | G1 X0.647 Y-7.914 Z0.200 F1800 A20.56153; Connection
233 | G1 X2.575 Y-5.987 Z0.200 F1800 A20.65682; Infill
234 | G1 X3.949 Y-5.172 Z0.200 F1800 A20.71267; Connection
235 | M73 P69; Update Progress
236 | G1 X1.207 Y-7.914 Z0.200 F1800 A20.84822; Infill
237 | G1 X1.768 Y-7.914 Z0.200 F1800 A20.86780; Connection
238 | G1 X7.914 Y-1.768 Z0.200 F1800 A21.17169; Infill
239 | M73 P70; Update Progress
240 | G1 X7.914 Y-2.328 Z0.200 F1800 A21.19127; Connection
241 | G1 X2.328 Y-7.914 Z0.200 F1800 A21.46746; Infill
242 | M73 P71; Update Progress
243 | G1 X2.888 Y-7.914 Z0.200 F1800 A21.48704; Connection
244 | G1 X7.914 Y-2.888 Z0.200 F1800 A21.73555; Infill
245 | M73 P72; Update Progress
246 | G1 X7.914 Y-3.448 Z0.200 F1800 A21.75513; Connection
247 | G1 X3.448 Y-7.914 Z0.200 F1800 A21.97595; Infill
248 | M73 P73; Update Progress
249 | G1 X4.008 Y-7.914 Z0.200 F1800 A21.99553; Connection
250 | G1 X7.914 Y-4.008 Z0.200 F1800 A22.18866; Infill
251 | G1 X7.914 Y-4.568 Z0.200 F1800 A22.20824; Connection
252 | G1 X4.568 Y-7.914 Z0.200 F1800 A22.37369; Infill
253 | M73 P74; Update Progress
254 | G1 X5.128 Y-7.914 Z0.200 F1800 A22.39327; Connection
255 | G1 X7.914 Y-5.128 Z0.200 F1800 A22.53102; Infill
256 | G1 X7.914 Y-5.688 Z0.200 F1800 A22.55060; Connection
257 | G1 X5.688 Y-7.914 Z0.200 F1800 A22.66067; Infill
258 | M73 P75; Update Progress
259 | G1 X6.248 Y-7.914 Z0.200 F1800 A22.68025; Connection
260 | G1 X7.914 Y-6.248 Z0.200 F1800 A22.76263; Infill
261 | G1 X7.914 Y-6.808 Z0.200 F1800 A22.78221; Connection
262 | G1 X6.808 Y-7.914 Z0.200 F1800 A22.83690; Infill
263 | G1 X7.368 Y-7.914 Z0.200 F1800 A22.85648; Connection
264 | G1 X7.914 Y-7.368 Z0.200 F1800 A22.88348; Infill
265 | G1 X7.914 Y-7.368 Z0.200 F1500 A21.58348; Retract
266 | G1 X7.914 Y-7.368 Z0.200 F3000; Retract
267 | G1 X6.445 Y-2.676 Z0.200 F9000; Travel Move
268 | M73 P76; Update Progress
269 | G1 X6.445 Y-2.676 Z0.200 F1500 A22.88348; Restart
270 | G1 X7.914 Y-1.207 Z0.200 F1800 A22.95610; Infill
271 | G1 X7.914 Y-0.647 Z0.200 F1800 A22.97568; Connection
272 | G1 X6.439 Y-2.122 Z0.200 F1800 A23.04860; Infill
273 | G1 X6.433 Y-1.569 Z0.200 F1800 A23.06797; Connection
274 | G1 X7.914 Y-0.087 Z0.200 F1800 A23.14120; Infill
275 | G1 X7.914 Y0.473 Z0.200 F1800 A23.16078; Connection
276 | G1 X6.427 Y-1.015 Z0.200 F1800 A23.23431; Infill
277 | M73 P77; Update Progress
278 | G1 X6.421 Y-0.461 Z0.200 F1800 A23.25368; Connection
279 | G1 X7.914 Y1.033 Z0.200 F1800 A23.32752; Infill
280 | G1 X7.914 Y1.593 Z0.200 F1800 A23.34710; Connection
281 | G1 X6.414 Y0.093 Z0.200 F1800 A23.42124; Infill
282 | G1 X6.408 Y0.647 Z0.200 F1800 A23.44060; Connection
283 | G1 X7.914 Y2.153 Z0.200 F1800 A23.51505; Infill
284 | M73 P78; Update Progress
285 | G1 X7.914 Y2.713 Z0.200 F1800 A23.53463; Connection
286 | G1 X6.402 Y1.201 Z0.200 F1800 A23.60938; Infill
287 | G1 X6.396 Y1.755 Z0.200 F1800 A23.62875; Connection
288 | G1 X7.914 Y3.273 Z0.200 F1800 A23.70380; Infill
289 | G1 X7.914 Y3.833 Z0.200 F1800 A23.72338; Connection
290 | G1 X6.390 Y2.308 Z0.200 F1800 A23.79874; Infill
291 | G1 X6.384 Y2.862 Z0.200 F1800 A23.81811; Connection
292 | G1 X7.914 Y4.393 Z0.200 F1800 A23.89377; Infill
293 | M73 P79; Update Progress
294 | G1 X7.914 Y4.953 Z0.200 F1800 A23.91335; Connection
295 | G1 X6.252 Y3.291 Z0.200 F1800 A23.99550; Infill
296 | G1 X6.044 Y3.643 Z0.200 F1800 A24.00979; Connection
297 | G1 X7.914 Y5.513 Z0.200 F1800 A24.10223; Infill
298 | G1 X7.914 Y6.073 Z0.200 F1800 A24.12181; Connection
299 | G1 X5.836 Y3.995 Z0.200 F1800 A24.22455; Infill
300 | M73 P80; Update Progress
301 | G1 X5.495 Y4.214 Z0.200 F1800 A24.23872; Connection
302 | G1 X7.914 Y6.633 Z0.200 F1800 A24.35831; Infill
303 | G1 X7.914 Y7.193 Z0.200 F1800 A24.37789; Connection
304 | G1 X5.137 Y4.416 Z0.200 F1800 A24.51520; Infill
305 | M73 P81; Update Progress
306 | G1 X4.778 Y4.617 Z0.200 F1800 A24.52958; Connection
307 | G1 X7.914 Y7.753 Z0.200 F1800 A24.68461; Infill
308 | G1 X7.515 Y7.914 Z0.200 F1800 A24.69965; Connection
309 | G1 X4.420 Y4.819 Z0.200 F1800 A24.85266; Infill
310 | M73 P82; Update Progress
311 | G1 X4.062 Y5.021 Z0.200 F1800 A24.86704; Connection
312 | G1 X6.955 Y7.914 Z0.200 F1800 A25.01008; Infill
313 | G1 X6.395 Y7.914 Z0.200 F1800 A25.02966; Connection
314 | G1 X3.703 Y5.222 Z0.200 F1800 A25.16273; Infill
315 | M73 P83; Update Progress
316 | G1 X3.345 Y5.424 Z0.200 F1800 A25.17711; Connection
317 | G1 X5.835 Y7.914 Z0.200 F1800 A25.30021; Infill
318 | G1 X5.275 Y7.914 Z0.200 F1800 A25.31978; Connection
319 | G1 X2.987 Y5.626 Z0.200 F1800 A25.43291; Infill
320 | M73 P84; Update Progress
321 | G1 X2.628 Y5.828 Z0.200 F1800 A25.44729; Connection
322 | G1 X4.715 Y7.914 Z0.200 F1800 A25.55044; Infill
323 | G1 X4.155 Y7.914 Z0.200 F1800 A25.57002; Connection
324 | G1 X2.270 Y6.029 Z0.200 F1800 A25.66320; Infill
325 | G1 X1.912 Y6.231 Z0.200 F1800 A25.67758; Connection
326 | G1 X3.595 Y7.914 Z0.200 F1800 A25.76078; Infill
327 | M73 P85; Update Progress
328 | G1 X3.035 Y7.914 Z0.200 F1800 A25.78036; Connection
329 | G1 X1.553 Y6.433 Z0.200 F1800 A25.85360; Infill
330 | G1 X1.195 Y6.634 Z0.200 F1800 A25.86797; Connection
331 | G1 X2.475 Y7.914 Z0.200 F1800 A25.93124; Infill
332 | G1 X1.915 Y7.914 Z0.200 F1800 A25.95082; Connection
333 | G1 X0.837 Y6.836 Z0.200 F1800 A26.00411; Infill
334 | G1 X0.470 Y7.029 Z0.200 F1800 A26.01861; Connection
335 | G1 X1.355 Y7.914 Z0.200 F1800 A26.06236; Infill
336 | M73 P86; Update Progress
337 | G1 X0.795 Y7.914 Z0.200 F1800 A26.08194; Connection
338 | G1 X-0.089 Y7.030 Z0.200 F1800 A26.12562; Infill
339 | G1 X-0.680 Y6.999 Z0.200 F1800 A26.14632; Connection
340 | G1 X0.235 Y7.914 Z0.200 F1800 A26.19155; Infill
341 | G1 X-0.325 Y7.914 Z0.200 F1800 A26.21113; Connection
342 | G1 X-2.055 Y6.185 Z0.200 F1800 A26.29662; Infill
343 | G1 X-3.429 Y5.370 Z0.200 F1800 A26.35247; Connection
344 | G1 X-0.885 Y7.914 Z0.200 F1800 A26.47823; Infill
345 | M73 P87; Update Progress
346 | G1 X-1.445 Y7.914 Z0.200 F1800 A26.49781; Connection
347 | G1 X-4.803 Y4.556 Z0.200 F1800 A26.66383; Infill
348 | G1 X-7.914 Y2.005 Z0.200 F1800 A26.80445; Connection
349 | M73 P88; Update Progress
350 | G1 X-2.005 Y7.914 Z0.200 F1800 A27.09657; Infill
351 | M73 P89; Update Progress
352 | G1 X-2.566 Y7.914 Z0.200 F1800 A27.11615; Connection
353 | G1 X-7.914 Y2.566 Z0.200 F1800 A27.38059; Infill
354 | M73 P90; Update Progress
355 | G1 X-7.914 Y3.126 Z0.200 F1800 A27.40016; Connection
356 | G1 X-3.126 Y7.914 Z0.200 F1800 A27.63691; Infill
357 | M73 P91; Update Progress
358 | G1 X-3.686 Y7.914 Z0.200 F1800 A27.65649; Connection
359 | G1 X-7.914 Y3.686 Z0.200 F1800 A27.86554; Infill
360 | G1 X-7.914 Y4.246 Z0.200 F1800 A27.88512; Connection
361 | G1 X-4.246 Y7.914 Z0.200 F1800 A28.06649; Infill
362 | M73 P92; Update Progress
363 | G1 X-4.806 Y7.914 Z0.200 F1800 A28.08607; Connection
364 | G1 X-7.914 Y4.806 Z0.200 F1800 A28.23975; Infill
365 | G1 X-7.914 Y5.366 Z0.200 F1800 A28.25932; Connection
366 | M73 P93; Update Progress
367 | G1 X-5.366 Y7.914 Z0.200 F1800 A28.38531; Infill
368 | G1 X-5.926 Y7.914 Z0.200 F1800 A28.40489; Connection
369 | G1 X-7.914 Y5.926 Z0.200 F1800 A28.50320; Infill
370 | G1 X-7.914 Y6.486 Z0.200 F1800 A28.52277; Connection
371 | G1 X-6.486 Y7.914 Z0.200 F1800 A28.59339; Infill
372 | M73 P94; Update Progress
373 | G1 X-7.046 Y7.914 Z0.200 F1800 A28.61297; Connection
374 | G1 X-7.914 Y7.046 Z0.200 F1800 A28.65589; Infill
375 | G1 X-7.914 Y7.606 Z0.200 F1800 A28.67547; Connection
376 | G1 X-7.606 Y7.914 Z0.200 F1800 A28.69071; Infill
377 | G1 X-7.606 Y7.914 Z0.200 F1500 A27.39071; Retract
378 | G1 X-7.606 Y7.914 Z0.200 F3000; Retract
379 | G1 X-6.442 Y2.917 Z0.200 F9000; Travel Move
380 | G1 X-6.442 Y2.917 Z0.200 F1500 A28.69071; Restart
381 | G1 X-7.914 Y1.445 Z0.200 F1800 A28.76346; Infill
382 | G1 X-7.914 Y0.885 Z0.200 F1800 A28.78304; Connection
383 | G1 X-6.443 Y2.357 Z0.200 F1800 A28.85578; Infill
384 | M73 P95; Update Progress
385 | G1 X-6.437 Y1.803 Z0.200 F1800 A28.87514; Connection
386 | G1 X-7.914 Y0.325 Z0.200 F1800 A28.94818; Infill
387 | G1 X-7.914 Y-0.235 Z0.200 F1800 A28.96776; Connection
388 | G1 X-6.430 Y1.249 Z0.200 F1800 A29.04111; Infill
389 | G1 X-6.424 Y0.695 Z0.200 F1800 A29.06047; Connection
390 | G1 X-7.914 Y-0.795 Z0.200 F1800 A29.13412; Infill
391 | G1 X-7.914 Y-1.355 Z0.200 F1800 A29.15370; Connection
392 | G1 X-6.418 Y0.141 Z0.200 F1800 A29.22766; Infill
393 | M73 P96; Update Progress
394 | G1 X-6.412 Y-0.413 Z0.200 F1800 A29.24702; Connection
395 | G1 X-7.914 Y-1.915 Z0.200 F1800 A29.32128; Infill
396 | G1 X-7.914 Y-2.475 Z0.200 F1800 A29.34086; Connection
397 | G1 X-6.406 Y-0.967 Z0.200 F1800 A29.41542; Infill
398 | G1 X-6.400 Y-1.520 Z0.200 F1800 A29.43478; Connection
399 | G1 X-7.914 Y-3.035 Z0.200 F1800 A29.50965; Infill
400 | M73 P97; Update Progress
401 | G1 X-7.914 Y-3.595 Z0.200 F1800 A29.52923; Connection
402 | G1 X-6.394 Y-2.074 Z0.200 F1800 A29.60440; Infill
403 | G1 X-6.387 Y-2.628 Z0.200 F1800 A29.62377; Connection
404 | G1 X-7.914 Y-4.155 Z0.200 F1800 A29.69924; Infill
405 | G1 X-7.914 Y-4.715 Z0.200 F1800 A29.71882; Connection
406 | G1 X-6.373 Y-3.174 Z0.200 F1800 A29.79499; Infill
407 | G1 X-6.174 Y-3.535 Z0.200 F1800 A29.80939; Connection
408 | M73 P98; Update Progress
409 | G1 X-7.914 Y-5.275 Z0.200 F1800 A29.89543; Infill
410 | G1 X-7.914 Y-5.835 Z0.200 F1800 A29.91501; Connection
411 | G1 X-5.965 Y-3.886 Z0.200 F1800 A30.01135; Infill
412 | G1 X-5.718 Y-4.199 Z0.200 F1800 A30.02529; Connection
413 | G1 X-7.914 Y-6.395 Z0.200 F1800 A30.13387; Infill
414 | M73 P99; Update Progress
415 | G1 X-7.914 Y-6.955 Z0.200 F1800 A30.15345; Connection
416 | G1 X-5.359 Y-4.400 Z0.200 F1800 A30.27975; Infill
417 | G1 X-5.001 Y-4.602 Z0.200 F1800 A30.29412; Connection
418 | G1 X-7.914 Y-7.515 Z0.200 F1800 A30.43814; Infill
419 | M73 P100; Update Progress
420 | ; End of print
421 | G1 X-7.914 Y-7.515 Z0.200 F1500 A29.13814; Retract
422 | M127 T0 (Fan Off)
423 | M18 A B(Turn off A and B Steppers)
424 | G1 Z155 F900
425 | G162 X Y F2000
426 | M18 X Y Z(Turn off steppers after a build)
427 | M104 S0 T0
428 | M70 P5 (We <3 Making Things!)
429 | M72 P1 ( Play Ta-Da song )
430 | M73 P100
431 | M137 (build end notification)
432 |
--------------------------------------------------------------------------------
/sample_output/gitkeepdir.txt:
--------------------------------------------------------------------------------
1 | sadfsa
--------------------------------------------------------------------------------
/sliceViewGTK/DebugViewCanvas.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using SkiaSharp;
4 | using System.IO;
5 | using g3;
6 | using gs;
7 |
8 | namespace SliceViewer
9 | {
10 | public class DebugViewCanvas : PanZoomCanvas2D
11 | {
12 | public List Graphs = new List();
13 | public List GPolygons = new List();
14 | public Dictionary