Witam
Podczas uruchamiania makra, aby zrobić wszystko w tym samym czasie, moje pliki CAD są zapisywane w STEP.
Ścieżka rekordu znajduje się w pliku znajdującym się w skarbcu EPDM. Nagrywanie odbywa się bez problemu, ale pozostaje plikiem lokalnym.
Chciałbym więc wiedzieć, czy możliwe jest bezpośrednie zarchiwizowanie nagrania?
Mam nadzieję, że wyraziłem się jasno,
Dziękuję, dzień dobry.
1 polubienie
Witam
Zamiast za pomocą makra (co do którego nie jestem pewien, czy zadziała z otwartym oprogramowaniem), raczej przyjrzę się skryptom dyspozytorskim, które pozwalają na wykonywanie tego rodzaju działań.
2 polubienia
Rzeczywiście, archiwizacja makr nie będzie działać, jeśli plik zostanie otwarty w SolidWoprks, ale jeśli pochodzi z modelu 3D sldprt, po którym następuje saveAs w kroku za pomocą makra, to możemy uznać, że ten plik kroku nie jest otwarty w SolidWorks i archiwizacja makr będzie działać.
Bądź ostrożny, między zapisem jako a archiwum musisz zarządzać czasem dodawania do skarbca...
Pozdrowienia
1 polubienie
No właśnie , d.roger, taki był sens mojej wiadomości ;)
Witam, dziękuję za odpowiedzi, ale nie bardzo rozumiem... Poza tym na pomocy nie ma przykładów w Vba i nie do końca rozumiem VB.net.
Cyril.f, co to jest skrypt wysyłkowy?
D.Roger , kiedy mówisz o czasie dodawania, czy to jest to, czy chcę go użyć bezpośrednio? Ponieważ w rzeczywistości moja aplikacja służy do zarządzania wyborem i aktywacją konfiguracji 3D oraz otwieraniem rysunku. Jednocześnie chciałbym zaoferować użytkownikowi możliwość zapisania tej konfiguracji w STEP, aby korzystać z niej w większym stopniu.
Na razie mój kod jest prosty
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 to narzędzie dostępne w interfejsie administracyjnym skarbca (w widoku drzewa, dodatki, a następnie kliknij prawym przyciskiem myszy na akcje wyślij i zarządzaj).
http://help.solidworks.com/2016/french/EnterprisePDM/admin/IDD_DLG_ADMIN_ACT.htm?rid=0
Dla czasu dodawania, o którym wspomniał d.roger, odpowiada to czasowi potrzebnemu na przetworzenie repozytorium w celu dodania pliku do bazy danych. Ponieważ ten czas może się różnić, plik zostanie uznany za używany przez aplikację i dlatego nie będzie można go zarchiwizować za pomocą makra. Trzeba by poczekać, aż oprogramowanie zakończy swoją akcję, a repozytorium zakończy dodawanie pliku do swojej bazy danych.
Dlatego polecam skorzystanie z wysyłki, która jest zarządzana bezpośrednio przez skarbiec i jest stosowana we właściwym czasie.
Dla pliku blokującego w wersji VBA:
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
Witam
Oto przykład w języku C#, aby zapisać plik sldprt kroku w Epdm z jego archiwizacją:
prywatny SldWorks swAppli;
private void Button8Click(nadawca obiektu, EventArgs e)
{
Trzymamy się SW
if (swAppli == null)
{
swAppli = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
swAppli.Visible = prawda;
}
Łączymy się z sejfem
Repozytorium EdmVault5;
vault = nowy EdmVault5();
if (!vault. IsLoggedIn)
{
while (!vault. IsLoggedIn)
{
Sklepienie. LoginAuto("Coffre_BE", to. Uchwyt.ToInt32());
}
}
Odzyskujemy otwartą część oprogramowania
Część ModelDoc2 = null;
Część = ((ModelDoc2)(swAppli.ActiveDoc));
Definiujemy folder docelowy pliku kroku
Folder IEdmFolder5;
folder = magazyn. GetFolderFromPath(@"C:\Coffre_BE\TEST");
Definiujemy pełną nazwę pliku STEP
string fileSTEP = folder. ŚcieżkaLokalna + @"\" + Part.GetTitle() + ".krok";
Plik jest zapisywany w formacie STEP
if (Part.GetType() == (int)swDocumentTypes_e.swDocPART)
{
Part.SaveAs(plik STEP);
}
Dodajemy plik STEP do magistrali
int ID_PLIKU;
fileID = folder. AddFile(ten. Handle.ToInt32(), plik STEP, "", 0);
Łączymy się z plikiem STEP utworzonym w repozytorium
IEdmFile5 newFileSTEP = null;
IEdmFolder5 Folder_nadrzędny = null;
while (nowyPlikKROK == null)
{
próbować
{
newFileSTEP = (IEdmFile5)magazyn. GetFileFromPath(STEPFILE, out ParentFolder);
}
catch (wyjątek)
{
}
}
Archiwizujemy plik STEP
newFileSTEP.UnlockFile (ten. Handle.ToInt32(), "Utwórz plik STEP.", 0, null);
}
Pozdrowienia
1 polubienie