added own OpenScad models
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								openscad/own/kossel_2020_shells/img/kossel_2020_shells.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								openscad/own/kossel_2020_shells/img/kossel_2020_shells.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 29 KiB | 
							
								
								
									
										197
									
								
								openscad/own/kossel_2020_shells/kossel_2020_shells.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								openscad/own/kossel_2020_shells/kossel_2020_shells.scad
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,197 @@ | ||||
| // Kossel bottom outer cover for 20x20 aluminium extrusion | ||||
| // by zeus - zeus@ctdo.de - CC-BY-NC-4.0 | ||||
| // -> https://www.thingiverse.com/zeus  | ||||
| // -> https://github.com/zeus86 | ||||
| // 2020-10-01 | ||||
| //### global vars: | ||||
|  | ||||
| cover_h=60; //overall height to cover | ||||
| cover_w=80; //overall width to cover (kossel mini default full widthwidth to cover is 240mm) | ||||
| mt=2;       //material thickness, applies to various things | ||||
| scr_hole_dia=4.3;    //screw hole diameter for mounting holes | ||||
| tab_w=4.6;  // width of the indented tab, which goes into the groove of the extruded beam | ||||
| tab_h=1;    //height of the tab | ||||
| beam_h=20;  // 20x20 beam | ||||
| beam_w=beam_h;  | ||||
| showtext=1; // 0 or 1, show text or not | ||||
| tabs=1;     // 0,1,2,3, use tabs for 2020 beams (none,all,top,bottom) | ||||
| $fn=100; | ||||
|  | ||||
| //### end of global vars, start of models | ||||
|  | ||||
| module plate(){ | ||||
| // socket baseplate | ||||
|     difference(){ | ||||
|         union(){ | ||||
|             cube([cover_w,cover_h,mt],center=true); //plate | ||||
|             if (tabs==1) {for (h=[cover_h/2-beam_w/2,-cover_h/2+beam_h/2]) translate([0,(h),mt/2+tab_h/2]) cube([cover_w,tab_w,tab_h],center=true);}; //recessed tabs (both) | ||||
|             if (tabs==2) {for (h=[-cover_h/2+beam_h/2]) translate([0,(h),mt/2+tab_h/2]) cube([cover_w,tab_w,tab_h],center=true);}; //recessed tabs (top) | ||||
|             if (tabs==3) {for (h=[cover_h/2-beam_w/2]) translate([0,(h),mt/2+tab_h/2]) cube([cover_w,tab_w,tab_h],center=true);}; //recessed tabs (bottom) | ||||
|         } | ||||
|             for (w=[cover_w/2-beam_h/2,-cover_w/2+beam_h/2],h=[cover_h/2-beam_w/2,-cover_h/2+beam_h/2]){ // for-loop to position the screw holes accordingly | ||||
|                 translate([(w),(h),tab_h/2]) cylinder(r=scr_hole_dia/2,h=mt+tab_h+0.1,center=true); //screw-holes | ||||
|             } | ||||
|     } | ||||
| } | ||||
| module plate_extrahole(){ | ||||
| // socket baseplate but with extra holes on the tab | ||||
|     cutout_extrahole_dia=scr_hole_dia; | ||||
|     cutout_extrahole_w=10; //center-to-center | ||||
|     cutout_extrahole_offset=10; | ||||
|     difference(){ | ||||
|         union(){ | ||||
|             cube([cover_w,cover_h,mt],center=true); //plate | ||||
|             if (tabs==1) {for (h=[cover_h/2-beam_w/2,-cover_h/2+beam_h/2]) translate([0,(h),mt/2+tab_h/2]) cube([cover_w,tab_w,tab_h],center=true);}; //recessed tabs (both) | ||||
|             if (tabs==2) {for (h=[-cover_h/2+beam_h/2]) translate([0,(h),mt/2+tab_h/2]) cube([cover_w,tab_w,tab_h],center=true);}; //recessed tabs (top) | ||||
|             if (tabs==3) {for (h=[cover_h/2-beam_w/2]) translate([0,(h),mt/2+tab_h/2]) cube([cover_w,tab_w,tab_h],center=true);}; //recessed tabs (bottom) | ||||
|         } | ||||
|             for (w=[cover_w/2-beam_h/2,-cover_w/2+beam_h/2],h=[cover_h/2-beam_w/2,-cover_h/2+beam_h/2]){ // for-loop to position the screw holes accordingly | ||||
|                 translate([(w),(h),tab_h/2]) cylinder(r=scr_hole_dia/2,h=mt+tab_h+0.1,center=true); //screw-holes | ||||
|             } | ||||
|             for (w=[-cutout_extrahole_w/2:0.5:cutout_extrahole_w/2],h=[-cover_h/2+beam_w/2]){ // for-loop for extra-holes | ||||
|                 translate([(w-cutout_extrahole_offset),(h),tab_h/2]) cylinder(r=scr_hole_dia/2+0.2,h=mt+tab_h+0.1,center=true); //screw-holes | ||||
|             }      | ||||
|     } | ||||
| } | ||||
| module cutout_xt60(){ | ||||
| // cutout for plate-mounted xt60-socket | ||||
|     cutout_xt60_screw_dia=3.5; //mounting screws | ||||
|     cutout_xt60_screw_spacing=20.5; //~20.5mm apart from each other (center to center) | ||||
|     cutout_xt60_w=16; | ||||
|     cutout_xt60_h=8.5; | ||||
|     cutout_xt60_text_h=5; | ||||
|  | ||||
|     linear_extrude(height = mt+0.1, center = true, convexity = 1) { | ||||
|         polygon(points = [  | ||||
|         [-cutout_xt60_w/2,-cutout_xt60_h/2],  | ||||
|         [cutout_xt60_w/2-1,-cutout_xt60_h/2],  | ||||
|         [cutout_xt60_w/2,-cutout_xt60_h*0.37],  | ||||
|         [cutout_xt60_w/2,cutout_xt60_h*0.37],  | ||||
|         [cutout_xt60_w/2-1,cutout_xt60_h/2],  | ||||
|         [-cutout_xt60_w/2,cutout_xt60_h/2]  | ||||
|         ], paths=undef, convexity=1); //shape of the cutout | ||||
|     } | ||||
|     for (x=[cutout_xt60_screw_spacing/2,-cutout_xt60_screw_spacing/2]) translate([(x),0,0]) cylinder(r=cutout_xt60_screw_dia/2,h=mt+0.1,center=true); // screw holes | ||||
|     if (showtext==1) mirror([0,1,0])translate([0,cover_h/2-beam_h+1,-mt/2-0.1])linear_extrude(1)text("12V DC",cutout_xt60_text_h,halign="center",valign="center"); //some text | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| module cutout_usba(){ | ||||
| // cutout for plate-mounted USB-type-a-socket | ||||
|     cutout_usba_screw_dia=3.5; //mounting screws | ||||
|     cutout_usba_screw_spacing=30; //~30mm apart from each other (center to center) | ||||
|     cutout_usba_w=12.5; | ||||
|     cutout_usba_h=11.5; | ||||
|     cutout_usba_text_h=5; | ||||
|     cube([cutout_usba_w,cutout_usba_h,mt+0.1],center=true); //shape of the cutout | ||||
|     translate([0,0,mt/2]) cube([cutout_usba_screw_spacing+2*cutout_usba_screw_dia,cutout_usba_w*1.3,mt/2],center=true); //helper-plate for further recess into plate | ||||
|     for (x=[cutout_usba_screw_spacing/2,-cutout_usba_screw_spacing/2]) translate([(x),0,0]) cylinder(r=cutout_usba_screw_dia/2,h=mt+0.1,center=true); // screw holes | ||||
|     if (showtext==1) mirror([0,1,0])translate([0,cover_h/2-beam_h+1,-mt/2-0.1])linear_extrude(1)text("USB",cutout_usba_text_h,halign="center",valign="center"); //some text | ||||
| } | ||||
|  | ||||
| module cutout_vmeter(){ | ||||
| // cutout for pcb-mounted 7-segment-LCD displaying a supplied voltage | ||||
|     cutout_vmeter_screw_spacing=26.5; //~30mm apart from each other (center to center) | ||||
|     cutout_vmeter_screw_dia=1.6; // module uses holes for M2.5, mounted from the inside on spacers!! | ||||
|     cutout_vmeter_w=23; | ||||
|     cutout_vmeter_h=10.5; | ||||
|     cutout_vmeter_d=6.5;   //depth without pcb | ||||
|     cutout_vmeter_text_h=5; | ||||
|     cube([cutout_vmeter_w,cutout_vmeter_h,mt+0.1],center=true); //shape of the cutout | ||||
|     for (x=[cutout_vmeter_screw_spacing/2,-cutout_vmeter_screw_spacing/2]) translate([(x),0,0.25/2]) cylinder(r=cutout_vmeter_screw_dia/2,h=mt-0.25+0.01,center=true); // screw holes | ||||
|     if (showtext==1) mirror([0,1,0])translate([0,cover_h/2-beam_h+1,-mt/2-0.1])linear_extrude(1)text("V_IN",cutout_vmeter_text_h,halign="center",valign="center"); //some text | ||||
| } | ||||
|  | ||||
| module cutout_socketswitch(){ | ||||
| cutout_socketswitch_dia=20;  | ||||
| cutout_socketswitch_w=16; | ||||
| cutout_socketswitch_h=mt+0.1; | ||||
|  | ||||
| cutout_socketswitch_bump=5; //excess tabs width for clearance on press-fit/snap-in switches | ||||
| cutout_socketswitch_text_h=5; | ||||
|  | ||||
| cylinder(r=cutout_socketswitch_dia/2,h=cutout_socketswitch_h,center=true); //shape of the cutout | ||||
|   | ||||
| for (r=[0,90])   | ||||
|     rotate([0,0,(r)]) cube([cutout_socketswitch_dia+(cutout_socketswitch_bump/3),cutout_socketswitch_bump,cutout_socketswitch_h],center=true); // excess tabs | ||||
| if (showtext==1) mirror([0,1,0])translate([0,cover_h/2-cutout_socketswitch_dia/2-cutout_socketswitch_bump*1.1,-mt/2-0.1])linear_extrude(1)text("ON/OFF",cutout_socketswitch_text_h,halign="center",valign="center"); //some text | ||||
|  | ||||
| } | ||||
| module cutout_fangrill(){ | ||||
|     cutout_fangrill_w=cover_w*0.85; | ||||
|     cutout_fangrill_h=cover_h-(2*beam_h)*0.85; | ||||
|     cutout_fangrill_text_h=4.5; | ||||
|     difference(){ | ||||
|         cube([cutout_fangrill_w,cutout_fangrill_h,mt+0.1],center=true);   | ||||
|         for (y=[-(cutout_fangrill_h/2-1):mt*2:(cutout_fangrill_h/2+1)]) translate([0,(y),0]) rotate([-45,0,0]) cube([cutout_fangrill_w+0.1,mt/2,mt*PI+0.1],center=true); // tilted slots | ||||
|         cube([mt+0.2,cutout_fangrill_h+0.1,mt+0.1+0.1],center=true); | ||||
|     } | ||||
|     if (showtext==1) mirror([0,1,0])translate([0,cover_h/2-beam_h/2,-mt/2-0.1])linear_extrude(1) | ||||
|         text("DELTAZEUS V2.1",cutout_fangrill_text_h,halign="center",valign="center"); //some text | ||||
| } | ||||
|  | ||||
| module cutout_cableroute(){ | ||||
|     cutout_cableroute_w=22; | ||||
|     cutout_cableroute_h=12; | ||||
|     cutout_cableroute_text_h=5; | ||||
|         cube([cutout_cableroute_w,cutout_cableroute_h,mt+0.1],center=true);   | ||||
|     if (showtext==1) mirror([0,1,0])translate([0,cutout_cableroute_h,-mt/2-0.1])linear_extrude(1) | ||||
|         text("Display",cutout_cableroute_text_h,halign="center",valign="center"); //some text | ||||
| } | ||||
|  | ||||
| module fullmodel_plain(){ | ||||
|  | ||||
| // fullplate without any cutouts: | ||||
|         plate(); | ||||
| } | ||||
|  | ||||
| module fullmodel_testfit(){ | ||||
| // fullplate without any cutouts. 10%-version for testfit: | ||||
|     difference(){ | ||||
|         plate(); | ||||
|         translate([-cover_w/2-2.5,-cover_h/2-2.5,-(mt/2+1)]) #cube([cover_w*0.88+5,cover_h+5,mt+5]); // overlay to cut away 90% of the model to generate a model for testfit. | ||||
|         } | ||||
| } | ||||
|  | ||||
|  | ||||
| module fullmodel_powerplate(){ | ||||
| // full model, powerplate variant | ||||
|     difference(){ | ||||
|         plate(); | ||||
|         translate([-(cover_w/2-26),0,0]) cutout_socketswitch();  | ||||
|         translate([(cover_w/2-24),0,0]) cutout_xt60();  | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
| module fullmodel_vmeterandusb(){ | ||||
| // full model, vmeter & usb-type-a variant | ||||
|    difference(){ | ||||
|         plate(); | ||||
|         translate([-(cover_w/2-20),0,0]) cutout_vmeter();  | ||||
|         translate([(cover_w/2-18),0,0]) cutout_usba();  | ||||
|     } | ||||
| } | ||||
| module fullmodel_fangrill(){ | ||||
| // full model, fan grill for air exhaust | ||||
|    difference(){ | ||||
|         plate(); | ||||
|         translate([0,0,0]) cutout_fangrill();  | ||||
|         //translate([(cover_w/2-18),0,0]) cutout_usba();  | ||||
|     } | ||||
| } | ||||
| module fullmodel_cableroute(){ | ||||
| // full model with hole for display-cables | ||||
|    difference(){ | ||||
|         plate(); | ||||
|         translate([0,0,0]) cutout_cableroute();  | ||||
|     } | ||||
| } | ||||
| module fullmodel_extrahole(){ | ||||
| // full model with hole for display-mounting-holes | ||||
|         plate_extrahole(); | ||||
| } | ||||
|  | ||||
| //cutout_extrahole(); | ||||
| fullmodel_powerplate(); | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										19406
									
								
								openscad/own/kossel_2020_shells/stl/fangrillplate_kossel_2020_shells.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19406
									
								
								openscad/own/kossel_2020_shells/stl/fangrillplate_kossel_2020_shells.stl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11622
									
								
								openscad/own/kossel_2020_shells/stl/kossel_2020_shells_plain.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11622
									
								
								openscad/own/kossel_2020_shells/stl/kossel_2020_shells_plain.stl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										61182
									
								
								openscad/own/kossel_2020_shells/stl/kossel_2020_shells_powerplate.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61182
									
								
								openscad/own/kossel_2020_shells/stl/kossel_2020_shells_powerplate.stl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										9130
									
								
								openscad/own/kossel_2020_shells/stl/kossel_2020_shells_testfit.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9130
									
								
								openscad/own/kossel_2020_shells/stl/kossel_2020_shells_testfit.stl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										52250
									
								
								openscad/own/kossel_2020_shells/stl/powerplate_kossel_2020_shells.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52250
									
								
								openscad/own/kossel_2020_shells/stl/powerplate_kossel_2020_shells.stl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user
	 zeus86
					zeus86