This project implements fully-parametric generators for bricks/plates/tiles, modern liftarms/beams, slopes/roof pieces, and more, creating parts compatible with LEGO, Tyco, Mega-Blok, and other directly-related construction toys. In addition to a representative (but by no means exhaustive) selection of ready-to-print bricks and such, you'll also find tons of gears and other Technic parts, a handful of wheels and tires, and a fair amount of almost-custom/borderline-special parts.
Every important parameter or dimension can be adjusted - brick wall thickness, stud diameter, axle dimensions, pin hole diameter, and a whole lot more. Many parameters are global and affect all parts within the project file which use those parameters, and most parts across the project have a number of âlocalâ settings of their own, as well (which is how you set things like a brick's dimensions, whether it's round, has holes, etc).
This project is split into several separate Blender files - brick generator, slope generator, beam generator, special bricks/plates, various special/less-common beams, axle generator, gears, wheels/tires, other misc. Technic parts, and pneumatic parts. The misc Technic file also contains the gears that bear clutches (since they spin freely on an axle, and thus mostly can't be used as conventional gears). In addition to those files is the global settings master file, which all others draw at least some settings, materials, or standardized shapes from.
To generate a new part or change an existing part, first load the Global Settings file and change whatever settings you need to, as appropriate, and save the file. Then, open the project file that contains the actual part(s) you want to work on, select the part you want to change, edit its parameters in the âObject Propertiesâ tab (or in the âNâ Sidebar), and export the result to a new model file.
All project files behave in a similar manner, though the extra settings that you could change on each piece or category of pieces will vary, with perhaps more or fewer limitations, etc.
There is also a simple bracket generator in the âspecial bricksâ project file, and a steering link generator in the âother Technic partsâ project file.
If you can't find the part you want among the pre-rendered parts (see below), there's a good chance you can just generate one.
Each project file has the âGlobal Settingsâ file linked to it, so all project files will inherit their global/world-level settings from there. Where possible, materials are taken from that file as well.
That said, due to limitations in Blender, you'll have to re-load the project file you intended to alter and export from each time you make a change to the global settings file. That is, Blender doesn't reload that file's settings in realtime. You can have both files open if you want, but you'll still have to do that save-and-reload action each time you change a global setting. Sorry about that. If this can be improved, I'll do so. Note that the "Global Settingsâ file MUST be in the same directory as the project files that reference it.
This project requires Blender 3.5 or above. Older versions will simply crash when you try to load a project file. HOWEVER! DO NOT use Blender 4.0 to edit these files or it will break your global settings (or more specifically, the link between each main file and the global setting file)! Stick to 3.5 or 3.6.
Calibration object
This project includes a fairly simple pair of calibration objects - one piece bears a number of holes, the other a number of pegs. If your printer and slicer are well-calibrated, the pegs should all barely manage to fit their corresponding holes, and you should be able to match the pegs and holes all at once and push the two parts completely together, with a fair amount of effort, and the result should strongly resist being separated again. Of course, ideally the parts should just slip together and slip apart with no play, but we're talking 3d printing here, not precision machining.
If they won't fit at all no matter how much effort you apply, you're probably either over-extruding or you just need to adjust your slicer's X/Y compensation to compensate for mechanical noise and filament variance . If only the 3 mm pegs refuse to fit their holes, the print may be overheating, thus distorting the pegs.
The calibration pieces' measurements are as follows (all values are precise, there are no adjustments or configurations):
The larger holes are 6 mm across/in diameter
The small holes are 3 mm across.
The pegs are 6 mm and 3 mm across as well.
Each peg stands 3 mm tall above its respective perch.
The objects' bases are 3 mm thick, 20 mm wide, and 42 mm long.
Most edges have a 0.4 mm bevel. This is to help you avoid measurement errors due to blobby corners, overshoot, excessive elephant's foot, etc.
The middle pair of square pegs lacks this beveling, as a point of comparison.
The lower section of each peg has a gap of 7 mm between it and its neighbor.
By extension, the pegs' upper sections are precisely 10 mm apart.
Each peg's lower section is 7 mm from the base's long edges, and the two end pegs are 5 mm from the base's ends.
In the part with the holes, each 6 mm hole's nearest edge is 7 mm from the base's neighboring long edge, and the two end holes are 5 mm from the base's ends.
The two 3 mm holes' nearest edges are 8.5 mm from the base's long edges.
The two objects are 1 mm apart on the bed/plate (well, until you take them off đ ).
The project's default settings for the actual building blocks and whatnot assume some inaccuracy in your setup, but they may not be ideal for your printer. The point is to get the above calibration object to print as well as you can, then print a brick under the same conditions, with the project's default settings, and see how it fits a commercially-made brick.
Printing Settings
All parts are printable with 0.2 mm layers and the usual 0.4 mm nozzle.
You will need to use thin wall mode on some parts, though I tried to avoid designing things to need this mode (we're kinda limited in that regard here since building toys of this scale have little room for error). Slic3r derivatives have a default maximum perimeter overlap of 80% before it invokes thin walls, but I've made sure that as much as possible can be printed with the overlap set to a more reasonable 20%.
The default settings are calibrated with the assumption of using 0.2 mm layers and average print speeds on almost everything, i.e. I tried to accommodate the slight inaccuracies that comes with typical print speeds and layer heights.
That said, a few parts have settings applied that assume you'll be using 0.1 mm layers and slow print speeds instead. Finer layers and slower print speeds tend to make a part more dimensionally-accurate and produce fine details better, and a part calibrated for that will not print perfectly with thicker layers and faster speeds (for example, axle holes will be too tight). At the moment, the two worm gears, the various single-bevel gears, the 28-tooth-bevel differential, and the racing wheel rim are the only parts that really benefit from 0.1 mm layers and slow print speeds, and so they are calibrated accordingly.
On the opposite end of the scale are parts that are meant to be printed with clear filament. Such filaments tend to look best with very little fan, thick layers, high temperatures, slow print speeds, and a slight, deliberate overextrusion. This will result in smaller holes and thicker solid bits than normal, though in practice, these differences will only be slight, and if necessary, parts that are meant to be printed with clear filament will have one or more adjustments to account for this. At present, that's just the #6588 gear box (in particular, its two pairs of axle holes are oversized by default). The pneumatic pressure gauge housing should also be printed with clear filament, but it has no relevant adjustments (none are needed).
Note that the amount of cooling/airflow you pour onto your prints will have some effect on the accuracy of fine details, especially hole sizes. Holes tend to be a tad larger when well-cooled, and while this project assumes you'll probably adjust your cooling settings a bit here or there according to your overall flow rate and the amount of detail any given part needs, most of the time you can just leave your cooling at some âreasonableâ settings.
Resin and SLS users, also please bear in mind that these parts do not have drain holes or other such geometry, so areas with sparse infill will almost certainly end up with excess powder/resin permanently trapped inside. This won't cause problems, it'll just use more total material than intended.
Notes for Technic beams:
Depending on the behavior of your slicer, you may need to adjust your settings to get the beams to print ârightâ. For example, with common settings, SuperSlicer tries to use a combination of crazy-wide gap fill extrusions and tiny perimeter loops to fill the cylinders that surround a beam's pin/peg holes (even though there's more than enough room for another perimeter plus normal, thin gap fill).
Another thing to watch out for is whether your slicer makes logical, sensible decisions on the order it lays down the various bits of the model. You want to avoid excessive travel moves and such, and especially avoid non-retracting travels that run along the outer walls, as this will result in poor surface quality.
My suggestion: turn the internal perimeter line width down a bit (if external perimeters are 0.4 mm, then use 0.35 mm for the internal ones â we're treating them like gapfill, so it's okay if they're narrower than your nozzle), use 2 perimeter loops, enable âavoid crossing perimetersâ, set the seam position to âalignedâ, retract on ALL travels (not just when crossing perimeters), and print external perimeters first. These settings should get you good prints of the beams.
The Arachne perimeter generator works too, if your slicer has that feature. It doesn't suffer from that gap-fill-and-tiny-loops problem, and it arranges print moves in a more logical manner than the âclassicâ perimeter generator (but it does have other issues at present). You'll still want to use the other settings mentioned above, though.
Notes for Technic pins:
Technic pins are printed vertically, which can make them fragile if you have layer adhesion problems, but there's really no other way to make those pins look and perform right. To mitigate the strength issue, I made their center bores somewhat smaller than normal, thus making the normally-weakest bits (the "split" ends in particular) thicker.
Also of note: some sets have those "soft axle" parts, and you may be expected to push one end of one of them into one end of what looks like an ordinary #2780 friction pin to the naked eye. However, this actually only works with the latest mold variant of those pins, where the center bore's diameter has been increased.
The pins supplied in this project have a bore diameter that's slightly smaller than what the older mold version had, so those soft axles (both the commercial ones and this project's recreations of them) will not fit into them by default. However, since the bore diameter is adjustable, it's safe to increase it to match those later pins, if your printing method can create a strong enough part.
Use your best filaments (PETG is recommended, I use Atomic brand), and print those parts slow and extra-hot, with as little fan as you can get away with.
Notes for wheels and tires:
Obviously, the various tires need to be printed in TPU or a similar flexible material. These models assume you're using something around 95A hardness, but softer should be fine too.
The two big Technic tires have support objects, and when it comes to TPU, supports can be weird, since TPU has insane layer bonding. In each case, there's a 0.4 mm gap between the supports and the tires' edges being supported, but you'll still probably need to turn the print temperature down and crank the crap out of the part fan on bridging moves, to reduce the adhesion between the tires and their supports (I actually had to tear the supports off of my prints).
The wheel rims for those tires need some special consideration as well: use more perimeters in the areas of the ridges that sit on the supports (so that they don't need zig-zag bridging infill), and a finer layer height might not hurt. But you know what, you can mostly not worry about that. 𤣠I've included .3mf project files made in SuperSlicer that are constructed with all of the settings changes needed to produce a really nice prints of the rims.
Notes for support material:
For every item that would need supports, I have provided custom support objects and have exported STL files both with and without them built in. I've found that custom-designed supports usually end up doing a better job than what a slicer can come up with (for example, one can create a bridge to support a ledge that hangs over another part of the object, but a slicer would most often just generate a column of support material between the two surfaces).
If you prefer, you can just use the plain models and have your slicer create its own supports. Resin users may prefer this, since âMeshmixer-styleâ tree supports are commonly used with that printing tech. SLS users don't need supports at all, of course.
Other notes:
Some parts are supposed to have little teeth around their pin hole(s). Throughout this project, I refer to these as splines, named for the axial cuts in a shaft that lock it radially to the receptacle it fits into, as in the CV joints or drive shaft of a car.
Parts that normally have these also have a variant without them, and FDM users should print those. Resin and SLS users can probably print the parts with the splines.
Sources
These models are not in any way derived from anyone else's works, neither commercial nor free, though I did make use of the LDraw library for some rough references, and took plenty of measurements of parts I have on hand, along with plenty of web searching to find the details I needed.
These models are entirely my own work, though I did originally use the Precision Gears Lite add-on to model the gears. If you want to alter any of them, you can get that add-on from https://makertales.gumroad.com/l/PrecisionGearsLite . Please consider supporting the author of that project, the full version is only $8. I use the full version now, so any future changes to the gears will use that, not the Lite version.
Pre-rendered Parts Included
There's a boatload and a couple of truckloads đ of pre-rendered parts included in the project, in the usual STL format. These were rendered using settings that are appropriate for my printer, which I consider to be reasonably well-tuned. In the listings below, the numbers are part numbers from the LDraw library. Most of the time, these will be the same as what the Danish toy company used.
Bricks, plates, and tiles:
Standard 4x2, 4x1, 3x2, 3x1, 2x2, 2x1, and 1x1 bricks and plates
Standard 2x2 round brick/cylinder with vertical axle hole, and 2x2 round plate with axle hole (#3941 and 4032)
Standard 1x1 round brick/cylinder, with and without open stud (#3062 a/b)
Standard 1x1 round plate, with and without open stud (#4073 and 85861)
Almost-standard 4x4 round brick and 4x4 round plate (similar to #87081 and 60474 but without the extra holes and cuts)
Standard panels in several sizes: 4x1, 3x1, 2x1, 2x1 with center divide, 2x1 with uprights on three sides, 2x2 corner, 1x1 corner (#6231, 4865, 23969, 93095, 23950, 30413, 91501)
Several plates with those clips meant to grab horizontal or vertical 3mm posts: 1x1 horizontal, 1x1 vertical, 2x1 horizontal (clip on end), 2x1 vertical (clip on end), 2x1 double horizontal (on side). (#4085, 61252, 6019, 60470, 63868, 78256)
Three kinds of bricks with clips: 1x1 vertical, 2x1 vertical, and 1x1/3-high double vertical (#60476, 30241, 60583)
2x2 and 4x4 corner bricks (that is, the L-shaped bricks that are basically a square missing one quarter; #2357 and #702)
Standard 1x1 + 1x1 bracket, both normal orientation and inverted orientation (#36841, 36840)
Standard 1x1 + 1x2 bracket with vertical front, normal and inverted (#79389, 73825)
Standard 2x1 + 2x1 bracket, normal and inverted (#99781, 99780)
Standard 2x1 + 2x2 bracket, normal and inverted (#44728, 99207)
Standard 2x1 + 4x1 bracket (#2436)
Standard 2x1 + 4x2 bracket (#93274)
Standard 6x2 + 6x1 bracket, inverted (#64570)
Slopes:
Normal/non-inverted:
18°:
4x1 (#60477)
4x2 (#30363)
25°:
8x1x3 (#49618)
30°:
1x1 (#54200)
1x2 (#85984)
1x4 (non-standard, basically 2x #85984)
33°:
3x1 (#4286)
3x2 (#3298)
3x3 (#4161)
3x4 (#3297)
45°:
2x1 (#3040)
2x2 (#3039)
2x3 (#3038)
2x4 (#3037)
2x6 (#23949)
2x8 (#4445)
65°:
2x1x2 (#60481)
2x2x2 (#3678)
75°:
2x1x3 (#4460)
2x2x3 (#3684)
Inverted:
33°:
3x1 (#4287)
3x2 (#3747)
45°:
2x1 (#3665)
2x2 (#3660)
Double-sloped parts:
33°:
2x1 (non-standard, basically half of #3300)
2x2 (#3300)
2x4 (#3299)
45°:
2x1 (#3044)
2x2 (#3043 / 35464)
2x3 (#3042)
2x4 (#3041)
Technic:
A standard, modern 2L half-thick beam that just has two axle holes (#41677)
4L and 5L half-thickness beams with end axle holes (#32449, 11478)
5L beams in full and half thickness (#32316, #32017)
7L beam (#32524)
11L beam with alternating horizontal/vertical holes (#73507)
1L âspacerâ (#18654)
Angled liftarms in several configurations:
3-3, 90° bend, half-thickness, with 2 axle holes (#32056)
4-2, 90° bend, with 1 axle hole (#32140)
4-4, 53.13° bend, with 2 axle holes (#32348)
4-4, 90° bend (unofficial)
5-3, 90° bend (#32526)
6-4, 53.13° bend (#6629)
7-3, 53.13° bend, with 2 axle holes (#32271)
A âmodified stud connectorâ â basically a 4L half-thick beam with end axle holes, one end of which is full-thickness (#2825)
Liftarm/beam frames in 5x7, 7x11, and 11x15 sizes (#64179, 39794, 39790)
Two types of 5x3 triangle liftarms (#2905 and 99773)
Classic studded N x 1 "beam" bricks with horizontal holes in several sizes: 1L, 2L, 2L with stud-aligned holes, 4L, 6L, 8L, 10L, 12L, 14L, and 16L (#3701 et al.)
4x2, 6x2, and 8x2 plates with holes (#3709, 32001, 3738)
8x1 plate with round ends and end holes, both with and without splines (#4442)
5x1 plate with round ends, end holes, and central axle hole, both with and without splines (#2711)
2x1 and 1x1 bricks with single horizontal axle hole (#31493, 73230)
2L axle with notches (#32062)
3L axle with end stop (#24316)
5L axle with end stop (#15462)
8L axle with end stop (#55013)
4L axle with 8 mm wide axle stop at 8 mm from one end (#99008)
5.5L axle with both a regular stop and a 4 mm axle stop, both placed 7.2 mm from one end (#32209)
Standard, unmodified axles in 3L, 4L, 6L, 8L, 10L, and 12L sizes
2L (old-style) transmission driving ring (#6539, mates with the clutch-bearing gears below)
Axle joiners, with and without ridges for the driving ring (#6538a and 6538c)
Full-size standard axle bushing, with stud flanges (#3713)
Half-size axle bushing, with and without splines, two axle hole types (#4265a/b/c)
Three types of pulleys (large âsteeringâ #3736, small âwedge belt wheelâ #4185, and classic 9v motor pulley #2983)
Standard 16x16, 32x32, and 48x48 base plates (#3867, 3811, and 4186)
Technic pins with and without friction, standard length (#2780, 3673)
Technic pins with and without friction, long/3L (#6558, 32556)
Technic pin with friction, long/3L, with axle bushing on short end (#32054)
Technic pin without friction, long/3L with end stop (#77765)
Technic pin with friction, with tow ball (#6628)
Technic pin without friction, with axle on one end (#3749)
Technic 1L axle with tow ball (#2736)
Several sizes of belts for pulleys: 16, 24, 32, 40, and 56 mm diameter (approximately equivalent to #70902, 71321, 70904, 70905, and 71059)
Technic steering/tow-ball links in 6L, 9L, and 16L sizes (#2739b, 32293, 2637)
Flexible axle pieces in 7L, 11L, 12L, 14L, 16L, and 19L sizes (#32580 et al., sometimes referred to as âsoft axle" or "axle hoseâ, which is odd, as they aren't hoses at all)
Gears and gear-like:
8-tooth, standard (#10928) and without friction (#11955)
12-tooth single-bevel (#6589)
12-tooth double-bevel (#32270)
14-tooth bevel, thin (#4143)
16-tooth, both old and reinforced variants (#4019 and 94925)
20 tooth (#69779)
20-tooth single-bevel (#32198)
20-tooth double-bevel (#32269)
24-tooth, both the old 3-axle-hole version and the newer 1-hole version (#x187 and #3648)
24-tooth crown, reinforced (sometimes called âtype 3â, #3650b)
28-tooth double-bevel (#46372)
36-tooth double-bevel (#32498)
40-tooth (#3649)
140 tooth ring (Âź segment, #24121)
2L worm (#4716)
1L wide worm (#27938)
28-tooth turntable (#99009/99010)
56 tooth turntable (sometimes referred to as âtype 2â, #48168/48452)
Standard 4L rack gear (#3743)
Standard 8L and 14L rack gears with rounded ends and end holes (#6630 and 32185)
16 tooth free-spinning gear with clutch on one side, one with splined hub, one with plain hub, and one with the clutch on both sides (#6542, 6542b, 18946)
20 tooth free-spinning gear with clutch on both sides (#81346)
20-tooth double-bevel free-spinning gear with clutch on both sides (#35185)
Differential with 28-tooth bevel gear (the kind that uses the 12-tooth bevel gears, #62821b)
Differential with 16- and 24-tooth gears (the kind that uses the 14-tooth bevel gears, #6573)
The classic gear box for 24 tooth + 2L worm (#6588). Note that the support bits under the pin and axle holes are intended to remain permanently embedded into the part (only the bits under the center bridge are meant to be removed), so if you don't want them, print the version without the supports baked-in, and use your slicer's support material instead.
Pneumatics:
8 mm diameter actuator cylinders #19475 and 21828
16 mm diameter actuators #19467, 47224, 2793, 4688/127c01, and 4689/335c01
Air tank #67c01
Switches #4694, 47222, and 19474
Manometer/pressure gauge (this is more of a visual model, but it does work, however inaccurately).
T fitting
Hose connector with Technic axle connector/bushing
Printable hose in small 50, 100, 150, and 200 mm lengths, plus a big coil measuring about 2.5 meters in length.
Wheels and tires:
Technic classic split wheel hub (#3482)
A few sizes of tires to fit it: 24x8, 30x10.5, and 43x17 mm (#3483, 2346, 3634)
A tire for the Technic wedge belt wheel pulley (#2815)
Technic medium racing wheel and tire (#44771/44772)
Technic large six-spoke wheel and tire (#2998/2997)
The hub, steering arm, and grooved ball that go with the six-spoke wheel/tire (#6540b, 2999, 2907)
Also included is a little T-shaped âsupport popperâ tool, to help in removing the disc-shaped supports used by liftarms/beams and some of the gears, if you're using those supports. Prints in two pieces, to be glued together.
Variations
It's possible to combine two or more standard parts into one to create more complex shapes via boolean operations or by simply overlaying parts and exporting them as one STL. You can create rectangular beam frames, L-shaped bricks (like the 2x2 that's missing one corner), and all manner of other âweirdâ shapes this way. It is also possible to combine a generated brick/plate/beam/etc. with some other shape, such as a clip or hinge.
A fair number of the included parts were made this way.
It is also possible to create super-sized bricks compatible with Duplo, Unico, and similar small children's toys. Simply scale the brick up by 2x, then make the necessary fine adjustments to the studs' diameters, wall thickness, tube diameters, etc.
In theory, it should also be possible to alter the various settings enough to create bricks that work with âoffâ brands and old vintage construction toys that themselves imitate but aren't compatible with the usual spec (for example, Lock-Bloc, Tente, etc), though I have not tested this.
Note that the global settings apply to all parts of the project, so you will need to use an additional copy of this project in its own folder for each of those super-sized or non-standard building toys, to avoid settings being applied to the wrong set of parts.
Fair warning: Blender isn't exactly a speed demon, and trying to generate very large parts may take a long time! To reduce the wait time, set all of your part's other options (holes' presence, axle hole, stud type, etc) first, before you crank-up the size.
As you can see from the list above, base plates can get pretty big. My computer is fairly fast, but it still took a full 3½ minutes for Blender to generate the 48x48 base plate. A base plate of that size measures 384x384 mm, and there aren't many commonly-available consumer-grade 3d printers that could actually fit something that big on the bed (especially once you account for bulldog clips, corner mounts, or whatever else might obstruct the edges thereof), let alone whether the whole thing would actually stick to the bed for the full duration of the print. Still, it's included as one of the pre-rendered parts, should you find yourself in possession of a big enough printer. đ
Since this all takes place within a CAD program, larger parts means more visible geometry, which can stress your video card or drivers. Nothing can be done about that, but then again I have a rather old GPU by today's standards, and it handles things just fine, if a bit slow. I imagine RAM needs will balloon-out too when there's a ton of geometry, as well.
This all applies to your slicer and perhaps your printer host program, too. For those who usually print by streaming gcode from PC to printer over USB or a network, it would probably be a good idea to print especially-large parts directly from an SD card plugged into the printer. That way you can just re-print the same g-code as many times as needed, without having to re-send it, and without risking losing it if the PC crashes/reboots (e.g. if your gcode normally ends up in â/tmpâ or RAMdisk after slicing).
Settings and Options
In pretty much every case where I could find legit numbers, each feature of a brick, beam, etc. starts out at the official dimensions of the commercial product. For example, a stud is ideally 4.8 mm diameter and 1.6 mm tall, a brick's wall is 1.6 mm thick, the bottom pegs on N x 1 bricks are 3.2 mm diameter, and so on.
Of course, a real print will never have the exact same dimensions as specified in the models. For most 3d printing, a designer would just model his/her part to allow for some tolerance, but these building blocks have to be rather precise to fit together properly, so a bunch of adjustments are needed. That is how this project was born.
Global Settings
All of the various settings are described below. In the image, you can see the âGlobal Settingsâ file opened on the left, and on the right is the Brick Generator, showing the standard 4x2 brick, with its settings visible in the Object Properties pane in the lower right. Brick settings are described further down, under âPer-brick optionsâ.
add_blender_logo: When enabled, all bricks with solid studs will get the Blender logo on the tops of the studs (commercial brands sometimes put their name or logo there).
axle_bottom_side_adj: Axles have to be printed on top of supports (they have their own in this project), and like any object that uses supports, there'll be a certain amount of height inaccuracy. Adjust this parameter to account for that (higher numbers move the bottom side up).
axle_conn_stud_fit_depth: Some parts such as full-size bushings or axle joiners can be pushed into the space between a group of four studs. This adjustment controls how tight that connection is.
axle_cross_width_adj: If you look at the cross-section of an axle, you'll see that it's â+â shaped. This adjusts the thickness of the four "pointsâ that make up that shape. The aforementioned axle_bottom_side_adj is subtracted from this for the bottom side.
axle_inner_corner_fillet_depth: At the center where the four points meet to make the â+â shape of an axle, there's a fillet/round bevel. This adjusts its depth.
axle_outer_dia_adj: The âendsâ of the four points are actually rounded, as though the axle had been turned on a lathe after the main â+â shape is created. This adjusts the diameter of the âlatheâ cut.
brick_bottom_peg_dia_adj: On most N x 1 bricks, plates, tiles, etc., there are pegs which will wind up sitting between the studs of a brick that's pressed into the bottom, and which also fit the âopenâ studs found on some Technic parts. This adjusts their diameter.
brick_plate_tube_inner_dia_adj: On most N x 2 or larger bricks, plates, etc., the aforementioned pegs are replaced with larger, offset tubes that fit between sets of 4 studs, and which can themselves fit over a stud. This adjusts their inner diameter.
brick_plate_tube_outer_dia_adj: This adjusts the outer diameter of those tubes.
brick_wall_thickness_adj: This does just what it says on the tin. Larger numbers make the walls thicker, and always inward (the outer dimensions of a brick are not adjustable).
horizontal_pin_hole_apex_height: Because holes have to be rather precise, we can't allow bridging droop at the top of a horizontal hole to affect its diameter, so this project uses a variation on the old âteardrop holesâ method that used to be popular in the early days of hobbyist 3d printing. This adjustment controls the height of the teardrop's point or apex. The tip of the apex gets rounded-off more and more as it gets shorter; a setting of 0 makes a perfectly circular hole.
horizontal_pin_hole_dia_adj: This adjusts the diameter of a horizontal hole (the apex is then added on top of this).
horizontal_pin_hole_shoulder_apex_cutoff: All horizontal holes have a shallow âshoulderâ or âinsetâ at each end, and like the hole itself, they use a variation on the âteardropâ shape. Since the shoulder diameter is allowed to be less precise than the hole, these models just sharply cut off the tip of the apex (to form a flat zone for bridging). This adjusts the height of that cut. If there's enough call for it, I'll rework the shoulders to use the same method used by the holes (to allow for them to be perfectly round, which would look good for resin and SLS printers).
horizontal_pin_hole_shoulder_depth_adj: This adjusts the depth of those shoulders (in the axial direction).
horizontal_pin_hole_shoulder_dia_adj: This also does just what it sounds like, this adjusts the diameter of the shoulders (the âteardropâ is added to this).
horizontal_pin_hole_shoulder_edge_sharpen: FDM printing has a tendency to round-off outside corners due to the behavior of the plastic, even if the model is sharp, but parts with horizontal holes need a sharp corner where the hole meets the shoulder so that the various pins are retained properly. In these models, the shoulder is actually cut in a sort of âZâ shaped cross-section (imagine that the top stroke of the âZ" is the shoulder's side wall, the diagonal stroke is the shoulder's base surface surrounding the hole, and the bottom is the beginning of the hole's wall), to encourage the printer to make a sharper corner. This setting controls how âwideâ the âZâ is, that is, how sharp the angles are on those corners. A setting of 0 means no sharpening, and makes the corners a normal 90° profile.
open_stud_inner_dia_adj: For parts with âopenâ type studs, i.e. where the stud is not a cylinder but a ring (as on some Technic parts), this adjusts the inner diameter of that ring. Ideally it should fit the peg on the bottom of an N x 1 plate/brick.
open_stud_outer_dia_adj,
standard_stud_dia_adj: These two are just what they sound like. One adjusts the outer diameter for open studs, one does so on solid studs. The reason there are separate settings for the two types is that plastic has a tendency to pull itself inward when making an open stud, just like what happens with a vertical hole in most prints, but that doesn't happen nearly as much with solid studs, so they need less compensation.
stud_height_adj: Just what it sounds like.
support_z_clearance: This adjusts the distance between a support object's top/interface surfaces and the part being supported. In most parts with supports, this is the exact distance, but in a few places where it seemed needed (such as on the turntable bottom, or the transmission driving ring), an extra 0.1 mm is added to this setting. Note that not all supports obey this setting.
technic_pin_center_bore_adj: this adjusts the diameter of the center bore in most Technic pins
technic_pin_lip_dia_adj: This adjusts the diameter of the flange/lip at each end of most Technic pins, in case your prints don't snap cleanly into pin holes in beams/gears or are too hard to pull out. When adjusting this, you should test your printed pins with a real, commercially-made part â don't rely on how they fit into a printed part, not initially, as your printed parts may not necessarily be accurate enough at first.
technic_with_friction_tightness_adj: This adjusts the thickness of the ridges present on âwith frictionâ pins, making the pin tighter or looser. As with the lip adjustment, you should test your printed pins with a commercially-made part before using them with printed parts.
vertical_axle_tightness_extra_adj: this is an extra setting to be used if a printed-vertically axle (as in some Technic pins) is too tight/loose. Higher values will make it tighter, but be conservative here, as vertically-printed axles won't be as strong as horizontally-printed axles.
vertical_axle_fillet_depth_adj, this allows a vertical axles' center fillet to be made deeper or shallower if needed. Larger numbers make the cut shallower, which makes the axle tighter.
vertical_pin_hole_dia_adj,
vertical_pin_hole_shoulder_depth_adj,
vertical_pin_hole_shoulder_dia_adj: These three are the counterparts to the similarly-named horizontal settings.
vertical_pin_shoulder_bottom_offset: Like an axle's bottom side, the shoulder on the bottom end of a vertical hole needs to be supported, which means the real distance between shoulders will likely be a few tenths of a millimeter longer than the model, shifted downward. This lets you shift the bottom shoulder up a bit to compensate for that.
Per-brick options
brick_height,
brick_length,
brick_width: These three are just what they sound like. Length is the size along the part's X axis, width runs along the Y axis. These sizes are measured in studs, where 1 stud is 8x8 mm (the final brick will then be trimmed 0.2 x 0.2 mm smaller). Height is measured in millimeters. A plate is 3.2 mm thick, a brick is 9.6 mm.
has_end_holes: In some N x 1 plates, the stud at each end is replaced with a vertical pin hole. Enable this option to make this happen. The plate must be 1 stud wide, and the ends must be round.
has_end_axle_holes: rather than pin holes, you can put axle holes in the ends of an N x 1 brick/plate/beam if you want.
has_horizontal_holes: This adds horizontal holes to a brick, but only if it's a full 9.6 mm brick or taller, and only if it's 1 stud wide.
has_splines: For N x 1 plates that have round ends with vertical end holes, enabling this option cuts splines into the bottom around the holes, like the ones you find on the old version of the half-size axle bushing.
has_vertical_holes: On N x 2 plates, this drills pin holes between sets of 4 studs, turning a standard plate into a Technic plate. I've only ever seen 4x2, 6x2, and 8x2 plates with these holes, but it works for anything 2x2 or larger (and in both dimensions).
horiz_holes_aligned_with_studs: Normally, horizontal holes in a classic beam/brick are offset by 4 mm, putting each mid-way between the two studs above it. Enable this to eliminate that offset, putting them directly under the studs.
is_round: Enable this to make the brick/plate/tile round â the corners will be filleted according to the brick's dimensions, so if the brick is square (any size), it becomes a cylinder/circle. A long, narrow brick becomes round just on its ends.
studs_are_open: Enable this to make the studs open (as on a Technic N x 1 plate) instead of solid/closed (as on most bricks).
vertical_pin_hole_extra_dia_adj: On occasion, a brick or plate with vertical holes may end up with the holes printed slightly too small or too big for some reason, even if the global vertical pin hole setting is otherwise correct for your printer and everything else is well-calibrated. This value allows you to adjust the hole size for just this one brick, and is added on top of the global adjustment.
is_baseplate: enable this to cut the bottom part of a brick/plate flat/featureless (1.6 mm thick), turning it into a standard base plate. If studs are turned off, they'll be added anyway.
Per-beam/liftarm options
beam_length: does just what it sounds like - the length is in hole count (or call it length in studs if you like, same as a brick).
is_full_thickness: If enabled, this generates a standard beam with the usual 7.8 mm thickness. If disabled, the beam will be 3.9 mm thick.
end_axle_hole_count: Just what it sounds like. This can add a standard axle hole at one end, or at both ends.
has_alternating_holes: normally, a beam has its holes running only vertically, that is, through the two flat sides, but in some cases, it's useful to turn every other hole horizontal. Enable this to do that. This is also used in the process of making rectangular beam frames. If you're trying to do this on a bent beam, it will only be applied to the straight/left part.
middle_holes_are_horizontal: some sizes of the aforementioned beam frames need one pair of its opposing beams/sides to have all of their middle holes oriented horizontally, instead of every other one, leaving just its end holes pointing vertical (which then become the corner holes in the frame). Enable this to do that. On bent beams, this only applies to the straight/left part. In most cases, if you enable both âalternatingâ and âhorizontalâ, the âalternatingâ setting will be ignored.
horiz_inner_shoulder_uses_edge_cut: if some of a beam's holes are turned horizontal, you can enable this to have their shoulders cut all the way to the neighboring top side/edge, on one side of the hole, leaving the other side with the usual rounded cut. This is useful when building rectangular beam frames, as only the inner-facing shoulders on one pair of sides are cut like this.
horiz_hole_fill_in: when a beam has its holes turned horizontally, the top and bottom of the beam normally show each of the holes' surround round cylinders. Enable this to mostly hide them (leaving only the last few millimeters of roundness at each end still visible).
bend_angle,
bent_length: These two allow you to create beams which are bent somewhere in the middle. The angle will usually be either a multiple of 22.5° or exactly 53.13°. The length is the size of the bent portion in hole count. Note that the lengths of both the straight portion and the bent portion count the hole at the beam's corner, so a 6/4 beam only has a total of 9 holes, not 10. Setting the angle to less than 0.1° or the bent length to less than 2 will result in a normal, straight beam according to the beam_length parameter. This can only create beams with one bend.
Per-part axle hole options
has_central_axle_hole: Some standard bricks or plates have a vertical axle hole in the center. Enable this to add one. If the brick/plate is 1 stud wide, it must be longer than 4 studs, and the length must be odd. The center stud will be deleted to make room for the hole.
axle_hole_size_adj: This adjusts the tightness of an axle hole, if present. Larger values are looser.
axle_hole_is_offset_type: In some bricks and other parts, an axle hole isn't â+â shaped, but rather they are roughly âbowtieâ shaped. Enable this to choose this shape.
offset_axle_hole_has_tighteners: Some parts that use the offset-type axle have little âfingersâ added back into the hole, tightening its grip. Enable this to add them.
Per-axle options
axle_length: This sets the length of an axle, measured in studs.
is_notched: Enable this to add a notch at each end of the axle
has_end_stop: When enabled, this adds an end stop at one end of the axle, which consists of a roughly 6 mm x 0.8 mm disc. Well, almost a disc, as alterations were needed at the bottom for the sake of printability (the usual âteardropâ/45° overhang thing).
stop_pos: Normally you'd keep this at zero, but if you want to move the aforementioned end stop to somewhere in the middle, you can do so by adjusting this setting.
stop_ext_thickness: Some axles instead use a cylindrical stopper roughly the axle's width/height, and varied in length, which acts as a stop for things like gears and bushings. This adjusts its length. Set it to a value of 1 or 0 to disable it entirely. You can use both this and the above 6mm disc-shaped stop at the same time, if desired. Both will start at the same place along the axle, per the stop_pos setting.
has_soft_ends: If enabled, the first and last 8 mm of the axle will be replaced by smaller-diameter cylinders, and decorative rings (resembling a crimped ferrule) will be added to the axle just inward of the ends, turning the axle into the âsoftâ/flexible kind. The middle supports will be shifted down slightly, with the assumption that you'll be using TPU. Ignored if the axle length is less than 4L.
Other per-item options
All gears with vertical pin holes respond to the global vertical pin hole adjustment.
All gears have axle_hole_size_adj, axle_hole_is_offset_type, and offset_axle_hole_has_tighteners options, which do the same things as the settings on bricks/plates. Although you can change these settings if you want, only the size adjustment is actually useful, as the others are more or less dictated by each gear model (some gears are supposed to have offset, tightened axle holes, others are supposed to be square-only, etc).
All axle joiners and bushings have the axle hole size adjustment also.
The ½-size bushing has a splines option, similar to the one for round-ended plates.
On the rack gears, you can set a custom length (in studs, as usual), and whether the rack has those rounded ends with pin/peg holes. There's a thickness setting also, which raises the teeth by 1.4 mm, for future use to build those oddball racks with pin/axle two-way connectors on the ends.
The #6588 gear box has an adjustment for the two pairs of axle holes, allowing you to deliberately oversize them if they come out too small due to use of clear filament and the kinds of printing settings that work best for that. These holes are oversized by +0.20 by default. Set this to 0 to make those holes the same as on all other parts. Since the other holes are meant to take pins, this setting is not applied to them
Special cases
There are a number of âspecialâ cases here and there in order to fit-in some of the little nuances that certain commercial bricks have. Some of these include:
Round bricks will get cross-braces on the bottom to keep walls from bowing-out or possibly breaking (this only looks right on bricks/plates with even length).
Normal commercial tiles have a square shoulder on the bottom, but since that wouldn't be printable, tiles in this project will be beveled on bottom instead.
A 1x1 brick or plate that's set to round will have a shoulder cut into the bottom so that it can be pressed down between a set of 4 studs. If it has an open stud, the stud will be drilled clean through.
Those round 1x1 bricks/plates will use the tube inner diameter bore, ignoring the brick wall thickness setting.
If you give a 1x1 brick a horizontal hole, it will automatically be aligned to the stud, since cutting one side of the brick would be kind of useless. đ
You can mix-and-match options in weird and and creative ways to generate bricks/plates/tiles/beams that simply do not exist in the Bricklink catalog.
When generating slopes with double-sloped sides (I.e. roof peak tiles), you set the height as if the slope is just single-sided. The program will automatically adjust the height of the part according to your setting. Therefore, to get the flattest ones (with the 33° sides), you set the height to 3.2 mm, just like a plate. The tall ones have a height of 9.6 mm, like a normal brick.
To get the short, 1 x N slopes (the ones that look like a right triangle stuck on top of a tile), simply set the height to 6.2 mm.
Pneumatics notes:
Pneumatic toys are/were an interesting curiosity. The original parts worked reasonably well as toys go, but some people might say they weren't particularly good compared to the sorts of pneumatic parts you might get from a company that bases their business around that technology. The commercial parts all have tiny ports that barely let air through at all, and lubrication and surface conditions that don't necessarily promote smooth, fast movements, and being pneumatic, those moves are pretty much all the way out or all the way in, there's no half-way really (and no way to sense it either), plus the smaller ones have hardly any displacement.
And that's with commercially-made parts done with professional-grade molds designed by highly-skilled engineers using materials formulated for this kind of task.
Enter: 3d printed pneumatic parts.
All of the above-listed pneumatic parts DO work. Switches do successfully redirect airflow, cylinder actuators move in and out in response to pressure like they should, and the manometer/pressure gauge even works. HOWEVER, everything is leaky. All I have to work with are two FDM printers and a selection of PLA, PETG, ABS, and TPU filaments, and so far it's been all but impossible to get good seals around the moving parts, especially the actuators' pistons and end seals, without also compromising their movement. TPU has a stupidly high stiction ("slip-stick" friction), while not being nearly as flexible as rubber at these scales, so you either get a fairly-okay seal and no movement, or good movement and a poor seal.
The pressure gauge is easy to print, and it's repeatable, but I would not begin to claim that it's accurate. The numbers on the faceplate are only there to provide predictable references. Thus a reading of â3â does not mean 3 of any specific quantity or unit (unless you invent one đ ).
I have nothing with which to actually calibrate the gauge, and my only source of pressure is canned air dusters like you'd use to blow crud out of your keyboard. The best I can say is that an air duster at about a quarter full will just manage to peg the gauge's needle at â4â, with the trigger pressed about half-way in. It's my understanding that such cans are usually pressurized to about 7 bar, so maybe the gauge's reading is close, or maybe it's way off.
How accurate the gauge is will depend on the Shore hardness of the TPU you print the Bourdon tube with (I used Sain Smart red TPU, which is 95A hardness), how rigid the plastic is that you print the return spring with (I used Atomic metallic gold v2 PETG), and how good of a seal you can get between the Bourdon tube and its seat in the inlet piece (I did not use any kind of sealant, but you should).
The aforementioned return spring is designed with the intention that you'll fix it and the spindle into the Bourdon tube and then fit those into their corresponding holes in the upright frame part of the âinlet inner halfâ, after which you'll wind the combo ž turn counter-clockwise (when looking at them from the front) to match the Bourdon tube's inlet end with the cutout in bottom part of the inner half. This places a mild, counter-clockwise torque onto the Bourdon tube, causing it to wind itself up further than when it was printed, which both increases the total rotational range of the gauge, and provides just enough force to hold the pointer against the 0 position stop peg when there's no pressure.
You will need two M3 x 6 mm screws and nuts for the inlet, and two M3 x 10-12 mm screws to fasten the two halves of the gauge housing together.
You can either print the front lens (e.g. using clear filament and that "crystal clear" printing technique that appeared on Hackaday), or just cut a 37 mm diameter circle from a discarded soda bottle or other clear packaging. The "lens" should be between 0.4 and 2.0 mm thick, thereabouts.
The various plungers for each actuator are designed to print in two parts and then lock together (insert and turn the shaft 90°, then apply a drop of superglue if necessary). For the double-acting actuators (that is, the ones with two inlet ports), you should print their plungers with concentric infill on the top and bottom, just to ensure the smoothest possible motion through the end seals.
Each of the switches has a TPU insert in its lever piece, serving as a seal, but the commercial parts just have a single-piece lever made of hard plastic (probably ABS), so if you want to, you probably could do so also. You will need to tweak the inserts' sizes slightly, since they're modeled with the assumption of being squished a bit.
Note that I have not tested how much pressure the air tank can hold before it bursts, though I made the walls fairly thick, so it should be fairly durable. How strong it is depends on your print settings and the type of plastic you're using, too.
I recommend drilling-out whatever inlet ports you can, with a 1/16 inch or 1.60 mm bit. That's the official internal diameter of those ports, but they'll almost certainly be slightly under-sized when printed, and if you're printing with a 0.4 mm nozzle, you probably won't be able to compensate fully with the port diameter setting. Note that you won't be able to drill-out all of the ports, as some of the actuators have curved bores on their âextendâ ports.
After drilling, you will need to smooth the cylinders' bores as best you can. A few minutes with a roll of 400 grit sandpaper is enough if that's all you can do. I opted to sand them, but it would be better to properly ream the bores instead, if you have the tools to do it. Others have suggested using drill bits for that, which is why I modeled the parts with 5.5 mm and 12.7 mm diameters â those sizes are just right to fit 7/32 inch and half inch drills. Be sure you clean out the dust/debris when you're done.
If you can, do some light vapor smoothing after sanding - but only just enough to give the bores a slight polish (otherwise you may distort them too much).
Next, grease the cylinder bores. I used ordinary petroleum jelly ("Vaseline"), but there are proper greases that are more suitable for this. It's just all I have on hand.
Finally, you will need to adjust the sizes of the pistons and end seals to match your results. The models included here assume you've only sanded and greased the bores, and so are slightly under-sized. That's most of why the pistons get so much blow-by. A precision-machined/molded bore with a precision-molded silicone piston would allow for an airtight fit that can still slide easily, but we're using FDM with common filaments here.
So where are the pumps? There aren't any - at least not yet. I argued for about a month trying to get it right, and came up short, so I've put them on the back burner for now.
Would resin or SLS work better? I would assume so, at least as far as surface quality inside a cylinder goes, and those sorts of machines should be able to print good molds to cast proper silicone or rubber pistons and seals.
Honestly, unless you'll always be using something like a small air compressor to drive your pneumatic creations, thus doing something where it's okay if things are leaky, I think it's better to just buy aftermarket pneumatic parts - Amazon has some (admittedly expensive) pneumatic kits, and there are plenty of parts for sale on Bricklink or other brick-centric sites.
Changelog:
The changelog has been moved to a separate text file, which can be found in the âFilesâ section of this project.
Model origin
The author marked this model as their own original creation.