
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
Workflow
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
Added
- 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).
Tip
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.
Installation
Simply unzip the downloaded archive into the plugins folder. There’s a palette file included, which can be simply dragged onto Cinema 4D.
Requirements
Cinema 4D R16 and higher. May even work with lower versions, but was never tested.
Download
Terms of Use
Acceptance of Terms of Use of this site (“Site”) constitutes a legal agreement between you and MAXON Computer GmbH. By accessing, browsing and/or using this Site you acknowledge that you have read, understood, and agree to be bound by its Terms of Use. Please review the Terms of Use. If you do not agree to these terms, do not use this Site and the materials provided on this Site.
Copyright Information
The copyright on all material provided on this Site is held by MAXON Computer GmbH and its subsidiaries (MAXON Computer Inc. and MAXON Computer Ltd.) or by the original creator of the material. Except as stated herein, none of the material may be copied, reproduced, distributed, republished, downloaded, displayed, posted or transmitted in any form or by any means, including, but not limited to, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of MAXON Computer or the copyright owner. Permission is granted to display, copy, distribute and download the materials on this Site for personal, non-commercial use only provided you do not modify the materials and that you retain all copyright and other proprietary notices contained in the materials. You also may not, without MAXON Computer’s permission, use the materials for the development, production or marketing of other materials, works or media of any kind and/or “mirror” any material contained on this Site on any other server. This permission terminates automatically if you breach any of these terms. Upon termination, you will immediately destroy any downloaded and printed materials. Any unauthorized use of any material contained on this Site may violate copyright laws, trademark laws, the laws of privacy and publicity, and communications regulations and statutes.
Privacy Policy
The protection of personal information submitted to us is very important. We strictly adhere to prevailing German Data Protection Act (BDSG), the German Telemedia Act (TMG) and other privacy protection provisions of the Federal Republic of Germany. For privacy protection issues outside of Germany we will, of course, adhere to respective privacy protection provisions.
Your personal information is transmitted via SSL (a network protocol for the secure transmission of data) in encrypted form. The Site is protected against damage, destruction or unauthorized access.
Object of Privacy Policy
Object of the Privacy Policy are details regarding personal information or personal or factual circumstances about a specific determinable person according to § 3 Abs. 1. BDSG. Included is information such as name, postal address, e-mail address or telephone number.
Scope of Data Gathering, Storage and Use
We gather and store your personal information for the purposes of rendering services or as necessary for contractual fulfillment. Your information is used by MAXON to make using the Site and the materials as pleasant and comfortable as possible.
Your personal information will not be given to third parties without your expressed consent unless it is required for providing services or contractual fulfillment. It may, however, be necessary to supply your personal information to certified MAXON partner companies that MAXON implements to provide certain services. We will require that the recipient of the personal information agrees to process such information in compliance with our Privacy Policy and applicable data protection laws.
Transmission of personal information to authorized government institutions or authorities will only be done according to the statutory obligation to provide such information or if obliged to do so in accordance with a court order.
Acceptance
By accessing, browsing and/or using this Site, you agree to comply with all applicable laws and regulations, including the export and re-export control laws and regulations of Germany, the United States of America and the United Kingdom. This Site is controlled and operated by MAXON Computer from its offices and servers within Germany, the United States, and the United Kingdom. MAXON Computer makes no representation that materials on the Site are appropriate or available for use in other locations. Access to the materials on this Site from territories where their contents are illegal is prohibited. Those who choose to access this Site from other locations do so on their own initiative and are responsible for compliance with applicable local laws.
Trademarks
The trademarks, service marks and logos (the “Trademarks”) used and displayed on this Site are registered and unregistered trademarks of MAXON Computer and others. Nothing on this Site should be construed as granting, by implication, estoppel, or otherwise, any license or right to use any Trademark displayed on the Site without the written permission of the Trademark owner. MAXON Computer aggressively enforces its intellectual property rights to the fullest extent of the law. The name of MAXON Computer or the MAXON Computer logo may not be used in any form, including advertising or public display pertaining to distribution of materials on this Site without prior written permission. MAXON Computer prohibits use of the MAXON Computer logo as a “hot” link to any MAXON Computer site unless written approval to establish such a link is granted in advance by MAXON Computer. Any questions concerning the use of Trademarks owned by MAXON Computer should be referred to MAXON Computer Inc., 2640 Lavery court suite a, Newbury Park, CA 91320, USA, tel: 805-376-3333 or MAXON Computer GmbH, Max-Planck-str. 20, D-61381 Friedrichsdorf, Germany, or MAXON Computer Ltd., The old school Greenfield, Bedford, MK45 5DE, England.
Disclaimer of Warranty
This Site and the materials on this Site are provided “as is” without warranties of any kind either express or implied. The Site and the materials may be incorrect, incomplete and may have defects that could cause program malfunctions, program crashes, system failures and loss of data. The Site and the materials may not be merchantable, fit for a particular purpose, or non-infringing. MAXON Computer does not warrant or make any representations regarding the use, validity, accuracy, or reliability of, or the results of the use of the Site and the materials on this Site or any sites linked to this Site. MAXON Computer is under no obligation to provide technical maintenance and support, to rectify defects and to restore failed systems and lost data.
Limitation of Liability
MAXON Computer shall be liable without limitations (1) in case of intent and gross negligence; (2) in case of injuries to life, body or health; (3) pursuant to the terms of the German Product Liability Act; and (4) under a guarantee granted by MAXON Computer. MAXON Computer’s liability for slightly negligent breaches of cardinal duties shall be limited to such damage which was foreseeable and typical for the intended use of the Site and the materials. Cardinal duties are duties of MAXON Computer which enable the use of the Site and the materials and which you may therefore rely on. Any other liability of MAXON Computer is excluded. If your use of materials from this Site results in the need for servicing, repair or correction of equipment or data, you assume any costs thereof.
Transmissions
Any material, information or idea you transmit to or post on this Site by any means will be treated as non-confidential and may be used by MAXON Computer or its affiliates to operate the Site and to provide the materials. You are prohibited from posting or transmitting to or from this Site any unlawful, threatening, libelous, defamatory, obscene, inflammatory, pornographic, profane or any other material that could give rise to any civil or criminal liability under the law.
Term of Use Revisions
MAXON Computer may at any time revise these Terms of Use. You may access and review the revised terms on this Site, and your continued use of this Site means that you accept those revised terms.
Liability notice
Despite thorough examination of contents, MAXON Computer assumes no liability for the content of external links. The operators of the linked sites are exclusively responsible for their content.
Applicable Law and Jurisdiction
The Terms of Use are governed by the laws of Germany, but excluding the principles of conflict of laws and the United Nation Convention on the International Sale of Goods (CISG). You agree to the exclusive jurisdiction of the competent courts of Frankfurt am Main, Germany, in respect of any proceeding, suit or action arising out of or in connection with these Terms of Use, this Site and/or the materials.
Legal Notice
MAXON Computer GmbH
Max-Planck-Str. 20
61381 Friedrichsdorf
Germany
Phone: +49 (0) 6172 / 59 06 0
Fax: +49 (0) 6172 / 59 06 30
General information: info@maxon.de
Sales & Marketing: sales@maxon.de
Press: presse@maxon.de
Authorized company representatives
David McGavran
Court of registration: Amtsgericht Bad Homburg v. d. Höhe
Registration number: HRB 6049
VAT ID number according to § 27 a sales tax law: DE 113864088
Installation
Unzip the downloaded archive to Cinema 4D’s default plugin folder.
Support
Provide your bug reports, test scenes or ideas by writing an email to labs-at-maxon-dot-net
Hi, this doesent work with Cinema R23. Please give me some feetback
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.
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.
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.
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)
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
thanks for the tip!
No update… no reply….!
missed, ignored or not necessary to replies….?
…
It works in R21.
Does it works in R21…? Thanks.
I was wondering if it’s possible to set Normal rotation deformer to rotate in another other than normal axis?
Is it possible to add something similar for the Edge Cut tool?
Thanks.
Hi 😉 Dont work in C4D R20 🙁
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?
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)?
CINEMA R20 DOES NOT WORK
update what to do
have a nice day
Thank you Maxon for this awesome script. Keep going.
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?
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?
Very useful, thank you !
Adding to RICH NOSWORTHY : fall off would be even more nice.
does it work with C4D Lite ?
No, sorry. C4D Lite does not support plugins.
Killer! you saved my ass! works so great.
Hello
Great work
How do I translate the Py-ParametricTools user interface language into Chinese?
Grateful
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.
哥们你要到汉化的了么 他说啥我没看懂
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!
Michele
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.
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?
yes, but it goes always to 4 sides (+Z, -Z, +X, -X). Try a shape like a “D”. Therefore an Bulge which one goes only +Z.
https://www.dropbox.com/s/1c88vnltkpuce97/Bulge-better.JPG?dl=0
Not the best place to get into discussions here…
Anyway to achieve what you are looking for, the FFD deformer works quite nicely.
Here’s a scene and a screenshot:
https://www.dropbox.com/sh/8h728fofl90y7ar/AADza-H-Iuh8lIewPaPzqEzPa?dl=0
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
No worries, no need to feel sorry.
Py_Parametric Tools interfere with NitroFit plugin (https://nitro4d.com/product/nitrofalloff/) 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.
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
I was a 3Ds Max user, I always seeking for some modifier like shell modifier in C4D, and this is more than my expectation.
Excellent tools. Thanks a lot!
c’est super!
Guys, if you could add a falloff, that would make those tools so great!
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.
Thanks for the tool! Somehow, the “sides” selection doesn’t seem to work on the Extrude Generator when “create caps” is enabled?
Yep, as above documentation says. 😉
I’m sorry I’ve overlooked this. Thanks for sharing, it will certainly come in handy at some point!
Great job, thank you
Awesome – Thanks!
one word…. FANTASTIC !!!
Been wanting an extrusion deformer forever!!! Thanks so much!!! These are fantastic!!!
Great work! And big +1 on the spline tools! 🙂
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.
This actually works if you first do an inner extrude only, make a current state, select all the polys you want extruded, make a selection, copy tag to original object and use that selection for extrude modifier.
https://www.dropbox.com/s/9se5h4do8wkifd5/Procedural_InnerExtrude_01.JPG?dl=0
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
Hey, these are awesome!
Would kill for procedural chamfer with splines 🙂
Thanks!
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.
CV-Splines 2.0 has this ability: splines_to_objects_interactively_offset_and_chamfer_objects
But no option to restrict it to certain points only, or am I missing something?
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!