Add new type - center stud

This commit is contained in:
Przemek Grondek 2022-01-31 22:18:14 +01:00
parent 7461ee12dc
commit c97ba9787f

View File

@ -16,7 +16,7 @@ block_length = 6;
block_height_ratio = 1; // [.33333333333:1/3, .5:1/2, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, 10:10] block_height_ratio = 1; // [.33333333333:1/3, .5:1/2, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, 10:10]
// What type of block should this be? For type-specific options, see the "Wings," "Slopes," "Curves", and "Baseplates" tabs. // What type of block should this be? For type-specific options, see the "Wings," "Slopes," "Curves", and "Baseplates" tabs.
block_type = "brick"; // [brick:Brick, tile:Tile, wing:Wing, slope:Slope, curve:Curve, baseplate:Baseplate] block_type = "center"; // [brick:Brick, tile:Tile, wing:Wing, slope:Slope, curve:Curve, baseplate:Baseplate, center:Center Stud]
// What brand of block should this be? LEGO for regular LEGO bricks, Duplo for the toddler-focused larger bricks. // What brand of block should this be? LEGO for regular LEGO bricks, Duplo for the toddler-focused larger bricks.
block_brand = "lego"; // [lego:LEGO, duplo:DUPLO] block_brand = "lego"; // [lego:LEGO, duplo:DUPLO]
@ -276,7 +276,7 @@ module block(
} }
// The studs on top of the block (if it's not a tile). // The studs on top of the block (if it's not a tile).
if ( type != "tile" && !real_dual_bottom ) { if ( type != "tile" && type != "center" && !real_dual_bottom ) {
translate([stud_diameter * stud_rescale / 2, stud_diameter * stud_rescale / 2, 0]) translate([stud_diameter * stud_rescale / 2, stud_diameter * stud_rescale / 2, 0])
translate([(overall_length - total_studs_length)/2, (overall_width - total_studs_width)/2, 0]) { translate([(overall_length - total_studs_length)/2, (overall_width - total_studs_width)/2, 0]) {
for (ycount=[0:real_width-1]) { for (ycount=[0:real_width-1]) {
@ -288,6 +288,16 @@ module block(
} }
} }
} }
// Center Stud
if (type == "center"){
translate([axle_diameter / 2, axle_diameter / 2, 0]) {
translate([(overall_length - total_axles_length)/2, (overall_width - total_axles_width)/2, 0]) {
ycount = (real_width )/2;
xcount = (real_length)/2;
translate([(xcount-1)*stud_spacing,(ycount-1)*stud_spacing,block_height*real_height]) stud("hollow");
}
}
}
// Interior splines to catch the studs. // Interior splines to catch the studs.
translate([stud_spacing / 2 - wall_play - (spline_thickness/2), 0, 0]) for (xcount = [0:real_length-1]) { translate([stud_spacing / 2 - wall_play - (spline_thickness/2), 0, 0]) for (xcount = [0:real_length-1]) {
@ -692,7 +702,7 @@ module block(
} }
} }
module stud() { module stud(stud_type = stud_type) {
difference() { difference() {
cylinder(r=(stud_diameter*stud_rescale)/2,h=stud_height,$fs=cylinder_precision); cylinder(r=(stud_diameter*stud_rescale)/2,h=stud_height,$fs=cylinder_precision);