Hallo
Ik heb zojuist "swModel.Save" getest op een eenvoudige SolidWorks-macro, uitgevoerd op Solidworks met een open vlak, en het werkt de toegewezen variabelen goed bij, zoals een eenvoudige Ctrl + S.
Hier is de volledige code (Script in de PDM-taak), bedankt:
Optie Expliciete
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Dim boolstatus als Booleaanse
Dim lErrors zo lang
Dim lWaarschuwingen zo lang mogelijk
Dim pdmVault als object
Dim strFullPath als snaar
Dim strFullPathWithoutExt als snaar
Dim strFolderPath als tekenreeks
Dim strFileType als tekenreeks
Dim intFileType als geheel getal
Dim i als geheel getal
Dim strFileName als tekenreeks
Dim swCustPropMgr As SldWorks.CustomPropertyManager
dim msg, stijl, titel, ctxt, reactie
Sub Hoofd()
'Macro initialiseren'
strFullPath = "<Bestandspad>"
strFolderPath = "<Pad>"
'Pakt alleen de bestandsnaam
i = InStrRev(strFullPath, "\")
strFileName = Right(strFullPath, Len(strFullPath) - i)
' Grijpt FullPath zonder de extensie om de bug op te lossen met UnlockFile en HOOFDLETTERS in plaats van kleine letters (bijv. SLDDRW / slddrw)
strFullPathWithoutExt = Links (strFullPath, Len(strFullPath) -6)
'Beperk de macro tot SolidWorks-bestanden
strFileType = LCase(Rechts(strFullPath, 6))
Selecteer Case strFileType
Vak "SLDPRT"
intFileType = 1
Geval "sldasm"
intFileType = 2
Vak "Slddrw"
intFileType = 3
Geval anders
Msg = "Fout in bestandsindeling!" + Chr(13) + Chr(10) + "*.sldprt, *.sldasm, *.slddrw alleen!" + Chr(13) + Chr(10) + "Bestand " + strFileName + " wordt genegeerd." ' Definieer bericht.
Stijl = vbMsgBoxSetForeground + vbCritical ' Definieer knoppen.
Title = "STOP!" ' Definieer titel.
Reactie = MsgBox(Msg, Stijl, Titel)
Sub afsluiten
Einde selecteren
'Kluisobject maken
Set pdmVault = CreateObject("ConisioLib.EdmVault")
pdmVault.Login "admin", "***********", "**********"
'Mapobject maken
Map dimmen als object 'IEdmFolder5 IEdmFolder11 EdmObject_Folder
Map instellen = pdmVault.GetFolderFromPath(strFolderPath)
'Bestandsobject maken
Bestand dimmen als object
Bestand instellen = pdmVault.GetFileFromPath(strFullPathWithoutExt + strFileType, map)
'Uitchecken
Indien Onwaar = bestand. IsLocked dan
bestand. LockFile folder.ID, 0
Anders
Msg = "Fout: Bestand " + strFileName + " al geëxtraheerd door: " + file.LockedByUser.Name + " !" ' Definieer bericht.
Stijl = vbMsgBoxSetForeground + vbCritical ' Definieer knoppen.
Title = "STOP!" ' Definieer titel.
Reactie = MsgBox(Msg, Stijl, Titel)
Sub afsluiten
Einde als
'Model openen, opslaan en sluiten
Stel swApp = Toepassing.SldWorks in
swApp.Visible = Onwaar
Stel swModel = swApp.OpenDoc(strFullPath, intFileType) in
swModel.ViewZoomtofit2
swModel.ForceRebuild3 False 'False rebuil alles en True rebuil alleen het hoogste niveau
swModel.BewerkenHerbouwen3
swModel.Opslaan
'boolstatus = swModel.Save3(swSaveAsOptions_Silent, lErrors, lWarnings)
swApp.CloseDoc strFileName
'Inchecken
bestand. UnlockFile 0, "Automatische update", 64
Einde Sub