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.

New in version 1.3

Thanks to the generous contribution of Andreas Block a new version is available bringing numerous enhancement and Python 3.0 compatibility


  • Py-Matrix Extrude Generator/Modifier
  • Py-Subdivide Generator/Modifier
  • Py-Optimize Generator/Modifier
  • Py-Slide Polys Generator/Modifier
  • Py-Slide Polys Tool
  • Buttons “Create Selection New Polys” and “Create Selection Add Polys” in Py-Extrude Modifier, Py-Matrix Extrude Modifier and Py-Inner Extrude Modifier

Py-Slide Polys

A simple tool to slide a polygon in the plane of the polygon.
It is not only available as parametric generator or modifier, but also a modeling tool.

This can for example be useful to offset the center polygon of a inner extrude operation.
There are three modes to set the offset: “Combined Edge Directions”, “Connected Edge Directions”, “Edge Centers”.
If the “Relative” option is set, the offsets are set in percent of the respective edge’s length.

Mode: Combined Edge Directions

The offsets are interpreted in the direction of the edges of a polygon.

See the following screenshot:

The entire polygon will be moved by the sum of all four offsets.
For example this may be useful, if one wants to slide a polygon in the direction of one specific edge.

Mode: Connected Edge Directions

This mode is similar to above described “Combined Edge Directions”. But instead of sliding the entire polygon by the sum of all four offsets, the points P1 to P4 are only influenced by the offsets belonging to the edges they are connected to.
For example the point P1 will be moved by the sum of the offsets X1 and Y2.
A possible use case could be a slight distortion of polygons.

Mode: Edge Centers (default)

The offsets correspond to the direction defined by the centers of the opposing edges of a polygon.
See the following screenshot:

Py-Extrude Modifier, Py-Matrix Extrude Modifier and Py-Inner Extrude Modifier

Buttons “Create Selection New Polys” and “Create Selection Add Polys”

These buttons create a polygon selection tag for use with consecutive Py-Parametric Modifiers.

Create Selection New Polys
The modifier will store either only the newly created polygons in the selection tag.
For example in case of the Py-Extrude Modifier these are the side polygons of the extrude operation.

Create Selection Add Polys
The modifier will will _add_ the newly created polygons to the selection currently in use by the modifier.
For example in case of the Py-Extrude Modifier these are all extruded polygons (sides and cap).


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 parametric 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.



Unzip the downloaded archive to Cinema 4D’s default plugin folder.


Provide your bug reports, test scenes or ideas by writing an email to labs-at-maxon-dot-net

Please rate this


  1. Amazing tools in pair with volumes can do beutiful hardsurface/ the only thing maybe i miss – its not working for all child objects under null like standart generators/ but i can avoid this

  2. Using a few of these heavily in my workflow, it’s the only thing keeping me from switching to R24.. will they be updated to work with 24? They don’t show up for me unfortunately after adding them, thanks!

    • Actually they already got fixed for S24. And also slightly extended.
      But I think, Maxon is transitioning Maxon Labs to Cineversity and thus the update got kind of stuck in the process.

    • Hi Viktoria, what doesn’t work with R23? I can see them flawlessly loaded in R23 SP1 and without further details I can’t follow up.

  3. Hi ! Great plugin !
    Is it too much to ask an iterative procedure to be added ?
    Like Py-Matrix Extrude Generator is iteratively extruding, could you make an Iteration Generator where any number of Extrude, Extrude Inner and Matrix Extrude can be children of it and it would manipulate each new generated polygons with the next child. Then repeats the hole hierarchy steps as many times is defined in the Iteration parameter. Looks like scene nodes are up to this but they also look difficult to handle ….

    • Well, the first part should already be possible by use of the generated selections.
      The latter probably not. Py-ParametricTools doesn’t really provide any new functionality (well leaving Py-Slide Polys aside). It’s only another approach to use tools already existing.
      But if you are really interested, you can find me on CGTalk or C4D Café. PM me there and we can discuss, if something like this is possible.

  4. Could the “add polys” and “new polys” selections be used for materials? I tried to put them in the selection field of materials but they don’t work.
    Basically I’m interested in having an extrude generator where I can apply different materials to the 2 “caps” like how you can with the extrude generator for curves, but for polygons instead.

    • The created selections are just standard polygon selections. I see no reason, why the shouldn’t work with materials.

  5. I was looking for a parametric shell modifier and the Py-Extrude Modifier does exactly that! Great work, super super useful! (working in C4D R21)

  6. Hi, Can this PY-PARAMETRICTOOLS work for R21 on Mac? I tried it by putting the whole Py-ParametricTools folder in the folder: Applications/ Maxon Cinema 4D/ resource/ modules/ python/ libs/ python27/ c4d, but it doesn’t seem to work. Is that the wrong folder to put it in?

    • Unarchive the zip file in any convenient folder on your drive and either add in the config.txt the g_additionalmodulepath= or start Cinema from the terminal specifying the g_additionalmodulepath=

      It works flawlessly on R21 SP1

  7. I was wondering if it’s possible to set Normal rotation deformer to rotate in another other than normal axis?

    • Hi,
      I’m sorry you are having issues with Py-ParametricTools. I tested here with multiple R20 versions and I do not see any issues. For me Py-ParametricTools is simply working (and it should, as R20 brought no changes in Python in this regard).
      Can you please provide me with a more detailed description of your problem?
      Are there any error messages in the Console (Menu Script->Console…, then Python on the left)?
      What operating system are you using?

  8. I used cinema r17. I am very satisfied.
    but r20 does not work. I would appreciate it if the update is done

    • It should actually work without issues. Can you provide me with more information (see also my latest post here)?

  9. It’s not working in R19 Studio. But why? The palette is empty. And the plugin is not listed if I restart C4D.

    • I’m sorry you are having issues getting it to run. I can not reproduce any issues here, Py-ParametricTools work just fine in R19, all generators and deformers show up in the Plugins menu and work as expected.
      Maybe it’s a conflict with another plugin? Maybe another plugin did not use a unique Plugin ID? I’d suggest to remove them one by one temporarily.
      Is it on Windows or Mac you are having issues?

  10. Love these tools! Question though: I’ve stacked inner and smooth shift extrudes on a ball to create multiple levels of stepped extrusions. How can I add textures to each layer individually? Since the object is parametric it’s like that geo doesn’t exist to C4D. I’ve tried creating selections with the Correction deformer but to not avail. Any ideas?

  11. 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.

  12. 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.

  13. 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

  14. 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.

  15. 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

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

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

  18. 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.

  19. 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 to nuno Cancel reply

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