Catia – VBA – Lister les matières

Important : Je ne suis pas un expert en programmation VBA, le peu de connaissances que je partage ici sont issues de mes expériences et des différentes aides que j’ai pu trouver sur internet, les programmes que je partage sur ce site peuvent être améliorés mais quel que soit mon niveau en VBA ces programmes pourront rendre service à ceux qui comme moi ont des difficultés à commencer leur premières programmations en VBA sous CATIA.

Ce programme sert à lister les matières des modèles 3D, faisant parties d’un assemblage.

Dans l’exemple qui va suivre, nous allons lister les matières présentes dans les pièces de cet assemblage :

Exemple après exécution de la macro :

On peut voir sur l’image ci-dessus la mini nomenclature avec les matières des modèles CAO, pour l’assemblage « Produit2.CATProduct » il y est écrit « Matière non définie » car ce sous assemblage n’a pas de matière attribuée, de même que la pièce « Part2.CATPart »

La macro dans son intégralité :

Explication :
Dans la première partie de la macro, nous allons trouver les variables dites « Publiques » ce sont des variables accessibles depuis toutes les procédures d’une macro.

Les variable de type « Public Property » sont des variables dont on a attribué une propriété, exemple :

A la variable « ProduitSelect » je j’affecte la propriété du document actif (celui à l’écran), ce qui me permettra à partir de cette variable, d’avoir accès aux propriétés de l’assemblage sélectionné.

Exemple :

Dans la deuxième partie de la macro, nous allons trouver la procédure de la macro qui permet d’extraire les matières utilisées dans les modèles CAO qui composent l’assemblage :

Au début de la procédure, il y a le nom de la fonction « ListeMat » c’est ce qui nous permettra de lancer la procédure depuis la boite de dialogue :

Pour afficher le nom de l’assemblage actif dans la boite de dialogue :

Issue de la variable :

Entre « For Each » et « Next » on insère le code de la fonction, « For Each » (pour chaque) sert à faire une boucle, ici on fait une boucle pour chaque documents (SousDocCatia) dans l’assemblage actif (DocCatia)

La ligne ci-dessous sert à définir si l’élément listé dans la boucle est un assemblage ou une pièce, je renseigne la variable « NomDocCatia » en lui attribuant la nom de l’élément sélectionné dans la boucle (SousDocCatia) :

If et Then, sont toujours suivis de End.

Pour lister les matériaux dans les éléments des pièces je vais devoir avoir accès aux propriétés des produits CATIA, hors pour lister les éléments dans la boucle ci-dessus j’ai besoin d’avoir accès au document CATIA, suivant que vous listez les produits ou les documents vous n’aurez pas accès aux mêmes propriétés, exemple, si je veux avoir accès aux instances des éléments d’un assemblage je ferais appel aux « Product » et si je veux avoir accès aux propriétés des fichiers (chemin d’accès, répertoire…) je ferais appel aux documents CATIA.

Je vais donc indiquer à la procédure que le « ProductDocCatia » (qui est un « ProductDocument ») est égal au document SousDocCatia qui porte le nom « NomDocCatia », en clair j’indique que le «ProductDocument » est le document qui porte le nom de …
Et comme j’ai besoin d’un « Product » pour avoir accès aux paramètres qui m’intéresse je vais indiquer que de la variable « RefProduct » est un Product (ProductDocCatia.Product).

Ensuite je référence la variable « oManager » afin d’avoir accès aux paramètres matériaux du Product sélectionné.

La partie de code ci-dessous sert à éviter un bug de la macro dû au fait qu’un élément de l’assemblage n’a pas de matériaux attribué, si la matière est bien attribué, alors je la renseigne dans la boite de dialogue (entre  Else et End If) :

CATIA - VBA - LISTER MATIERES
CATIA - VBA - LISTER MATIERES
macro-mat.zip
Version: 1.0
1.1 KiB
563 Downloads
Détails