Wenn ich ein Makro ausführe, um alles gleichzeitig zu tun, werden meine CAD-Dateien in STEP gespeichert.
Der Datensatzpfad befindet sich in einer Datei, die sich im EPDM-Tresor befindet. Die Aufnahme erfolgt problemlos, bleibt aber eine lokale Datei. Also hätte ich gerne gewusst, ob es möglich wäre, die Aufnahme direkt zu archivieren, bitte?
Anstelle von Makros (von denen ich nicht sicher bin, ob sie mit geöffnetem SW funktionieren) werde ich mir lieber Dispatch-Skripte ansehen, mit denen Sie diese Art von Aktionen ausführen können.
In der Tat funktioniert die Makroarchivierung nicht, wenn die Datei in SolidWprks geöffnet wird, aber wenn sie aus einem 3D-sldprt-Modell stammt, gefolgt von einem saveAs in Step via Makro, dann können wir davon ausgehen, dass diese Schrittdatei nicht in SolidWorks geöffnet ist und die Makroarchivierung funktioniert.
Seien Sie vorsichtig, zwischen den Speichern und dem Archiv müssen Sie die Zeit für das Hinzufügen zum Tresor verwalten...
Hallo, danke für deine Antworten, aber ich verstehe nicht wirklich... Außerdem gibt es auf der Hilfe keine Beispiele in Vba und ich verstehe die VB.net nicht wirklich.
D.Roger , wenn du über die zusätzliche Zeit sprichst, ist es, ob ich sie direkt verwenden möchte? Denn tatsächlich wird meine Anwendung verwendet, um die Auswahl und Aktivierung einer 3D-Konfiguration und das Öffnen der Zeichnung zu verwalten. Gleichzeitig möchte ich dem Benutzer die Möglichkeit bieten, diese Konfiguration in STEP zu speichern, um sie mehr übersetzen zu können.
Im Moment ist mein Code einfach
If Check_step.Value = True Then
UserfrmSTEP.Show
EnregistrementSTEP = Part.SaveAs3("Chemin du dossier d'enregistrement\" & NomFichierSTEP & ".STEP", 0, 0)
MsgBox "Le fichier STEP a été enregistré dans le dossier suivant : Cjemin du dossier d'enregistrement" & Chr(10) & "Sous le nom suivant : " & NomFichierSTEP & Chr(10) & "Pensez à archiver le fichier car il se trouve encore en local", vbInformation, "Emplacement du fichier"
End If
Dispatch ist ein Dienstprogramm, das in der Administrationsoberfläche des Tresors verfügbar ist (in der Baumansicht, in den Add-Ins und dann mit der rechten Maustaste auf Dispatch und Manage Actions).
Für die von d.roger erwähnte Additionszeit entspricht dies der Zeit, die benötigt wird, um den Tresor zu verarbeiten, um die Datei zur Datenbank hinzuzufügen. Da diese Zeit variieren kann, wird die Datei als von einer Anwendung verwendet betrachtet und kann daher nicht über ein Makro archiviert werden. Sie müssten warten, bis SW seine Aktion abgeschlossen hat und der Tresor das Hinzufügen der Datei zu seiner Datenbank abgeschlossen hat.
Aus diesem Grund empfehle ich, den Versand zu durchlaufen, der direkt vom Tresor verwaltet und zum richtigen Zeitpunkt angewendet wird.
Für VBA-Versionssperrdatei:
Private Sub LockMyFile(vault As EdmVault5)
On Error GoTo ErrHand
Dim folder As IEdmFolder5
Set folder = vault.RootFolder
Dim file As IEdmFile5
Set file = folder.GetFile("MyFile.txt")
file.LockFile folder.ID, Me.hWnd
Exit Sub
ErrHand:
Dim ename As String
Dim edesc As String
vault.GetErrorString Err.Number, ename, edesc
MsgBox ename + vbLf + edesc
End Sub
Hier ist ein Beispiel in C # zum Speichern einer Schritt-sldprt-Datei in Epdm mit Archivierung:
private SldWorks swAppli;
private void Button8Click(object sender, EventArgs e) { Wir klammern uns an SW if (swAppli == null) { swAppli = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application")); swAppli.Visible = wahr; }
Wir verbinden uns mit dem Safe EdmVault5-Tresor; vault = neu EdmVault5(); if (!vault. IsLoggedIn) { Während (!vault. IsLoggedIn) { Gewölbe. LoginAuto("Coffre_BE", dies. Handle.ToInt32()); } }
Wir stellen den offenen SW-Teil wieder her ModelDoc2 Teil = null; Teil = ((ModelDoc2)(swAppli.ActiveDoc));
Wir definieren den Zielordner der Schrittdatei Ordner IEdmFolder5; Ordner = Tresor. GetFolderFromPath(@"C:\Coffre_BE\TEST");
Wir definieren den vollständigen Namen der STEP-Datei Zeichenkette DateiSCHRITT = Ordner. LocalPath + @"\" + Teil.GetTitle() + ".step";
Die Datei wird im STEP-Format gespeichert if (Part.GetType() == (int)swDocumentTypes_e.swDocPART) { Part.SaveAs(STEP-Datei); }
Wir fügen die STEP-Datei zum Trunk hinzu int Datei-ID; fileID = Ordner. AddFile(this. Handle.ToInt32(), STEP-Datei, "", 0);
Wir stellen eine Verbindung mit der STEP-Datei her, die im Tresor erstellt wurde IEdmFile5 neueDateiSCHRITT = null; IEdmFolder5 Übergeordneter Ordner = null; while (newFileSTEP == null) { versuchen { newFileSTEP = (IEdmFile5)Tresor. GetFileFromPath(STEPFILE, aus ParentFolder); } catch (Ausnahme) {
} }
Wir archivieren die STEP-Datei newFileSTEP.UnlockFile(this. Handle.ToInt32(), "STEP-Datei erstellen.", 0, null); }