CADxp: iPropriétés - modification sans ouverture en VB - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

iPropriétés - modification sans ouverture en VB

#1 L'utilisateur est hors-ligne   SFX28 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 18-avril 07
  • LocationLILLE

Posté 22 mars 2012 - 17:49

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
0

#2 L'utilisateur est hors-ligne   SFX28 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 18-avril 07
  • LocationLILLE

Posté 26 mars 2012 - 09:59

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
0

#3 L'utilisateur est hors-ligne   nomutt 

  • ceinture noire 1er dan
  • Groupe : Moderateurs
  • Messages : 564
  • Inscrit(e) : 08-septembre 04

Posté 28 mars 2012 - 11:35

Voir le messageSFX28, le 26 mars 2012 - 09:59 , dit :

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

#4 L'utilisateur est hors-ligne   SFX28 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 18-avril 07
  • LocationLILLE

Posté 28 mars 2012 - 15:29

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
0

#5 L'utilisateur est hors-ligne   SFX28 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 18-avril 07
  • LocationLILLE

Posté 30 mars 2012 - 15:21

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

#6 L'utilisateur est hors-ligne   jul 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-février 14

Posté 28 février 2014 - 11:35

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

#7 L'utilisateur est hors-ligne   SFX28 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 18-avril 07
  • LocationLILLE

Posté 10 mars 2014 - 14:38

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
0

#8 L'utilisateur est hors-ligne   jul 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-février 14

Posté 13 mars 2014 - 11:54

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





Voir le messageSFX28, le 10 mars 2014 - 14:38 , dit :

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

0

#9 L'utilisateur est hors-ligne   SFX28 

  • ceinture orange
  • Groupe : Membres
  • Messages : 27
  • Inscrit(e) : 18-avril 07
  • LocationLILLE

Posté 19 mars 2014 - 10:52

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.

Fichier(s) joint(s)


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
0

#10 L'utilisateur est hors-ligne   jul 

  • ceinture jaune
  • Groupe : Membres
  • Messages : 9
  • Inscrit(e) : 28-février 14

Posté 08 avril 2014 - 15:15

Merci beaucoup pour tes réponses !!!!

Ca fonctionne bien !!!
0

#11 L'utilisateur est hors-ligne   Polobe36 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 2
  • Inscrit(e) : 18-avril 18

Posté 20 avril 2018 - 07:57

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/top...-par-vba-excel/

Merci par avance de votre aide.

Salutations.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)