Routine for turn visible on for all components

Routine for turn visible on for all components

Anonymous
Not applicable
319 Views
4 Replies
Message 1 of 5

Routine for turn visible on for all components

Anonymous
Not applicable
I want a routine where I can turn Visibility on, for all components.

This is my code, something is wrong.


thanks

Private Sub CommandButton9_Click()

Dim oDoc As AssemblyDocument
Set oDoc = ThisApplication.ActiveDocument
Dim odef As AssemblyComponentDefinition
Set odef = oDoc.ComponentDefinition
Dim oOcc As ComponentOccurrence
For Each oOcc In odef.Occurrences
oDoc.SelectSet.Select oOcc
oOcc.Visible = True
Next
End Sub
0 Likes
320 Views
4 Replies
Replies (4)
Message 2 of 5

psaarloos
Collaborator
Collaborator
Hi Henrik.

Just delete the line oDoc.SelectSet Select oOcc. Then it should work... It only works for first level occurrences though.

Otherwise you can make a routine:

Public Sub SetAssemblyVisibility(ByVal oAssemblyDocument As AssemblyDocument, ByVal bVisible As Boolean)

dim oComponentOccurrence As ComponentOccurrence

For Each oComponentOccurrence In AssemblyDocument.ComponentDefinition.Occurrences

If oComponentOccurrence.Definition.Document.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then

oComponentOccurrence.Visible = Visible

Call SetAssemblyVisibility(oComponentOccurrence.Definition.Document, Visible)

Else
oComponentOccurrence.Visible = Visible
End If

Next

End Sub

After making this routine, just call the routine from your button click event:

call SetAssemblyVisibility(thisapplication.activedocument, true) <-- or false if you want to turn off visibility for all occurrences.


Kind regards,
Pim Saarloos
Regards,
Pim Saarloos
Product Manager
If my post answers your question, please click the "Accept as Solution" button. Kudos are much appreciated!
0 Likes
Message 3 of 5

psaarloos
Collaborator
Collaborator
mmm... this one should work beter.. 😉

Public Sub SetAssemblyVisibility(ByVal oAssemblyDocument As AssemblyDocument, ByVal bVisible As Boolean)

dim oComponentOccurrence As ComponentOccurrence

For Each oComponentOccurrence In oAssemblyDocument.ComponentDefinition.Occurrences

If oComponentOccurrence.Definition.Document.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then

oComponentOccurrence.Visible = bVisible

Call SetAssemblyVisibility(oComponentOccurrence.Definition.Document, bVisible)

Else
oComponentOccurrence.Visible = bVisible
End If

Next

End Sub
Regards,
Pim Saarloos
Product Manager
If my post answers your question, please click the "Accept as Solution" button. Kudos are much appreciated!
0 Likes
Message 4 of 5

Anonymous
Not applicable
Hi Psaarloos.

I've tried your code, but I got an error in line 4 "if ...." I can't see
what's wrong.

thanks Henrik


Public Sub SetAssemblyVisibility(ByVal oAssemblyDocument As
AssemblyDocument, ByVal bVisible As Boolean)
Dim oComponentOccurrence As ComponentOccurrence
For Each oComponentOccurrence In
oAssemblyDocument.ComponentDefinition.Occurrences
If oComponentOccurrence.Definition.Document.DocumentType =
DocumentTypeEnum.kAssemblyDocumentObject Then
oComponentOccurrence.Visible = bVisible
Call SetAssemblyVisibility(oComponentOccurrence.Definition.Document,
bVisible)
Else
oComponentOccurrence.Visible = bVisible
End If
Next
End Sub



skrev i en meddelelse news:5940476@discussion.autodesk.com...
mmm... this one should work beter.. 😉

Public Sub SetAssemblyVisibility(ByVal oAssemblyDocument As
AssemblyDocument, ByVal bVisible As Boolean)

dim oComponentOccurrence As ComponentOccurrence

For Each oComponentOccurrence In
oAssemblyDocument.ComponentDefinition.Occurrences

If oComponentOccurrence.Definition.Document.DocumentType =
DocumentTypeEnum.kAssemblyDocumentObject Then

oComponentOccurrence.Visible = bVisible

Call SetAssemblyVisibility(oComponentOccurrence.Definition.Document,
bVisible)

Else
oComponentOccurrence.Visible = bVisible
End If

Next

End Sub
0 Likes
Message 5 of 5

Anonymous
Not applicable
... on error resume next solved the problem...

"Henrik Villars" skrev i en meddelelse
news:5940782@discussion.autodesk.com...
Hi Psaarloos.

I've tried your code, but I got an error in line 4 "if ...." I can't see
what's wrong.

thanks Henrik


Public Sub SetAssemblyVisibility(ByVal oAssemblyDocument As
AssemblyDocument, ByVal bVisible As Boolean)
Dim oComponentOccurrence As ComponentOccurrence
For Each oComponentOccurrence In
oAssemblyDocument.ComponentDefinition.Occurrences
If oComponentOccurrence.Definition.Document.DocumentType =
DocumentTypeEnum.kAssemblyDocumentObject Then
oComponentOccurrence.
Visible = bVisible
Call SetAssemblyVisibility(oComponentOccurrence.Definition.Document,
bVisible)
Else
oComponentOccurrence.Visible = bVisible
End If
Next
End Sub



skrev i en meddelelse news:5940476@discussion.autodesk.com...
mmm... this one should work beter.. 😉

Public Sub SetAssemblyVisibility(ByVal oAssemblyDocument As
AssemblyDocument, ByVal bVisible As Boolean)

dim oComponentOccurrence As ComponentOccurrence

For Each oComponentOccurrence In
oAssembly
Document.ComponentDefinition.Occurrences

If oComponentOccurrence.Definition.Document.DocumentType =
DocumentTypeEnum.kAssemblyDocumentObject Then

oComponentOccurrence.Visible = bVisible

Call SetAssemblyVisibility(oComponentOccurrence.Definition.Document,
bVisible)

Else
oComponentOccurrence.Visible = bVisible
End If

Next

End Sub
0 Likes