3D nyomtatás: gyártsunk temp towert!

meséltem már arról, mire való egy temp tower, úgyhogy most csak röviden: a temp tower egy olyan GCODE file, amiben egy meghatározott lépésközzel változik (csökken) a hotend hőmérséklete). A temp towert kinyomtatva a kész modellen jól látszik, hogy hol van az adott nyersanyaghoz szükséges ideális célhőmérséklet. A temp tower készítéséhez két dolgot kell csinálunk: egyrészt meg kell alkotni a modellt, másrészt a modellből generált GCODE fileba bele kell injektálni a hőmérsékletváltó parancsokat. A hőváltáshoz ez a jó kis tempInjector script tökéletes lesz, nekünk csak azt kell tudnunk, hogy a modellünknél hány mm-enként kell réteget váltani. Ezt persze méricskélhetjük is egy letöltött modellen, de minek, amikor van nekünk ingyen OpenSCADünk, amivel legyártathatjuk a tuti modellt:

/*
	parametric temp tower - //fns.pappito.com
	Use tempInjector.py from https://github.com/fablabnbg/tronxy-xy100 to inject temperatures into generated GCODE file.
	tempInjector.py parameters used in this temp_tower.scad file:
	STARTTEMP = temp (240)
	TEMP_INCREMENTS = inc (-5)
	TEMP_STEPS_HEIGHT_MM = z_bridgesole (2)
	BASE_HEIGHT_MM = z_sole (10)
*/
// temp tower steps
temp = 240;
inc = -5;
steps = 8;
// bottom sole:
x_sole = 80;
y_sole = 20;
z_sole = 2;
// pillars with bridge soles
xygap_pillars = 4;
xy_pillars = y_sole - 2 * xygap_pillars;
xygap_bridgesole = 2;
xy_bridgesole = y_sole - 2 * xygap_bridgesole;
z_bridgesole = 10;
// bridge definition
gap_bridge = 1; //
zgap_bridge = 2; // gap between bridge soles
z_bridge = z_bridgesole + zgap_bridge;
xz_support = 6;
y_plank = 8;
z_plank = 2;
union() {
	// tower sole
	linear_extrude(height=z_sole) square(size=[x_sole, y_sole]);
	// left pillar
	translate([4, 4, 0]) linear_extrude(height=steps * (z_bridge + gap_bridge)) square(size=[xy_pillars, xy_pillars]);
	// right pillar
	translate([x_sole - xy_pillars - 4, 4, 0]) linear_extrude(height=steps * (z_bridge + gap_bridge)) square(size=[xy_pillars, xy_pillars]);
	// ladder
	for (i = [0 : steps]) {
		// left bridge sole with numbers
		difference() {
			translate([(y_sole - xy_bridgesole) / 2, (y_sole - xy_bridgesole) / 2, z_sole + i * z_bridge]) leg(); // left
			translate([(y_sole - xy_bridgesole) / 2 + 1, (y_sole - xy_bridgesole) / 2+2, z_sole + i * z_bridge +2]) {
				// title
				rotate([90, 0, 0]) linear_extrude(3) text(str(temp + i * inc), size = 6);
			}
		}
		// right bridge sole
		translate([x_sole - xy_bridgesole - (y_sole - xy_bridgesole) / 2, (y_sole - xy_bridgesole) / 2, z_sole + i * z_bridge]) leg(); // right
		// bridge
		//translate([xy_bridgesole + xygap_bridgesole, 0, (i+1)*z_bridge - 4]) bridge(i);
		translate([xygap_bridgesole + xy_bridgesole, y_sole / 2- xy_bridgesole/2 , (i+1)*z_bridge - 4]) bridge(i);
	}
}
module leg() {
	linear_extrude(height = z_bridgesole) square(size = [xy_bridgesole, xy_bridgesole]);
}
module bridge(i) {
	x_bridge = x_sole - 2 * xy_bridgesole - 2 * xygap_bridgesole;
	x_plank = x_bridge - xz_support;
	// left mount
	rotate([-90,0,0]) linear_extrude(height = xy_bridgesole) polygon(points=[[0, 0], [xz_support,0], [0,xz_support]]);
	// right mount
	translate([x_plank,0,0]) rotate([-90,0,0]) linear_extrude(height=xy_bridgesole) polygon(points=[[0, 0], [xz_support, xz_support], [xz_support,0]]);
	// bridge
	translate([(x_bridge - x_plank)/2, (xy_bridgesole-y_plank)/2, 0]) linear_extrude(height=z_plank) square(size=[x_plank, y_plank]);
}
A scriptet viheted githubról. Update #20170828: Lajos a fentiek alapján nekiállt temp towert hegeszteni és a tapasztalatai alapján az alábbiakkal egészítette ki a fenti leírást:
  • 2.x-es Phyton kell a scriptnek, mert a 3-as már másképp kezeli a print utasítást
  • Python 2.x Windows installnál jelöljük be, hogy rakja be a patch-ba a phytont (a kezdők nem értenek ennyire a géphez és nem fogják tudni miért nem fut):
  • így futtassuk parancssorból: python tempinjector.py input_file.gcode output_file.gcode initial_temp temp_step element_height_mm [start_height_mm]
    példa: python tempinjector.py AA2_temp_tower_240-200C.gcode AA2_temp_tower_240-200C.gcode.new 240 -5 10
]]>

Leave a Reply

Your email address will not be published. Required fields are marked *