EPDM: création de fichiers suivant fichier Excel

Bonjour,

nous avons une liste conséquente de fichiers de bibliothèque que l'on souhaite importer dans EPDM avec remplissage automatique de la carte.

L'idée serait de créer un fichier SLDPRT avec numérotation du fichier suivant notre numérotation configurée, puis de remplir la carte EPDM avec les données du tableau.

Existe-t-il un moyen/utilitaire pour faire cela ? Nous disposons de myCADtools avec Visiativ mais je ne trouve pas de programme adapté.

Cdt,

Bonjour,

Je ne connais pas suffisament les outils MyCadTools mais quand je lis " DataRecovery : Archivez en masse dans le coffre les données et les métadonnées issues d’une arborescence Windows " cela ressemble à ce que tu veux faire non ?

Si aucun outils ne répond à ton besoin, cela est possible de le faire par programmation mais ça commence à faire un joli petit programme, il est peut-être préférable de te rapprocher de ton revendeur.

Cordialement,

Bonjour,

Pour avoir déjà pas mal manipulé le coffre avec des macro excel, je pense que ça peut se faire assez facilement. Je ne sais plus où j'ai lu ça mais il me semble que MyCADTools permet de mettre à jour les fichiers à partir des données de carte ce qui permettrait de faire tourner la macro excel pour renseigner la base SQL puis de mettre à jour les fichiers.

Sinon tout faire en une seule macro est faisable.

C'est dans les options de PDMProperties

1 « J'aime »

En fait, je sais appliquer des variables aux fichiers à partir d'un tableau excel (ou non), y'a des logiciels déveloplés pour (BatchProperties, Intergration). 

En revanche, aucun d'eux ne semble capable de créer le fichier SLDPRT.

En gros, je veux faire mon fichier excel avec toutes les variables, et envoyer ca dans EPDM. Dès lors, il s'occupe de créer le fichier SLDPRT, remplir la carte et archiver.

Aujourd'hui, il me faut créer les fichiers vides, les archiver, puis envoyer mon fichier excel pour remplir les variables automatiquement.

Si j'ai bien lu, tes fichiers sont déjà existants mais en dehors de Epdm et probablement mal nommés (" nous avons une liste conséquente de fichiers de bibliothèque que l'on souhaite importer dans EPDM avec remplissage automatique de la carte. "). Donc ce que tu cherches à faire serait plutôt de copier les fichiers d'un dossier Windows vers Epdm en les rennomants puis en leurs assignants leurs variables ?

De mémoire, il faut créer un fichier modèle vide archivé dans le coffre afin de le copier dans un autre dossier et le renommer tout en lui appliquant les variables au passage.

Je n'ai plus cette amcro car plus de besoin chez nous mais en compilant différents codes ça peut se refaire facilement.

 

Cela doit donc dépendre du paramètrage de Epdm car de mon coté, copie fichier Windows vers Epdm, archivage en maintenant extrait de ce fichier, mise à jour des variables, archivage ... Cela fonctionne bien. Il faut par contre faire attention au délai de latence entre la copie du fichier et l'ajout au coffre.

non non, le fichier n'existe pas. Je veux qu'il soit créé automatiquement. Je n'ai aucun fichier, juste une liste excel des codes à créer. Je veux que la création du fichier soit aussi automatique.

On en revient à ce que Cyril.f disait plus haut, il faut créer un fichier modèle, le copier sous son nouveau nom, lui appliquer ses variables puis l'archiver.

Pour la copie, voir http://help.solidworks.com/2014/English/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmFolder5~CopyFile.html

Pour travailler sur les variables, voir http://help.solidworks.com/2014/English/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmEnumeratorVariable8.html

Pour l'archivage, voir http://help.solidworks.com/2014/English/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmFile5~UnlockFile.html

Cordialement,

1 « J'aime »

ok. Je souhaitais éviter la macro pour gagner un peu de temps, mais quand il faut !

Merci bien :)

Une partie des codes (pas eu le temps de compiler tout en un seul donc faudra adapter)

Renommage:

Dim sRename As String
Dim vault As EdmVault5
Dim folder As IEdmFolder6
Dim file As IEdmFile6
Dim sPathName As String
Dim sNewName As String
Dim sActualName As String

Sub main()
Set vault = New EdmVault5
vault.LoginAuto "xxx", 0
I = 7
Do While Cells(I, 1) <> ""
    sReference = Cells(I, 1).Value
    sFolder = Cells(I, 5).Value
    sRename = Cells(I, 12).Value
    Set folder = vault.GetFolderFromPath(sFolder)
    Set file = folder.GetFile(sReference)
    file.Rename 0, sRename, True
    I = I + 1
Loop
DoEvents
I = 0
End Sub

Déplacer un fichier:

Sub MoveFile()
Set vault = New EdmVault5
vault.LoginAuto "xxx", 0
I = 7
Do While Cells(I, 1) <> ""
    Reference = Cells(I, 1).value
    Source = Cells(I, 11).value
    Destination = Cells(I, 5).value
    Set Folder = vault.GetFolderFromPath(Source)
    Set file = Folder.GetFile(Reference)
    Set dest = vault.GetFolderFromPath(Destination)
    file.Move 0, Folder.ID, dest.ID, 0
I = I + 1
Loop
End Sub

Mise à jour des varaibles de carte:

Sub UpdateTDM()

Set vault = New EdmVault5
vault.LoginAuto "xxx", 0

i = 2
Do While Cells(i, 11) <> ""
    Set folder = vault.GetFolderFromPath(Cells(i, 5))
    Set file = vault.GetFileFromPath(Cells(i, 5) & "\" & Cells(i, 1))
    file.LockFile folder.ID, 0
    Set pEnumVar = file.GetEnumeratorVariable
    pEnumVar.SetVar "xxx", "", Cells(i, 12) 'Mettre le nom de la variable
    pEnumVar.SetVar "xxx", "", Cells(i, 13) 'Mettre le nom de la variable
    pEnumVar.SetVar "xxx", "", Cells(i, 11) 'Mettre le nom de la variable
    pEnumVar.CloseFile (True)
    file.UnlockFile folder.ID, "Ajout réf, désignation et indice" 'Si archivage dans la foulée se servir de cette ligne sinon supprimer 
    Cells(i, 14).value = "Traité"
i = i + 1
Loop
End Sub

Je peux être en support si besoin mais pas totalement dispo.

1 « J'aime »

J'ai omis, copie en renommant au passage (plus automatisé que copie puis renommage)

Dim vault As EdmVault5
Dim folder As IEdmFolder6
Dim destfolder As IEdmFolder6
Dim file As IEdmFile6

Sub CopyFile()
Set vault = New EdmVault5
vault.LoginAuto "xxx", 0
Set folder = vault.GetFolderFromPath("C:\xxx\yyy")
Set destfolder = vault.GetFolderFromPath("C:\xxx\zzz")
Set file = folder.GetFile("toto.sldprt")

destfolder.CopyFile file.ID, folder.ID, 0, "Rename.sldprt" 'ne pas omettre l'extension sinon fichier inexploitable

End Sub

 

merci beaucoup, je vais exploiter ca et voir ce que ca donne !