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.

It's Beta Season

In the Autodesk world, November/December/January/February is "beta-time", where the Autodesk products that will be released in the spring start enjoying their "first-looks" by outsiders (at least the first large-scale looks).

It's an exciting time - what's new? what's been fixed? what's been upgraded? what new things are possible? This is the part of the year where I get the most excited- but to some degree a little frustrated. All Autodesk betas are covered by strict Non-Disclosure Agreements, so I can't write about them until each individual product's "embargo" is lifted.

I do most of my writing in this blog in the spring when the embargo comes out - but now is the season where I start to get inspired about what to write about.

In any case, I'll probably be relatively silent for a couple months - but look forward to some good columns come late winter/early spring, when the NDA "thaws".