Chciałbym wiedzieć, czy w VBA w Solidworks mam sposób, aby dowiedzieć się, czy plik jest zarchiwizowany? (Przed zamknięciem go, a jeśli nie zostanie zapisany, po prostu pozostaw go otwartym).
Chciałbym również wiedzieć, czy mamy sposób, aby dowiedzieć się, czy plik jest tylko do odczytu, czy nie? (Używamy EPDM, więc jeśli jest tylko do odczytu, to dlatego, że i tak nie możemy go zapisać, abyśmy mogli go zamknąć).
Próbowałem tego:
Dim instance As IDocumentSpecification Wartość przyciemniona Jako wartość logiczna Ustaw instancję = swApp.GetOpenDocSpec(swModel.GetPathName) Dim Stringi As String Stringi = instancja. Tylko do odczytu
Ale Debug zawsze mówi mi false, nawet jeśli plik jest tylko do odczytu.
Edycja: aby dowiedzieć się, czy dokument został zapisany, używam metody GetPathName , jeśli zmienna jest pusta, oznacza to, że nie została jeszcze zapisana.
Przykład:
Ustaw swApp = Application.SldWorks Ustaw CurrentDOC = swApp.ActiveDoc Ustaw swModel = swApp.ActiveDoc Ustaw swConfigMgr = swModel.ConfigurationManager docPath = BieżącyDOC.Nazwa_ścieżki_pobierania Jeśli docPath = "" Następnie MsgBox ("ten dokument nie został jeszcze zapisany") Zakończ się, jeśli
Jeśli chodzi o tylko do odczytu, Twój kod jest idealny.
W przypadku kopii zapasowej myślałem o tym (muszę to zrobić przed sprawdzeniem tylko do odczytu, żeby nie mieć żadnych problemów po drodze), ale to mi nie mówi, czy dokument jest "zapisany", cóż, że nie ma już małej gwiazdki na górze obok nazwy na SW :p