I came across this cool piece of code that draws a bounding box around any part in any orientation. I did improve it a bit but credits should go to the topic starter of this post "a dynamic box?".

Writing code means a lot of trial and error. Debugging involves figuring out what is happening (often that is not the same as what you think that is happening). The way to figure that out is by stopping the code at the point that everything fails and checking what your computer has in memory. When I started writing iLogic rules the only way I knew for debugging was to stop the code with a messagebox and display the content of a variable.

For a computer, a number is just that. Therefore we assign units to a parameter. But most Inventor API functions return values in internal database units. This can be confusing if you expect that all values are in the units of your document. It gets even more confusing when you have a parameter in another unit type... Let's have a look at those unit types and how to convert them to the units you need.

On the "Inventor iLogic, API & VBA Forum" forum, I see often people that use or even start learning VBA. In this post, I will try to explain why I think that is not a good idea. On the Microsoft site, you can read: “Visual Studio 2010 (VC++ 10.0) Service Pack 1 reached the end of extended support on July 14, 2020”. This is important because “Visual Basic for Applications” (VBA) depends on these Microsoft Visual C++ Redistributable.

Early 2020 someone started this topic "Set different colours for each component of Assembly based on the part number". In that post, an article by Clint Brown was referenced. In that article, Clint proposed an iLogic rule for colouring each part. I updated Clint's code so it would not colour all parts with a random colour, but to give each part with the same part number the same colour.

On the "Inventor iLogic, API & VBA Forum" someone started the topic "Bug report when setting Face Name". I could reproduce a problem and I got a nice exception "The method or operation is not implemented". I expected that implementing the function "SetName" myself would not be that complicated.

In my last blog post, I proposed an iLogic rule that generated the overall dimensions. After that, I was contacted by someone on the "Inventor iLogic, API & VBA Forum" about that post. He asked for some modifications. Someone else also joined in and after some drinks, I got challenged to write a new rule that could "mark the dimensions of the holes (in a drawing)".

The company I work for has the policy that each drawing needs the overall dimensions of the part/assembly on the sheet. Years ago I created a tool that would generate the outer dimensions in a drawing view. It works okay, but I was not satisfied with the result. It is slow and there are edge cases in which you will get unexpected results. Last week I did have a new idea and wrote a new function. This new function works better!

In January (2021) I started reading about the Inventor update 2022. On the "Autodesk Inventor Customization forum" there was a topic by Adam Nagy warning us. The new feature "Modelstate" could affect some of the "Level Of Details" related functions. Till now I did not give it much thought. Probably I will not update for some years so I did not have to look at it.

Last week some one on the “Autodesk Inventor customization” forum asked the following:

“I have this code.  It tends to work ok but I'm looking to improve the efficiency of the coding for future endeavours.  I'm want to make a method for traversing the assembly and sub's so that it can be used over and over for all various traversing code I need to write.”

While writing iLogic rules I find my self often in the situation that I need to find a object in a list. Often I can use a standard Inventor api functions. But in some cases they do not work or the function just does not exists. For example I have the following situation. While generating drawings with our product configurator. An iLogic rule adds dimensions to an idw with many sheets. Ofcourse in that ILogic rule I need to select the correct sheet (in a list of sheets).

This is the last post in a sequence. In the first post of the sequence I discovered that it isn’t possible to assign names to faces in an assembly. I wanted that function therefore I decided to improve Logic. In this last post I will put it all together. And make it possible to create, view and use named faces of assemblies in a drawing. 

Last week I created a class that will let you add labels to models. This week I created a rule to show/hide labels from named faces. To make this work we need to know which attributes are used for named faces.

In my previous post I showed how to create your own iLogic function “GetProxyIntent()”. With that function it’s possible to get curves from geometry in an assembly and create an intent for it. But as I mentioned to have a good workflow, we are still missing some tools.

In my previous post I discovered that it’s impossible to name geometry in an assembly. That also means that I can’t create dimensions from geometry in a assembly. There for I need a function that gets curves from geometry in a assembly and create an intent for it. With that i can create dimensions on an assembly drawing

At my job dimensions, on drawings, often get detached after and update by our configurator. One of the solutions would be creating the dimensions after the configurator finished. But creating dimensions with the Inventor API is difficult. Last November we upgraded to Inventor 2021 and I did read about the new iLogic functions. Last week I did have time to dive deeper in those new iLogic functions. This blog is about what I found.

I wish you all the best for 2021. I hope that we can go back to normal life this year. Today I have a iLogic rule for you that creates an “I” similar to the Inventor logo. 

I’ve recently seen several questions from people looking to save or export files automatically.  Questions like “How to perform ‘save a copy as’ PDF for a list of Inventor drawings from an excel?” and “Automate iPart flat pattern export to DXF”. That is why I wrote this post, explaining how you can write your own iLogic export rules.

I created an addon that will let you create buttons for external iLogic rules without writing any code.

In some cases, you want to have a rule that is triggered by the “Before Save” event trigger. For example, to check if the iProperty “Part number” was set. You may get unexpected or unwanted results when you save an assembly with lots of parts that are changed. You could end up with many message boxes. One for each part that gets saved in the assembly. 

Have you ever wanted assign specific profiles in your flat pattern to a custom layer before exporting them to DXF? I have been working on updating an Inventor add-on which we use at work. The tool exports sheet metal flat patterns to our CAM software.

If you have read any of my blogs post before, you’ll know that I like to challenge myself to solve other Inventor user’s problems. I usually find these problems on the Inventor Customization Forum. A while back, I came across an interesting problem. This user wanted to change the iProperties of a part, based on it’s thickness and material.

The other day I had a look at the “Inventor Ideas” forum.  I came a cross the following topic “Show Changed Dimensions when Opening Drawings”. (link) Last week someone requested this function in inventor but as it turns out that exactly the same function was also requested in 2017. (link) But it is still “Gathering Support”. Personally I never needed this but I can see that it could be useful in some situations.

At the company that I work for, we make products that are almost entirely composed of sheet metal parts. We cut and bend our products ourselves, we export our flat patterns out, to be used in our CAM software. When preparing flat patterns for export, I sometimes get confused, as it can be difficult to see which faces is the top side is of a sheet, or which bends are up or down.

Maybe you know the situation, you have 2 versions of a part. You changed something but can’t find what it was.  In those situations I spend a lot of time looking for the difference. Just to find the hole that was moved 1mm. Should I have this problem more often, then maybe my boss would let me spend time on creating a tool to help me. But I don’t have this problem often.

Over the years, I have created several assemblies containing many parts with various iLogic rules, generally they work perfectly. But sometimes for seemingly no reason, an edge case will not work as expected, and is usually discovered by a colleague. The challenge is that I then need to find the rule that is responsible for the problem. Often I know more or less what to look for, but out of the box, there is no iLogic search command that will look through all of the parts and all of the rules in an assembly.


Autodesk Inventor, Vault, Git, C#, vb, .net, php HTML, css, js


University computer science.
HBO Mechanical engineer.
MBO Fine mechanics.


Programmer and Mechanical engineer at Kelvion
(2016 - 20..)

Mechanical engineer at Strukton
(2009 - 2016)

Mechanical engineer at RDG-engineering
(2007 - 2009)

CNC Programmer at VMC
(2005 - 2007)

volunteer at Taizé


Objectgeoriënteerd analyseren en ontwerpen, Objectgeoriënteerd programmeren in Java, Webapplicaties: de clientkant, Databases, Security Aware Programmer, Web Security Specialist