Hallo
Hier ist der Testcode, der für mich perfekt funktioniert:
Dimmen swApp als Objekt
Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
Sub main()
Legen Sie swApp = Application.SldWorks fest
Dim Vault als neues EdmVault5
Dim-Datei als IEdmFile5
Dim-Ordner als IEdmFolder5
Vault.LoginAuto "Coffre_BE", 0
Set File = Vault.GetFileFromPath("C:\Coffre_BE\TEST\0088880001.SLDPRT", Ordner)
Set Part = swApp.OpenDoc6(Folder.LocalPath & "/" & File.Name, 1, 2, "", longstatus, longwarnings)
swApp.ActivateDoc2 File.Name, False, longstatus
Festlegen von swModel = swApp.ActiveDoc
swModel.ViewZoomtofit2
Ende Sub
Für den Dateipfad ist es normal, dass er wie eine lokale Datei ist, da es sich um die Datei aus der lokalen Ansicht des Tresors handelt. Ich bin nur überrascht, dass sich diese Ansicht in SOLIDWORKS Daten befindet.
Um einen möglichen Unterschied in der Position der Tresoransicht zwischen den verschiedenen Stationen auszugleichen, können Sie von Ihrem Code ausgehen, nach der Tresoransicht suchen und dann Ihren Dateipfad beginnend mit Vault.rootfolder.localpath aufrufen, z. B.:
vault1. RootFolder.LocalPath + \TEST\0088880001.SLDPRT"
Beispiel für das Suchen von Tresoransichten in C# und das anschließende Herstellen einer Verbindung:
vault1 = neues EdmVault5();
IEdmVault8-Tresor = (IEdmVault8)vault1;
EdmViewInfo[] Ansichten = null;
Gewölbe. GetVaultViews(out Views, false);
comboBox1.Items.Clear();
foreach (EdmViewInfo-Ansicht in Ansichten)
{
comboBox1.Items.Add(Ansicht.mbsVaultName);
}
if (comboBox1.Items.Count > 0)
{
comboBox1.Text = (Zeichenfolge)comboBox1.Artikel[0];
}
if (!vault1. IsLoggedIn)
{
vault1. LoginAuto(comboBox1.Text, this. Handle.ToInt32());
}
Herzliche Grüße