Hallo
Ich habe gerade "swModel.Save" auf einem einfachen SolidWorks-Makro getestet, das auf Solidworks mit einer offenen Ebene ausgeführt wird, und es aktualisiert die zugeordneten Variablen gut, wie ein einfaches Strg+S.
Hier ist der vollständige Code (Skript in der PDM-Aufgabe), danke:
Option Explizit
Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim boolstatus als boolescher Wert
Fehler so lange dimmen
Dim lWarnungen so lange
pdmVault als Objekt dimmen
Dim strFullPath als Zeichenfolge
Dim strFullPathWithoutExt As String
Dim strFolderPath als Zeichenfolge
Dim strFileType As String
Dim intFileType As Integer
Dim i As Integer
Dim strFileName As String
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim Msg, Stil, Titel, Ctxt, Antwort
Sub Main()
'Makro initialisieren
strFullPath = "<Dateipfad>"
strFolderPath = "<Pfad>"
'Erfasst nur den Dateinamen
i = InStrRev(strFullPath, "\")
strFileName = Rechts(strFullPath, Len(strFullPath) - i)
' Greift FullPath ohne die Erweiterung ab, um den Fehler mit UnlockFile und UPPERCASE anstelle von Kleinbuchstaben zu beheben (z. B. SLDDRW / slddrw)
strFullPathWithoutExt = Links (strFullPath, Len(strFullPath) -6)
'Beschränken Sie das Makro auf SolidWorks Dateien
strFileType = LCase(Rechts(strFullPath, 6))
Case strFileType auswählen
Feld "sldprt"
intFileType = 1
Gehäuse "sldasm"
intFileType = 2
"Slddrw"-Box
intFileType = 3
Fall Else
Msg = "Dateiformatfehler!" + Chr(13) + Chr(10) + "*.sldprt, *.sldasm, *.slddrw only!" + Chr(13) + Chr(10) + "Datei " + strFileName + " wird ignoriert." ' Nachricht definieren.
Style = vbMsgBoxSetForeground + vbCritical ' Schaltflächen definieren.
Title = "STOP!" ' Titel definieren.
Antwort = MsgBox(Nachricht, Stil, Titel)
Sub beenden
Ende Auswahl
'Tresorobjekt erstellen
Set pdmVault = CreateObject("ConisioLib.EdmVault")
pdmVault.Login "admin", "***********", "**********"
'Ordnerobjekt erstellen
Dim-Ordner als Objekt 'IEdmFolder5 IEdmFolder11 EdmObject_Folder
Set folder = pdmVault.GetFolderFromPath(strFolderPath)
'Dateiobjekt erstellen
Dim-Datei als Objekt
Legen Sie file = pdmVault.GetFileFromPath(strFullPathWithoutExt + strFileType, Ordner) fest
"Auschecken
Wenn Falsch = Datei. IsLocked dann
Datei. LockFile folder.ID, 0
Oder
Msg = "Fehler: Datei " + strFileName + " bereits extrahiert von: " + file.LockedByUser.Name + " !" ' Nachricht definieren.
Style = vbMsgBoxSetForeground + vbCritical ' Schaltflächen definieren.
Title = "STOP!" ' Titel definieren.
Antwort = MsgBox(Nachricht, Stil, Titel)
Sub beenden
Ende, wenn
'Modell öffnen, speichern und schließen
Legen Sie swApp = Application.SldWorks fest
swApp.Visible = Falsch
Set swModel = swApp.OpenDoc(strFullPath, intFileType)
swModel.ViewZoomtofit2
swModel.ForceRebuild3 False 'False rebuil all und True rebuil only the top level
swModel.EditRebuild3
swModel.Speichern
'boolstatus = swModel.Save3(swSaveAsOptions_Silent, lFehler, lWarnungen)
swApp.CloseDoc strDateiname
"Einchecken
Datei. UnlockFile 0, "Automatisches Update", 64
Ende Sub