Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations cowski on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Showing/hiding assembly components 2

Status
Not open for further replies.

mkmech

Mechanical
Nov 12, 2004
71
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?
 
Replies continue below

Recommended for you


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

[cheers]

Eng-Tips:-
Intelligent Work Forums For Engineering Professionals [smile]
 
Yeah that works as well.

Vistog is well worth the cost as it gives other useful features
 
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
 
Hold down the CTRL key and select the components that require a change in state (hide/show/suppress/unsuppress).
Then right click. pick.
 
Or you can use SHIFT key, picking top item and bottom item, which will selct everything in between, then right click, pick.
 
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?
 
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
 
MkMech,

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

Jeff

 
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.
 
sldwrks84, what you want is in 2006 called Display States.

Flores
SW 2006 SP1.0
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor