baseLength = 273;
baseWidth = 343;
materialThickness = 3;
boxLength = 67;
boxWidth = 46;
boxHeight = 20;
widthFittingCount = (ceil(baseWidth/(boxWidth+materialThickness))-1);
lengthFittingCount = (ceil(baseLength/(boxLength+materialThickness))-1);
widthEdge = (baseWidth - (widthFittingCount*(boxWidth+materialThickness)))/2;
lengthEdge = (baseLength - (lengthFittingCount*(boxLength+materialThickness)))/2;
echo(lengthFittingCount);
if(widthEdge>=(materialThickness/2))
{
difference(){
square([baseWidth,baseLength]);
for (lengthCount = [0:lengthFittingCount-1])
{
for (widthCount = [0:widthFittingCount])
{
translate([
widthEdge-0.5*materialThickness+widthCount*(materialThickness+boxWidth),
(lengthEdge+0.5*materialThickness+lengthCount*(materialThickness+boxLength))+boxLength*0.25,
0])
{square([materialThickness,boxLength*0.5]);};
}
}
for (lengthCount = [0:lengthFittingCount])
{
for (widthCount = [0:widthFittingCount-1])
{
translate([
(widthEdge+0.5*materialThickness+widthCount*(materialThickness+boxWidth))+boxWidth*0.25,
lengthEdge-0.5*materialThickness+lengthCount*(materialThickness+boxLength),
0])
{square([boxWidth*0.5,materialThickness]);};
}
}
}
for (pieceCount = [0:widthFittingCount])
{
translate([baseWidth+1+pieceCount*(boxHeight+materialThickness+1),0,0])
{
difference()
{
union()
{
for (gap = [0:lengthFittingCount-1])
{
translate([
boxHeight,
materialThickness+0.25*boxLength+gap*(materialThickness+boxLength),
0])
{square([materialThickness,boxLength*0.5]);};
}
square([boxHeight,(materialThickness+boxLength)*lengthFittingCount+materialThickness]);
}
for (gap = [0:lengthFittingCount])
{
translate([
0,
gap*(materialThickness+boxLength),
0])
{square([boxHeight*0.5,materialThickness]);};
}
}
};
}
for (pieceCount = [0:lengthFittingCount])
{
translate([baseWidth+1+(widthFittingCount+1)*(boxHeight+materialThickness+1)+pieceCount*(boxHeight+materialThickness+1),0,0])
{
difference()
{
union()
{
for (gap = [0:widthFittingCount-1])
{
translate([
boxHeight,
materialThickness+0.25*boxWidth+gap*(materialThickness+boxWidth),
0])
{square([materialThickness,boxWidth*0.5]);};
}
square([boxHeight,(materialThickness+boxWidth)*widthFittingCount+materialThickness]);
}
for (gap = [0:widthFittingCount])
{
translate([
boxHeight*0.5,
gap*(materialThickness+boxWidth),
0])
{square([boxHeight*0.5,materialThickness]);};
}
}
};
}
}