Automatyczne zaewidencjonowanie pliku zapisanego w programie . Oczyszczalnia ścieków lub . SAT w EPDM

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

Zobacz funkcję archiwizacji pod tym linkiem http://help.solidworks.com/2014/English/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmFile5~UnlockFile.html

Pozdrowienia

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