summaryrefslogtreecommitdiff
path: root/case
diff options
context:
space:
mode:
Diffstat (limited to 'case')
-rw-r--r--case/assembly.scad18
-rw-r--r--case/mech.mk17
-rw-r--r--case/panel_front.scad70
-rw-r--r--case/parameters.scad21
-rw-r--r--case/pcb_case/bolt.scad13
-rw-r--r--case/pcb_case/conversion.scad8
-rw-r--r--case/pcb_case/nut.scad7
-rw-r--r--case/pcb_case/panel.scad28
-rw-r--r--case/pcb_case/pcb.scad14
-rw-r--r--case/pcb_case/rounded_cube.scad12
-rw-r--r--case/pcb_case/shell.scad116
-rw-r--r--case/pcb_case/spacer.scad10
-rw-r--r--case/pcb_case/tolerance_tests.scad86
-rw-r--r--case/production.scad38
-rw-r--r--case/prusa-slicer/anycubic_i3_mega_s.ini331
15 files changed, 789 insertions, 0 deletions
diff --git a/case/assembly.scad b/case/assembly.scad
new file mode 100644
index 0000000..756e539
--- /dev/null
+++ b/case/assembly.scad
@@ -0,0 +1,18 @@
+include <parameters.scad>
+
+use <panel_front.scad>
+
+use <pcb_case/pcb.scad>
+use <pcb_case/shell.scad>
+use <pcb_case/panel.scad>
+
+module assembly() {
+ pcb(pcb_dim, drillings, margins, t);
+
+ pcb_case_shell_bottom(pcb_dim, drillings, margins, t);
+ pcb_case_shell_top(pcb_dim, margins, t);
+ pcb_case_panel_back(pcb_dim, margins, t);
+ panel_front(pcb_dim, margins, t);
+}
+
+assembly();
diff --git a/case/mech.mk b/case/mech.mk
new file mode 100644
index 0000000..ca39a7c
--- /dev/null
+++ b/case/mech.mk
@@ -0,0 +1,17 @@
+PRINTER := anycubic_i3_mega_s
+PRINTER_CONFIG := $(PRINTER:%=mech/prusa-slicer/%.ini)
+MECH_BUILD_DIR := $(BUILD_DIR)/mech
+PARTS := assembly production pcb_case/tolerance_tests
+STL := $(PARTS:%=$(MECH_BUILD_DIR)/%.stl)
+GCODE := $(PARTS:%=$(MECH_BUILD_DIR)/%.gcode)
+
+.PHONY: mech
+mech: $(GCODE) $(STL)
+
+$(BUILD_DIR)/%.gcode: $(BUILD_DIR)/%.stl
+ mkdir -p $(dir $@)
+ prusa-slicer --load $(PRINTER_CONFIG) --output $@ --export-gcode $<
+
+$(BUILD_DIR)/%.stl: %.scad
+ mkdir -p $(dir $@)
+ openscad --hardwarnings --export-format binstl -o $@ $<
diff --git a/case/panel_front.scad b/case/panel_front.scad
new file mode 100644
index 0000000..da06927
--- /dev/null
+++ b/case/panel_front.scad
@@ -0,0 +1,70 @@
+use <pcb_case/conversion.scad>
+use <pcb_case/panel.scad>
+
+tol = 2;
+
+module panel_front(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+ x_off = dim[0]-2*t;
+
+ difference() {
+ pcb_case_panel_front(pcb_dim, margins, t);
+ mini_hdmi_hole(pcb_dim, margins, t);
+ for(v=[
+ [usb_max_y-usb_max_delta_y-tol/2, 0.75*t],
+ [usb_max_y-usb_delta_y-tol/2, t]
+ ]) {
+ translate([0, v[0], 0]) {
+ micro_usb_hole(pcb_dim, margins, t, v[1]);
+ }
+ }
+ for(y = [cinch_min_y+0.5*cinch_d, cinch_min_y+1.5*cinch_d+cinch_delta_y]) {
+ translate([0, y, 0]) {
+ cinch_hole(pcb_dim, margins, t);
+ }
+ }
+ }
+}
+
+hdmi_delta_y = 11.8;
+hdmi_delta_z = 3.9;
+hdmi_max_y = 31.7;
+hdmi_max_z = 13.7;
+module mini_hdmi_hole(pcb_dim, margins, t) {
+ case_dim = dim_pcb_to_case(pcb_dim, margins, t);
+ translate([
+ case_dim[0]-2*t,
+ hdmi_max_y-hdmi_delta_y-tol/2,
+ hdmi_max_z-hdmi_delta_z-tol/2]) {
+ cube([t, hdmi_delta_y+tol, hdmi_delta_z+tol]);
+ }
+}
+
+usb_delta_y = 8;
+usb_max_delta_y = 20.6;
+usb_delta_z = 3;
+usb_max_y = 71.55;
+usb_max_z = 12.7;
+module micro_usb_hole(pcb_dim, margins, t, dx) {
+ echo(dx);
+ case_dim = dim_pcb_to_case(pcb_dim, margins, t);
+ translate([
+ case_dim[0]-2*t,
+ 0,
+ usb_max_z-usb_delta_z-tol/2]) {
+ cube([dx, usb_delta_y+tol, usb_delta_z+tol]);
+ }
+}
+
+cinch_d = 8.3;
+cinch_min_y = 45;
+cinch_delta_y = 8.2;
+cinch_max_z = 34.25;
+module cinch_hole(pcb_dim, margins, t) {
+ case_dim = dim_pcb_to_case(pcb_dim, margins, t);
+ translate([case_dim[0]-2*t, 0, cinch_max_z-cinch_d/2]) {
+ rotate([0, 90, 0]) {
+ cylinder(d=cinch_d+tol, h=t, $fn=30);
+ }
+ }
+}
diff --git a/case/parameters.scad b/case/parameters.scad
new file mode 100644
index 0000000..9fda8b4
--- /dev/null
+++ b/case/parameters.scad
@@ -0,0 +1,21 @@
+include <pcb_case/bolt.scad>
+
+t = 1.65;
+
+pcb_dim = [30, 65, 1.4];
+
+margins = [
+ [1, 0.3],
+ [3.6, 1.7],
+ [bolt_l-t-pcb_dim[2], 27]
+];
+
+base_drilling = [3.5, 3.5];
+dx = [23, 0];
+dy = [0, 58];
+drillings = [
+ base_drilling,
+ base_drilling + dx,
+ base_drilling + dy,
+ base_drilling + dx + dy
+];
diff --git a/case/pcb_case/bolt.scad b/case/pcb_case/bolt.scad
new file mode 100644
index 0000000..4c26c30
--- /dev/null
+++ b/case/pcb_case/bolt.scad
@@ -0,0 +1,13 @@
+// bolt based on ISO 4762 (https://www.fasteners.eu/us/standards/ISO/4762)
+bolt_k = 3;
+bolt_l = 10;
+bolt_dk = 5.5;
+bolt_ds = 3;
+bolt_ds_tol = 0.45;
+
+module bolt() {
+ union() {
+ cylinder(d=bolt_ds, h=bolt_l, $fn=30);
+ translate([0, 0, -bolt_ds]) cylinder(d=bolt_dk, h=bolt_ds, $fn=30);
+ }
+}
diff --git a/case/pcb_case/conversion.scad b/case/pcb_case/conversion.scad
new file mode 100644
index 0000000..69c3c3b
--- /dev/null
+++ b/case/pcb_case/conversion.scad
@@ -0,0 +1,8 @@
+include <bolt.scad>
+include <nut.scad>
+
+function dim_pcb_to_case(pcb_dim, margins, t) = [
+ pcb_dim[0]+margins[0][0]+margins[0][1]+4*t,
+ pcb_dim[1]+margins[1][0]+margins[1][1]+2*t+2*(bolt_l-t),
+ pcb_dim[2]+margins[2][0]+margins[2][1]+4*t
+];
diff --git a/case/pcb_case/nut.scad b/case/pcb_case/nut.scad
new file mode 100644
index 0000000..0768b6a
--- /dev/null
+++ b/case/pcb_case/nut.scad
@@ -0,0 +1,7 @@
+nut_h = 3;
+nut_d = 4.15;
+nut_d_tol = 0.2;
+
+module nut() {
+ cylinder(d=nut_d,h=nut_h);
+}
diff --git a/case/pcb_case/panel.scad b/case/pcb_case/panel.scad
new file mode 100644
index 0000000..eef0b28
--- /dev/null
+++ b/case/pcb_case/panel.scad
@@ -0,0 +1,28 @@
+include <nut.scad>
+
+use <conversion.scad>
+use <rounded_cube.scad>
+
+panel_dim_0_tol = 0.3;
+panel_dim_1_2_tol = 0.45;
+
+module pcb_case_panel(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
+ rounded_cube(
+ dim=[t, dim[1]-2*t, dim[2]-2*t],
+ radius=t
+ );
+}
+
+module pcb_case_panel_back(pcb_dim, margins, t) {
+ translate([t, t, t])
+ pcb_case_panel(pcb_dim, margins, t);
+}
+
+module pcb_case_panel_front(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
+ translate([dim[0]-2*t, t, t])
+ pcb_case_panel(pcb_dim, margins, t);
+}
diff --git a/case/pcb_case/pcb.scad b/case/pcb_case/pcb.scad
new file mode 100644
index 0000000..7b24131
--- /dev/null
+++ b/case/pcb_case/pcb.scad
@@ -0,0 +1,14 @@
+include <bolt.scad>
+include <nut.scad>
+
+module pcb(dim, drillings, margins, t) {
+ translate([2*t+margins[0][0], bolt_l+margins[1][0], t+margins[2][0]]) {
+ difference() {
+ cube([dim[0], dim[1], dim[2]]);
+ for (drilling = drillings) {
+ translate([drilling[0], drilling[1], 0])
+ cylinder(d=3, h=dim[2], $fn=30);
+ }
+ }
+ }
+}
diff --git a/case/pcb_case/rounded_cube.scad b/case/pcb_case/rounded_cube.scad
new file mode 100644
index 0000000..acd50e7
--- /dev/null
+++ b/case/pcb_case/rounded_cube.scad
@@ -0,0 +1,12 @@
+module rounded_cube(dim, radius) {
+ range_y = [radius, dim[1]-radius];
+ range_z = [radius, dim[2]-radius];
+ height = dim[0];
+
+ hull() {
+ for (y=range_y, z=range_z) {
+ translate([0,y,z]) rotate([0,90,0])
+ cylinder(r=radius, h=height, $fn=30);
+ }
+ }
+}
diff --git a/case/pcb_case/shell.scad b/case/pcb_case/shell.scad
new file mode 100644
index 0000000..18139f6
--- /dev/null
+++ b/case/pcb_case/shell.scad
@@ -0,0 +1,116 @@
+include <bolt.scad>
+include <nut.scad>
+include <panel.scad>
+
+use <conversion.scad>
+use <rounded_cube.scad>
+
+module shell_base(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
+ difference() {
+ // full body
+ rounded_cube(dim=dim, radius=t);
+
+ // cut away upper half
+ translate([0,0,dim[2]/2])
+ cube([dim[0], dim[1], dim[2]/2]);
+
+ // main PCB space
+ translate([3*t, t, t])
+ rounded_cube([dim[0]-6*t, dim[1]-2*t, dim[2]-2*t], t);
+
+ // remove front and back
+ translate([0, 2*t, 2*t])
+ rounded_cube([dim[0], dim[1]-4*t, dim[2]-4*t], t);
+
+ // panel holder
+ for (x_off = [t-panel_dim_0_tol/2, dim[0]-2*t-panel_dim_0_tol/2]) {
+ translate([x_off, t-panel_dim_0_tol/2, t-panel_dim_0_tol/2]) {
+ rounded_cube(
+ [
+ t+panel_dim_0_tol,
+ dim[1]-2*t+panel_dim_1_2_tol,
+ dim[2]-2*t+panel_dim_1_2_tol
+ ],
+ t
+ );
+ }
+ }
+
+ // bolt drillings
+ for (x = [dim[0]/4, dim[0]-dim[0]/4]) {
+ translate([x,0,dim[2]/2-1.5*bolt_ds])
+ rotate([-90,0,0])
+ cylinder(d=bolt_ds+bolt_ds_tol, h=1.1*t, $fn=30);
+ }
+ }
+}
+
+module shell_connector(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
+ size_x = dim[0]-6*t;
+ size_y = bolt_l-t;
+ size_z = dim[2]/2+3*bolt_ds;
+
+ difference () {
+ // base body
+ translate([3*t,dim[1]-t-size_y,0])
+ cube([size_x,size_y,size_z]);
+
+ // bolt holes
+ for (x = [dim[0]/4, dim[0]-dim[0]/4]) {
+ translate([x,dim[1]-t,dim[2]/2+1.5*bolt_ds])
+ rotate([90,0,0])
+ cylinder(d=bolt_ds+bolt_ds_tol, h=size_y, $fn=30);
+ }
+
+ // nut holes
+ for (x = [dim[0]/4, dim[0]-dim[0]/4]) {
+ translate([x, dim[1]-t-size_y, dim[2]/2+1.5*bolt_ds])
+ rotate([-90,0,0])
+ cylinder(d=nut_d+nut_d_tol, h=nut_h, $fn=30);
+ }
+ }
+
+ echo(min_shell_bolt_length=t+size_y);
+}
+
+module pcb_case_shell(pcb_dim, drillings, margins, t) {
+ difference () {
+ union() {
+ shell_base(pcb_dim, margins, t);
+ shell_connector(pcb_dim, margins, t);
+ for (drilling = drillings) {
+ translate([
+ 2*t+margins[0][0]+drilling[0],
+ bolt_l+margins[1][0]+drilling[1],
+ 0
+ ]) cylinder(d=nut_d+2, h=t+margins[2][0], $fn=30);
+ }
+ }
+ for (drilling = drillings) {
+ translate([
+ 2*t+margins[0][0]+drilling[0],
+ bolt_l+margins[1][0]+drilling[1],
+ 0
+ ]) {
+ cylinder(d=bolt_ds+bolt_ds_tol, h=t+margins[2][0], $fn=30);
+ cylinder(d=nut_d+nut_d_tol, h=nut_h, $fn=30);
+ }
+ }
+ }
+}
+
+module pcb_case_shell_bottom(pcb_dim, drillings, margins, t) {
+ pcb_case_shell(pcb_dim, drillings, margins, t);
+}
+
+module pcb_case_shell_top(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
+ translate([0, dim[1], dim[2]])
+ rotate([180,0,0])
+ pcb_case_shell(pcb_dim, [], margins, t);
+}
diff --git a/case/pcb_case/spacer.scad b/case/pcb_case/spacer.scad
new file mode 100644
index 0000000..e7eba3a
--- /dev/null
+++ b/case/pcb_case/spacer.scad
@@ -0,0 +1,10 @@
+include <bolt.scad>
+
+spacer_h = 11;
+
+module spacer() {
+ difference() {
+ cylinder(d=bolt_dk, h=spacer_h, $fn=30);
+ cylinder(d=bolt_ds+bolt_ds_tol, h=spacer_h, $fn=30);
+ }
+}
diff --git a/case/pcb_case/tolerance_tests.scad b/case/pcb_case/tolerance_tests.scad
new file mode 100644
index 0000000..94911cd
--- /dev/null
+++ b/case/pcb_case/tolerance_tests.scad
@@ -0,0 +1,86 @@
+include <bolt.scad>
+include <nut.scad>
+include <panel.scad>
+
+use <rounded_cube.scad>
+
+t = 2;
+step_width = 0.15;
+
+module bolt_drilling() {
+ steps = 2;
+
+ for(i = [-steps : steps]) {
+ tol = bolt_ds_tol + i * step_width;
+ echo(bolt_ds_tol=tol);
+ translate([i*5*bolt_ds,0,0])
+ difference() {
+ cube([5*bolt_ds, 5*bolt_ds, t]);
+ translate([2.5*bolt_ds,2.5*bolt_ds,0]) {
+ cylinder(d=bolt_ds+tol,h=t,$fn=50);
+ }
+ }
+ }
+}
+
+module nut_drilling() {
+ steps = 2;
+
+ for(i = [-steps : steps]) {
+ tol = nut_d_tol + i * step_width;
+ echo(nut_d_tol=tol);
+ translate([i*5*nut_d,0,0])
+ difference() {
+ cube([5*nut_d, 5*nut_d, 2*nut_h]);
+ translate([2.5*nut_d,2.5*nut_d,0]) {
+ union() {
+ cylinder(d=bolt_ds+bolt_ds_tol,h=2*nut_h,$fn=50);
+ translate([0,0,nut_h])
+ cylinder(d=tol+nut_d,h=nut_h,$fn=50);
+ }
+ }
+ }
+ }
+}
+
+module panel_thickness() {
+ steps = 2;
+
+ height = 2*t;
+
+ for(i = [-steps : steps]) {
+ tol = panel_dim_0_tol + i * step_width;
+ echo(panel_dim_0_tol=tol);
+ translate([i*5*t,0,0])
+ difference() {
+ cube([5*t, 5*t, height]);
+ translate([2*t, 0, t]) {
+ cube([t+tol, 5*t, t]);
+ }
+ }
+ }
+}
+
+module panel_width_height() {
+ steps = 2;
+
+ height = 3*t;
+
+ for(i = [-steps : steps]) {
+ tol = panel_dim_1_2_tol + i * step_width;
+ echo(panel_dim_1_2_tol=tol);
+ translate([i*3*t,0,0])
+ difference() {
+ cube([3*t, 8*t, height]);
+ translate([t, t-tol/2, t]) {
+ rounded_cube([t+panel_dim_0_tol, 6*t+tol, 6*t+tol], t);
+ }
+ }
+ }
+}
+
+bolt_drilling();
+translate([0, 20, 0]) nut_drilling();
+translate([0, 70, 0]) panel_thickness();
+translate([0, 50, 0]) panel_width_height();
+translate([0, 85, 0]) rotate([0, -90, 0]) rounded_cube([t, 6*t, 6*t], t);
diff --git a/case/production.scad b/case/production.scad
new file mode 100644
index 0000000..5d04fbd
--- /dev/null
+++ b/case/production.scad
@@ -0,0 +1,38 @@
+include <parameters.scad>
+
+use <panel_front.scad>
+
+use <pcb_case/conversion.scad>
+use <pcb_case/shell.scad>
+use <pcb_case/panel.scad>
+use <pcb_case/spacer.scad>
+
+module production() {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+ spacing = 5;
+
+ pcb_case_shell_bottom(pcb_dim, drillings, margins, t);
+
+ translate([-spacing, 0, 0])
+ rotate([0, 180, 0])
+ translate([0, 0, -dim[2]])
+ pcb_case_shell_top(pcb_dim, margins, t);
+
+ translate([-spacing, dim[1]+spacing, 0])
+ rotate([0, -90, 0])
+ translate([-t, -t, -t])
+ pcb_case_panel_back(pcb_dim, margins, t);
+
+ translate([0, dim[1]+spacing, t])
+ rotate([0, 90, 0])
+ translate([2*t-dim[0], -t, -t])
+ panel_front(pcb_dim, margins, t);
+
+ for(i = [0:3]) {
+ translate([dim[0]+bolt_dk/2+spacing, bolt_dk/2+i*(bolt_dk+spacing), 0]) {
+ spacer();
+ }
+ }
+}
+
+production();
diff --git a/case/prusa-slicer/anycubic_i3_mega_s.ini b/case/prusa-slicer/anycubic_i3_mega_s.ini
new file mode 100644
index 0000000..10abab4
--- /dev/null
+++ b/case/prusa-slicer/anycubic_i3_mega_s.ini
@@ -0,0 +1,331 @@
+# generated by PrusaSlicer 2.7.1 on 2023-12-23 at 18:21:27 UTC
+arc_fitting = disabled
+autoemit_temperature_commands = 1
+avoid_crossing_curled_overhangs = 0
+avoid_crossing_perimeters = 0
+avoid_crossing_perimeters_max_detour = 0
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,210x0,210x210,0x210
+bed_temperature = 60
+before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]
+between_objects_gcode =
+binary_gcode = 0
+bottom_fill_pattern = monotonic
+bottom_solid_layers = 5
+bottom_solid_min_thickness = 0.5
+bridge_acceleration = 1000
+bridge_angle = 0
+bridge_fan_speed = 100
+bridge_flow_ratio = 1
+bridge_speed = 25
+brim_separation = 0
+brim_type = outer_only
+brim_width = 0
+color_change_gcode = M600
+colorprint_heights =
+compatible_printers_condition_cummulative = "printer_notes=~/.*PRINTER_VENDOR_ANYCUBIC.*/ and printer_notes=~/.*PRINTER_MODEL_I3_MEGA.*/ and nozzle_diameter[0]==0.4";"printer_notes=~/.*PRINTER_VENDOR_ANYCUBIC.*/ and printer_notes=~/.*PRINTER_MODEL_I3_MEGA.*/"
+complete_objects = 0
+cooling = 1
+cooling_tube_length = 5
+cooling_tube_retraction = 91.5
+default_acceleration = 1000
+default_filament_profile = "Generic PLA @MEGA"
+default_print_profile = 0.15mm QUALITY @MEGA
+deretract_speed = 50
+disable_fan_first_layers = 1
+dont_support_bridges = 1
+draft_shield = disabled
+duplicate_distance = 6
+elefant_foot_compensation = 0
+enable_dynamic_fan_speeds = 0
+enable_dynamic_overhang_speeds = 0
+end_filament_gcode = "; Filament-specific end gcode"
+end_gcode = G1 E-1.0 F2100 ; retract\nG92 E0.0\nG1{if max_layer_z < max_print_height} Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} E-34.0 F720 ; move print head up & retract filament\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y105 F3000 ; park print head\nM84 ; disable motors
+external_perimeter_acceleration = 0
+external_perimeter_extrusion_width = 0.45
+external_perimeter_speed = 40
+external_perimeters_first = 0
+extra_loading_move = -2
+extra_perimeters = 1
+extra_perimeters_on_overhangs = 0
+extruder_clearance_height = 35
+extruder_clearance_radius = 60
+extruder_colour = #808080
+extruder_offset = 0x0
+extrusion_axis = E
+extrusion_multiplier = 1
+extrusion_width = 0.45
+fan_always_on = 1
+fan_below_layer_time = 100
+filament_colour = #FF3232
+filament_cooling_final_speed = 3.4
+filament_cooling_initial_speed = 2.2
+filament_cooling_moves = 4
+filament_cost = 25.4
+filament_density = 1.24
+filament_deretract_speed = nil
+filament_diameter = 1.75
+filament_load_time = 0
+filament_loading_speed = 28
+filament_loading_speed_start = 3
+filament_max_volumetric_speed = 10
+filament_minimal_purge_on_wipe_tower = 15
+filament_multitool_ramming = 0
+filament_multitool_ramming_flow = 10
+filament_multitool_ramming_volume = 10
+filament_notes = ""
+filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
+filament_retract_before_travel = nil
+filament_retract_before_wipe = nil
+filament_retract_layer_change = nil
+filament_retract_length = nil
+filament_retract_length_toolchange = nil
+filament_retract_lift = nil
+filament_retract_lift_above = nil
+filament_retract_lift_below = nil
+filament_retract_restart_extra = nil
+filament_retract_restart_extra_toolchange = nil
+filament_retract_speed = nil
+filament_settings_id = "Generic PLA @MEGA"
+filament_soluble = 0
+filament_spool_weight = 0
+filament_toolchange_delay = 0
+filament_travel_lift_before_obstacle = nil
+filament_travel_max_lift = nil
+filament_travel_ramping_lift = nil
+filament_travel_slope = nil
+filament_type = PLA
+filament_unload_time = 0
+filament_unloading_speed = 90
+filament_unloading_speed_start = 100
+filament_vendor = Generic
+filament_wipe = nil
+fill_angle = 45
+fill_density = 15%
+fill_pattern = gyroid
+first_layer_acceleration = 800
+first_layer_acceleration_over_raft = 0
+first_layer_bed_temperature = 65
+first_layer_extrusion_width = 0.42
+first_layer_height = 0.2
+first_layer_speed = 20
+first_layer_speed_over_raft = 30
+first_layer_temperature = 215
+full_fan_speed_layer = 0
+fuzzy_skin = none
+fuzzy_skin_point_dist = 0.8
+fuzzy_skin_thickness = 0.3
+gap_fill_enabled = 1
+gap_fill_speed = 40
+gcode_comments = 0
+gcode_flavor = marlin
+gcode_label_objects = octoprint
+gcode_resolution = 0.0125
+gcode_substitutions =
+high_current_on_filament_swap = 0
+host_type = prusalink
+idle_temperature = nil
+infill_acceleration = 1000
+infill_anchor = 2.5
+infill_anchor_max = 12
+infill_every_layers = 1
+infill_extruder = 1
+infill_extrusion_width = 0.45
+infill_first = 0
+infill_overlap = 25%
+infill_speed = 60
+interface_shells = 0
+ironing = 0
+ironing_flowrate = 15%
+ironing_spacing = 0.1
+ironing_speed = 15
+ironing_type = top
+layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
+layer_height = 0.15
+machine_limits_usage = time_estimate_only
+machine_max_acceleration_e = 10000
+machine_max_acceleration_extruding = 1250
+machine_max_acceleration_retracting = 1250
+machine_max_acceleration_travel = 1500,1250
+machine_max_acceleration_x = 3000
+machine_max_acceleration_y = 2000
+machine_max_acceleration_z = 60
+machine_max_feedrate_e = 30
+machine_max_feedrate_x = 500
+machine_max_feedrate_y = 500
+machine_max_feedrate_z = 8
+machine_max_jerk_e = 5
+machine_max_jerk_x = 10
+machine_max_jerk_y = 10
+machine_max_jerk_z = 0.4
+machine_min_extruding_rate = 0,0
+machine_min_travel_rate = 0,0
+max_fan_speed = 100
+max_layer_height = 0.36
+max_print_height = 205
+max_print_speed = 100
+max_volumetric_extrusion_rate_slope_negative = 0
+max_volumetric_extrusion_rate_slope_positive = 0
+max_volumetric_speed = 0
+min_bead_width = 85%
+min_fan_speed = 100
+min_feature_size = 25%
+min_layer_height = 0.07
+min_print_speed = 15
+min_skirt_length = 4
+mmu_segmented_region_interlocking_depth = 0
+mmu_segmented_region_max_width = 0
+notes =
+nozzle_diameter = 0.4
+only_retract_when_crossing_perimeters = 0
+ooze_prevention = 0
+output_filename_format = {input_filename_base}_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode
+overhang_fan_speed_0 = 0
+overhang_fan_speed_1 = 0
+overhang_fan_speed_2 = 0
+overhang_fan_speed_3 = 0
+overhang_speed_0 = 15
+overhang_speed_1 = 15
+overhang_speed_2 = 20
+overhang_speed_3 = 25
+overhangs = 1
+parking_pos_retraction = 92
+pause_print_gcode = M601
+perimeter_acceleration = 800
+perimeter_extruder = 1
+perimeter_extrusion_width = 0.45
+perimeter_generator = arachne
+perimeter_speed = 50
+perimeters = 2
+physical_printer_settings_id =
+post_process =
+print_host =
+print_settings_id = 0.15mm QUALITY @MEGA
+printer_model = I3MEGAS
+printer_notes = Do not remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_I3_MEGA_S\nPRINTER_HAS_BOWDEN
+printer_settings_id = Anycubic i3 Mega S
+printer_technology = FFF
+printer_variant = 0.4
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+raft_contact_distance = 0.1
+raft_expansion = 1.5
+raft_first_layer_density = 90%
+raft_first_layer_expansion = 3
+raft_layers = 0
+remaining_times = 1
+resolution = 0
+retract_before_travel = 1.5
+retract_before_wipe = 60%
+retract_layer_change = 1
+retract_length = 6
+retract_length_toolchange = 10
+retract_lift = 0.075
+retract_lift_above = 0
+retract_lift_below = 204
+retract_restart_extra = 0
+retract_restart_extra_toolchange = 0
+retract_speed = 40
+seam_position = nearest
+silent_mode = 0
+single_extruder_multi_material = 0
+single_extruder_multi_material_priming = 1
+skirt_distance = 2
+skirt_height = 3
+skirts = 1
+slice_closing_radius = 0.049
+slicing_mode = regular
+slowdown_below_layer_time = 20
+small_perimeter_speed = 25
+solid_infill_acceleration = 0
+solid_infill_below_area = 0
+solid_infill_every_layers = 0
+solid_infill_extruder = 1
+solid_infill_extrusion_width = 0.45
+solid_infill_speed = 50
+spiral_vase = 0
+staggered_inner_seams = 0
+standby_temperature_delta = -5
+start_filament_gcode = "; Filament gcode\n"
+start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM204 S[machine_max_acceleration_extruding] T[machine_max_acceleration_retracting]\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nG28 ; home all\nG1 Y1.0 Z0.3 F1000 ; move print head up\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG92 E0.0\n; initial load\nG1 X205.0 E19 F1000\nG1 Y1.6\nG1 X5.0 E19 F1000\nG92 E0.0\n; intro line\nG1 Y2.0 Z0.2 F1000\nG1 X65.0 E9.0 F1000\nG1 X105.0 E12.5 F1000\nG92 E0.0
+support_material = 0
+support_material_angle = 0
+support_material_auto = 1
+support_material_bottom_contact_distance = 0
+support_material_bottom_interface_layers = -1
+support_material_buildplate_only = 0
+support_material_closing_radius = 2
+support_material_contact_distance = 0.1
+support_material_enforce_layers = 0
+support_material_extruder = 1
+support_material_extrusion_width = 0.35
+support_material_interface_contact_loops = 0
+support_material_interface_extruder = 1
+support_material_interface_layers = 2
+support_material_interface_pattern = rectilinear
+support_material_interface_spacing = 0.2
+support_material_interface_speed = 80%
+support_material_pattern = rectilinear
+support_material_spacing = 2
+support_material_speed = 50
+support_material_style = grid
+support_material_synchronize_layers = 0
+support_material_threshold = 50
+support_material_with_sheath = 1
+support_material_xy_spacing = 60%
+support_tree_angle = 40
+support_tree_angle_slow = 25
+support_tree_branch_diameter = 2
+support_tree_branch_diameter_angle = 5
+support_tree_branch_diameter_double_wall = 3
+support_tree_branch_distance = 1
+support_tree_tip_diameter = 0.8
+support_tree_top_rate = 15%
+temperature = 210
+template_custom_gcode =
+thick_bridges = 1
+thin_walls = 0
+thumbnails = 16x16,220x124
+thumbnails_format = PNG
+toolchange_gcode =
+top_fill_pattern = monotonic
+top_infill_extrusion_width = 0.4
+top_solid_infill_acceleration = 0
+top_solid_infill_speed = 40
+top_solid_layers = 7
+top_solid_min_thickness = 0.7
+travel_acceleration = 0
+travel_lift_before_obstacle = 0
+travel_max_lift = 0
+travel_ramping_lift = 0
+travel_slope = 0
+travel_speed = 180
+travel_speed_z = 0
+use_firmware_retraction = 0
+use_relative_e_distances = 1
+use_volumetric_e = 0
+variable_layer_height = 1
+wall_distribution_count = 1
+wall_transition_angle = 10
+wall_transition_filter_deviation = 25%
+wall_transition_length = 100%
+wipe = 1
+wipe_into_infill = 0
+wipe_into_objects = 0
+wipe_tower = 0
+wipe_tower_bridging = 10
+wipe_tower_brim_width = 2
+wipe_tower_cone_angle = 0
+wipe_tower_extra_spacing = 100%
+wipe_tower_extruder = 0
+wipe_tower_no_sparse_layers = 0
+wipe_tower_rotation_angle = 0
+wipe_tower_width = 60
+wipe_tower_x = 180
+wipe_tower_y = 140
+wiping_volumes_extruders = 70,70
+wiping_volumes_matrix = 0
+xy_size_compensation = 0
+z_offset = 0