PistonPusher 5.0.0

Hi everyone!

I just uploaded 1.5.3 and a new parts directory. It’s recommend you replace the parts directory completely as most files had a name change. Hopefully you haven’t added too much parts yourself yet.


  • Snap modal now allows camera/view control when pressing middlemouse button/scroll

  • Rod end extrusion cutters now maintains offset while adjusting the piston rod radius.

  • ‘Rods’ collection is now named ‘Rod’ when creating a piston

  • Fixed origin of the t mount

  • Once you constrained a piston you can’t change mounts anymore. Instead you can go back to the initial menu used to start the process.

  • Save function bug - Parts have their file names changed to accomodate. It’s best to replace your parts directory with the new one.

  • Mounts saved with an offset on the X axis will have this offset preserved once added to the scene. (Mainly useful for trunnion mounts)

  • Mounts will now automatically scale down to a sensible size.

  • Control empties or parent objects(connectors) are now selected when mounts and connectors are added to the scene.

  • 4 more parts. 3 mounts, 1 banjo connector.

  • 2 templates: single and double action welded rod designs. These have extrusions ready for connectors.

  • Part prepare/make feature! you’ll find this in the create panel as well. It allows you to easily prepare connectors, mounts and rods so that they can be used while creating pistons. It works like this:

For mounts:

You should create the mount in a vertical position. The bottom-most face(s) will connect/touch with the piston rod or cylinder. This face should be at the world origin, or slightly below it if the rod sticks into the mount. Then, the origin of the main object should be set to its pivot point. After this you can select all child objects and lastly the main object. Then click on make. selected objects will be parented to the main object, an empty is added and the mount is rotated into the proper position. For connectors the process is the same but they won’t be rotated or parented to an empty.


For rods:

Rods are created in a horizontal position. You can add details and child objects as well. You can basically just take a cylinder, off-set its origin to a number < 0 on the y axis. All vertices further than the origin relative to 0(y axis) will stick out of the cylinder once you place it later on. Due to the way the rod is scaled, child objects are handled slightly different: You’re supposed to select only 2 objects, even if there are more. The piston rod, which should be selected last so it’s the active object and the ‘main’ (or biggest) child object. (All other objects are parented to the selected object.) Then you can click on make.


Note that this adds the proper collections, constraints and adjusts objects names so they reflect the expected convention(for mounts too). I still recommend giving your objects sensible names. You don’t need to name the piston rod, it’ll be named properly for you. I use transformation constraints for decorative pieces that you might find on piston rods, these are added too. You can add detailing geometry to the rod itself too now but only if you added child objects too(due to cylic dependencies that would otherwise form by hooking these vertices to the ‘p_rend’ empty).

Updated to 1.5.4

  • Mouse input modal operator logic adjusted, it’s now very similar to blender’s native scaling/resize functionality. Cleaned up various quirks with the tool as well.

  • Scaling is now toggled with the S key, shift can be held for finer adjustments. Original scale is preserved if cancelled. If the pistonpusher menu remains open after moving the mouse away, pressing shift will close it.

  • Certain keybinds returned a 'PASS_THROUGH needlessly, this has now been fixed.

  • The modal operator has new features: It can find the length anchor belonging to the instance it’s currently snapping. It’s currently only designed for pistons with a single length anchor This means that you can now press ‘E’ while snapping and drag the length anchor to the desired location. Only works if the length anchor has ‘Length anchor’ in its object name. You can also press ‘R’ to reset scale. I also disabled the ability to scale negatively.

  • Added 2 more connectors: One with a small oil reservoir, One flat like disk thing by lack of a better name.

  • Slightly adjusted the wr-double template so that it’s easier to add a rod end cap.

I also want to thank everyone that bought pistonpusher for their support, so:

Thank you!

1.5.6 Is now available for download


  • Renamed length anchor of rounded piston.

  • Fixed issue with connector 6, a part was not in the right collection

  • Changed connector 0,1 and 2 so that they are more realistic,

  • Added a circle ngon for users that have cablerator, to connector parts that could use one.

  • Changed connector 11, reduced geometry in flat areas

  • Added 4 connectors, 2 of these have control empties to adjust them as you see fit, the other 2 are a nurbs and bezier pipe

  • Added a small kpack that contains 2 different bolts and 1 nut

  • After you made a part, save panel will now show, set at the proper sub directory

  • Added a simple notification system, these appear in the bottom center of your 3dview/viewport and give information about what’s happening.

  • Can now press ‘H’ while snapping to show modal keybinds. Like notifications, they will automatically dissappear after 3 seconds. You can change this duration in the add-on preferences

  • Fixed a bug that would occur if you tried to add a piston to the scene while having 2 objects selected which were not empties. It originally didn’t break the functionality but it did cause an error. This is now handled properly and the operator is cancelled when you try to do this.

  • Fixed bug when adding part while not in the piston creation process, this bug also did not break functionality and simply caused an error in the console.

  • Fixed bug when replacing a piston rod during the piston creation process.

Uploaded a how to/timelapse!

I’m currently collaborating with the one and only @masterxeon1001

As a result of this, we’re adding some really fine, high quality hydraulic cylinders. We just added 4 new pistons. You’ll recognize some of these in masterxeon1001’s videos. A big thanks and shout out to him for helping me out and allowing me to add his work to PistonPusher.

Be sure to check his channel out if you often use cylinders/pistons cause this month his content will focus on them! MasterXeon1001’s youtube channel


Just updated to 1.5.7


  • Fixed gui bug when saving a piston, causing an incorrect notification to appear.
  • Added support for piston designs that can not use a length anchor but still need tracking constraints
  • Added support for subd workflow in the form of a ‘custom’ template. This is a more manual approach to the creation process, so it is not limited to subd workflow.
  • various changes to the N-panel(s). Mostly related to the new custom template/mode.
  • Added ‘C’ keybind to snap modal. This allows you to toggle the auto constrain opt-in.
  • MasterXeon1001 made another awesome looking cylinder/piston. This one is hydro-electric.
  • Bonus content: Also made possible by MasterXeon1001! There is a game ready variant of the glass/see through piston type. It’s also UV’ed. The file also contains the high res version.

1.5.8 is out!

  • Rods are now hooked to the rod anchor automatically if there is not a vertex group. This was a bug related to the custom template which did not re-hook the rod properly. For most rods, you can skip hooking the rod from now on.
  • Prepare operator can now work without a cutters collection.
  • Added a handler that fixed an issue after file reload, related to the piston select tool.
  • Added curve support for the creation system constrain operator.
  • Added a button to toggle subd modifiers viewport visibility of all objects. Found in N panel and pop up menu.
  • Ensured that the ‘go back’ button appears in custom template mode as well once constrained.

Masterxeon1001 has also been very busy!

  • Added 2 constrained game ready pistons.
  • Hydro-electric game ready bonus file
  • Added a ‘plunger’ piston.
  • Updated hydro-electric variant to a version with a better mesh and mount.
  • Added heavy duty sci-fi-ish piston.

That’s strange.

Assuming you just tried to append a piston? Or why do I see the creation system in that state?

I’ll need more info on this, I cant see anything wrong immediatly.

sorry wrong location. Corrected.

1 Like

Skipped some numbers, kinda, pistonpusher 1.5.11 is out now.

Everything that was wrong with the creation system should be fixed with this update. Pistons that are constrained from now on can also be rotated in an easy way, on a per part basis ( mount/cylinder/rod).


  • UI works properly now and refined the constrain configuration opt-ins a bit more.
  • Rods are finally handled properly
  • rotation drivers are added when you constrain a piston now. This means you can freely rotate the cylinder and piston rod now. To rotate the piston rod(and child objects), select the piston rod anchor. For the cylinder, you can rotate the object that is called 'Cylinder. There must always be an object called ‘Cylinder’ from now on.
  • rear length anchors come with another empty called _rla now. This is the empty that you want to move now, if you wish to make the cylinder longer.
  • Pistons that are constrained without a length anchor, or without tracking constraints are no longer stretchable, this was needed so that you can easily rotate the cylinder in these cases too.

This only applies to newly constrained pistons. I still have to re-constrain all assets.

PistonPusher 1.5.13 is out.

  • Objects now maintain visual transform when you set/overwrite a child of constraint.
  • Snap modal properly snaps a piston to empties, even if the empties are parented to something else.
  • Length anchor name requirement for snap modal is now case insensitive
  • front/forward length anchors of newly constrained pistons can now be (un)locked properly again, even after the piston moved.

Released another update lol.

This time I added the ability to unconstrain a piston.

2 more pistons got added and all other pistons have been updated.

I’ve also added all pistons to the kpack.

I should probably add that some pistons in the mx1001 directory are made by me. I don’t want to claim any credit for masterxeon1001’s work and so chose not to mention it until now. Most were made by @masterxeon1001


these renders lookin gud!


Learned from the best!

1 Like

1.5.15 is out!

With another feature this time:

An overlay intended to give a quick overview of how the constrain feature sees things, can be used to quickly troubleshoot issues or catch issues before you constrain a piston:

Also fixed a missing hose on the HEAVY piston type.

For those that didn’t know:

They certainly can be animated! There are limitations however. In a nutshell, by transforming the space a piston is considered to be in( like local space of its parent), you can get around some of them but not all.

And for those worried about performance:
my specs are:
a ryzen 5 4600g
4gb 1650gtx nvidia gpu.

so, pretty low powered when it comes to 3d art.

Pistonpusher 1.5.16 is now available!

(Piston made by Masterxeon1001)

  • Toggle overlay button is only visible if it can be used/ an (unfinished) piston is present.
  • Objects exactly at world origin are now colored white. This change also prevents the color from not updating if a object was set to world origin after the overlay was turned on. It’s still not a live overlay but it will properly update as you toggle it on/off now.
  • Fixed wrongly configured mirror modifier of the glass piston type.
  • Added a user manual.

Uploaded a new demo video!

Youtube seems to have some issues with the thumbnail, I expect it will appear eventually.

Pistonpusher 1.6 is out!

This update changed a lot:

  • Pistonpusher relies on armatures now.
  • Snap modal was replaced with a simpler but more effective alternative. The current implementation is essentially an adaptation of snap selected to active. Allows you to ignore scale/location/rotation. Works with auto constrain and all objects. No name requirements or whatsoever.
  • Select tool was changed as some of its features aren’t needed anymore. It can still select all parts of a piston. Or select the ‘next’ empty. The keybind for it also changed to ctrl + shift + left double mouse button. This change allows you to preserve any selection you had before running the select tool on an empty.
  • Constrain anchors(manual) was removed as it too was not needed anymore.
  • Non piston reselection opt-in was removed. Due to the removal of the snap modal and the changes to the select tool, this opt-in has been removed.
  • Removed clear last selection.
  • Added the ability to easily remove a piston. If you have a part selected, the option will be present in the pop up menu. This will also rename/recount all pistons of that type if needed.
  • Locations of operators in the pop up menu changed.
  • Got rid of ‘primary anchors’ custom properties and other code that wasn’t needed anymore.
  • You do not need to go to pose mode to control the piston!
  • ‘remove constraints’ also works still. it wont remove the constraints from bones but still detaches the piston from their armature and any empties.

All together, this should make animating them a blast!

Pistonpusher 1.6.1 is available now!


  • Added telescopic armature support, it works automatically. They can be stretched too! See release log video for more info.

  • Hook modifiers added by pistonpusher are now moved to the top of the modifier stack.

  • Thumbnails display piston/part name if user tooltips are enabled.

  • Index of a piston type is now omitted.(collection management only)

  • Fixed select tool bug.

  • Set child of constraints feature can now remove child of constraints or ALL constraints on the selected objects.(hold shift/ctrl)

  • Added 2 telescopic pistons. removed old telescopic piston.

  • Added demo scene of the hexapod to the bonus directory.

1 Like

Pistonpusher 1.6.2 is out!

  • Set child of constraints can target bones. hold alt to target armature, if the armature has no pose bones you do not need to hold alt.


  • Fixed snap tool bug. Related to snapping objects that are parented to an armature with constraints, which required different math. You can now properly snap the B empty/anchor of a piston!