Je ne connais rien aux macros et j'aimerais savoir si c'est possible de faire une macro d'export DXF qui exporte tous les feuillets d'un mise en plan dans des fichiers séparés en gardant le nom des feuillets.
Après recherche sur le forum j'ai trouvé ce sujet avec la macro en pièce jointe, qui est ce que je recherche dans le principe, seulement elle fait les PDF et non les DXF:
Est-ce qu'une bonne âme du forum pourrait me modifier cette macro pour remplacer le PDF par le DXF. Est-ce que la macro va garder les options de la fonction "enregistrer sous" de SolidWorks que j'utilise quand je le fais manuellement comme l'utilisation d'un fichier de projection ?
Je ne suis pas certain de comprendre le message précédent.
C'est la macro PDF fait et la macro DXF devrait faire que l'on doit comprendre?
Je n'ai pas ouvert la macro mais s'il y a simplement eu un changement d'extension de fichier sur l'ensemble du code, ça ne fait logiquement qu'enregistrer sous un autre format.
La macro "pdf_page_par_page.swp" crée 1 fichier par feuille de mise en plan et intègre dans le nom du fichier PDF le nom du fichier de mise en plan + le nom de la feuille
Par exemple, si le fichier de la mise en plan s'appelle "TOTO" et possède 2 feuilles, "PLAN" et "Rep A", la macro PDF fait:
1 fichier "TOTO_PLAN" avec uniquement la feuille "PLAN"
1 fichier "TOTO_Rep A" avec uniquement la feuille "Rep A"
Pour ma part, je suis paramétré sur "Exporter toutes les feuilles dans un fichier" et je n'ai aucun problème.
Il n'y a que si le paramétrage est sur "Exporter toutes les feuilles dans des fichiers séparés" où l'export génère 4 fichiers.
Ce que j'ai pu constater également, c'est qu'il faut forcer le changement de paramétrage deux fois pour que ce soit pris en compte correctement (bug probable de SW2020).
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim sPathname As String
Dim vSheetName As Variant
Dim nErrors As Long
Dim nWarnings As Long
Dim i As Long
Dim bRet As Boolean
Dim lParam As Long
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
lParam = swApp.GetUserPreferenceIntegerValue(swDxfMultiSheetOption)
'Changement paramétrage export dxf si différent de feuille active
If lParam <> 0 Then
bRet = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swDxfMultiSheetOption, swDxfMultisheet_e.swDxfActiveSheetOnly)
End If
sPathname = swModel.GetPathName
sPathname = Left(sPathname, Len(sPathname) - 7)
vSheetName = swDraw.GetSheetNames
For i = 0 To UBound(vSheetName)
bRet = swDraw.ActivateSheet(vSheetName(i))
bRet = swModel.SaveAs4(sPathname & "_" & vSheetName(i) & ".dxf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, nErrors, nWarnings)
Next i
' Retour à la Feuille 1
bRet = swDraw.ActivateSheet(vSheetName(0))
' Remise en place du paramétrage initial
bRet = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swDxfMultiSheetOption, lParam)
End Sub