Inventor General Discussion

Inventor General Discussion

Reply
Distinguished Contributor
ADNpati
Posts: 126
Registered: ‎07-01-2012
Message 1 of 14 (513 Views)
Accepted Solution

Macro to turn visibility for particular Sketch

513 Views, 13 Replies
07-28-2012 06:51 PM

 

Hello,

 

As we have layers in AutoCAD Product, I Started using different sketches and using them as layers by turning the visibility on and off.

 

Can we write a macro (button Click) to turn one perticular Sketch on and off???

 

For example If I had a Sketch named as GROUNDFLOOR,  can I use a macro to turn them off and on when needed??

 

Thanks

AD 

Mechanical Engineer
Inventor Applications Engineer

--------------------------------------------------------------------------------------

If my solution seems to remedy your problem, please press the Accept Solution button, Some KUDOS -

-------------------------------------------------------------------------------------

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....

Employee
Xun.Zhang
Posts: 68
Registered: ‎09-04-2011
Message 2 of 14 (479 Views)

Re: Macro to turn visibility for particular Sketch

07-29-2012 08:46 PM in reply to: ADNpati

Hi AD,

 

Contact with API expert Jane, it possiblly to add an VBA/VB code to turn on/off the visibility of perticular Sketch, but for button provided, need more consideration.

 

Xun



Xun Zhang
Software QA Engineer
Inventor Quality Assurance Team
Autodesk, Inc.
Employee
fanj
Posts: 18
Registered: ‎03-05-2009
Message 3 of 14 (479 Views)

Re: Macro to turn visibility for particular Sketch

07-29-2012 08:51 PM in reply to: ADNpati

Hello,

 

How about runt he macro in VBA?

Sub test()
    Call SetVisible(True)
End Sub

Sub SetVisible(bFlag)
    Dim oDoc As PartDocument
    Set oDoc = ThisApplication.ActiveDocument
   
    Dim oSks As PlanarSketches
    Set oSks = oDoc.ComponentDefinition.Sketches
   
    Dim oSketch As PlanarSketch
    For Each oSketch In oSks
        If oSketch.Name = "GROUNDSketch" Or oSketch.Name = "What I Need else" Then
            oSketch.Visible = bFlag
        End If
    Next
End Sub

Jane Fan
Inventor ETO Quality Assurance Team
Autodesk, Inc.
Distinguished Contributor
ADNpati
Posts: 126
Registered: ‎07-01-2012
Message 4 of 14 (474 Views)

Re: Macro to turn visibility for particular Sketch

07-29-2012 09:08 PM in reply to: fanj
Hello Fanj, Thnaks for the time and reply with macro I tried with that and there is error coming up when running that. Find the attachment, I'll use the Macro from you and do corrections. Hopefully we will get a solution to dat.. Regards, AD
Mechanical Engineer
Inventor Applications Engineer

--------------------------------------------------------------------------------------

If my solution seems to remedy your problem, please press the Accept Solution button, Some KUDOS -

-------------------------------------------------------------------------------------
Employee
Yijiang.Cai
Posts: 359
Registered: ‎05-20-2008
Message 5 of 14 (466 Views)

Re: Macro to turn visibility for particular Sketch

07-30-2012 01:23 AM in reply to: ADNpati

Please make sure the sketch name is what you want to turn off/on in the code line below

        If oSketch.Name = "GROUNDSketch" Or oSketch.Name = "What I Need else" Then
            oSketch.Visible = bFlag
        End If

 

And I think you could also use the "find button" on the top of inventor browser panel to get the right sketch, and turn on/off its visibility. Please see the attached image.

Thanks,
River Cai

Inventor Quality Assurance Team
Autodesk, Inc.
Distinguished Contributor
ADNpati
Posts: 126
Registered: ‎07-01-2012
Message 6 of 14 (459 Views)

Re: Macro to turn visibility for particular Sketch

07-30-2012 01:59 AM in reply to: Xun.Zhang

Hi Xun.Zhang

 

Sure, i will contact and thanks for reply

 

AD

Mechanical Engineer
Inventor Applications Engineer

--------------------------------------------------------------------------------------

If my solution seems to remedy your problem, please press the Accept Solution button, Some KUDOS -

-------------------------------------------------------------------------------------
Distinguished Contributor
ADNpati
Posts: 126
Registered: ‎07-01-2012
Message 7 of 14 (459 Views)

Re: Macro to turn visibility for particular Sketch

07-30-2012 02:19 AM in reply to: Yijiang.Cai

hello River,

 

I tried tried and tried to fix that error and it is saying as missmatch error.

Included picture if what I am doing.

If you know something abt it let me know

 

Thanks

Mechanical Engineer
Inventor Applications Engineer

--------------------------------------------------------------------------------------

If my solution seems to remedy your problem, please press the Accept Solution button, Some KUDOS -

-------------------------------------------------------------------------------------
Employee
Yijiang.Cai
Posts: 359
Registered: ‎05-20-2008
Message 8 of 14 (451 Views)

Re: Macro to turn visibility for particular Sketch

07-30-2012 02:23 AM in reply to: ADNpati

Based on the error in the image, it looks that you want to use this macro in assembly document. But the macro you used is only for part document. If you want to use the macro for assembly document, we should refine the macro to accomplish it.

 

Thanks,
River Cai

Inventor Quality Assurance Team
Autodesk, Inc.
Employee
fanj
Posts: 18
Registered: ‎03-05-2009
Message 9 of 14 (450 Views)

Re: Macro to turn visibility for particular Sketch

07-30-2012 02:24 AM in reply to: ADNpati

Hi AD,

 

I guess you opened an assembly document, instead of part document. to make the code supports all types of document, please change the document type to Document instead of PartDocument. Use following code instead to have a try:

Sub test()
    Call SetVisible(True)
End Sub

Sub SetVisible(bFlag)
    Dim oDoc As Document
    Set oDoc = ThisApplication.ActiveDocument
   
    Dim oSks As PlanarSketches
    Set oSks = oDoc.ComponentDefinition.Sketches
   
    Dim oSketch As PlanarSketch
    For Each oSketch In oSks
        If oSketch.Name = "GROUNDSketch" Or oSketch.Name = "What I Need else" Then
            oSketch.Visible = bFlag
        End If
    Next
End Sub

Jane Fan
Inventor ETO Quality Assurance Team
Autodesk, Inc.
Employee
fanj
Posts: 18
Registered: ‎03-05-2009
Message 10 of 14 (449 Views)

Re: Macro to turn visibility for particular Sketch

07-30-2012 02:31 AM in reply to: fanj

And there is another comments:

If you want to change the visibllity staus of the sketches in assembly document, they the code above works.

But it won't work on the sketches of assembly occurrences. It will work in this way if you want to change the sketch status in assembly occurrences:

 

Sub Test()
    'Input True or False
    Call ChangeVisiblityOfAssySketch(True)
End Sub
Sub ChangeVisiblityOfAssySketch(bFlag)
    Dim odoc As AssemblyDocument
    Set odoc = ThisApplication.ActiveDocument
   
    Dim i As Integer
    Dim oSk As PlanarSketch
    For i = 1 To odoc.ComponentDefinition.Occurrences.Count
        For Each oSk In odoc.ComponentDefinition.Occurrences
            If oSk.Name = "What you need" Then
                oSk.Visible = bFlag

                Exit For
            End If
        Next
    Next
End Sub

Jane Fan
Inventor ETO Quality Assurance Team
Autodesk, Inc.
Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Need installation help?

Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.