Nous aurions besoin d'exporter des fichiers assemblage vers du DXF (échelle 1:1) Pas d'export de masse mais dans l'idée, ca serait plutôt un export en cours de conception
Premier soucis, comme vous le savez peut-être, il est impossible d'exporter directement un assemblage vers du DXF (en tout cas à ma connaissance sous 2017) On a peut être la possibilité de faire une macro, pour exporter vers un part puis export vers du DXF, ici deuxième soucis car nous n'avons aucune connaissance sur les macros
A notre disposition, nous avons des myCADtools ou du myPDMtools Mais nous ne connaissons pas trop toutes les capacités de ces outils.
Auriez vous des pistes à donner ? Merci d'avance, Séb
J'ai trouvé il y a longtemps cette macro sur le forum qui enregistre tout les fichiers d'un assemblage en PDF; si vous vous y connaissez vous pouvez l'adapter
Merci ac cobra 427 pour ton fichier Mais je n'arrive pas à la lancer, rien ne s'exécute j'ai l'impression, aucun fichier PDF ne se génère Et niveau édition de macro je suis une bille
Edit : Je viens de comprendre qu'il faut un plan drw déjà créé Du coup, la macro s'exécute
Il n'est pas possible d'exporter un assemblage vers un dxf il faut obligatoirement passer par une mise en plan avec le choix des vues à exporter.
Bien entendu il faudra ré-enregistrer la MEP au fur et à mesure de l'avancement.
Pas sûr qu'une macro te fasse gagner énormément de temps sur la question. il est aussi rapide de poser toi m^me tes 3 vues et d'exporter que d'appuyer sur un bouton et de laisser la macro faire.
Pour les outil MyCad même chose pas vraiment d'intérêt pour le sujet
Merci beaucoup gwygwy Voici une avancée déjà formidable !
Le DXF depuis l'assemblage se génère correctement Il faut juste que j'arrive à position l'assemblage en 0,0,0 (par forcément l'origine du 3D) Et à renommer le fichier
Est-ce possible depuis une macro d'avoir une boite de dialogue pour écrire le nom du fichier souhaité ? ou bien récupérer le nom d'une propriété SW du fichier ?
Donc, si je souhaite que le DXF généré soit nommé par "maValeur" Il faut que je modifie dans la macro envoyée par gwygwy le bloc Part.SaveAs ?
'--- Sauvegarde du dxf et fermeture de la MEP temporaire
Part.SaveAs PathNoExtension & ".DXF"
Part.ClearSelection2 True
Set Part = swApp.ActiveDoc
swApp.CloseDoc swDraw.GetTitle 'Quitte sans sauvegarder la MEP.
.
Je rencontre des difficultés également à positionner mon assemblage en 0,0,0 Par défaut, l'origine du DXF se met toujours au centre de mon assemblage
Oui il faut modifier le bloc Part.SaveAs pour recalculer la variable PathNoExtension.
Un petit exemple :
Dim maValeur As String
maValeur = InputBox("Ma question ?", "Mon titre", "Ma valeur par défaut")
Dim FilePath As String
Dim FileTitle As String
Dim PathSize As Long
Dim TitleSize As Long
Dim PathNoExtension As String
FilePath = Part.GetPathName
FileTitle = Part.GetTitle
PathSize = Strings.Len(FilePath)
TitleSize = Strings.Len(FileTitle)
PathNoExtension = Strings.Left(FilePath, PathSize - TitleSize)
MsgBox PathNoExtension & maValeur & ".dxf"
Le resultat est vraiment pas mal, Reste plus qu'a positionner l'ensemble en 0,0,0 Et a enregistrer le DXF dans un dossier en brut et non à l'empalcement du 3D
Qu'est-ce que tu entends par "Reste plus qu'a positionner l'ensemble en 0,0,0" ? une capture d'écran de ce que tu obtiens et de ce que tu voudrais serait la bienvenue.
Et pour enregistrer le dxf dans un dossier en brut il te faut retravailler la variable "PathNoExtension" à ta guise.
OK, donc à voir si quelque chose comme ce qui suit te convient :
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim retval As String
Dim FilePath As String
Dim FileTitle As String
Dim PathSize As Long
Dim TitleSize As Long
Dim PathNoExtension As String
Dim maValeur As String
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
'--- Création du nom du fichier
FilePath = swModel.GetPathName
FileTitle = swModel.GetTitle
PathSize = Strings.Len(FilePath)
TitleSize = Strings.Len(FileTitle)
PathNoExtension = Strings.Left(FilePath, PathSize - TitleSize)
maValeur = InputBox("Veuillez indiquer le nom du fichier dxf ?", "Macro Asm To DXF", "MonFichier")
PathNoExtension = PathNoExtension & maValeur & ".dxf"
'--- Calcul du décalage de l'origine
Dim vBox As Variant
Dim swAssy As SldWorks.AssemblyDoc
Dim X_max As Double
Dim X_min As Double
Dim Y_max As Double
Dim Y_min As Double
Dim Z_max As Double
Dim Z_min As Double
If swModel.GetType() <> swDocASSEMBLY Then Exit Sub
Set swAssy = swModel
vBox = swAssy.GetBox(swBoundingBoxIncludeRefPlanes)
X_max = vBox(3)
X_min = vBox(0)
Y_max = vBox(4)
Y_min = vBox(1)
Z_max = vBox(5)
Z_min = vBox(2)
Dim decalX As Double
Dim decalY As Double
decalX = (X_max - X_min) / 2
decalY = (Y_max - Y_min) / 2
'--- Création de la mise en plan
retval = swApp.GetUserPreferenceStringValue(swDefaultTemplateDrawing)
Set swDraw = swApp.NewDocument(retval, 0, 0, 0)
'--- Insertion de la vue
Set swView = swDraw.CreateDrawViewFromModelView3(swModel.GetPathName, "*Face", decalX, decalY, 0)
'--- Rend invisible les annotations de plis
swView.ShowSheetMetalBendNotes = False
'--- Force la vue à l'échelle 1:1
Dim swSheet As Sheet
Dim status As Boolean
Set swView = swDraw.GetFirstView
Set swSheet = swDraw.GetCurrentSheet
status = swSheet.SetScale(1, 1, True, True)
'--- Sauvegarde du dxf et fermeture de la MEP temporaire
swDraw.SaveAs PathNoExtension & ".DXF"
swDraw.ClearSelection2 True
swApp.CloseDoc swDraw.GetTitle
End Sub
Je n'ai pas géré le fait de sauvegarder le fichier dxf dans un autre dossier ...
Finalement, je viens de trouver la raison, Nous avons un squelette de plans qui sont hors 3D Et la conversion avec les Xmax Xmin... prennent en compte les plans
Le principe est de calculer les cotes du "BoundingBox" de l'assemblage et de déplacer la vue de la moitié de celles-ci puisque par défaut l'origine de la vue est le centre de l'assemblage.