Autodesk Inventor 2017 – iLogic – Identify Parts in Layout Drawings
28 February 2017
Inventor is fantastic at many things, but flexibility when tagging components in layout drawings is not a strong point in my view.
If you’re using Factory Design Utilities there are some handy tools for including identification tags for components, but if you’re using standard Inventor, you’ll probably be relying on the balloon tools. These allow any property to be included in the balloon (good), but don’t allow much flexibility for auto-positioning the balloons when placing them (for instance central to the component on the drawing view).
In comparison to a product like Revit, which is more focused on large layouts and tagging, there can be quite a lot of manual effort.
What to do?
Well a training delegate recently made the excellent suggestion of using a model sketch in the part templates for the layout, and then including the sketches in the drawing view. This allows great flexibility with positioning, as the position can be parametrically controlled in the part sketch, and also allows any parameter or iProperty value to be used in the sketch text (for instance).
The only missing link in the chain is how to quickly ‘include’ these sketches in a layout drawing to make them visible. iLogic to the rescue!
Check out the video for explanation, and see the iLogic code below.
Note: the below video was created by Excitech prior to becoming Symetri in January 2021, following its acquisition by Addnode Group. All Excitech products, services and solutions mentioned in this recording are available through Symetri.
' Start of iLogic code ======================================================================
Sub Main()
Dim Title As String = "Excitech iLogic" Dim Counter As Integer = 0 Dim SketchName As String = "
Try
Dim oDrawingDoc As DrawingDocument = Nothing If ThisApplication.ActiveDocument.DocumentType <> kDrawingDocumentObject Then MsgBox("This iLogic rule only works with drawing documents!", MsgBoxStyle.OkOnly, Title) Exit Sub End If
oDrawingDoc = ThisApplication.ActiveDocument
Dim oView As DrawingView = Nothing
oView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, _ "Select a view to toggle sketch visibility, or hit ESC to cancel...")
If oView Is Nothing Then Exit Sub End If
' Get user input for the sketch name SketchName = InputBox("Please enter name of sketch to toggle visibility.",Title, "Sketch 1")
' Get the referenced document Dim oDoc As Document = oView.ReferencedDocumentDescriptor.ReferencedDocument
If oDoc.DocumentType <> kAssemblyDocumentObject Then MsgBox("The referenced document needs to be an assembly. Exiting", MsgBoxStyle.OkOnly, Title) Exit Sub End If
Dim oAssy As AssemblyDocument = oView.ReferencedDocumentDescriptor.ReferencedDocument Dim oOccs As ComponentOccurrences = oAssy.ComponentDefinition.Occurrences Dim oOcc As ComponentOccurrence = Nothing Dim TopLevelOcc As ComponentOccurrence = Nothing Dim Level As Integer = 0 Dim TopLevelAsmDef As AssemblyComponentDefinition = Nothing
If Counter = 0 Then MsgBox("No sketches called " & SketchName & " were found in this view.", MsgBoxStyle.OkOnly, Title) End If
End Sub
Sub LoopThroughSubOccurrences(ByRef oDrawView As DrawingView, _ ByRef oOccs As ComponentOccurrences, _ ByRef oOcc As ComponentOccurrence, _ ByRef Level As Integer, _ ByVal SketchName As String, _ ByRef Counter As Integer)
For Each oOcc In oOccs
If oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
' Get the occurrences in this sub-assembly and loop recursively... oOccs = oOcc.SubOccurrences
ElseIf oOcc.DefinitionDocumentType = DocumentTypeEnum.kPartDocumentObject Then
' Loop through all sketches Dim oDef As PartComponentDefinition = oOcc.Definition Dim oSk As PlanarSketch = Nothing Dim oSks As PlanarSketches = oDef.Sketches
For Each oSk In oSks If oSk.Name = SketchName Then Counter += 1 Dim oSkProx As PlanarSketchProxy = Nothing Call oOcc.CreateGeometryProxy(oSk, oSkProx)
Sub IncludeSketch(ByRef oDrawView As DrawingView, ByVal oSketch As PlanarSketchProxy)
' Toggle inclusion of sketch in drawing view ' Current Dim Current As Boolean = oDrawView.GetIncludeStatus(oSketch) oDrawView.SetIncludeStatus(oSketch, Not Current)
End Sub
Sub VisibleSketch(ByRef oDrawView As DrawingView, ByVal oSketch As PlanarSketchProxy)
' Toggle visibility of sketch in drawing view Dim Current As Boolean = oDrawView.GetVisibility(oSketch) oDrawView.SetVisibility(oSketch, Not Current)
End Sub
' End of iLogic code ================================================================
As cyber threats continue to grow more complex, securing how we store, manage, and share data is critical. This month’s bulletin dives deep into three key topics: how to ensure safe file storage and transfers, understanding the risks and benefits of password managers, and identifying the top cyber threats to watch in 2025. Whether you’re a business leader or an everyday user, taking proactive steps now can prevent serious problems down the road.
In this blog post, our Principal Consultant, Enrique Barriuso, takes a closer look at what's new in Autodesk Civil 3D 2026. Building on previous versions, this release brings a range of new features, enhancements, and updates.
Optimising BIM and digital tools in architecture and engineering is revolutionising the industry. By integrating technologies like AI, cloud computing, and data analytics, professionals can enhance collaboration, reduce errors, and streamline workflows. In this blog, we'll explore how leveraging these tools can lead to more efficient and successful project outcomes.