## Printing Scale Model Concrete Blocks

For reasons that undoubtedly make sense to him, my buddy Aitch is moving to coastal NC. Seeing as how we lived in Raleigh for half a decade, I figure he needs some hints on how to blend in…

Toy cars up on blocks

The solid model looks about the way you’d expect:

Concrete block – solid model

The webs are slightly thinner than in real life, but it looks OK to me. The web came out slightly over 3 thread widths = 1.5 mm, to ensure they get a bit of fill rather than being two distinct threads. I originally tried making the web exactly 3 threads wide, which produced tiny dots of fill on the sides and corners. They printed with 0.20 infill; they’d print faster with 1.00 infill or all-solid layers.

You’ll want to create a pile o’ blocks at once, of course, although this array took about two hours:

Concrete blocks – build platform

The OpenSCAD source code:

```// Scale model concrete block
// Ed Nisley KE4ZNU February 2013

// Extrusion parameters must match reality!
// Print with +0 shells and 3 solid layers

ThreadThick = 0.25;
ThreadWidth = 2.0 * ThreadThick;

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

Protrusion = 0.1;           // make holes end cleanly

//----------------------
// Dimensions

Scale = (1/25) * (3*ThreadWidth);

BlockWidth = Scale * 190;
BlockLength = Scale * 390;
BlockHeight = BlockWidth;

WebWidth = Scale * 30;

CoreSize = [(BlockWidth - 2*WebWidth),(BlockLength - 4*WebWidth)/2,BlockHeight];

CornerRadius = WebWidth/2;

//----------------------
// Useful routines

module ShowPegGrid(Space = 10.0,Size = 1.0) {

Range = floor(50 / Space);

for (x=[-Range:Range])
for (y=[-Range:Range])
translate([x*Space,y*Space,Size/2])
%cube(Size,center=true);

}

//-------------------
// Component parts

module Core(Size,Radius) {
translate([0,0,(Size[2] - Protrusion)/2])
minkowski() {
cube([(Size[0] - 2*Radius),(Size[1] - 2*Radius),Size[2]],center=true);
cylinder(r=Radius,h=Protrusion,\$fn=8);
}
}

//----------------------
// Build it!

ShowPegGrid();

difference() {
translate([0,0,BlockHeight/2])
cube([BlockWidth,BlockLength,BlockHeight],center=true);
for (i = [-1,1])
translate([0,i*(CoreSize[1] + WebWidth)/2,0])
Core(CoreSize,CornerRadius);
for (i = [-1,1])
translate([0,i*3*(CoreSize[1] + WebWidth)/2,0])
Core(CoreSize,CornerRadius);
}
```

1. #1 by Erik on 2013-02-24 - 20:22

Ah… you haven’t been to the NC coast in a while, perhaps. From Hatteras north to VA line is basically empty during the week and a DC Suburb on the weekend. You wouldn’t recognize the place. Sad, in some ways, but I bet the DC lawyers don’t realize their vacation houses are right in the cradle of Monster Truck Racing (over on the mainland in Currituck, actually a little south of there).

• #2 by Ed on 2013-02-24 - 20:44

you havenâ€™t been to the NC coast in a while, perhaps

Guilty as charged!

Actually, the Raleigh area was fairly well gentrified, even far out in the non-development area where we lived, so I’m also guilty of perpetuating stereotypes. On the other paw, there were plenty of junkers in out of the way places…