Diviser les Plan multi feuille assemblage et pièces

Bonjour, 

dans le cadre d'une reprise de plan historique creer dans des dossier Windows, et transféré dans le pdm depuis quelque années, j'aimerais savoir si l'un d'entre vous aurait une astuce ou une macro afin "d'exploser" de diviser des mise en plans multi-feuille 

historiquement le BE éditer une mise en plan dans laquelle on avait l'assemblage et après a chaque feuille le plans de détaille des pièce comprise dans cette assemblage.

La méthodologie ayant évolué suite au passage via PDM et des tache automatisé, puis le changement de fournisseur puis le changement de sous traitant etc .... aujourd'hui lorsque nous "copions" un ancien assemblage nous avons ces fameux plan multi-feuilles qui ne correspondent pas au process actuelle.

Est ce que l'un d'entre vous ce serrait déjà confronté au problème et aurait trouver une solution autre que de recréer chaque plan de pièce en supprimant au fur et a mesure les feuilles dans le plan dit général?

Actuellement nous utilisons smartdrawing pour générer les fond de plan de chaque pièce, puis nous copions les feuilles du multi feuille dans chaque fichier générer , archivage puis traitement des fond plans via intégrations.

inconveniant => opérations humaine qui parfois mélange  les mise en plans 

 

Bonjour,

Voir exemple ci-joint pour séparer une MEP multi-feuille en plusieurs feuilles.

https://www.javelin-tech.com/blog/2014/03/save-multi-sheet-as-its-own-drawing-or-combine-multiple-drawings/

Il est sans aucun doute possible d'automatisé cela via macro si tu as quelques connaissances en VBA.

Pour la macro il faut aussi savoir comment tu nomme chaque MEP issue de chaque feuille.(nom de la feuille?)

Et avec un peu de chance il sera suffisant de récupérer une macro et de la modifier légèrement pour renommer tes MEP comme tu le souhaite.

 

Edit: voici un autre lien oublié dans le précédent pour exemple macro (mais pas trouvé la macro qui va avec)

https://www.youtube.com/watch?v=lkU1acf2PNg

 

1 « J'aime »

Merci pour le retour, 

la video youtube est ce que je recherche

comment je télecharge la macro "save drawing sheet file.swp" !!! 

je recherche si je la trouve je la poste

 

Après quelques recherche pas trouvé, mais si quelqu'un a du temps a y consacré la solution serait de copier l'une des feuille de la multi-feuille, puis de la coller dans une nouvelle feuille et de l'enregistrer avec le nom de cette feuille.

 

Sinon j'avais cette macro modifier depuis une macro pour export pdf mais elle exporte toute les feuilles (pas uniquement celle que l'on souhaite) et il faudrait ajouter la suppression de toute les feuille non désirées.

'Description: Macro to export Drawing Sheets As PDF with sheet name as file name.

'Precondition: Any active drawing file

'Postconditions: PDF file in the same location as drawing file.


' Please back up your data before use and USE AT OWN RISK

' This macro is provided as is.  No claims, support, refund, safety net, or
' warranties are expressed or implied.  By using this macro and/or its code in
' any way whatsoever, the user and any entities which the user represents,
' agree to hold the authors free of any and all liability.  Free distribution
' and use of this code in other free works is welcome.  If any portion of
' this code is used in other works, credit to the authors must be placed in
' that work within a user viewable location (e.g., macro header).  All other
' forms of distribution (i.e., not free, fee for delivery, etc) are prohibited
' without the expressed written consent by the authors.  Use at your own risk!
' ------------------------------------------------------------------------------
' Written by: Deepak Gupta (http://gupta9665.wordpress.com/)
' -----------------------------------------------------------------------------

Sub main()

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swDraw                  As SldWorks.DrawingDoc
Dim swSheet                 As SldWorks.Sheet
Dim vSheetNameArr           As Variant
Dim vSheetName              As Variant
Dim bRet                    As Boolean
Dim swExportPDFData         As SldWorks.ExportPdfData
Dim lErrors                 As Long
Dim lWarnings               As Long

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Is document active?

If swModel Is Nothing Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If
 

' Is it a Drawing document?

If swModel.GetType <> swDocDRAWING Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If


Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet

vSheetNameArr = swDraw.GetSheetNames
For Each vSheetName In vSheetNameArr

bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet

swDraw.ViewZoomtofit2

Set swExportPDFData = swApp.GetExportFileData(1)
swExportPDFData.SetSheets swExportData_ExportSpecifiedSheets, Nothing
'swModel.Extension.SaveAs vSheetName + ".pdf", 0, 0, swExportPDFData, lErrors, lWarnings
swModel.Extension.SaveAs Path & "\" & vSheetName & ".slddrw", 0, 0, Nothing, lErrors, lWarnings
Next vSheetName

End Sub

 

1 « J'aime »

lol j'ai eu la meme idée j'ai ouvert une macro export  multifeuille en pdf separé 

Je vais regarder si je peux choper les bride de code pour cette histoire de slddrw remplaçant le .pdf

1 « J'aime »

Bonjour,

Etant donné que vous avez la suite myCADtools vous pouvez utiliser l'outil "Integration" qui doit répondre à votre attente.

https://help.visiativ.com/mycadtools/2021/fr/Integration129.html

Ci-joint un exemple d'action 

- Condition si le document est une MEP, si le nbre de feuille est différent de 1

 - Alors on fait l'opération de sauvegarder chaque feuille dans une nouvelle MEP

Cordialement


exemple.mcact
3 « J'aime »

Je viens de coder rapidement quelques chose qui semble fonctionner.

Il suffit de mettre dans la 2ème ligne le chemin vers ton fichier drwdot.

Ensuite il faudra l'amélioré avec quelqes sécurité pour ne pas la lancé n'importe comment.

Pour l'instant il faut impérativement ouvrir la MEP puis lancer la macro (ne surtout pas ouvrir un fichier entre temps sous peine de retrouver tes fichiers  extrait au même endroit que ton fichier ouvert)

'Mettre ci-dessous le chemin vers le modèle de Fond de plan
Const sDrTemplateLaser As String = "U:\Modèle de documents\Mise en plan - Fonds de plan\A4-DECOUPE-b.DRWDOT"

Sub main()

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swModel2                 As SldWorks.ModelDoc2
Dim swDraw                  As SldWorks.DrawingDoc
Dim swDraw2                 As SldWorks.DrawingDoc
Dim swSheet                 As SldWorks.Sheet
Dim vSheetNameArr           As Variant
Dim vSheetName              As Variant
Dim bRet                    As Boolean
Dim swExportPDFData         As SldWorks.ExportPdfData
Dim lErrors                 As Long
Dim lWarnings               As Long

Dim vSheetName2              As Variant
Dim i                       As Integer

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Is document active?

If swModel Is Nothing Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If
 

' Is it a Drawing document?

If swModel.GetType <> swDocDRAWING Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If


Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet

vSheetNameArr = swDraw.GetSheetNames
For Each vSheetName In vSheetNameArr

bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet

swDraw.ViewZoomtofit2


            swDraw.ActivateSheet vSheetName
            'Debug.Print "Feuille active:" & sheetName
            bRet = swDraw.Extension.SelectByID2(vSheetName, "SHEET", 0, 0, 0, False, 0, Nothing, 0)
            swModel.EditCopy
            Set swDraw2 = swApp.NewDocument(sDrTemplateLaser, 0, 0, 0)
            'On supprime la 1ère feuille existantes
            vSheetName2 = swDraw.GetSheetNames
            Set swModel2 = swApp.ActiveDoc
            Set swExt = swModel2.Extension
            
            
            bRet = swDraw2.PasteSheet(swInsertOption_MoveToEnd, swRenameOption_No)
            swDraw2.GetCurrentSheet.SetName vSheetName
            Set swModel2 = swApp.ActiveDoc
            
            '*********************************
            
            'On supprime la 1ère feuille existantes
            For i = 0 To UBound(vSheetName2) 'Boucle sur toutes les feuilles
            Debug.Print vSheetName2(i)
                If i = 0 Then
                    bRet = swExt.SelectByID2(vSheetName2(i), "SHEET", 0, 0, 0, False, 0, Nothing, 0)
                    'Supprimer la sélection
                    bRet = swExt.DeleteSelection2(0)
                End If
            Next
            
            '********************************
            swModel2.Extension.SaveAs Path & "\" & vSheetName & ".slddrw", 0, 0, Nothing, lErrors, lWarnings
Next vSheetName

End Sub

 

Alors la je suis comblé

entre la macro et la solution integration !

Désolé Jm Savoyat je met sbadenis comme meilleur reponse "pour ceux qui n'ont pas la suite mycad" 

mais j'adore travaillé avec integration , de plus je peux l'incorporer dans une tache automatisé de pdm aprés verification bien sur .

2 « J'aime »

@g.casters pas de soucis ! wink

1 « J'aime »

@JMSAVOYAT

exemple fichier d'une version superieur .... Je croyait avoir la derniere mise a jour en 2021 SP2!  (je veux bien la beta )

@g.casters 

Un petit peu de patience la version myCADtools 2022 SP0 devrait être disponible courant de la semaine prochaine. On paufine les derniers détails ! smiley

Voici une capture de l'exemple.

1 « J'aime »

seul outil ou j'installe les SP0 depuis l'origine pour dire mon niveau de patience .....

laugh effectivement !

Mais cette fonctionnalité dans l'exemple que j'ai essayé de vous poster est déjà disponible depuis longtemps !

1 « J'aime »