PistonPusher 5.2.2 - Piston Planner Tool

Version 2.5 is now available:

  • Changed/fixed: Snap modal mouse wrap tolerance/padding are adjusted by system ui scale. I sadly don’t have hardware that can run 1080p+ resolutions, so if you run into issues on a higher resolution when the mouse is wrapped, please let me know!

  • Changed: Adjusted the messages/warning backgrounds so that they are grey again.

  • Changed: Separated the separators on the azari piston as the part caused quite a performance hit.

A little note for if you ran into bevel issues on 3.0, it seems that unticking the option ‘Loop slide’ under bevel geometry options can fix overshooting/exploding bevels!

Pistonpusher 2.6 is out:

  • Added a file browser shortcut in the save panel. It opens your pistons directory in the OS filebrowser.
  • Added ability to purge blend1 files in all directories known to pistonpusher.
  • Added ability to create directories in save panel. In the piston/part name field, you can use a / prefix and just hit enter. For example: /test creates a directory called test in your pistons directory.
  • Added ability to remove pistons through the previews/thumbnails. It auto-deactivates once a piston is removed. An additional warning label will also appear above the thumbnails. If you wish to remove multiple pistons, I highly recommend using a file browser. The opt-in appears at the bottom of the pop up menu.
  • Changed in 3.0, for a proper thumbnail, a camera is required, so in 3.0+ blender versions, its not removed anymore once you save the piston/get the thumbnail. The save and get preview thumbnail operators now warn for this and require a camera.
  • Fixed: If you save a piston or get a thumbnail, thumbnails will refresh automatically and properly display the newly added piston or updated thumbnail.

PistonPusher 2.7 is out:

Changed: Added operator presets for create/to piston.

Changed: Added missing tooltip for snap modal.

new: Set bone as parent tool.

this tool can set object parents, it essentially switches to pose mode until you select and confirm a bone with double left mouse button. (1 click to select, 1 to confirm, rmb to deselect). It switches back to object mode once done.

you can also confirm with enter. esc or alternatively, rmb ( if no bones selected anymore ) to cancel. It’s designed so that you can rig things together quicker, with or without constraints.

It’s found in the pop up menu. the layout has changed minimally to accommodate. The create linked duplicate radial array button was moved next to the multi-place button. The new tool can be found next to the set child of constraints operator button. This might change in the future.

It has 3 modes: object to armature, armature to armature and inter-armature.

object to armature mode allows you to set a bone as parent for any number number of objects. Excluding other armatures however. Relative/non relative is supported( ie, transforms can be maintained)

armature to armature mode can be used to tie 2 different armatures together. This mode adds a pose bone child of constraint targeting a bone in another armature.

inter-armature mode can be used to add a child of constraint targeting another bone within the same armature.

All modes are controlled in similar fashion, primarily by left and right mouse button clicks to (de)select bones and progress step wise through the process.


scroll mousewheel up/down - cycle bone layer visibility of the active armature.

Q - Restore original bone layers visibility state

W - Relative on/off(obj. to arm. only)

E - Switch 1st armature (arm. to arm. only)

middle mouse button and numpad for camera control

Other things to know:

  • In the case of inter-armature and armature to armature operations, the first selected bone will receive the constraint, the second bone will be its target. You’ll have to double right click to de-select a bone properly.
  • In the case of armature to armature operations, you can only use the E shortcut if no bones are selected, a message should appear, instructing you to deselect bones/go back.
  • Bone layers visibility state is always restored to original upon exit/finish.

The tool currently provides minimal feedback in the form of on-screen/gui elements but more will be added soon. This mainly concerns armature to armature operations and feedback about the current state of the tool.


version 2.8 is available:

  • Fixed: small logic issues of inter-arm mode(set bone as parent tool)
  • Changed: Set bone as parent tool now provides on-screen feedback about its state.
  • Added: Mech example file, this time in a toon/anime style.

1 Like

version 2.9 is now available:

This update brings quite some changes to the ‘create a/to piston’ tool. These hopefully offer a more streamlined experience and make the tool a little bit more useful.

  • Changed: Create a/to piston re-do panel layout changes. This mainly concerns the bevels section.
  • Fixed: Create a/to piston issue when a part of the operator fails, the in- and extrusion part, various specific combinations can cause this, it can now fail without causing errors. Which I felt was a better solution than trying to catch all possible combinations, simply changing the length, radius, vertices or subdivisions by a small amount is usually enough to get them working again.
  • Added: For create? option - Rotate resulting piston and rod by 90 degrees so that it’s at the correct orientation for the (custom) creation mode. It can only be used on pistons at world origin.
  • Added: Rod is child of cylinder? option - This option sets the cylinder as the rod parent.
  • Added: Ability to add cap end and rod mounts. I couldn’t figure a way to add the part previews without causing memory leaks/issues so selections are made by index. Index 0 equating to mount 0 and so on, if the mount does not exist, nothing happens. Mounts are always children of their cylinder/rod(through their m_snap empties!). Mounts can be scaled, offset and rotated by 90 degrees.

Note: Mounts and additionally bevels have the potential to make the tool slow, it all depends on the mount and settings. Also, first revert to operator defaults if trying to use a preset when the tool was already used(The mount off-set values do not correctly apply if you don’t).

This update requires users to update their parts directory, some mounts were in an incompatible configuration. Even so, some mounts, mainly side mounts, are not suitable for use with this tool, some will play nice after setting their mirror targets, others not. No new mounts have been added so it should be safe to overwrite them.

(2.9.2 is now available with a fix for linux users and the create a /to piston tool, piston indexes are now updated after one is removed from disk)

For version 3.0 I’m working on asset related changes that streamline the update process and separate user parts from the provided parts. Updating assets will become a lot easier!

Have fun!

Version 3.0 is ready for the new year:

Pistonpusher now comes as a single download, you do not need to set assets paths anymore. I highly recommend that you do however. A la decal/mesh machine, simply specify a directory, provided assets are (re)placed in it and you’ll be good to go.

The way user parts are handled has also been changed. Essentially, they are separated from the parts provided by pistonpusher, usage has not changed, you shouldn’t really notice it. One consequence is that user part indexes will not match their file name indexes. When it comes to the create a/to piston tool, the index provided by pistonpusher should be used. So user mount 0 will be mount 32.

This allows me to update and add/remove parts as the add-on changes while keeping user libraries intact! Simply ‘update’ the assets file path (re-enter it!), to trigger an asset update. Note that all directories containing assets provided by pistonpusher will be wiped to ensure assets get updated even if name changes are involved. Only the ‘users’ directory in the piston parts directory is preserved.(and user created piston directories of course!) Updates are only triggered if an appropriately named .version file is missing from the destination library.

If you hover the mouse over a part thumbnail, if the name has an a value like this: (0), that means its a user part and that its physical ‘on disk’ index is 0.

Parts that you add yourself will be saved in a sub directory in the ‘User’ directory(Piston parts directory) this also includes user made templates!

changed: N-panel menu is hidden by default
Changed: Showing parts outside the creation process now auto closes the create panel, resulting in a slightly cleaner pop up menu.
Changed: Parts are now sorted by numerical order based on index.
Changed: Updated piston/part/template name field’s tooltip in the save panel to correctly reflect current limitations. It also checks for spaces/underscores/numbers where relevant now.
Added: Ability to remove parts. Similar to how pistons are removed. Toggle the opt-in under the pop up menu, the affected directory will be re-counted. You can safely delete pistonpusher and user assets with it.

I highly recommend that users remove the add-on and restart blender before updating for this one!

Version 3.0.1 is out!

Changed: Added safety check incase asset path is the same as default path.

Changed: Get thumbnail operator does not affect subdivision viewport levels anymore if modifier viewport visibility is off.

Fixed: Save piston issue that did not create the proper paths for name checking

Added: New piston and connector part.

A new video about inverted telescopic pistons has been made

The new piston:

( All decals and some bolts have been removed. Shown are bolts from AFRIKANIZI3D’s nutvember collection.)

Pistonpusher 3.0.2 is available:

  • changed: Addon preferences now shows the latest vs detected assets version if relevant(non default assets path), an update button was also added.

  • changed: Create a/to piston adds a ‘piston’ collection if mounts are added.

  • Fixed: Notifications and warnings/modal info are only shown in the active 3d view, providing a better experience with quad/multi view.

  • Added: New mount(latest piston)

The pistonpusher assets version is now linked to the add-on’s version. This ensures I won’t forget to update the version file if I added new parts(like I did with 3.0.1), this comes with a catch:

The add-on preferences will show you can update even if it isn’t necessary(nothing changed). While you can safely update, any edits to parts/pistons provided by pistonpusher will be lost. Consider saving these as user parts/pistons.

Just to be clear, pistonpusher compares its own pistons with the ones it finds at your chosen location. It only updates directories that also come with pistonpusher. This can be of concern if you manually replace files during an update, especially if you did not provide an assets path. To prevent messy situations, you can not save pistons anymore while you haven’t set a path.

Version 3.0.1 is available

changed: pop up menu layout.

  • Opt-ins got moved to the bottom.

  • Radial array side selector and radius value are moved to the top, above the tools but below the piston/part previews.

  • Changed emboss of show create/save buttons to none.

  • If the creation mode is active, a dot will be visible after the auto-constrain opt-in.

Changed/added: linked dupl. radial array piston sides selector does not set transform pivot point to individual origins anymore. Instead, you can now rotate array element children in the radial array section of the pop up menu while the main radial array empty is selected. Only objects with a child of constraint targeting an element of the selected array will be affected.

Fixed: The main empty of a linked duplicate radial array is now selected after one was created, also after multi-place was used.

Fixed: Change mounts button in template creation mode is disabled after the piston was prepared.

added: Import tool/feature, to be more precise, it allows you to merge two directories, while updating file indexes properly. This in theory should make it fairly easy to share or even sell user parts and pistons. This last feature requires a more elaborate explanation:

It can handle both piston and part directories. It’s agnostic as far as the files and their intended purpose goes. This means the user has some responsibility and it should be used with care. The tool can not execute if the source path is in the currently used library. It only updates indexes of the source files so that they match after copying. I recommend never using it on another library if that library will be used by pistonpusher at a later time!

Sharing your works, for whatever purpose, is as simple as making a .zip/7z archive of your specific user parts directory(or simply the whole user directory). The recipient can then merge them as required. If no user parts are present(recipient) you can just move the files, assuming their indexes have not been touched by this tool.

Importing piston directories was already just a matter of copying/cutting a directory, now you can also merge into existing directories. Just beware that it does not check for duplicates of any kind.

While it tries to catch simple mistakes based on parent directories, this may not always be accurate, if you wish to ensure this is accurate:

The structure of your files, at the very least, should look like this

'Pistons' directory

    'Your pistons subdir(s)'


'Piston parts' directory

    'Your user parts' subdir

    (optional)'User' directory

        (optional)'your user parts' subdir(s)

If an incompatible match up is detected, a warning will appear and the ‘Merge directories’ button will be disabled.

No assets were added, users do not have to update their libraries.


version 3.1.1 is available!

This version fixes some issues with the current tie rod templates, more specifically, the geometry of the tie rod (cutters). It also removes a rogue button in the save section that I forgot to remove.

users should update their libraries this time.


Version 3.2.0 is available:

  • Changed: Moved auto-constrain out of add-on preferences.

  • Fixed: Tie rod templates have all their issues fixed. Please update your assets library!

  • Fixed: Various pistons have minor issues fixed.

  • Added: Make/delete version file buttons, does just what it says, make/delete version files without actually updating any assets.

  • Added: Piston rod material (latest inv. telescopic piston, it’s now been added to the k-pack!)

  • Added: Replace piston feature, allows you to re-snap a piston simply by selecting one of its parts, like the cylinder, requires constrained anchors, initiates snap modal upon execution. Don’t forget to hit the (C)onstrain key again!

  • Added: Copy booleans feature, copy booleans and respective cutters from one object to another. A thorough explanation can be found in the docs! or a video

About the piston rod material:

It only works properly if the cylinder is in a certain orientation(aligned along Y axis), it is also tuned/set for cycles and will need hdri/lots of light. You should only have to use the ‘invert’ and ‘oil offset’ value to change how oily a rod is(and which side of it is oily). Note that if the rod length changes, you’ll most likely want to change the oil offset as well. It is therefore best to configure it as late as possible. You can find it in the piston pusher k-pack in its etc. category. It’s also used on this piston:

Uploaded a timelapse of a hydro electric piston with tie rods!


Pistonpusher 3.3.0 is available:

  • Changed: Track to and apply can now inherit rotations on a per axis basis. This simply means that rotations before the operator was called can be added back, preventing users from having to use the numerical snap tool! Its name has also been changed as it technically doesn’t ‘apply’ anymore.

  • Fixed: Snap modal bug, adjusting scale after a piston was rotated would reset rotation. Switching direction still resets rotation and that will probably stay.

  • Added: hydro-electric piston with tie rods(latest yt video) with cleaned up geometry/bevels.

1 Like

Pistonpusher 3.4.0 is out!

Fixed: Copy booleans skip feature throwing errors with incorrect input. It now just ignores what it can’t/shouldn’t process.

Added: Pistonpusher will now notify users when a new update is available. If a newer version is available for download, buttons with links to Blender Market orders or Gumroad library will appear in the pop up menu. This check is only performed once at start up and only when the system has internet ofcourse.

An extended introduction video was also made:

Pistonpusher 3.4.1 is available:

  • Changed: online update checking has been disabled for now.

  • Fixed: Warnings/center plane(armature solver overlay) and double ctrl Z issue.

  • Fixed: Custom mode add armature error related to warnings turn off call.

  • Fixed: modal info drawing system memory leak.

  • Added: Snap modal shows on screen hot keys(like the set bone as parent tool)

  • Added: template mode can also show warnings now(rmb menu).

A video about the custom mode has been uploaded!

1 Like

Hi Alexander,

I posted this question also at BM:
clearly I haven’t yet worked with rigs and constraints, which may or may not be a problem.
My main question is this: how to scale the whole piston to fit a model? I use the premade pistons and then apply scale and rotation, but then scaling it to fit the size of a model becomes a mess.
Doesnt make a difference if I include or exclude the empty’s.

Can you indicate how to do this?
If it is actually in one of your vids, can you say which and where?


1 Like

Responded on blendermarket.


in short:

  1. don’t apply scale and rotation on pistons. That does not work like one would expect.
  2. Pistons are manipulated through their armature, once a piston is placed and constrained this becomes harder and you’ll be better off using the re-place tool to scale with the snap modal.

Pistonpusher 3.4.2 is available:

  • Fixed: Snap modal now restores a piston armature completely before snapping it. In older versions it would only restore the state of the anchors. From now on, transforms are cleared and the length anchor is unlocked.

  • Changed: Creation mode warnings changes. It will warn for unprepared pistons and remind users to check scale and rotations. Template mode mount warnings have also been changed to be more accurate, it now just tells users to add a mount.

  • Added: 2 mounts

  • Added: 1 piston

  • Added: New example file, you’ll find a new directory with two blend files in the examples zip. One file has pistons included, one hasn’t.

There is a new YouTube video about how to use pistonpusher on animated models. This video also provides a really condensed, quick walk through of the different stages the model went through. Very briefly it also discusses the itasc IK solver and an issue you may run in to using the itasc solver.