Witam
Oto kod testowy, który działa dla mnie idealnie:
Dim swApp As Object
Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Ustaw swApp = Application.SldWorks
Dim Vault jako nowy EdmVault5
Przyciemnij plik jako IEdmFile5
Przyciemnij folder jako IEdmFolder5
Vault.LoginAuto "Coffre_BE", 0
Set File = Vault.GetFileFromPath("C:\Coffre_BE\TEST\0088880001.SLDPRT", Folder)
Ustaw część = swApp.OpenDoc6(Folder.LocalPath & "/" & File.Name, 1, 2, "", longstatus, longwarnings)
swApp.ActivateDoc2 File.Name, Fałsz, longstatus
Ustaw swModel = swApp.ActiveDoc
swModel.ViewZoomtofit2
Koniec subwoofera
W przypadku ścieżki pliku normalne jest, że jest ona podobna do pliku lokalnego, ponieważ jest to plik z lokalnego widoku repozytorium, jestem po prostu zaskoczony, że ten widok znajduje się w danych SOLIDWORKS.
Aby skompensować ewentualną różnicę w położeniu widoku repozytorium między różnymi pikietami, można rozpocząć od kodu, wyszukać widok repozytorium, a następnie wywołać ścieżkę pliku zaczynającą się od Vault.rootfolder.localpath, na przykład:
Skarbiec1. FolderGłówny.Ścieżka_lokalna + \TEST\0088880001.SLDPRT"
przykład znajdowania widoków repozytorium w języku C#, a następnie nawiązywania połączenia:
vault1 = nowy EdmVault5();
IEdmVault8 vault = (IEdmVault8)skarbiec1;
EdmViewInfo[] Widoki = null;
Sklepienie. GetVaultViews(out Views, false);
comboBox1.Items.Clear();
foreach (EdmViewInfo View w widokach)
{
comboBox1.Items.Add(View.mbsVaultName);
}
if (comboBox1.Items.Count > 0)
{
comboBox1.Text = (ciąg)comboBox1.Items[0];
}
if (!vault1. IsLoggedIn)
{
Skarbiec1. LoginAuto(comboBox1.Text, ten. Uchwyt.ToInt32());
}
Pozdrowienia