Pour intégrer les mises en plan tu dois ajouter :
swPackAndGo.IncludeDrawings = True
Voir ici.
A remrem, oui cette ligne est bien mise dans la macro proposée :
' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
swPackAndGo.IncludeDrawings = True
swPackAndGo.IncludeSimulationResults = True
swPackAndGo.IncludeToolboxComponents = True
mais effectivement, lors du changement de nom des fichiers inclus dans le PackAndGo, le nom du fichier 2D n'est pas pris en compte, je n'ai pas trouvé de fonction permettant de renommer ces plans de manière automatique, comme on peut trouver dans la fonction "Sélectionner / Remplacer..." du Pack and Go :
Si tu as cette fonction via les API, je suis aussi preneur...
Cordialement,
Merci de vos réponses désolé pour la repose tardive,
cela fonctionne au niveau de l'exclusion des pieces sans "xxxxx" par contre cela me copie les plans des pieces sans "xxxxx", est -ce possible de les enlever?
Bonjour,
Je pense que cela n'est pas possible, ou tout au moins je connais pas la fonction permettant de le faire, mais tu peux prévoir dans ta macro de récupérer le nom de tous ces fichiers (sans oublier les préfixes et suffixes) au moment du pgFileNames(i) = ""
puis de supprimer tous les plans concernés, après la fonction de PackAndGo, par les fonctions VBA standard de gestion des fichiers.
Cordialement,
oui au final c'est ce que je viens de faire.
par contre quand je lance la macro depuis solidworks cela fonctionne mais je l'excute depuis le fichier excel cela ne fonctionne pas.
Avez-vous une idée?
Donne nous ton code final dans Excel.
As tu exécuté en mode en pas à pas ?
j'ai pris le code SW que j'ai mis dans Excel
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModelDoc As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swPackAndGo As SldWorks.PackAndGo
Dim openFile As String
Dim pgFileNames As Variant
Dim pgFileStatus As Variant
Dim pgGetFileNames As Variant
Dim pgDocumentStatus As Variant
Dim status As Boolean
Dim warnings As Long
Dim errors As Long
Dim i As Long
Dim namesCount As Long
Dim myPath As String
Dim statuses As Variant
Sub main()
Set swApp = Application.SldWorks
' Open assembly
Set swModelDoc = swApp.ActiveDoc
'openFile = "C:\Users\DRO\Desktop\Nouveau dossier\Assemblage1.SLDASM"
'Set swModelDoc = swApp.OpenDoc6(openFile, swDocASSEMBLY, swOpenDocOptions_Silent, "", errors, warnings)
'Set swModelDoc = swApp.ActiveDoc
Set swModelDocExt = swModelDoc.Extension
' Get Pack and Go object
Set swPackAndGo = swModelDocExt.GetPackAndGo
' Get number of documents in assembly
namesCount = swPackAndGo.GetDocumentNamesCount
' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components
swPackAndGo.IncludeDrawings = True
swPackAndGo.IncludeSimulationResults = True
swPackAndGo.IncludeToolboxComponents = True
' Get current paths and filenames of the assembly's documents
'status = swPackAndGo.GetDocumentNames(pgFileNames)
' Get current save-to paths and filenames of the assembly's documents
status = swPackAndGo.GetDocumentSaveToNames(pgFileNames, pgFileStatus)
' Set document paths and names for Pack and Go
For i = 0 To (namesCount - 1)
If InStr(pgFileNames(i), "xxxxx") <> 0 Then
pgFileNames(i) = Replace(pgFileNames(i), "xxxxx", "85000")
Else
pgFileNames(i) = ""
End If
Next i
status = swPackAndGo.SetDocumentSaveToNames(pgFileNames)
' Set folder where to save the files
myPath = "G:\Intégration\BA\QRM\enregistrement\85000\"
status = swPackAndGo.SetSaveToName(True, myPath)
' Flatten the Pack and Go folder structure; save all files to the root directory
swPackAndGo.FlattenToSingleFolder = True
' Pack and Go
statuses = swModelDocExt.SavePackAndGo(swPackAndGo)
End Sub
Donc il doit te manquer des choses dans Outils / Références ... de l'éditeur de macros Excel !!!
Et il faut créer un objet Solidworks et s'y rattacher ce qui est fait automatiquement via les macros Solidworks mais pas à partir de Excel ...
Comment fait-on cela?
Ben !!!! Euh !!!! Comment dire !!!! Peut-être comme je te l'ai déjà indiqué lors de ta question qui se trouve ICI, dans ma première réponse du 24/01/2019, là ou il y a :
Sub Macro()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
Set swModel = swApp.ActiveDoc
....
End Sub
Sans oublier les références à mettre dans "outils / référence ....", notamment celle à "SLDWORKS xxxx type library".
Cordialement,
Bonjour,
au niveau des references j'ai bien les memes.
Par contre j'ai fait un appel de Solidworks par la fonction
Set swApp = Application.SldWorks
alors que la fonction qui marche est :
Set swApp = CreateObject("SldWorks.Application")
Quel est la difference entre Application.SldWorks et CreateObjet("SldWorks.Application")?
car j'ai des macro Excel qui fonctionne avec Application.SldWorks
Je vous remercie.
Great material,
If you want to replace the path too I could do it this way:
For i = 0 To (namesCount - 1)
If InStr(pgFileNames(i), "ActualName") <> 0 Then
pgFileNames(i) = Replace(pgFileNames(i), "ActualName", "NameToReplace")
End If
' If InStr(pgFileNames(i), myPath)
pgFileNames(i) = Replace(pgFileNames(i), "ParentFolder", "ParentFolder\ChildFolder")
Debug.Print pgFileNames(i)
'End If
Next i
independent of the path declared