Aller au contenu

iPropriétés - modification sans ouverture en VB


Messages recommandés

Posté(e)

Bonjour,

 

Avant de poster une requête sur le forum, je tenais d'abord à tous vous remercier pour vos différentes contributions et réponses ... ça m'a beaucoup aider sur quelques points. Voilà, c'est dit !

 

Aujourd'hui, j'ai un petit problème à vous poser : (Inventor 2009 SP2 sur XP SP3 32 bits)

 

--> Comment lire, modifier, supprimer des ipropriétés sans ouvrir un seul fichier Inventor (ipt, iam, idw ...) ?

 

Sachant que je peux utiliser un module VBA inventor pour programmer

Mon traitement se fera en lot (plusieurs répertoires)

 

Il me manque donc les codes de connexion module / iprop du fichier inventor. Je sais le faire à partir d'un module VB inventor MAIS en ouvrant chaque fichier !! .. pas intéressant car les temps de traitement sont long et lourd (risques de saturations mémoire sur les gros fichiers et pb des mises à jour)

 

Merci d'avance

Autodesk Inventor 2014 SP1

Autodesk AutoCAD 2014

Windows 7 PRO 64 bits SP1

-------------------------------------------------------------------

Station Dell Precision T3610

Intel Xeon E5-1620 v2 3.70 GHz + RAM de 16 Go

Nvidia Quadro K4000 + 2 écrans Dell U2212HM full HD

Posté(e)

apparemment, cela n'inspire personne ? :blink:

Autodesk Inventor 2014 SP1

Autodesk AutoCAD 2014

Windows 7 PRO 64 bits SP1

-------------------------------------------------------------------

Station Dell Precision T3610

Intel Xeon E5-1620 v2 3.70 GHz + RAM de 16 Go

Nvidia Quadro K4000 + 2 écrans Dell U2212HM full HD

Posté(e)

apparemment, cela n'inspire personne ? :blink:

Ce n'est pas que cela n'inspire personne, c'est que la demande est assez pointue.

Pour information, VBA ne s'exécute que dans un processus 32 bits. Donc avec un OS 32 bits, VBA et Inventor vont tourner dans le même processus. il n'y a pas de problème de performances contrairement à un Inventor en 64 bits.

Mais l'OS 32 bits limite la quantité de mémoire. Et la, je n'ai pas de réponse pour les risques de saturation dans un tel contexte.

Mais il est possible depuis Inventor de lancer via VBA des tâches en ayant recours à l'Apprentice Server. Il n'ouvre pas les documents dans l'espace graphique et a pour principale fonction de travailler sur les iPropriétés, les liens entre fichiers et un peu sur les nomenclatures. Je dis bien Nomenclature (Inventor BOM), pas liste de pièces.

Ou cette solution donne de bon résultats ou bien il faudra en passer par une version 64 bits et un code compilé en .Net avec le poste de traitement disposant d'assez de mémoire vive.

Bonne chance pour ce projet.

Nomutt,

Consultant, Responsable Projets CAD/PLM

'Add-ins pour Inventor + Trucs et Astuces.

Disponible pour un poste administrateur CAO/PLM.

Posté(e)

Je crois que j'ai trouvé mon bonheur ApprenticeServer (postérieur de 2 messages)

 

En ce qui concerne le 32 bits, tu as raison et je le sais. C'est pour cette raison que je souhaite appliquer des traitement hors chargement des fichiers, sachant qu'on peut le faire.

 

Encore merci à Guillaume et à Nomutt

Autodesk Inventor 2014 SP1

Autodesk AutoCAD 2014

Windows 7 PRO 64 bits SP1

-------------------------------------------------------------------

Station Dell Precision T3610

Intel Xeon E5-1620 v2 3.70 GHz + RAM de 16 Go

Nvidia Quadro K4000 + 2 écrans Dell U2212HM full HD

Posté(e)

[résolu]

 

Après quelques heures de prog, j'ai atteind le but désiré : faire une macro modifiant les ipropriétés de tous les fichiers IV d'un répertoire.

 

Pourquoi ? copie d'une affaire vers une nouvelle avec mise à jour des infos

 

Pour faire simple :

 

PREPARATION


  •  
  • liste fichiers (*.IPT *.IAM *.IDW) > liste.txt
  • dans feuille Excel, colonne 1 liste des anciens n° de plan, colonne 2 liste des nouveaux plans correspondants

MACRO


  •  
  • bouclage sur liste.txt
  • MAJ des infos en fonction du type de fichier
  • MAJ des ipropriétés perso avec comparaison des n° de plan (feuille Excel)
  • suppression d'iprop. perso non nécessaires ("le ménage !!")

RESULTAT


  •  
  • fichiers traités = 1900
  • temps en manuel (estimation 30s/fichier + fatigue !) = 16 heures
  • temps macro = 6 minutes !!!!!!!!!

rapport de 1/160 ; je crois que c'est pas mal

Autodesk Inventor 2014 SP1

Autodesk AutoCAD 2014

Windows 7 PRO 64 bits SP1

-------------------------------------------------------------------

Station Dell Precision T3610

Intel Xeon E5-1620 v2 3.70 GHz + RAM de 16 Go

Nvidia Quadro K4000 + 2 écrans Dell U2212HM full HD

  • 1 an après...
Posté(e)

Salut,

 

Je suis en train de travailler sur une macro pour modifier certains champs des ipropriétés.

J'ai déjà fait toute la partie excel pour générer les nouveaux noms (suite à un prét à emporter), le renommage des fichiers, mais je n'arrive pas à renommer les ipropriétés de ces nouveaux fichiers.

 

Exemple :

-Fichier original:IS100000 valeur ipropriétés "nom de pièce" = IS100000

-Fichier renommé: IS200000 valeur ipropriétés "nom de pièce" = IS100000

 

Il faudrait que l'ipropriété "nom de pièce" prenne la valeur du nom de fichier renommé (ici IS200000).

 

Pour faire ca, il serait préférable de ne pas ouvir les fichiers avec inventor.(trop long)

Donc je suis à la recherche d'une astuce pour modifier les ipropriétés sans l'ouverture dans inventor.

J'ai environ 1000 fichiers à traiter.

Merci pour ta réponse.

  • 2 semaines après...
Posté(e)

Salut Jul,

 

s'il n'est pas trop tard .. et pour te donner quelques détails de plus si tu ne les as pas ...

 

Voici comment je fais et cela n'engage que moi. Si par-contre tu avais une autre solution pour modifier les ipropriétés, n'hésites pas .. toujours intéressant.

 

1 - déclaration pour connexion fichiers inventor

 

Dim oIV As New ApprenticeServerComponent

Dim oIVDoc As ApprenticeServerDocument

 

 

2 - déclaration variables pour ipropriétés

 

' Onglet Inventor Summary Information (ongle Résumé)

Dim ISIpropSet As PropertySet

Dim ISITitle, ISISubject, ISIAuthor, ISICommentIPT, ISICommentIAM, ISICommentIDW, ISIRevisionNumber As String

 

' Onglet Inventor Document Summary Information (ongle Résumé suite)

Dim IDSIpropSet As PropertySet

Dim IDSIonglet As String

Dim IDSICategory, IDSIManager, IDSICompany As String

 

' Onglet Design Tracking Properties (ongle Projet / Etat)

Dim DTPpropSet As PropertySet

Dim DTPonglet As String

Dim DTPPartNumber, DTPProject, DTPDesigner As String

Dim DTPCreationTime, DTPDateChecked, DTPEngrDateApproved, DTPMfgDateApproved, DateUnique As Date

 

' Onglet Inventor User Defined Properties ((ongle Personnalisation)

Dim IUDPmapropriété As String ...... (mes propres ipropriétés avec les formats voulus)

 

 

3 - suite déclarations des variables des onglets

 

Set oIVDoc = oIV.Open("mon_fichier_inventor")

Set ISIpropSet = oIVDoc.PropertySets.Item(ISIonglet)

Set IDSIpropSet = oIVDoc.PropertySets.Item(IDSIonglet)

Set DTPpropSet = oIVDoc.PropertySets.Item(DTPonglet)

Set IUDPpropSet = oIVDoc.PropertySets.Item(IUDPonglet)

 

 

4 - remplissage

une fois la déclaration des ipropriétés effectuée, il faut faire le "remplissage" ; dans ton cas :

 

DTPPartNumber = "IS200000"

ou

DTPPartNumber = strNomFichier 'si variable (je pense que oui ;-))

 

DTPpropSet.Item("Part Number").Value = DTPPartNumber

 

 

5 - enregistrement

oIVDoc.PropertySets.FlushToFile

 

 

... pas besoin de te dire qu'il n'est pas nécessaire de tout déclarer si tu ne modifies qu'une ou quelques ipropriétés ; je le fais souvent car un jour, tu ne fais que quelques modifs et le lendemain, tu modifies tout.

C'est une question de praticité et modulabilité.

 

J'espère avoir répondu à ta question. Personnelement, j'adore les traitement de "lots" .. incroyable le temps gagné ;-)

 

Au plaisir de te lire

Autodesk Inventor 2014 SP1

Autodesk AutoCAD 2014

Windows 7 PRO 64 bits SP1

-------------------------------------------------------------------

Station Dell Precision T3610

Intel Xeon E5-1620 v2 3.70 GHz + RAM de 16 Go

Nvidia Quadro K4000 + 2 écrans Dell U2212HM full HD

Posté(e)

Salut SFX28 !!!

 

Excuse mon temps de réaction, mais j'avais pas mal de choses à faire...

 

J'ai bien testé ce que tu m'as envoyé, mais j'ai un souci ici :

 

Set ISIpropSet = oIVDoc.PropertySets.Item(ISIonglet)

 

Il me renvoi un "nothing" ....

 

Peut-être un souci de référence ?

 

 

Merci d'avance pour ta réponse et encore merci pour celle d'avant !!!

 

 

 

 

 

Salut Jul,

 

s'il n'est pas trop tard .. et pour te donner quelques détails de plus si tu ne les as pas ...

 

Voici comment je fais et cela n'engage que moi. Si par-contre tu avais une autre solution pour modifier les ipropriétés, n'hésites pas .. toujours intéressant.

 

1 - déclaration pour connexion fichiers inventor

 

Dim oIV As New ApprenticeServerComponent

Dim oIVDoc As ApprenticeServerDocument

 

 

2 - déclaration variables pour ipropriétés

 

' Onglet Inventor Summary Information (ongle Résumé)

Dim ISIpropSet As PropertySet

Dim ISITitle, ISISubject, ISIAuthor, ISICommentIPT, ISICommentIAM, ISICommentIDW, ISIRevisionNumber As String

 

' Onglet Inventor Document Summary Information (ongle Résumé suite)

Dim IDSIpropSet As PropertySet

Dim IDSIonglet As String

Dim IDSICategory, IDSIManager, IDSICompany As String

 

' Onglet Design Tracking Properties (ongle Projet / Etat)

Dim DTPpropSet As PropertySet

Dim DTPonglet As String

Dim DTPPartNumber, DTPProject, DTPDesigner As String

Dim DTPCreationTime, DTPDateChecked, DTPEngrDateApproved, DTPMfgDateApproved, DateUnique As Date

 

' Onglet Inventor User Defined Properties ((ongle Personnalisation)

Dim IUDPmapropriété As String ...... (mes propres ipropriétés avec les formats voulus)

 

 

3 - suite déclarations des variables des onglets

 

Set oIVDoc = oIV.Open("mon_fichier_inventor")

Set ISIpropSet = oIVDoc.PropertySets.Item(ISIonglet)

Set IDSIpropSet = oIVDoc.PropertySets.Item(IDSIonglet)

Set DTPpropSet = oIVDoc.PropertySets.Item(DTPonglet)

Set IUDPpropSet = oIVDoc.PropertySets.Item(IUDPonglet)

 

 

4 - remplissage

une fois la déclaration des ipropriétés effectuée, il faut faire le "remplissage" ; dans ton cas :

 

DTPPartNumber = "IS200000"

ou

DTPPartNumber = strNomFichier 'si variable (je pense que oui ;-))

 

DTPpropSet.Item("Part Number").Value = DTPPartNumber

 

 

5 - enregistrement

oIVDoc.PropertySets.FlushToFile

 

 

... pas besoin de te dire qu'il n'est pas nécessaire de tout déclarer si tu ne modifies qu'une ou quelques ipropriétés ; je le fais souvent car un jour, tu ne fais que quelques modifs et le lendemain, tu modifies tout.

C'est une question de praticité et modulabilité.

 

J'espère avoir répondu à ta question. Personnelement, j'adore les traitement de "lots" .. incroyable le temps gagné ;-)

 

Au plaisir de te lire

Posté(e)

Salut Jul,

 

Désolé ! Je crois que j'ai oublié ... il faut initialiser les variables des onglets :

 

' Onglet Inventor Summary Information (onglet Résumé)

ISIonglet = "Inventor Summary Information"

 

' Onglet Inventor Document Summary Information (onglet Résumé suite)

IDSIonglet = "Inventor Document Summary Information"

 

' Onglet Design Tracking Properties (onglet Projet / Etat)

DTPonglet = "Design Tracking Properties"

 

' Onglet Inventor User Defined Properties ((onglet Personnalisation)

IUDPonglet = "Inventor User Defined Properties"

 

 

De plus, je joint à ce message un fichier excel GenerateAllPropertiesList qui te permettra de lister toutes les ipropriétés d'un fichier suivant son type ; ouvre le fichier xlsm, lance la macro GenerateAllPropertiesList, sélectionne un fichier IAM ou IPT ou IDW et il affiche dans l'onglet concerné les informations. Simple : toutes les infos nécessaires sont dedans.

 

Tu pourras constater que beaucoup d'ipropriétés sont communes suivant le type de fichiers mais que d'autres sont propres. A toi de faire le tri ! De plus, toutes ne sont pas modifiables. Et encore, pour les iprop utilisateur, il faut les déclarer (créer) avant de les remplir si elles n'existent pas !! (parait évident mais pas pour tout le monde).

 

J'espère avoir répondu à tes attentes.

GenerateAllPropertiesList.zip

Autodesk Inventor 2014 SP1

Autodesk AutoCAD 2014

Windows 7 PRO 64 bits SP1

-------------------------------------------------------------------

Station Dell Precision T3610

Intel Xeon E5-1620 v2 3.70 GHz + RAM de 16 Go

Nvidia Quadro K4000 + 2 écrans Dell U2212HM full HD

  • 3 semaines après...
  • 4 ans après...
Posté(e)

Bonjour à tous,

 

je me permet de solliciter votre aide sur un sujet similaire: je cherche à récupérer par VBA Excel les infos du cartouche d'un plan de pièce sachant qu'elles ne sont pas toutes définies depuis iPropriété

 

Nouveau sur le forum, je ne savais pas si je pouvais poster directement ici, donc j'ai ouvert une nouvelle discussion:

http://cadxp.com/topic/45647-export-donnees-du-cartouche-inventor-par-vba-excel/

 

Merci par avance de votre aide.

 

Salutations.

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité