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.