Py-ParametricTools is a very simple approach to parametric modeling. Based on an idea of my friend Noseman, Py-ParametricTools basically consist of a bunch of generator and modifier objects for a number of commonly used modeling tools. Nothing fancy and easily done in Python, we thought this could still be helpful for some users out there.

There are generators and modifiers for the following modeling tools:

  • Extrude
  • Extrude Inner
  • Normal Move
  • Normal Scale
  • Normal Rotate
  • Reverse Normals
  • Smooth Shift


The generators and modifiers are used like all the others in Cinema 4D. Generators get parented to objects and modifiers are used as children. The parameters are mainly the same as in the respective modeling tools.
For details see our online help here: Extrude, Extrude Inner, Normal Move, Normal Scale, Normal Rotate, Reverse Normals, Smooth Shift.

Of course generators can be stacked.

All modifiers support selections to restrict them to certain polygons, simply drag the selection tags onto the respective field inside a modifier’s parameters.

The Extrude generator (and only the Extrude generator) also supports two “implicit” selections: front and sides, the later only being available if “Create Caps” is not activated. In order to use these simply drag a material onto the Extrude generator and type either name into the Selection parameter of the Texture tag.


Look at the image “Modifiers restricted to selections” above, where a polygon cube gets deformed by three parametric modifiers, each restricted to a different selection. As long as they have the same polygon count, you could create the polygon selections on a polygonal cube and afterwards drag them to a parametric cube. In this way you have parametric polygon tools deforming only selected polygons of a parameteric cube.

One More Note

As said before, this project really is nothing fancy. But for some it may serve as an example, how easily Python can be used to create a parametric workflow for existing tools. It’s also demonstrating how to re-use existing description resources.


Simply unzip the downloaded archive into the plugins folder. There’s a palette file included, which can be simply dragged onto Cinema 4D.


Cinema 4D R16 and higher. May even work with lower versions, but was never tested.

Download (67.0 KiB)

Share this project

Please rate this


  1. Hello
    Great work
    How do I translate the Py-ParametricTools user interface language into Chinese?
    sincere regards

    • Thanks, I’m glad you like it.
      For the most part the Py-ParametricTools should actually use the translations of the tools. For the few other strings, take a look into the Py-ParametricTools directory. There’s a strings_us folder. Make a copy of it and rename it to strings_cn. Enter that folder and the description subfolder. There you will see a bunch of .str files. Open these files in a text editor (not word processor!) and replace the English text between “”. The problem you will be facing is that you will need to enter Chinese character-wise as UTF-16 codes (so something like “\u89D2”). Unfortunately this is something I can not be of any help with, knowing no Chinese at all… to get an idea, maybe take a look at Cinema 4D’s installation folder. There go to resource/modules/. Any module will do and take a look at the files in the strings_cn subfolders there.

  2. Thanks a lot for this! Is it possible to have the deformers and generators as separate parts of the plugin as I have lots of Python Generators and Cinema R19 only supports 50 while it hasn’t limits on the number of Python deformers. Thanks again for this great plugin!

    • Hi Michele,

      thanks for your feedback. You can change this easily on your own, as Py-ParametricTools comes as source code. No worries, this can be done also be non-developers.
      Just take a look into the directory, there’s a file Py-ParametricTools.pyp. Open it in your favorite text editor (not word processor!). In the very end you find a bunch of lines starting with RegisterObjectData… each of these lines registers one generator or deformer. Just add a hashtag (#) at the beginning (right before the R) of each line you don’t want. Save the file and restart Cinema. That should do the trick.

      • Thanks a lot, Andreas, I have applied your suggestion but it looks like deformers are treated like generators and are counted in the 50 objects limit… Thanks for your time and for this great plugin!

      • This limit is the reason why some plugins don’t function when Py-ParametricTools are installed. I run on the similar problem, as mentioned earlier by Simone Arota – After I install Py-ParametricTools, several plugin generators don’t show up in C4D – in my case those are : Proc3Durale and Dual Graph.
        Can you ask Maxon to increase the limit for generators ?

      • This is not a limit introduced by MAXON. It’s rather a technical limitation per operating system (related to loading plugins (DLLs in Win)) and the available amount of entries for Thread Local Storage (TLS). MAXON already tries to use these as sparingly as possible.
        So unfortunately all you can do is try to comment registration of some of the Py-ParametricTools modifiers or generators (see above) in order to reduce the overall number of plugins.

  3. So great, this lab! Looking forward for more tools! Maybe a Bulge-deformer for D-shape or Omega-shapes?

    • Thanks, Simon. Much appreciated.
      Maybe I misunderstood you, but we do have a Bulge deformer, don’t we?

      • Hi Andreas Thanks for the late surprise answer 🙂
        Where is the better place for discussion? You don’t have contact information and there is no officiel MAXON Forum?
        Yes, it works with the FFD. As long we don’t have “Bulge_2”

      • Well, I don’t really have a better place… but here it’s a bit off topic. It is certainly out of scope for the Py-ParametricTools. These do not implement any new functionality, but just use existing tools in a certain way to provide a different workflow.
        Is the mail address you used to comment here correct? Then I’d get back to you via mail.

      • the email is correct. And you can delete all my offtopic coments if you want. Sorry, but it was a good chance to talk to a developer

  4. Py_Parametric Tools interfere with NitroFit plugin ( by turning it off.
    When Py_Parametric Tools is installed in a folder before NitroFit plugin folder (eg. folder name A Py_Parametric Tools), then Py_Parametric Tool work OK, but NitroFit is missing, but when it is installed in a folder behind Nitrofit (eg. Z Py_Parametric Tools) then NitroFit works OK, but Py_Parametric Tools is missing.
    I have noticed such strange behaviour with numerous other plugins, after one is installed the other one become inactivated (invisible in C4D) Any Idea what cause such problem ?

    • I could imagine a plugin ID conflict. I can only speak for Py-ParametricTools and all IDs got correctly registered in Plugin Café. Also Py-ParametricTools are open source, so NitroMan should be able to look into it, investigating the conflict.

  5. Been using these for the last few months, so great. One thing which would make them even more amazing would be if they could somehow have a falloff tab. Animating this stuff on would be much fun. Am sure its not trivial but would be great to see in the final release. Nice work

  6. I was a 3Ds Max user, I always seeking for some modifier like shell modifier in C4D, and this is more than my expectation.

  7. Guys, if you could add a falloff, that would make those tools so great!

  8. Does this work with student versions? I get a unknown file format error when I drag it onto cinema 4d.

    • Which file are you dragging onto C4D? This is a plugin and the archive is supposed to unzipped inside of the plugins folder (see Installation instructions above). The only file inside the archive, that can be dragged to C4D is the layout file, providing you with a button palette, as shown in above screenshots on top of the Object Manager.

  9. These look very handy!

    small issue, how do i access implicit selection from the plugin objects? say i inner extrude all the faces with the deformer. and then i want to only extrude the new faces with the extrude deformer?

    • Unfortunately only the Extrude Generator supports implicit selections. Sorry, if I wasn’t clear about this and raised false expectations. This really is a very simplistic set of tools and for the Extrude Generator it was easy to add, for most others it’s unfortunately not.

    • Here’s the trick.
      Make a copy of your original object, and select all polygons. Make a selection tag from all the polys. Name it something like “Original Polys”. drag the selection on the Original object. Use that selection in the next deformer as it retains the original polys.
      There are some tricks you can do with the correction deformer as well, but I’m working on a tutorial for that.
      tell me if it works for you

    • Thanks, glad you like them.
      Actually I have Py-ParametricSplineTools as well, but these still suffer from some limitations. We’ll see if we can iron those out or if we are willing to also release a bit flawed projects.

      • Correct, no ability to restrict to specific points at this time – by default it affects all points with no tangents.

      • To be honest my spline tools have no restriction feature either… even worse, I didn’t even think of such an option.

      • Hehe, to go even further, making it automatic with angle control like bevel deformer would rock 🙂
        BTW Andreas, I just noticed you are posted this open source, this is beyond cool!

Leave a Reply

Your email address will not be published. Required fields are marked *