Export en dxf de l'onglet courant d'une mise en plan solidworks

Bonjour

J'ai cherché et je n'ai pas trouvé une petite macro qui exporte l'onglet courant d'une mise en plan solidworks au format dxf (pour découpe laser) avec comme nom de fichier le nom exacte de l'onglet de plan courant

Quelqu'un aurait la soluce ?

A noter que je suis nul en programmation VBA

Merci d'avance

Salut,

regarde cette macro, essaye et dit moi si cela te va

Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim montab As Variant
Dim montab2 As Variant
Dim montab3 As Variant
Dim interm As String
Dim nom As String
Dim chemin As String
Dim name As String
Dim FilePath        As String
Dim PathSize        As Long
Dim PathNoExtension As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

FilePath = swModel.GetPathName
PathSize = Strings.Len(FilePath)
PathNoExtension = Strings.Left(FilePath, PathSize - 7)

montab = Split(swModel.GetPathName, "\", -1)
interm = montab(UBound(montab))
nom = Mid(interm, 1, Len(interm) - 7)
montab2 = Split(nom, ".", 2)
nom = montab2(0)

'montab3 = Split(nom, "$", 2)
'nom = montab3(1)

chemin = PathNoExtension & ".dxf" 'format dan lequel tu veu enregistrer
'cheminMEP = swModel.GetPathName
'NomFichierComplet = Mid(cheminMEP, 1, Len(cheminMEP) - 7)
'Elements = Split(NomFichierComplet, "\", -1)
'NomFichierComplet = Elements(0)

'MessAlert = MsgBox("Accepter vous ce fichier ? " + NomFichierComplet, vbYesNo)
'If MessAlert = vbNo Then Exit Sub
name = nom & " - Feuille1"
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.SaveAs2 chemin, 0, True, False
Part.Save2 False
Set Part = Nothing
swApp.CloseDoc swModel.GetTitle
'Set swModel = Nothing: Set swApp = Nothing
 
End Sub

 

 

Bonjour gwygwy

Merci , ça fonctionne !

Mais ça sauvegarde avec le nom de fichier et non avec le nom de l'onglet en cours

Est-ce que la modif est possible ?

Merci d'avance

 

Salut,

je ne suis pas un spécialiste donc j'ai pu mettre le nom du document et le nom de la feuille mais pas mieux.

Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim montab As Variant
Dim montab2 As Variant
Dim montab3 As Variant
Dim interm As String
Dim nom As String
Dim nom2 As String
Dim chemin As String
Dim name As String
Dim FilePath        As String
Dim PathSize        As Long
Dim PathSizeTitle   As Long
Dim PathNoExtension As String
Dim PathNoExtension2 As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

FilePath = swModel.GetPathName
PathSize = Strings.Len(FilePath)
PathNoExtension = Strings.Left(FilePath, PathSize - 7)


nom2 = swModel.GetTitle

montab = Split(swModel.GetPathName, "\", -1)
interm = montab(UBound(montab))
nom = Mid(interm, 1, Len(interm) - 7)
montab2 = Split(nom, ".", 2)
nom = montab2(0)

PathSizeTitle = Strings.Len(nom)
PathNoExtension2 = Strings.Left(PathNoExtension, PathSize - PathSizeTitle - 7)

'montab3 = Split(nom, "$", 2)
'nom = montab3(1)

chemin = PathNoExtension2 & nom2 & ".dxf" 'format dan lequel tu veut enregistrer
'cheminMEP = swModel.GetPathName
'NomFichierComplet = Mid(cheminMEP, 1, Len(cheminMEP) - 7)
'Elements = Split(NomFichierComplet, "\", -1)
'NomFichierComplet = Elements(0)

'MessAlert = MsgBox("Accepter vous ce fichier ? " + NomFichierComplet, vbYesNo)
'If MessAlert = vbNo Then Exit Sub
'name = nom & " - Feuille1"
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.SaveAs2 chemin, 0, True, False
Part.Save2 False
Set Part = Nothing
'swApp.CloseDoc swModel.GetTitle
Set swModel = Nothing: Set swApp = Nothing
 
End Sub

 

@gwygwy la macro proposé c'est loin d'être clean au niveau code,  doublon, partie de code inutile... Et de plus je ne vois pas comment tu récupère le Nom de la feuille . Le seul nom de feuille est tapé à la mano "Feuille1"

Pour exporter le fichier avec le nom de l'onglet voir ce sujet auquel je t'ai répondu sans savoir si la réponse te convenais ou pas.

https://www.lynkoa.com/forum/solidworks/export-diff%C3%A9renci%C3%A9-en-pdf-et-dxf-des-onglets-de-mise-en-plan-par-une-macro

Au besoin il est adaptable sans mettre la condition si Découpe présent dans le nom de l'onglet et sans l'enlever du nom de fichier, suivant besoin.

Mais en général on évite d'ouvrir 2 sujets très proche ou identique.

 

Salut @sbadenis 

Oui le code n'est pas clean, je ne suis pas un pro.J'ai modifié une macro existante ou il reste du code qui ne sert à rien, mais je le garde au cas ou j'en aurais besoin dans une autre macro.

Et non il n'est pas tapé à la mano comme tu dit il y as un ' devant la ligne.Donc cette ligne ne sert à rien.

Je recupère avec get.title, c'est tout ce que j'ai trouvé.Mais si tu as une macro qui marche pour son cas, fais lui tu as l'air de bien coder.

1 « J'aime »

@gwygwy pas de soucis, c'était juste pour toi! Et effectivement j'avais pas vue le get.title, mais en soit tu récupère le nom du document + le nom de la feuille active

Pour récupérer le nom de chaque feuille et exporter chaque feuille avec le nom de la feuille comme nom d'export il faut obligatoirement créer une boucle sur les feuilles comme sur la macro fournit dans le lien. Si ça t'intéresse je t'invite a regarder, il y a rien de bien compliqué, il y a 2 ans je n'avais aucune connaissance en vba et c'est en tâtonnant que je m'y suis mis.

Pour la macro j'en ai fais une dans l'autre sujet mais pas de réponse @Fennec_Flegmatique semble être aux abonnés absent!

Les amis, je ne suis pas aux abonnés abscents

Je vous remercie pour vos contributions et au temps que vous passez à me répondre

J'avance dans la compréhension des codes (je suis béotien) , mais c'est un peu long

Je n'ai pas en core résolu mon sujet

Je vous ferais signe si je trouve ou si je vale !