Automatisch inchecken in een bestand dat is opgeslagen in . RWZI of . ZAT in EPDM

Hallo

Bij het uitvoeren van een macro, om alles tegelijkertijd te doen, worden mijn CAD-bestanden opgeslagen in STEP. 

Het recordpad bevindt zich in een bestand dat zich in de EPDM-kluis bevindt. De opname gebeurt zonder enig probleem, maar het blijft een lokaal bestand.
Dus ik had graag willen weten of het mogelijk was om de opname direct te archiveren, alstublieft?

Ik hoop dat ik duidelijk ben geweest,

Bedankt, goedemiddag.

1 like

Hallo

Zie de archiveringsfunctie op deze link http://help.solidworks.com/2014/English/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmFile5~UnlockFile.html

Vriendelijke groeten

1 like

Hallo

In plaats van door macro (waarvan ik niet zeker weet of het zal werken met SW open), zal ik liever kijken naar dispatch scripts die je in staat stellen om dit soort acties uit te voeren.

2 likes

Macro-archivering zal inderdaad niet werken als het bestand is geopend in SolidWoprks, maar als het afkomstig is van een 3D sldprt-model gevolgd door een saveAs in Stap via macro, dan kunnen we ervan uitgaan dat dit stapbestand niet open is in SolidWorks en macro-archivering zal werken.

Wees voorzichtig, tussen de saveAs en het archief moet u de tijd beheren van het toevoegen aan de kluis...

Vriendelijke groeten

1 like

Precies , d.roger, dat was de betekenis van mijn bericht;)

Hallo, bedankt voor je antwoorden, maar ik begrijp het niet echt... Bovendien zijn er op de hulp geen voorbeelden in Vba en begrijp ik de VB.net niet echt.

Cyril.f, wat is een verzendscript alstublieft?

D.Roger , als je het hebt over de toevoegingstijd, is het dan of ik het direct wil gebruiken? Want in feite wordt mijn applicatie gebruikt om de selectie en activering van een 3D-configuratie en het openen van de tekening te beheren. Tegelijkertijd wil ik de gebruiker de mogelijkheid bieden om deze configuratie in STEP op te slaan om deze meer te kunnen vertalen.

Op dit moment is mijn code eenvoudig 

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 is een hulpprogramma dat beschikbaar is in de beheerinterface van de kluis (in de boomstructuur, invoegtoepassingen en vervolgens met de rechtermuisknop klikken op verzenden en acties beheren).

http://help.solidworks.com/2016/french/EnterprisePDM/admin/IDD_DLG_ADMIN_ACT.htm?rid=0

Voor de door d.roger genoemde toevoegtijd komt dit overeen met de tijd die nodig is om de kluis te verwerken om het bestand aan de database toe te voegen. Aangezien deze tijd kan variëren, wordt het bestand beschouwd als gebruikt door een toepassing en kan het daarom niet via een macro worden gearchiveerd. U zou moeten wachten tot SW klaar is met zijn actie en de kluis klaar is met het toevoegen van het bestand aan zijn database.

Daarom raad ik aan om de verzending te doorlopen, die rechtstreeks door de kluis wordt beheerd en op het juiste moment wordt toegepast.

Voor VBA-versie lockfile:

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

 

Hallo

Hier is een voorbeeld in C# om een stap sldprt bestand op te slaan in Epdm met archivering ervan:

particuliere SldWorks swAppli;
        
private void Button8Click(object afzender, EventArgs e)
{
     We klampen ons vast aan SW
    if (swAppli == null)
    {
        swAppli = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
        swAppli.Visible = waar;
    }
    
     We maken verbinding met de kluis
    EdmVault5 kluis;
    vault = nieuwe EdmVault5();
    als (!kluis. Is ingelogd)
    {
        terwijl (!vault. Is ingelogd)
        {
            Gewelf. LoginAuto("Coffre_BE", dit. Handvat.ToInt32());
        }
    }
    
     We recupereren het open SW deel
    ModelDoc2 Deel = null;
    Deel = ((ModelDoc2)(swAppli.ActiveDoc));

     We definiëren de doelmap van het stappenbestand
    IEdmFolder5 map;
    map = kluis. GetFolderFromPath(@"C:\Coffre_BE\TEST");
    
     We definiëren de volledige naam van het STEP-bestand
    string bestandSTEP = map. LocalPath + @"\" + Part.GetTitle() + ".step";
    
     Het bestand wordt opgeslagen in STEP-formaat
    if (Part.GetType() == (int)swDocumentTypes_e.swDocPART)
    {
        Deel.OpslaanAs(STEP-bestand);
    }
    
     We voegen het STEP-bestand toe aan de trunk
    int fileID;
    fileID = map. AddFile(dit. Handle.ToInt32(), STEP-bestand, "", 0);
    
     We maken verbinding met het STEP-bestand dat in de kluis is gemaakt
    IEdmFile5 newFileSTEP = null;
    IEdmFolder5 ParentFolder = null;
    while (newFileSTEP == null)
    {
        proberen
        {
            newFileSTEP = (IEdmFile5)kluis. GetFileFromPath(STEPFILE, uit ParentFolder);
        }
        vangst (uitzondering)
        {
            
        }
    }
    
     We archiveren het STEP-bestand
    newFileSTEP.UnlockFile(dit. Handle.ToInt32(), "STEP-bestand maken.", 0, null);
}

Vriendelijke groeten

1 like