Using XML to Drive iLogic Configurations

@ClintBrown3D Autodesk Inventor 09

This blog post is something that I have been wanting to share for some time, it is definitely a topic that should be given some serious consideration when creating iLogic configurations.

What exactly am I on about? When creating Assembly and Drawing files in Inventor, there is the potential to create several thousand files every time a variation of a configured product is made. But generally the only output that needs to be saved, is a 2D drawing (often a PDF will suffice), as long as we can record the recipe for creating that specific configuration (in case we need to go back to it).

XML to the rescue:

As an example, Inventor’s BoM interface has long been able to manually import and export XML configurations of the BoM Columns (or setup). But in this example, we are going to import and export the model parameters using XML’s via iLogic.

@ClintBrown3D Autodesk Inventor 01

As XML files are text based, they are tiny in size, taking up very little disc space (see image below). These tiny files contain all of the information necessary to build a complex configuration of an assembly.

@ClintBrown3D Autodesk Inventor 03

The good news is that we can automate the export of XML files with iLogic, giving the file a suitable name, saving it in a specific location, meaning that we can easily refer back to it later. Similarly, we can automate the XML import process using iLogic.

XML Export – Import in Action:

In the Animated GIF below, you can see that 2 complex configurations (one Red and one Blue) are exported out to XML, they are then re-imported and the model updates. No additional Inventor files are created the only files used are the master assembly.

iLogc XML
Click me for higher res version

Here is the iLogic code, there are 2 Rules, and XML export, and an XML import

XML EXPORT Rule:

'XML EXPORT rule
'iLogic code by @ClintBrown3D
'originally posted at https://clintbrown.co.uk/using-xml-to-drive-ilogic-configurations

oDirectory = "C:\TEMP\XML\"
oName = ThisDoc.FileName(False) 'without extension
oHour = Now.Hour : oMin = Now.Minute: oSec = Now.Second
oTime = oHour & "-" & oMin & "-" & oSec
oDay = Now.Day: oMonth = Now.Month: oYear = Now.Year
oDate = oDay & "-" & oMonth & "-" & oYear

oSaver = oDirectory & oName
oXMLname =  oTime & " (" & oDate & ").xml"
oSaverXML = oDirectory & oName & "\" & oXMLname

'Create Directory
Try: MkDir(oSaver): Catch: End Try

iLogicVb.Automation.ParametersXmlSave(ThisDoc.Document, oSaverXML)

XML IMPORT Rule:

'XML IMPORT rule
'Code by @ClintBrown3d originally posted at https://clintbrown.co.uk/using-xml-to-drive-ilogic-configurations
'Special thanks to Curtis for sharing his File save code, which I have adapted for opeing XML's
'https://inventortrenches.blogspot.com/2012/10/ilogic-adding-save-as-dialog-box.html
oDoc = ThisDoc.Document
Dim oFileDlg As Inventor.FileDialog = Nothing
InventorVb.Application.CreateFileDialog(oFileDlg)

oFileDlg.Filter = "XML Files (*.xml)|*.xml"
oFileDlg.DialogTitle = "Unofficial Inventor - XML input dialogue"
'set the directory to open the dialog at
oFileDlg.InitialDirectory = "C:\TEMP\XML\" & ThisDoc.FileName(False) 'without extension
oFileDlg.ShowOpen()'Show File Open Dialogue
ClintBrown3D = oFileDlg.FileName
If ClintBrown3D = "" Then: Return: End If

'Open the selected file
On Error GoTo ClintsErrorTrapper 'to handle an exit without selecting a file
'	ThisDoc.Launch(ClintBrown3D)
	iLogicVb.Automation.ParametersXmlLoad(ThisDoc.Document, ClintBrown3D)

'Update the file
iLogicVb.UpdateWhenDone = True

Return

ClintsErrorTrapper:

These versions of the code (both utilities) were briefly tested with Inventor 2020.2.

Please note that I cannot offer any additional support, this blog post is offered as-is, and is aimed at the more advanced user.

As always, please test all iLogic code extensively on non-production files. Do not use any code in a production environment until YOU have thoroughly tested it and have verified that it works as expected. Always back up any data before running any experimental code. You are ultimately responsible for any iLogic code that you run, so make sure you test it thoroughly!

This site takes absolutely no responsibility for how you use this code in production (see disclaimer).