
Following on from my last blog post about progress bars, I thought it would be appropriate to create something that uses a progress bar.
This progress bar journey started when I first played with the Inventor API sample for exporting 3D PDF’s. When converted to iLogic, there is no progress bar, and because the 3D PDF export is rapped up in it’s own process, it is very difficult to use the standard Inventor progress bar, hence the idea to use the web browser to display a custom GIF.
In my iLogic code to export 3D PDF’s, I’ve adapted the API sample to be user friendly, giving the user a bit more input, and then displaying a custom GIF as the progress bar.
See the animation below to see how it works:

It’s worth reading my previous blog post on using the web viewer as a progress bar, as this will help with tweaks etc.
Here is the 3D PDF iLogic Code:
'Code Adapted from Inventor API samples with some tweaks by @ClintBrown3D
'This version of the code published at https://clintbrown.co.uk/3dpdf
'I did build something similar here, but it had no progress bar https://www.cadlinecommunity.co.uk/hc/en-us/articles/213505925
On Error GoTo ClintsErrorTrapper :
'oURL = "https://i.imgur.com/EpygR1m.gif"
'oURL = "file:///C:/TEMP/progress.gif"
oURL = "https://clintbrown.co.uk/wp-content/uploads/2019/09/clintbrown3d-progress-bar-3d-pdf.gif?"
' Get the 3D PDF Add-In.
Dim oPDFAddIn As ApplicationAddIn
Dim oAddin As ApplicationAddIn
For Each oAddin In ThisApplication.ApplicationAddIns
If oAddin.ClassIdString = "{3EE52B28-D6E0-4EA4-8AA6-C2A266DEBB88}" Then
oPDFAddIn = oAddin
oAddin.Deactivate
Exit For
End If
Next
If oPDFAddIn Is Nothing Then
MsgBox ("Inventor 3D PDF Addin not loaded.")
Exit Sub
End If
Dim oPDFConvertor3D
oPDFConvertor3D = oPDFAddIn.Automation
'A reference to the active document (the document to be published).
Dim oDocument As Document
oDocument = ThisApplication.ActiveDocument
' Create a NameValueMap object as Options
Dim oOptions As NameValueMap
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
' Options
oOptions.Value("FileOutputLocation") = ("c:\temp\"+ ThisDoc.FileName(False)+".pdf")
oOptions.Value("ExportAnnotations") = 0
oOptions.Value("ExportWokFeatures") = 0
oOptions.Value("GenerateAndAttachSTEPFile") = False
oOptions.Value("LimitToEntitiesInDVRs") = True
oOptions.Value("ExportAllProperties") = True
'Accuracy - selection by Arraylist
Dim MyArrayList As New ArrayList
MyArrayList.Add("Very High")
MyArrayList.Add("High")
MyArrayList.Add("Medium")
MyArrayList.Add("Low")
MyArrayList.Add("** EXIT ** - Close iLogic Rule - Do not create a 3D PDF")
'-----------------------------------------------------------------------------------------------------
' Create a WebBrowserDialog (Progress Bar)
Dim oWebBrowserDialog As WebBrowserDialog
oWebBrowserDialog = ThisApplication.WebBrowserDialogs.Add(oURL)
oWebBrowserDialog.WindowState = kNormalWindow
' Nagigate to a web site
oWebBrowserDialog.Navigate(oURL)
'-----------------------------------------------------------------------------------------------------
ACCURACYinput = InputListBox("Higher Accuracy takes longer to create", MyArrayList, d0, Title := "@ClintBrown3D - iLogic 3D PDF Publisher", ListName := "List")
If ACCURACYinput = "Very High" Then: ACCURACYtoUSE = AccuracyEnum.kVeryHigh
Else If ACCURACYinput ="High" Then: ACCURACYtoUSE = AccuracyEnum.kHigh
Else If ACCURACYinput ="Medium" Then: ACCURACYtoUSE = AccuracyEnum.kMedium
Else If ACCURACYinput ="Low" Then: ACCURACYtoUSE = AccuracyEnum.kLow
Else If ACCURACYinput = "" Then : oWebBrowserDialog.Delete: Return
Else If ACCURACYinput = "** EXIT ** - Close iLogic Rule - Do not create a 3D PDF" Then
oWebBrowserDialog.Delete: Return: End If
oOptions.Value("VisualizationQuality") = ACCURACYtoUSE
' the properties to export
Dim sProps(0) As String
sProps(0) = "{F29F85E0-4FF9-1068-AB91-08002B27B3D9}:Title" ' Title
' Export Current design view
Dim sDesignViews(0) As String
sDesignViews(0) = oDocument.ComponentDefinition.RepresentationsManager.ActiveDesignViewRepresentation.Name
oOptions.Value("ExportDesignViewRepresentations") = sDesignViews
ThisApplication.StatusBarText = "Exporting your 3D PDF... Please hold"
'Publish document.
Call oPDFConvertor3D.Publish(oDocument, oOptions)
'----------------------------------------------------------------------------------------------------------
'Close Web Page (progress bar)
oWebBrowserDialog.Delete
'----------------------------------------------------------------------------------------------------------
ThisApplication.StatusBarText= "Your 3D PDF is ready"
i = MessageBox.Show("Preview the PDF?", "@ClintBrown3D: iLogic - 3D PDF Publisher",MessageBoxButtons.YesNo)
If i = vbYes Then : launchviewer = 1 : Else : launchviewer = 0 : End If
If launchviewer = 1 Then ThisDoc.Launch("c:\temp\"+ ThisDoc.FileName(False)+".pdf")
'End If
Return
ClintsErrorTrapper :
'oWebBrowserDialog.Navigate(oURL)
MessageBox.Show("There is a problem -- The 3D PDF cannot be published -- Please ensure that you are in a Part or Assembly file -- Ensure that all parts (in Assemblies) are fully resolved, models with missing links cannot be used for publishing 3D PDF's. Try closing the document and re-launcing. If you still can't publish the PDF, unload the Anark3D Addin and re-run the rule","@ClintBrown3D - iLogic 3D PDF Export")
Notes:
This version of the code was briefly tested with Inventor 2020, the progress bar may not work as expected in other versions.
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!
You must be logged in to post a comment.