Hallo
Ich persönlich verwende diesen Codetyp, aber nicht in Interaktion mit Solidworks PDM (die Nutzer haben das Makro zur Verfügung, um die Änderung vorzunehmen, wenn sie die Pläne ändern).
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
Es sollte gesehen werden, dass es über den Workflow in eine Aktion integriert wird, aber auch daran gedacht wird, dass der Tresorordner immer mit der neuesten Version im Benutzer-Cache liegt, sonst wird die neueste Basemap nicht angewendet.
Meinerseits sind alle SW-Dokumentvorlagen aus der Verpackung gefertigt.