Friday, October 19, 2007

Autodesk Intent: Bringing Rule-Based Inventor Automation to a Wider Audience

I've been aware of Engineering Intent for a decade or more... I even competed against it a little in the 90's. But I've been watching with keen interest what would happen to it once it was acquired by Autodesk in late 2005 - in particular because it covers a space that we (Avatech Software Development) work in quite a bit - CAD Automation.

I've known that the team at Autodesk has been working hard for a year or more on changing the product to fit in closer with Autodesk Inventor (the early integration was a little ugly).

I finally saw a demo of the upcoming version at the Manufacturing DevCamp in Portland a couple weeks ago - and I was very impressed with what they've done.

For manufacturers that are trying to automate the design of their products (because they are in a "Configure to Order" or "Engineer to Order" business), Intent will be a big help.

What is Intent?
Intent is a Framework - an environment nicely built into Inventor which is specially designed to solve these kinds of specific problems - building and customizing Inventor parts, assemblies and drawings dynamically based on a set of inputs and a set of rules.

Intent provides both an easy way of dealing with the programming of Inventor, as well as organizing how a particular assembly BOM is put together, as well as organizing the rules and flow of information which drives the design.

The "rules" are written in a VB/VBA/VB.NET-like syntax, so anyone who is familiar with those languages will feel reasonably at home quickly.

The Intent Model
It's an interesting concept - that you build a "model" within Intent which defines the assembly, how different components are chosen or assembled, and how the input information flows through to the deliverables you need (drawing, quote document, etc).

Changing the inputs (or any values within the model) causes the entire assembly inside of Inventor to be re-computed based on any necessary changes. While I've been involved with a large number of Inventor automation projects, if you wanted to "change" the requirements that drove your design after it was done, in most of those projects that would require you to just "start over" - not in Intent, though.

A Simple GUI for You
When you're developing with VB or .NET, one of the things which can take some getting used to is the developing of interfaces inside of Inventor. It's better than it used to be, but it's hard to do well.

Intent makes this easy (during development) - by providing a generic GUI that can detect what the inputs are for each part or assembly, handling choices ("only A,B, or C") or constraints (<= 3").

The simple GUI can be replaced with a fancier, specific GUI using the Intent API as well - but depending on your audience this might not be necessary.

Easy Integration with Word, Excel, and Inventor Studio
Since many "Engineer-To-Order" applications wind up generating quotes and spreadsheets, it's nice that Intent offers easy mechanisms to autogenerate office documents (swapping in tags to build them from templates). And because nothing is nicer than a shiny rendered picture on the quote, it's pretty cool that they've done the Inventor Studio integration work and made that easy.

It's all about Rules
As cool as the Inventor integration features are (they've done a good job of making some things, particularly assembly building, FAR easier than it is with the Inventor SDK), I don't think that's what should be focused on.

Ultimately, what's important to developing a meaningful automation application isn't so much about automating Inventor as it is building your engineering and business rules into the system. Having the rules represented inside of an Intent model makes it easier to understand, maintain and extend the system over time - which represents a large amount of the total cost of developing and owning an automation system over time.

I'll be interested to see how Intent gets accepted by the community. Many in the Autodesk eco-system may not grasp the difference ("why should I use Intent - I can do all that stuff with VBA!" - which is technically true, although it's somewhat akin to saying "why do you need VBA - you can do it all in Assembly Language!"). If you're an engineer who dabbles with VB for Inventor automation - Intent may be just what the doctor ordered.


Walt said...

It is important to understand a few things regarding Intent before you begin to use it on a large-scale, mission-critical application. First of all, Intent is a proprietary language that may be C-like, but it is not C (or VB for that matter). You must learn this proprietary software development language in order to write applications. Further, although the development environment is nice and demos well, it is not useful beyond creating simple prototypes. Most all consultants that have ever done any serious work in Intent use an external editor such as emacs (yikes!). It is important to understand that in order to write an application with this technical solution, you will need to understand Inventor, the proprietary Intent language and Visual Basic. Further, when you distribute your application, the application source code is not compiled into an executable, leaving all of your work out in the open on every user's computer.

Understand that a "rule" is nothing more than computer code to calculate some expression within your application. Rules may consist of simple computations but generally will consist of complex nested loops, if-then-else statements, database queries and so on. A "rule" is just a marketing name for an equation. Rules are not managed in Intent any differently than they would be in any other system. Information related to the rule source, history, help to resolve the rule etc. (stuff that you might associate with an actual "rule") are not managed uniquely, they are just expressed as a line of proprietary code. It is left to the developer to provide comments with Intent to make it readable for others (not likely with most developers!)

For 99% of any Inventor-related applications that you would create, you can just use VB with Inventor, without having to learn a third system/language. Intent is good for quick & dirty personal applications, but has been proven to not be very effective in large-scale, deployable engineering applications -- begging the question: why would I even use it in the first place.

Scott said...

Thank you for your comments. I would like to clarify and update the status of Intent as you seem to have had a look at it awhile ago. I’ll address each of your points separately.

Yes, the rule syntax is proprietary. We have recently updated it to reflect a VB style and to make it more accessible. However, it should be noted that unlike C and VB, Intent is declarative and non-procedural. This simply means that the rule-creator makes declarations about the relationships between to attributes or objects and the underlying system uses the declarations to automatically determine program flow. In VB and C it is up to the user to determine program flow. In Intent, it is done for you. This is similar to the way that Excel enables non-programmers to create complex financial “programs” without “programming”.

The new release of Intent scheduled for this March has a completely new, from the ground up, development environment that is very tightly integrated with Inventor and provides a very clean, easy to use platform for creating and editing the rules. I think you’ll like it.

Yes, the new system is designed to be used together with Inventor, so Inventor knowledge is a plus. Learning the Intent rule system is a matter of taking a little time to attend the training course as you would with any other new system. I think you will find it familiar and accessible. Also with the new release, it is not necessary to know or use VB. In the past it was necessary to use VB to create any “runtime” user interface besides simply using the development environment. Now, a runtime UI is created for you automatically as you work and we provide hooks to customize it in many ways. Yes, if you need a highly customized very targeted UI for a specific audience with very limited skills, then you will probably still want to create a custom UI using VB. Hey, that is what VB is great at. But for many purposes, you will not need to go that route with this new release in March.

You said, "Further, when you distribute your application, the application source code is not compiled into an executable, leaving all of your work out in the open on every user's computer."

This is simply has not been true in the past and will not be true in the future. We provide several ways for you to protect the proprietary nature of your rules when you decide to distribute it to others.

You also said, "Understand that a "rule" is nothing more than computer code to calculate some expression within your application....A "rule" is just a marketing name for an equation."

All of this is true.

But then you said, "Rules are not managed in Intent any differently than they would be in any other system....."

This is not true. As I mentioned above, the Intent rule engine manages all of the rule dependencies for you. This is a little bit of help with a small project but is a big help as the project gets larger and more complex.

Also, since the rules are oriented around engineering objects and the they are declarative, they tend to be much easier to read than normal “programming” code. There are several tools that also help you to add and manage additional documentation, comments, etc.

Finally, you said, "For 99% of any Inventor-related applications that you would create, you can just use VB with Inventor, without having to learn a third system/language."

Mmm.... In theory maybe, but in practice, the limitations of the VB approach are many. There aren’t many VB applications out there that go beyond an automated assistant to do a single, relatively simple task. However, our customers have already implemented small, medium, and large scale applications with Intent including conveyor systems, curtain walls, elevators, heat exchangers, complex furniture systems, commercial playgrounds, and much more.

Please contact us and we would be glad to show you examples of successful, large scale applications.


Scott Heide
Product Line Director for Intent