Autodesk Inventor
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Re: Macro to turn visibility for particular Sketch
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi AD,
Considering the complex condition of your modeling file that I'm afraid there may be sub assembly in your assembly document, so I write another routine for you to use recrsion to foreach every sub node, here is the code, hope it helps.
'*************************Start*******************
Sub Test()
Dim oDoc As Document
Set oDoc = ThisApplication.ActiveDocument
'Rename the first parameter "MyTest" to any name of the sketch you want to control
'Input True or False to make the sketch visible or invisible
Call GetPartOccurrence("MyTest", True, oDoc)
End Sub
Function GetPartOccurrence(strSketchName As String, bFlag As Boolean, oDoc As Document) As Document
Dim i As Integer
Dim oSubDoc As Document
For i = 1 To oDoc.ComponentDefinition.Occurrences.Count
If oDoc.ComponentDefinition.Occurrences(i).Definition
Set oSubDoc = oDoc.ComponentDefinition.Occurrences(i).Definition
Call GetPartOccurrence(strSketchName, bFlag, oSubDoc)
ElseIf oDoc.ComponentDefinition.Occurrences(i).Definition
For Each oSk In oDoc.ComponentDefinition.Occurrences(i).Definition
If oSk.Name = strSketchName Then
oSk.Visible = bFlag
Exit For
End If
Next
End If
Next
End Function
'*************************End*********************
Software QA Engineer
Inventor Quality Assurance Team
Autodesk, Inc.
Re: Macro to turn visibility for particular Sketch
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi jane,
Thanks for writing such a long code..
I'll execute today and keep you posted...
Last code works fine for me within assembly and also used changing it to part.. worked really good.
I'll post those codes to nite or in couple of day aftere some testing..
Regards,
AD
Inventor Applications Engineer
--------------------------------------------------------------------------------------
If my solution seems to remedy your problem, please press the Accept Solution button, Some KUDOS -
-------------------------------------------------------------------------------------
Re: Macro to turn visibility for particular Sketch
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hello fanj,
I tried this macro and Working Very Fine.
I am writing another macro to trun on and off A preticular sketch which is in sub-assembly in Main assembly.
Code is running finw without errors, but sketches are not turning on.
Please have a look to the code and feel free to suggest any changes:
Sub ToggleSketchVisibilityOn()
' Set a reference to the Sketches collection. This assumes
' that a part document containing a sketch is active.
Dim oAsmDoc As AssemblyDocument
Set oAsmDoc = ThisApplication.ActiveDocument
Dim oCompDef As ComponentDefinition
Set oCompDef = oAsmDoc.ComponentDefinition
Dim oOcc As ComponentOccurrences
Dim oOccDoc As Document
Dim oSketchname As String
oSketchname = "F"
Dim i As Integer
For i = 1 To oCompDef.occurrences.Count
If oAsmDoc.ComponentDefinition.occurrences(i).Definit
Exit Sub
Else
If oAsmDoc.ComponentDefinition.occurrences(i).Definit
Set oOccDoc = oAsmDoc.ComponentDefinition.occurrences(i).Definit
End If
End If
Dim oSketches As PlanarSketches
Set oSketches = ThisApplication.ActiveDocument.ComponentDefinition
Dim oSketch As PlanarSketch
Set oSketches = oOccDoc.ComponentDefinition.Sketches
For Each oSketch In oSketches
If InStr(oSketch.name, oSketchname) Then
oSketch.Visible = True
End If
Next
Next
End Sub
Thanks
Inventor Applications Engineer
--------------------------------------------------------------------------------------
If my solution seems to remedy your problem, please press the Accept Solution button, Some KUDOS -
-------------------------------------------------------------------------------------
Re: Macro to turn visibility for particular Sketch
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Here is Solution...
Private Sub Test_SubAssemblySketches()
Dim oAssyDoc As AssemblyDocument
Set oAssyDoc = ThisApplication.ActiveDocument
Dim oAssyDef As AssemblyComponentDefinition
Set oAssyDef = oAssyDoc.ComponentDefinition
'toggle visibility of sketches in the main assembly
Dim oSk As Sketch
For Each oSk In oAssyDef.Sketches
oSk.Visible = Not oSk.Visible
Next
'process all subassemblies
Dim oOcc As ComponentOccurrence
For Each oOcc In oAssyDef.occurrences
If oOcc.Definition.Type = kAssemblyComponentDefinitionObject Then
Dim oDef As AssemblyComponentDefinition
Set oDef = oOcc.Definition
'toggle visibility of sketches in subassemblies
Dim oSkProxy As PlanarSketchProxy
For Each oSk In oDef.Sketches
Call oOcc.CreateGeometryProxy(oSk, oSkProxy)
oSkProxy.Visible = Not oSkProxy.Visible
Next
End If
Next 'oOcc
End Sub
For Sketches in Subassemblies, Proxy should be used....
Inventor Applications Engineer
--------------------------------------------------------------------------------------
If my solution seems to remedy your problem, please press the Accept Solution button, Some KUDOS -
-------------------------------------------------------------------------------------



