ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
DSDevas Sheth04/07/2019

Hello,

I started to learn API, It will be great help if someone solve this issue.

Making a macro for "Pack & Go" Assembly with parts and drawings, I used below code that I found on internet it works to pack & go files with same name and 1st letter lower case.

Requirement

1) 1st Letter should be Upper case (or no change in name style)

2) Assembly, Parts and drawings have same format  and that is for example as below (important for pack and go : 1234567-8 Rev.1)

"PART ASSEMBLY 1234567-8 Rev.1.SLDASM", 

"PART ASSEMBLY 1234567-8 Rev.1.SLDDRW"

"PART-1 1234567-8 Rev.1.SLDPRT"

"XYZ-2 1234567-8 Rev.1.SLDPRT"

"ABC 1234567-8 Rev.1.SLDPRT"

so user form should have 3 different entry for this, 1st for 7 digit number that is order number(1234567), 2nd for sub section number(8) and last is for revision.

3) we have same custom property in assembly and parts that need to be link with pack & go

- Number : "1234567"

-Sub section : 8

- Revision - Rev.1

Const strOutputPath As String = "C:\Users\PC\Downloads\test\"

Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swPackAndGo As SldWorks.PackAndGo
Dim intDocCount As Integer
Dim vPathNames As Variant
Dim strSetPathNames() As String
Dim i As Integer
Dim vStatus As Variant

   Set swApp = Application.SldWorks
   Set swModel = swApp.ActiveDoc

If swModel Is Nothing Then
swApp.SendMsgToUser "Please open an assembly or drawing."
Exit Sub
ElseIf swModel.GetType <> swDocASSEMBLY And swModel.GetType <> swDocDRAWING Then
swApp.SendMsgToUser "Please open an assembly or drawing."
Exit Sub
End If

Set swPackAndGo = swModel.Extension.GetPackAndGo

intDocCount = swPackAndGo.GetDocumentNamesCount
ReDim strSetPathNames(intDocCount - 1) As String

swPackAndGo.GetDocumentNames vPathNames

swPackAndGo.SetSaveToName True, strOutputPath

swPackAndGo.IncludeDrawings = True

vStatus = swModel.Extension.SavePackAndGo(swPackAndGo)

End Sub

Warm Regards.