Iterate through open documents with vba?

Oct 05, 2004 8 Replies

Is there a way to iterate through all open documents (Parts, Assemblies, Drawings) with a "for loop" or array?



Can't find anything in the API, accept iterating through all sheets in a drawing with "GetSheetNames"



Thanks


Go to SW help search and look for "Get Names of Open Documents Example (VB)". This example goes through all the open docs.

WT

Looked in help and API help - can't find it. (using 04 rite now.) Searched online api help and can't find. Please give more detail?

Assemblies,

Sorry, I was in 2005. But,,,, I can't, for the life of me, figure out why I can't find the same example in 2004. I looked at the methods and they were available in 2001+ or so. Anyway, I have listed the example here for you. I don't know just ow it will parse out the lines, so pay attention. Or, let me know and I will email it directly to you.

WT

Get Names of Open Documents Example (VB) This example shows how to get the name of the documents open in a SolidWorks session.

'-------------------------------------

'

' Preconditions: SolidWorks application is running.

'

' Postconditions: None

'

'-------------------------------------

Option Explicit

Public Enum swDocumentTypes_e

swDocNONE = 0 ' Used to be TYPE_NONE

swDocPART = 1 ' Used to be TYPE_PART

swDocASSEMBLY = 2 ' Used to be TYPE_ASSEMBLY

swDocDRAWING = 3 ' Used to be TYPE_DRAWING

End Enum

Sub main()

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swModelTitle As SldWorks.ModelDoc2

Dim swModelPath As SldWorks.ModelDoc2

Dim cTitle As New Collection

Dim vTitle As Variant

Dim cPath As New Collection

Dim vPath As Variant

Set swApp = Application.SldWorks

Set swModel = swApp.GetFirstDocument

While Not swModel Is Nothing

' Assembly components are opened, but are not visible

' until opened by the user

Debug.Print swModel.GetPathName & " [" & swModel.Visible & "]"

Debug.Print " " & swModel.GetTitle & " [" & swModel.GetType & "]"

' The document name contains a filename extension

' if the document has been already saved

' and is subject to Microsoft Explorer setting;

' the document name does not contain a

' filename extension if the document has not been saved;

' ModelDoc2::GetPathName is blank until the file is saved

cTitle.Add swModel.GetTitle

cPath.Add swModel.GetPathName

Set swModel = swModel.GetNext

Wend

Debug.Print "--------------------------"

For Each vTitle In cTitle

Set swModelTitle = swApp.GetOpenDocument(vTitle): Debug.Assert Not swModelTitle Is Nothing

Debug.Print swModelTitle.GetPathName & " [" & swModelTitle.Visible & "]"

Debug.Print " " & swModelTitle.GetTitle & " [" & swModelTitle.GetType & "]"

Next vTitle

Debug.Print "--------------------------"

For Each vPath In cPath

Set swModelPath = swApp.GetOpenDocument(vPath)

If Not swModelPath Is Nothing Then

Debug.Print swModelPath.GetPathName & " [" & swModelPath.Visible & "]"

Debug.Print " " & swModelPath.GetTitle & " [" & swModelPath.GetType & "]"

End If

Next vPath

Debug.Print "--------------------------"

End Sub

'-------------------------------------

message

"Wayne Tiffany" wrote in news: snipped-for-privacy@uni-berlin.de:

I seem to remember reading in some release notes somewhere that a lot of examples were added to the API help for 05. The must be a new one.

I posted something not too long ago. Do a search on this group under my name and "Close All Open Documents" and you should find the code.

The SW sample was kinda sketchy, so I ended up rewriting their code.

Evan

message

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required