|
效果图:
把原作者的代码整理成了模块。- //code from Internet (unknown URL), modified by Tesla.Angela (www.m5home.com/bbs)
- $fn=100;
- //The printing accuracy of your 3D printer.
- gap=0.4;
- //The status of the gate bolt.
- LOCK=01;
- module MakeGateBoltEnd
- (
- thickness,base_length,base_width,tube_diameter,holes=true
- )
- {
- difference()
- {
- union()
- {
- cube([base_length,base_width,thickness]);
- translate([base_length-thickness,0,0])
- {
- cube([thickness,base_width,tube_diameter+thickness]);
- }
- }
- if(holes)
- {
- translate([base_length/2,
- (base_width-tube_diameter)/4,0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- translate([base_length/2,
- base_width-(base_width-tube_diameter)/4,0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- }
- }
- }
- module MakeGateBoltTopOpen
- (
- thickness,base_length,base_width,tube_diameter,holes=true,
- front_extension_length=0,back_extension_length=0
- )
- {
- difference()
- {
- union()
- {
- cube([base_length,base_width,thickness]);
- translate([0,base_width/2-(tube_diameter+thickness*2)/2,
- thickness])
- {
- cube([base_length,thickness,tube_diameter+thickness]);
- }
- translate([0,
- base_width/2+(tube_diameter+thickness*2)/2-thickness,
- thickness])
- {
- cube([base_length,thickness,tube_diameter+thickness]);
- }
- if(front_extension_length)
- {
- translate([front_extension_length,0,0])
- {
- cube([front_extension_length,base_width,thickness]);
- }
- }
- if(back_extension_length)
- {
- translate([-back_extension_length,0,0])
- {
- cube([back_extension_length,base_width,thickness]);
- }
- }
- }
- if(holes)
- {
- //first hole
- translate([base_length/2,
- (base_width-tube_diameter-thickness*2)/4,0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- //second hole
- translate([base_length/2,
- base_width-(base_width-tube_diameter-thickness*2)/4,
- 0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- }
- }
- }
- module MakeGateBoltBody
- (
- thickness,base_length,base_width,tube_diameter,holes
- )
- {
- difference()
- {
- union()
- {
- cube([base_length,base_width,thickness]);
- translate([0,base_width/2-(tube_diameter+thickness*2)/2,
- thickness])
- {
- cube([base_length,tube_diameter+thickness*2,
- tube_diameter+thickness]);
- }
- }
- translate([0-gap/2,base_width/2,thickness+tube_diameter/2])
- {
- rotate([0,90,0])
- {
- cylinder(base_length+gap,tube_diameter/2,tube_diameter/2);
- }
- }
- if(holes==2)
- {
- //first hole
- translate([base_length/2,
- (base_width-tube_diameter-thickness*2)/4,
- 0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- //second hole
- translate([base_length/2,
- base_width-(base_width-tube_diameter-thickness*2)/4,
- 0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- }
- else if(holes==4)
- {
- //first hole
- translate([4,(base_width-tube_diameter-thickness*2)/4,
- 0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- //second hole
- translate([base_length-4,
- (base_width-tube_diameter-thickness*2)/4,
- 0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- //third hole
- translate([4,base_width-(base_width-tube_diameter-thickness*2)/4,
- 0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- //fourth hole
- translate([base_length-4,
- base_width-(base_width-tube_diameter-thickness*2)/4,
- 0-gap/2])
- {
- cylinder(thickness+gap,1,1);
- }
- }
- }
- }
- module MakeGateBoltStick(tube_diameter,stick_length, handle_length)
- {
- intersection()
- {
- rotate([0,90,0])
- {
- cylinder(stick_length,tube_diameter/2,tube_diameter/2);
- }
- translate([tube_diameter/2,tube_diameter/2,0])
- {
- rotate([90,0,0])
- {
- cylinder(handle_length,tube_diameter/2,tube_diameter/2);
- }
- }
- }
- translate([tube_diameter/2,0,0])
- {
- rotate([0,90,0])
- {
- cylinder(stick_length-tube_diameter/2,
- tube_diameter/2,tube_diameter/2);
- }
- }
- translate([tube_diameter/2,0,0])
- {
- rotate([90,0,0])
- {
- cylinder(handle_length-tube_diameter/2,
- tube_diameter/2,tube_diameter/2);
- }
- }
- }
- //test
- translate([-40,0,0])
- {
- MakeGateBoltEnd(1,10,20,10,true);
- }
- translate([-20,0,0])
- {
- MakeGateBoltTopOpen(1,10,20,8+gap,true,10,10);
- }
- translate([0,0,0])
- {
- MakeGateBoltBody(1,30,20,8+gap,4);
- }
- translate([40,0,0])
- {
- MakeGateBoltBody(1,10,20,8+gap,2);
- }
- translate([LOCK?-9:-29,10,5+gap/2])
- {
- MakeGateBoltStick(8,60,30);
- }
复制代码 |
|