Automate contouring with chains

A recent post on the 12d Model forum ), asked if there was a way to automate contouring of tins and standardise the naming and values of the Tin Contour, Smooth and Label panel:

What I want it to do: when i type a name in the function name box and hit enter, i want it to add that name to the Contours tab “Model contours” box with a suffix of min, same with the “Major contours” and “labels” tab.

It is indeed possible through the use of chains and parameters.  I’ve previously written a basic introduction to chains, but this is the first step-by-step example.

Creating and Running the Chain

In this video, we show the steps to creating and running a chain that prompts the user to select a tin (i.e. surface) and then automatically creates a function to contour, smooth and label the surface.  The name of the function, output models, colours and increments are all specified as parameters, allowing for standardised naming conventions and greatly reducing the amount of information the user needs to fill out.

Taking it to the next level

The great thing with using chains and parameters is that they can be easily modified and re-used.  The same process can be automated with one chain and then various different parameter value files (PVFs) can be passed to it.  For example, you could have a PVF with 1 m/5 m red and green contouring settings and another with 100 mm/500 mm purple and pink contouring settings.  Rather than have 2 chains with these settings hard-coded, you can have 1 chain for the process and 2 PVFs for the values.  If you need to change the process, you only have to update the one chain file.  You can also run chains from within other chains, from macros or from toolbars and menus.


If you have any questions about chains or parameters or would like to request more info on automating a process, please leave a comment below or come and see me at the 12d International Conference coming up this weekend!

3 thoughts on “Automate contouring with chains

  1. Great Example Matt!

    I am trying to something similar, by extracting the String’s Name.

    When using a String Selection Parameter and then trying to reuse the Source String Name (i.e. [Source_String.String_Name] or [Source_String].String_Name) It does not work….

    Any ideas?


Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.