×
INTELLIGENT WORK FORUMS
FOR ENGINEERING PROFESSIONALS

Log In

Come Join Us!

Are you an
Engineering professional?
Join Eng-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!
  • Students Click Here

*Eng-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Jobs

Showing/hiding assembly components
2

Showing/hiding assembly components

Showing/hiding assembly components

(OP)
Hello

I have an assembly in which I hid some of the components. Is there a way I can show all the components in one click instead of having to right click every individual component and show it?

RE: Showing/hiding assembly components

http://www.kentcontract.com/swmacros.shtml

Thankyou. At last. Someone else who wants the same as I do.
The answer is No. I Dont know why because it seems like an obvious omission.

However the link above will take you to someone who sells a utility called Vistog and this will do what you want.

On the whole this a good utility but could do with a few more whistles and bells.

Otherwise get Solid Edge instead. It and loads of others viewing facilities are standard.

RE: Showing/hiding assembly components

Highlight the Top Level Assy then go to Edit > Show (or Show with dependants) then select which configuration.

This can also be used to Unsuppress items across configurations.



Eng-Tips:-
Intelligent Work Forums For Engineering Professionals

RE: Showing/hiding assembly components

Yeah that works as well.

Vistog is well worth the cost as it gives other useful features

RE: Showing/hiding assembly components

I use a shift select in the tree and then right mouse to show all. Make sure the last part is a hidden part.

Jim

RE: Showing/hiding assembly components

Hold down the CTRL key and select the components that require a change in state (hide/show/suppress/unsuppress).
Then right click. pick.

RE: Showing/hiding assembly components

Or you can use SHIFT key, picking top item and bottom item, which will selct everything in between, then right click, pick.

RE: Showing/hiding assembly components

Solidworks API help has example macros for 'Show All Components' and 'Only Show Selected Components' but on copying and pasting these into a macro they don't compile (something about the function statements).  There's probably something simple stopping it from working, could anyone more familiar with API offer a clue?

RE: Showing/hiding assembly components

2
There are a couple of reasons why examples from the API help sometimes do not work:

1) The example is a function or subroutine that is meant to be used as part of a bigger program.  It is not a standalone routine.
2) The VBA editor has automatically formatted the code when it was pasted in.

You may be seeing problem #2.  The problem is that the formatting in the help file gets carried over when you copy and paste into the VBA editor.  You can see this happen in the "Make All Assembly Components Visible" example.  The first sub procedure looks like this in the API help file:

Sub TraverseComponent _

( _

    swComp As SldWorks.Component2, _

    nLevel As Long _

)

But looks like this when pasted into the VBA editor

Sub TraverseComponent _
()
( _

    swComp As SldWorks.Component2, _

    nLevel As Long _

)

Notice the extra brackets on the second line?  They were added in automatically.  Here's how it works - the underscore character is used to allow code to continue onto the next line, but there is no code on the next line because the code pastes into the VBA editor with double spacing.  You will see this highlighted in the VBA editor if you paste directly from the API help.

Here is a solution:
1) Paste from the API help into MS Word
2) Select all code (Cntl-A) and under "Styles and Formatting" select "Clear Formatting"
3) Select all code and paste into the VBA editor.

Your code should now compile properly.  Here is what the macro should look like in the VBA editor:

Option Explicit
Public Enum swComponentVisibilityState_e
    swComponentHidden = 0
    swComponentVisible = 1
End Enum
 
Sub TraverseComponent _
( _
    swComp As SldWorks.Component2, _
    nLevel As Long _
)
    Dim vChildCompArr               As Variant
    Dim vChildComp                  As Variant
    Dim swChildComp                 As SldWorks.Component2
    Dim swCompConfig                As SldWorks.Configuration
    Dim sPadStr                     As String
    Dim i                           As Long
    
    For i = 0 To nLevel - 1
        sPadStr = sPadStr + "  "
    Next i
    
    vChildCompArr = swComp.GetChildren
    For Each vChildComp In vChildCompArr
        Set swChildComp = vChildComp
        
        Debug.Print sPadStr & swChildComp.Name2 & " <" & swChildComp.ReferencedConfiguration & ">"
        
        If swComponentHidden = swChildComp.Visible Then
            swChildComp.Visible = swComponentVisible
        End If
        
        TraverseComponent swChildComp, nLevel + 1
    Next
End Sub
 
Sub main()
    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swAssy                      As SldWorks.AssemblyDoc
    Dim swConf                      As SldWorks.Configuration
    Dim swRootComp                  As SldWorks.Component2
    Dim bRet                        As Boolean
    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swConf = swModel.GetActiveConfiguration
    Set swRootComp = swConf.GetRootComponent
    
    Debug.Print "File = " & swModel.GetPathName
    
    TraverseComponent swRootComp, 1
End Sub

RE: Showing/hiding assembly components

Thanks Stoker, that got it running.

RE: Showing/hiding assembly components

MkMech,

Did you try creating configurations? Seems like that is what you need from your description.

Jeff

RE: Showing/hiding assembly components

Now it would be nice to incorporate this functionality into drawing files.  We create detail views using new views and hide everything but what we need.  Everything is divided into folders in the assembly for ease.  But we still have to pick everything else and say hide in drawing view.  

It would be nice to be able to "invert selection" in the drawing views like you can in the assembly file feature tree.  I sent in an enhancement for this....unless someone knows another way to do it.

RE: Showing/hiding assembly components

sldwrks84, what you want is in 2006 called Display States.

Flores
SW 2006 SP1.0

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Eng-Tips Forums free from inappropriate posts.
The Eng-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Eng-Tips forums is a member-only feature.

Click Here to join Eng-Tips and talk with other members!


Resources