• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Discussion Groups

    Autodesk Inventor

    Reply
    Valued Contributor
    Posts: 84
    Registered: ‎07-01-2012
    Accepted Solution

    Macro to turn visibility for particular Sketch

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

    -------------------------------------------------------------------------------------
    Please use plain text.
    Employee
    Xun.Zhang
    Posts: 56
    Registered: ‎09-04-2011

    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.
    Please use plain text.
    Employee
    Posts: 5
    Registered: ‎03-05-2009

    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
    Software QA Engineer
    Inventor Quality Assurance Team
    Autodesk, Inc.
    Please use plain text.
    Valued Contributor
    Posts: 84
    Registered: ‎07-01-2012

    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 -

    -------------------------------------------------------------------------------------
    Please use plain text.
    Employee
    Posts: 283
    Registered: ‎05-20-2008

    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

    Quality Assurance Team
    Autodesk, Inc.
    Please use plain text.
    Valued Contributor
    Posts: 84
    Registered: ‎07-01-2012

    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 -

    -------------------------------------------------------------------------------------
    Please use plain text.
    Valued Contributor
    Posts: 84
    Registered: ‎07-01-2012

    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 -

    -------------------------------------------------------------------------------------
    Please use plain text.
    Employee
    Posts: 283
    Registered: ‎05-20-2008

    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

    Quality Assurance Team
    Autodesk, Inc.
    Please use plain text.
    Employee
    Posts: 5
    Registered: ‎03-05-2009

    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
    Software QA Engineer
    Inventor Quality Assurance Team
    Autodesk, Inc.
    Please use plain text.
    Employee
    Posts: 5
    Registered: ‎03-05-2009

    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
    Software QA Engineer
    Inventor Quality Assurance Team
    Autodesk, Inc.
    Please use plain text.