Creation de macro pour recharger le fond de plan

Bonjour,

je voudrais faire une mise a our de mes fond de plan stockés dans un PDM, je précise sans les mycad tools ou my pdm tools.
es ce quelqu’un aurais déjà fait une macro dans ce style ?
Je m’y connais pas trop en VBA, mais retoucher la macro pour les noms de fichiers ou les chemins d’accès ça j’y arrive. voici mes données de base.

  • tout est stocké dans un PDM, même les modèles de plan.
  • le pdm est sous C: donc chemin d’accès unique pour tous les utilisateurs, les templates et fond de plan sont dans le même dossier.
  • le modèle (drwdot) appelle 5 fond de plan différents (slddrt).
  • les noms de fichier changent pas je les met a jour dans le pdm.
  • solidworks 2022 pour le moment.

en manuel je fais propriété sur la fond de plan, je reste sur le fond de plan sélectionné, je fais recharger et cela me met le cartouche a jour.

L’idée est de créer une macro qui fait ca automatiquement (rechargement et enregistrement) puis d’intégrer cette macro dans un flux de travail PDM pour faire la mise a jour en masse. et comme cela je peux cumuler avec ma génération de pdf dans le flux également.

Je sais pas si cela est possible ou si quelqu’un l’a fait, merci d’avance pour votre aide.

Bonjour,

Pour ma part j’utilise ce type de code mais pas en interaction avec Solidworks PDM (les utilisateurs ont la macro à disposition pour effectuer le changement lors de la modification des plans).

Dim swApp           As SldWorks.SldWorks
Dim swModel         As SldWorks.ModelDoc2
Dim swDraw          As SldWorks.DrawingDoc
Dim bRet            As Boolean
Dim vSheetNameArr   As Variant
Dim vSheetName      As Variant
Dim vSheetProps     As Variant
Dim stemplatepath   As String


Const cDirTemplate = "xxx" 'Mettre le chemin d'accès aux fonds de plan slddrt
Const cTemplateA4 = "A4 - iso.slddrt"
Const cTemplateA3 = "A3 - iso.slddrt"
Const cTemplateA2 = "A2 - iso.slddrt"
Const cTemplateA1 = "A1 - iso.slddrt"
Sub ReloadTemplate()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
vSheetNameArr = swDraw.GetSheetNames
    For Each vSheetName In vSheetNameArr
        bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet
        Set swSheet = swDraw.GetCurrentSheet
        vSheetProps = swSheet.GetProperties
        If vSheetProps(0) = "7" Then
            stemplatepath = cDirTemplate & cTemplateA4
            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
            swSheet.ReloadTemplate False
            swModel.ForceRebuild3 (False)
        ElseIf vSheetProps(0) = "8" Then
            stemplatepath = cDirTemplate & cTemplateA3
           bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
            swSheet.ReloadTemplate False
            swModel.ForceRebuild3 (False)
        ElseIf vSheetProps(0) = "9" Then
            stemplatepath = cDirTemplate & cTemplateA2
            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
            swSheet.ReloadTemplate False
            swModel.ForceRebuild3 (False)
        ElseIf vSheetProps(0) = "10" Then
            stemplatepath = cDirTemplate & cTemplateA1
            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
            swSheet.ReloadTemplate False
            swModel.ForceRebuild3 (False)
        End If
    Next
bRet = swDraw.ActivateSheet(vSheetNameArr(0))
End Sub

A voir pour l’intégrer dans une action via le workflow mais bien penser aussi à ce que le dossier du coffre soit toujours avec la dernière version dans le cache des utilisateurs sinon ça n’appliquera pas le dernier fond de plan.
Pour ma part, tous les modèles de document SW sont hors coffre.

1 « J'aime »