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…

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

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:

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); }
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).
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…