Witam
Z mojej strony używam tego typu kodu, ale nie w interakcji z Solidworks PDM (użytkownicy mają dostępne makro, by wprowadzać zmiany podczas modyfikacji planów).
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
Być widzianym integrującym go z akcją przez workflow, ale jednocześnie myśleć, że folder vault zawsze ma najnowszą wersję w pamięci podręcznej użytkownika, bo inaczej nie zastosuje się najnowszej mapy bazowej.
Z mojej strony wszystkie szablony dokumentów SW są gotowe do wyjęcia.