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
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