By Wayne Brill
Issue
I want to supress the Circular Pattern Component in an assembly file. I can do this through UI as shown in image. If I use the Visible property of CircularOccurrencePattern Object, I can only control the object visibilty in the Assembly file, but in the corresponding drawing document, the objects visibilty will not be supressed.
How can I achieve this using API ?
Solution
If you want to make the entire occurrence pattern invisible, you could access all the pattern elements which make up the occurrence pattern, from each pattern element access all the individual occurrences and make them invisible:
Public Sub SuppressOccPatterns()
Dim m_inventorApp As _
Inventor.Application = Nothing
' Try to get an active instance of Inventor
Try
m_inventorApp = _
System.Runtime.InteropServices.Marshal _
.GetActiveObject("Inventor.Application")
Catch ex As Exception
End Try
' If not active, create a new Inventor session
If m_inventorApp Is Nothing Then
Try
Dim inventorAppType As Type = _
System.Type.GetTypeFromProgID _
("Inventor.Application")
m_inventorApp = System.Activator. _
CreateInstance(inventorAppType)
Catch ex As Exception
End Try
End If
If m_inventorApp Is Nothing Then
MsgBox("no Inventor instance!")
Exit Sub
End If
Dim oAssemDoc As AssemblyDocument
oAssemDoc = m_inventorApp.ActiveDocument
If oAssemDoc.SelectSet.Count = 0 Then
Exit Sub
End If
Dim oSelectedObj As Object
oSelectedObj = oAssemDoc.SelectSet.Item(1)
If Not oSelectedObj Is Nothing Then
Dim oOccPattern As OccurrencePattern
If TypeOf oSelectedObj Is _
OccurrencePattern Then
Dim oSuppOccPattTrans As Transaction
oSuppOccPattTrans = m_inventorApp. _
TransactionManager.StartTransaction _
(oAssemDoc, "Suppress OccPatterns")
oOccPattern = oSelectedObj
Dim oOccPatElement As _
OccurrencePatternElement
For Each oOccPatElement In _
oOccPattern. _
OccurrencePatternElements
Dim oCompOcc As ComponentOccurrence
For Each oCompOcc In _
oOccPatElement.Occurrences
oCompOcc.Visible = False
Next
Next oOccPatElement
oSuppOccPattTrans.End()
Else
MsgBox("Select an Occurrence Pattern")
End If
Else
MsgBox("Select an Occurrence Pattern")
End If
End Sub