Export assemblage vers .DWG

Bonjour,

Est il possible d'exporter une vue d'un assemblage au format .DWG ? (J'arrive avec une pièce, mais pas avec un assemblage)

Merci

Bonne journée

Bonjour,

Il faudrait temporairement enregistrer votre assemblage en PART pour pouvoir l'exporter en DWG.

1 « J'aime »

En faite, pour le moment je passe par la mise en page.

Mais je voulais savoir si il y avait plus rapide justement.

A moins d'avoir loupé quelque chose, je ne pense pas.

Attendez d'autre réponse.

1 « J'aime »

en passant par une mise en plan ;-)

il suffit de sauvegarder l'assemblage en pièce et de sélectionner tous les composants, puis de traiter cette nouvelle pièce comme n'importe quelle pièce traditionnelle (export vers DXF, DWG)

@+ ;-)

1 « J'aime »

En gros c'est déjà ce que je fais ^^

Il n'y a donc pas plus simple plus rapide, directement de l'assemblage.

Merci pour vos réponses ;)

Bonjour,

Pour éviter toutes ces étapes tu peux aussi te faire une petite macro qui automatise la transformation de l'asm en prt puis l'exporte en DWG, cela ne te fera qu'un clic pour réaliser ce que tu veux.

Pour la sauvegarde de l'asm en prt c'est un simple Part.Saveas3(nomprt, 0, 0) à faire et pour l'export en DWG tu dois pouvoir t'aider de la macro  : http://help.solidworks.com/2016/english/api/sldworksapi/export_part_to_dwg_example_vb.htm

Cordialement,

3 « J'aime »

Voir la macro jointe pour inspiration.

Cordialement,


asmtodwg.swp
2 « J'aime »

La macro précédente utilise la fonction "ExportFlatPatternView" qui est obsolète et qui ne transfert que la vue de face, celle-ci utilise la fonction de remplacement "ExportToDWG2" et te permet de créer un DWG de chaque vue, je pense que cela correspondra plus à ce que tu souhaite faire.

Cordialement,


asmtodwg-v2.swp
1 « J'aime »

Merci beaucoup,

Je ne me siuis jamais servis de la Macro tu peux m'expliquer en deux mots ?

Merci

asmtodwg-v2.swp ne marche pas j'ai l'impression 


screen_shot_10-17-17_at_09.26_am.jpg

Bonjour,

Sur quelle version de SW es-tu ? Les librairies chargées dans ma macro sont pour SW2017.

Dans SW, tu peux faire : Outils / Macro / Nouvelle et copier le code ci-dessous en remplacement de celui qui est écrit automatiquement dans la nouvelle macro puis tu charge un assemblage test dans SW et enfin tu fais  F5 dans la fenêtre de Visual Basic.

Cordialement,

Dim swApp As Object
Public swModel As SldWorks.ModelDoc2

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

    Set swApp = Application.SldWorks
    
    Set swModel = swApp.ActiveDoc
    Set Part = swApp.ActiveDoc
    Dim myModelView As Object
    Set myModelView = Part.ActiveView
    myModelView.FrameState = swWindowState_e.swWindowMaximized

    'on récupére le document actif
    Set swModel = swApp.ActiveDoc
    
    If Not swModel Is Nothing Then
       'on récupére l'emplacement du fichier
        stPath = swModel.GetPathName

        'on récupére le nombre de caractére jusqu'au . de l'extension
        lgFichier = InStrRev(stPath, ".", -1, vbTextCompare) - 1
        'on récupére le chemin sans l'extention
        If lgFichier > 0 Then
              stPath = Left(stPath, lgFichier)
        End If
        
        'si le document est un assemblage
        If swModel.GetType = swDocASSEMBLY Then
            'on créer le SLDPRT
            longstatus = Part.SaveAs3(stPath + ".sldprt", 0, 0)
            'On ferme le SDLASM
            swApp.CloseDoc swModel.GetTitle
            'On ouvre le SLDPRT
            Set swModel = swApp.OpenDoc6(stPath + ".sldprt", 1, 0, "", longstatus, longwarnings)
        End If
        
        'si le document est une pièce
        If swModel.GetType = swDocPART Then
            'On l'exporte en DWG
            ExportDWG
        End If
    End If

End Sub

Sub ExportDWG()
    Dim swPart As SldWorks.PartDoc
    Dim sModelName As String
    Dim sPathName As String
    Dim varAlignment As Variant
    Dim dataAlignment(11) As Double
    Dim varViews As Variant
    Dim dataViews(5) As String
    Dim options As Long

    Set swModel = swApp.ActiveDoc

    sModelName = swModel.GetPathName
    sPathName = swModel.GetPathName
    sPathName = Left(sPathName, Len(sPathName) - 6)
    sPathName = sPathName + "dwg"

    Set swPart = swModel

    dataAlignment(0) = 0#
    dataAlignment(1) = 0#
    dataAlignment(2) = 0#
    dataAlignment(3) = 1#
    dataAlignment(4) = 0#
    dataAlignment(5) = 0#
    dataAlignment(6) = 0#
    dataAlignment(7) = 1#
    dataAlignment(8) = 0#
    dataAlignment(9) = 0#
    dataAlignment(10) = 0#
    dataAlignment(11) = 1#

    varAlignment = dataAlignment

    dataViews(0) = "*En cours"
    dataViews(1) = "*Face"
    dataViews(2) = "*Droite"
    dataViews(3) = "*Gauche"
    dataViews(4) = "*Dessus"
    dataViews(5) = "*Arrière"

    varViews = dataViews

    swPart.ExportToDWG2 sPathName, sModelName, swExportToDWG_ExportAnnotationViews, False, varAlignment, False, False, 0, varViews
End Sub

 

1 « J'aime »

Bonjour, moi j'enregistre l'ensemble en pièce puis je fais un dwg.

Cordialement

1 « J'aime »

Je suis en 2016 sp3

Ca ne marche toujours pas.


screen_shot_10-19-17_at_11.49_am.jpg

Bonjour,

C'est là que le vba m'énerve un peu ...

Essaye en remplaçant les lignes :

'si le document est une pièce
If swModel.GetType = swDocPART Then
     'On l'exporte en DWG
     ExportDWG
End If

par :

'si le document est une pièce
If swModel.GetType = swDocPART Then
     'On l'exporte en DWG
     ExportDWG swModel
End If

Puis la ligne :

Sub ExportDWG

Par :

Sub ExportDWG(swModel As SldWorks.ModelDoc2)

Et encore la ligne (celle qui est dans le Sub ExportDWG(.....) :

Set swModel = swApp.ActiveDoc

Par :

'Set swModel = swApp.ActiveDoc

Charge ton assemblage puis lance la macro par F5

Cordialement,

1 « J'aime »

Super merci d.roger,

ca marche :D

Par contre ça me génère un fichier du coup

Comment puis je faire pour avoir la meme macro pour les pièces seul ?

j'ai moyen de modif la macro seul pour apprendre

Bonjour,

Pour les pièces seules c'est la même macro puisque dans celle-ci je transforme l'asm en prt puis je lance la transformation en dwg sur la prt donc tu charges une pièce puis tu lances la macro et tu obtiens normalement  les 6 DWG créés dans le dossier Windows de la pièce, du moins pour moi ça marche aussi.

Cordialement,

1 « J'aime »

Merci beaucoup pour votre aide ;)