OpenSCAD Bricks Benchmark
INCHES = 25.4; | |
brick_depth = (3 + 5/8) * INCHES; | |
brick_height = (2 + 1/4) * INCHES; | |
brick_length = (7 + 5/8) * INCHES; | |
mortar_gap = (3/8) * INCHES; | |
module Brick() { | |
cube([brick_length, brick_depth, brick_height]); | |
} | |
module HalfBrick() { | |
cube([(brick_length - mortar_gap)/2, brick_depth, brick_height]); | |
} | |
module Row(length) { | |
for(x = [0:length - 1]) { | |
translate([(brick_length + mortar_gap)*x, 0, 0]) | |
Brick(); | |
} | |
} | |
module Wall(length, height, alternate=0) { | |
for(z = [0:height - 1]) { | |
offset = (z + alternate) % 2; | |
translate([offset*(brick_depth + mortar_gap), 0, (brick_height + mortar_gap)*z]) | |
Row(length); | |
} | |
} | |
module Floor(length, width) { | |
Walls(length, width, 1); | |
if(length > 1 && width > 1) { | |
translate([brick_depth + mortar_gap, brick_depth + mortar_gap, 0]) | |
Floor(length - 1, width - 1); | |
} | |
if(length == 1 && width > 1) { | |
translate([2*(brick_depth) + mortar_gap, brick_depth + mortar_gap, 0]) | |
rotate([0, 0, 90]) | |
Row(width - 1); | |
} | |
if(width == 1 && length > 1) { | |
translate([2*(brick_depth + mortar_gap), brick_depth + mortar_gap, 0]) | |
Row(length - 1); | |
} | |
translate([brick_depth + mortar_gap, brick_depth + mortar_gap, 0]) | |
HalfBrick(); | |
} | |
module Walls(length, width, height) { | |
Wall(length, height); | |
translate([brick_depth, 0, 0]) | |
rotate([0, 0, 90]) | |
Wall(width, height, 1); | |
translate([0, (width)*(brick_length + mortar_gap), 0]) | |
Wall(length, height, 1); | |
translate([(length + 0.5)*(brick_length + mortar_gap) - mortar_gap, 0, 0]) | |
rotate([0, 0, 90]) | |
Wall(width, height); | |
} | |
width = 10; | |
length = 10; | |
height = 10; | |
color("FireBrick") | |
Walls(width, length, height); | |
color("Gold") | |
translate([brick_depth + mortar_gap, brick_depth + mortar_gap, 0]) | |
Floor(width - 1, length - 1); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
FYI, linked to this cool benchmark in a PR I sent to OpenSCAD (openscad/openscad#3636) to speed up the rendering of unions.