Vous êtes sur la page 1sur 92

Automation : formation basique Cours

Digital Product Simulation

AUTOMATION
Appliqué à CATIA V5

Fondamentaux

VBA-V5R16 Page 1
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Attention !

Ce livret de formation contient une partie


du capital de connaissances de DPS.

C’est un document réservé de façon exclusive


à un usage interne, sur site DPS.

Il est confidentiel
Il ne doit pas être diffusé.

VBA-V5R16 Page 2
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Objectifs de la formation
- Créer et modifier rapidement un script Visual Basic
- Connaître les possibilités et les limites du VB
- Utiliser les interfaces Mechanical Design et Analyse
- Créer des interfaces de dialogue élaborées en VBA

Durée
- 2 jours

Pré Requis
- Catia Mechanical Design et Analyse
- Bases en programmation
VBA-V5R16 Page 3
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Vocabulaire

Feature : objet Catia qu’on trouve dans l’arbre (extrusion, point, meshpart, etc)
contrairement à un sous-élément (B-Rep, nœud d’un maillage, etc)

API : Automated Programming Interface


Ensemble de propriétés et de fonctions, relatives à un domaine (Part Design,…)

IHM : Interface Homme Machine


Ensemble des objets graphiques de saisie des données et de sortie de résultats (boites de
dialogue, icônes ,…)

IDE : Interface Developpement Environnement


Environnement graphique avec outils d’aide au développement (débuggeur), comme VBA
ou MS Visual Studio.

VBA : Visual Basic for Application


Langage Script interprété utilisé par les produits MS Office et Catia, uniquement sur
plateforme Windows.
VBA-V5R16 Page 4
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Sommaire

1- Le développement dans Catia V5 5


2- Généralités sur les macros Catia 9
3- Le langage VB (Script et VBA) 26
4- Les flux de fichiers 43
5- Références, publications et paramètres 47
6- Développement en VBA 54
7- IHM en VBA 80

Ce qu’il faut retenir 85


FAQ 86

VBA-V5R16 Page 5
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

1- Le développement dans Catia V5


Le développement dans Catia
Le langage script : Présentation
Différences entre VB Script et VBA

VBA-V5R16 Page 6
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Le développement dans Catia V5


 Il existe 3 couches de langages de développement dans CATIA V5 (et DELMIA) :
 couche principale : le CAA V5. Il permet de créer de nouveaux features et de nouveaux
comportements, dans un langage proche du C++. Coût de développement élevé.
 couche intermédiaire : l’automation. Via des scripts, il permet d’automatiser la création ou la
modification de features existants. Coût de développement moyen.
 couche haute : les templates (PKT et BKT), qui permettent de créer des features utilisateurs simples,
ainsi que les règles knowledge (KWA et KWE). Coût de développement bas.

KWA-KWE PKT BKT

Visual Basic

CAA V5

VBA-V5R16 Page 7
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Le langage Script : présentation

 Le langage Script est un langage de programmation interprété (non compilé) ne nécessitant pas de
compétences importantes en développement.
 Il existe sous deux formes : VB Script et Java Script (non présenté ici). Son équivalent en V4 est le langage
IUA.
 Le VB Script est une sous partie du langage VBA.

VB 6

VBA

VBScript

VBA-V5R16 Page 8
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Différences entre VB Script et VBA


VBA VBS
Variables non typées (Variant)
Variables typées (Dim myVar As Double).
Déclaration des variables Portée (Private, Public).
Pas de notion de portée.
Pas de variables globales.

Portabilité Windows seulement. Windows et Unix.

Débuggeur évolué, éditeur d’objets, aide Dans Catia, débuggeur simplifié.


Environnement de
intuitive, etc. Modifiable uniquement dans Modifiable par tout éditeur de texte.
développement un environnement VBA.

Éditeur d’objets de dialogue évolué (fenêtres


Messages simples, sélection objets avec
Interaction utilisateur complexes), gestion des évènements (clics
souris, file browser.
souris,…)
Références COM (composants et contrôles
Liens externes ActiveX)
Pas de références COM

Gestion des erreurs Évoluée Simplifiée

Compilateur via MS Visual Basic 6 ou .NET


Protection (licence nécessaire).
Cryptage du code uniquement.

VBA-V5R16 Page 9
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

2- Généralités sur les macros Catia


La bibliothèque de macros
Créer une nouvelle macro
Insérer une résolution d’objets
L’explorateur d’objets
Crypter une macro
Enregistrer et rejouer une macro
Les options
Exécuter une macro avec arguments
Exécuter une macro à l’aide d’une commande CNEXT
Exécuter une macro à partir d’une autre macro
Insérer une macro dans une barre d’outils

VBA-V5R16 Page 10
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

La bibliothèque de macros (1/3)


1. Aller dans
Outils/Macro/Macros… , ou
directement ALT+F8

Enregistrement/lecture
des macros
(journalizing)

IDE du VBA

VBA-V5R16 Page 11
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

La bibliothèque de macros (2/3)

2. Cliquer sur Bibliothèques de


macros

3. Cliquer sur Type de bibliothèque et


Répertoires

4. Cliquer sur Ajouter une


bibliothèque existante et
sélectionner le répertoire servant à
stocker les macros (Ex:
/VBA_R16/Data/)

Répertoires : fichiers catvbs et catscript


Projets VBA : fichiers catvba (ouvre automatiquement
l’IDE VBA)

VBA-V5R16 Page 12
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

La bibliothèque de macros (3/3)

Exécuter la macro sélectionnée

Ouvre l’éditeur de macro (pour le


changer, aller dans
Outils/Options)

Créer une nouvelle macro vide

Crypter la macro, pour la diffuser à


l’extérieur de l’entreprise

Liste des macros de la bibliothèque Type de langage :


sélectionnée (contenues dans le CATScript : syntaxe Unix
répertoire) VBScript : syntaxe générale

VBA-V5R16 Page 13
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Créer une nouvelle macro


1. Cliquer sur Créer pour générer une
nouvelle macro vide.

2. Garder le langage VB Script par


défaut et donner un nom

3. Double cliquer sur la nouvelle


macro, ou cliquer sur Editer

Par défaut, un IDE Catia sera ouvert. On


pourra choisir un autre éditeur de
texte (wordpad, …) via les options

VBA-V5R16 Page 14
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Insérer une résolution d’objet


1. Cliquer sur Insérer résolution d’un objet, puis
sélectionner un feature dans l’arbre de la pièce

 Du code VB est généré et inséré à l’endroit où l’on a cliqué


dans la fenêtre d’édition, avec des commentaires au début et à
la fin.
 Ce code construit l’historique du feature (objet) sélectionné
dans l’arbre (ici Extrusion.1)
 Ce code est toujours autonome, c’est-à-dire utilisable tel quel.

VBA-V5R16 Page 15
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

L’explorateur d’objets
1. Cliquer sur l’Explorateur
d’objets.

2. Choisir une bibliothèque


d’interfaces VB (par défaut,
toutes celles de Catia et des
Les bibliothèques d’interfaces :
modules « CAA Based » installés
fichiers LIB ou TLB contenant des
sont chargées)
classes d’interfaces Catia
(fonctions VB pour les différents
ateliers) ou externes (logiciels
CAA Based, fonctions C/C++, etc)

3. Choisir une classe de l’interface.


Tous les membres de la classe
sont affichés dans la fenêtre de
droite et le prototype en bas.

VBA-V5R16 Page 16
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Crypter une macro


1. Modifier la macro : insérer un
commentaire au début, puis la
ligne spéciale : ‘**Start Encode**

2. Cliquer sur Crypter

VBA-V5R16 Page 17
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Enregistrer et rejouer une macro


Choix du langage : CATScript (enregistrement avec
1. Fermer et aller dans Outils/Macro/Démarrer objets déclarés et typés) ou VBScript (sans
l’enregistrement déclaration)

2. Renommer la macro, puis cliquer sur On appelle aussi la capacité de pouvoir


Démarrer, et effectuer l’enchaînement enregistrer une action en VB le
des actions à enregistrer journalizing

Attention ! Toutes les fonctionnalités de Catia ne


3. Stopper l’enregistrement.
sont pas forcément « enregistrables ». Il
faut dans ce cas consulter l’explorateur
d’objets ou la documentation des interfaces

VBA-V5R16 Faire exercice 1 Page 18


Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Les options
On trouvera dans Outils/Options/Général/Macros l’option pour changer l’éditeur de macro par
défaut, et pour charger des bibliothèques afin d’enrichir la palette d’APIs.

L’éditeur peut aussi être défini via la variable


d’environnement : set CATMacroEditor=NOTEPAD

Avec Ajouter fichier, on pourra


charger des bibliothèques
externes (formats DLL, TLB et
OLB)

VBA-V5R16 Page 19
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Exécuter une macro

Pour exécuter une macro, on pourra utiliser l’un des 5 modes suivants :

 Exécuter à partir du menu principal (voir précédemment), avec ou sans arguments,

 Exécuter à l’aide d’une commande CNEXT,

 Exécuter la macro à partir d’une autre macro,

 Exécuter la macro à partir d’un document MS Office (Excel par exemple),

 Exécuter la macro via une icône dans une barre d’outils.

VBA-V5R16 Page 20
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Exécuter une macro avec arguments


La macro par défaut possède une
structure de type Sub (sub
routine) qui peut posséder des
arguments :

Cliquer sur OK avant


d’exécuter la macro

VBA-V5R16 Page 21
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Exécuter une macro à l’aide d’une commande CNEXT


On pourra lancer une macro en utilisant la commande CNEXT (dans …./intel_a/code/bin/ pour windows)

 Avec l’option macro suivie du nom


complet de la macro (attention aux
blancs, mettre des guillemets) :

 Avec l’option batch on pourra lancer la


commande depuis un script shell Unix,
ou via un raccourci Catia sur Windows
:

VBA-V5R16 Page 22
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Exécuter une macro à partir d’une autre macro


Il peut être utile d’exécuter séquentiellement plusieurs macros à partir d’une macro dite générale.

Nom du répertoire de la macro

Nom de la macro (avec Nom de la sub routine (ou de la fonction) à


extension) exécuter (par défaut : CATMain)

Pour exécuter la macro depuis une macro « non Catia » (macro Excel par exemple), on insérera les lignes
suivantes, afin de définir l’objet racine « Catia » :

Dim CATIA As Object


Set CATIA = GetObject(, "CATIA.Application") pour récupérer l’application Catia ouverte au moment de l’exécution
Ou Set CATIA = CreateObject("CATIA.Application") pour créer une nouvelle application Catia

On pourra également exécuter un projet catvba.

VBA-V5R16 Page 23
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Insérer une macro dans une barre d’outils (1/3)


On pourra également insérer une ou plusieurs macros dans une barre d’outils, visible dans tous les ateliers
de Catia.

1. Aller dans Outils/Personnaliser

2. Aller dans Barre d’outils


puis sélectionner
Nouvelle. Donner un
nom à la barre
d’outils

VBA-V5R16 Page 24
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Insérer une macro dans une barre d’outils (2/3)


3. Cliquer sur Ajouter des 4. Sélectionner la macro
commandes dans la liste, puis
valider

VBA-V5R16 Page 25
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Insérer une macro dans une barre d’outils (3/3)


5. Aller dans Commandes et sélectionner Macros 6. Nous allons affecter des propriétés à la macro.
Sélectionner la macro qui a été insérée
précédemment, puis cliquer sur Affiche les
propriétés. Choisir une icône dans
l’explorateur, définir un alias, un raccourci,
etc

Attention ! La barre d’outil et les icônes insérées ainsi créées seront stockées dans le fichier
FrameGeneral.CATSetting uniquement sur le compte de l’utilisateur.
Pour qu’un autre utilisateur, ou une autre machine puisse utiliser cette barre d’outil, il faudra copier ce
fichier.

VBA-V5R16 Faire exercice 2 Page 26


Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

3- Le langage VB (Script et VBA)


La notion d’objet
Rappel : structures algorithmiques
Naviguer dans l’arbre Catia
Les Collections Catia
Le type Collection (VBA uniquement)
Utilisation de la documentation
Tableaux
Sub-routines et Fonctions
Gestion des erreurs
Recommandations de codage

VBA-V5R16 Page 27
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

La notion d’Objet
 Le Visual Basic est un langage basé sur la notion de Programmation Orientée Objet (POO). Cette
notion permet de travailler autour de l’objet, sur lequel on vient lire ou écrire des propriétés, ou agir
via des méthodes.
Cette notion est extrêmement simplifiée en VB (pas de pointeurs, pas d’héritage, …).

 Les objets correspondent aux features Catia que l’on trouve principalement dans l’arbre de
spécifications. Exemple : un solide, un point, un maillage, etc.
 On peut néanmoins créer son propre objet, via une structure ou une classe.

 Définir la propriété d’un objet : Objet.ProprieteNum = 100 ou Objet.ProprieteBool = True

 Récupérer une information (attribut) d’un objet : variable = Objet.ProprieteNum


Si cette information est un objet : Set Objet2 = Objet.ProprieteObj

 Agir sur un objet : Objet.Methode

En VB, la notion de POO est très limité. Les possibilités du langage Visual Basic.Net (prononcé « Dot Net »)
sont beaucoup plus vastes (classes, héritage, gestion des erreurs).

VBA-V5R16 Page 28
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Rappel : structures algorithmiques (1/2)

 Les commentaires commencent par le caractère


guillemet simple.
 Pour écrire sur plusieurs lignes sans retour
chariot, utiliser « _ ».
 On peut insérer une variable ou un caractère
ASCII dans une chaîne avec « & ».
Ex : MsgBox (« N= » & N )
 Caractères ASCII :Chr(13) = vbLf = retour
chariot
 Interruption : Exit Sub, Exit Function, Exit For
 Boucles : il n’y a pas d’équivalent de « continue »
(C++) pour passer directement à l’itération
suivante. Il faudra utiliser « GoTo » (VBA).
VBA-V5R16 Page 29
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Rappel : structures algorithmiques (2/2)

VBA-V5R16 Page 30
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Naviguer dans l’arbre Catia


Logique de hiérarchie utilisée en VB pour accéder à un feature de l’arbre :

Set partDocument1 = CATIA.ActiveDocument CATIA : root object (la


session Catia)
Set part1 = partDocument1.Part
Syntaxe équivalente (non conseillée) :
Set bodies1 = part1.Bodies Set bodies1 =
CATIA.ActiveDocument.Part.Bodies
Set body1 = bodies1.Item("Corps de pièce.2")

Set sketches1 = body1.Sketches

Set sketch1 = sketches1.Item("Esquisse.2")

Set geometricElements1 = sketch1.GeometricElements

Set point2D1 = geometricElements1.Item("Point.1")

Tip : La plupard des objets Catia possèdent la propriété


Parent qui permet de retrouver l’objet hiérarchique
VBA-V5R16 supérieur direct. Page 31
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Les collections Catia

 Une collection est une liste d’objets. En général, le nom d’une collection se termine par « s ».
 Toute collection dispose de propriétés pour accéder aux objets qu’elle contient, ainsi que de méthodes
pour ajouter des objets :
 Item() : récupère un objet de la collection par son rang (de 1 à N), ou son nom.
 Count() : récupère le nombre d’objets dans la collection (lecture)
 Add() : créer un objet, et l’ajoute dans la collection

Exemple :

Set documents = CATIA.Documents ‘ récupère la collection de documents de la session Catia.


nbDoc = documents.count ‘ récupère le nombre de documents.
Set doc = documents.item(1) ‘ récupère le premier objet (le premier document).
Set partDoc = documents.Add(« Part ») ‘ créé un nouveau document de type « part ».

Set bodies1 = part1.Bodies ‘ récupère la collection des corps de pièces de la part.


Set body1 = bodies1.Item("Corps de pièce.2") ‘ récupère un corps de pièce en fonction de son nom.

Remarque : bien qu’étant une liste d’objets, une collection est un objet.

VBA-V5R16 Page 32
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Le type Collection (VBA uniquement)


En VBA, le type Collection permet de stocker des objets quelconques (les vôtres par exemples) sous forme de
liste

Ce type propose les propriétés et méthodes suivantes :


 Add(objet à ajouter, [clé d’enregistrement], [avant], [après]) : ajoute l’objet passé en argument
 Item(indice ou clé d’enregistrement) : renvoie un élément de la collection
 Remove(indice ou clé d’enregistrement) : supprime un élément de la collection (tous les indices des
éléments suivants l’objet supprimé sont automatiquement mis à jour)
 Count : renvoie le nombre d’éléments présents dans la collection

Exemple :

Dim MyCollection As Collection ‘Déclaration


Set MyCollection = New Collection ‘Appel au constructeur

MyCollection.Add part1, part1.Name

VBA-V5R16 Faire exercice 3 Page 33


Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Utilisation de la documentation (1/4)


La documentation va nous permettre de connaître rapidement quels sont les objets (et parmi eux les
collections), les propriétés et les méthodes à utiliser pour arriver au résultat souhaité. Le fichier
contenant l’aide est V5Automation.chm, dans …\B16\intel_a\code\bin.

1. Exécuter le fichier de l’aide


V5Automation.chm

2. Dans Working With Infrastructure :


sélectionner Application objects

3. Cliquer sur Documents, dans la fenêtre


de droite.

Cette documentation est restreinte aux


objets Catia.
L’aide VBA est plus générale et est
étendue aux objets VB.

VBA-V5R16 Page 34
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Utilisation de la documentation (2/4)

Type : collection ou objet. On parle plutôt de classe d’objets

Arbre d’héritage

Autres types en rapport avec Documents

Listes des propriétés et méthodes


de la collection

VBA-V5R16 Page 35
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Utilisation de la documentation (3/4)


Examiner le prototype de la méthode Add : elle prend une chaîne de caractère (type CATBSTR) en entrée,
et renvoie le document créé. Un exemple d’utilisation de la méthode est également proposé.

Objet renvoyé (cliquer sur le lien pour ouvrir la


Argument d’entrée
page html du type Document)

Func(tion)
Sub(routine)
Prop(erty) Valeurs possibles de l’argument d’entrée
(pas toujours explicité)

VBA-V5R16 Page 36
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Utilisation de la documentation (4/4)


On peut remarquer que puisque la collection Documents hérite de Collection, elle possèdera alors en plus
de ses propres méthodes, celles de Collection (Count(), name(), etc)

Propriétés et méthodes héritées du type Collection :

Propriétés et méthodes propres au type Documents :

VBA-V5R16 Page 37
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Tableaux (1/2)
Tableaux statiques :
• La taille du tableau est défini lors du développement et n’est pas modifiable pendant le run-time
(en cours d’exécution)
• Déclaration (en début de procédure ou de fonction) : avec le mot-clé Dim
• Exemples :
Dim MyArray(9, 9) As Integer ‘Déclare un tableau statique d’entiers à 10 lignes et 10 colonnes
Dim MyArray(5 To 14, 1 To 10) As Boolean ‘Déclare un tableau statique de booléens à 10 lignes dont les
indices vont de 5 à 14 et à 10 colonnes dont les indices vont de 1 à 10
Dim MyArray(10) ou Dim MyArray(10) As Variant ‘Déclare un vecteur de variants à 11 composantes

Tableaux dynamiques :
• La taille du tableau est modifiable pendant le run-time (en cours d’exécution)
• Déclaration (en début de procédure ou de fonction) : avec le mot-clé Dim
• Modification de la taille du tableau (dans une boucle par exemple) : avec le mot-clé Redim
• Exemples :
Dim MyArray() As Integer ‘Déclare un tableau dynamique d’entiers
Dim MyArray() As Boolean ‘Déclare un tableau dynamique de booléens
Dim MyArray() ou Dim MyArray() As Variant ‘Déclare un tableau dynamique de variants

Redim MyArray(1 To 10, 9) ‘Redimensionne le tableau MyArray pour qu’il possède 10 lignes d’indices 1
à 10 et 10 colonnes d’indices 0 à 9. Ne pas retyper le tableau.

Rappel : le typage des variables n’est possible qu’en VBA


VBA-V5R16 Page 38
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Tableaux (2/2)

 Par défaut, la numérotation des indices commence à 0. En VBA uniquement, elle peut être égale à 1 en
utilisant le mot-clé Option Base (tous les tableaux sont impactés). On peut également utiliser le mot-clé
To pour définir les bornes min et max de chaque tableau.

 Le mot-clé Preserve permet de conserver le contenu d’un tableau lors de son redimensionnement.
Cependant, seul la dernière dimension peut être modifiée en utilisant le mot-clé Preserve.
Dim MyArray()
Redim MyArray(5, 10)
Redim Preserve MyArray(5, 11) ‘le tableau prend une colonne de plus en conservant les données
des 11 premières colonnes

 Compléments :

• Définition et accès aux composantes d’un tableau :

• Indice maxi : méthode UBound( nomTableau, dimension)


Indice mini : méthode LBound( nomTableau, dimension)

VBA-V5R16 Page 39
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Sub-routines et fonctions
Par défaut, une sub-routine appelée CATMain sans arguments est créée (VBScript). De plus, il est
conseillé, voir obligatoire, de structurer son programme en fonctions et sub-routines.
Une fonction peut retourner une valeur tandis que la sub-routine ne renvoie rien. Les deux peuvent avoir
éventuellement des arguments en entrée.

 La sub-routine s’appelle sans parenthèses, ou avec les MySubRoutine arg1, arg2


parenthèses et le terme Call : Call MySubRoutine ( arg1 , arg2 )

 La fonction s’emploie toujours avec des parenthèses. Si la


fonction retourne un objet, on doit mettre Set devant le nom de Retour = MyFunction ( arg1 , arg2 )
l’objet retourné.

 Pour définir la valeur retournée par une fonction dans son code
propre, on utilise une variable du même nom :

Function ExtractFolderPath( iPath )

taille = Len(iPath)
buffer = split(iPath,"/")
pos = Len( buffer(Ubound (buffer) )
ExtractFolderPath = Left(iPath , taille - pos )

VBA-V5R16 End Function Page 40


Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Gestion des erreurs (1/2)


Il est important de pouvoir gérer les messages d’erreurs renvoyés par les diverses méthodes utilisées dans
le programme afin d’éviter les messages non explicites du moteur de script VB.

On Error Resume Next


en cas d’erreur le code continue sur la ligne suivante
On Error GoTo Balise
en cas d’erreur le code va directement sur la ligne Balise:
On Error GoTo 0
désactive la gestion d’erreur personnalisée (ci-dessus) et redonne la main au moteur de
script VB

CATIA.DisplayFileAlerts = False annule tous les messages Catia (warnings et erreurs).


Mais attention à ne pas masquer toutes les erreurs utiles au débogage même du programme !

VBA-V5R16 Page 41
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation
Sans gestion d’erreur personnalisée
Gestion des erreurs (2/2)
On Error Resume Next
Set partDocument1 = CATIA.ActiveDocument
if Err.Number <> 0 Then ‘ou if err<>0 Then
msgbox "erreur : impossible de récupérer le
document actif." & vbLF & "Assurez-vous qu’un
document part soit actif avant de lancer la macro."
err.clear Avec gestion d’erreur personnalisée
Exit Sub
end if
On Error GoTo 0 ‘fin du traitement de l’erreur

On Error Resume Next


Set partDocument1 = CATIA.ActiveDocument Avec génération d’une erreur système
if Err.Number <> 0 Then ‘ou if err<>0 Then
On Error GoTo 0
Err.Raise 5555,, "Erreur : impossible de
récupérer le document actif." ‘Fin d’exécution du code
end if
On Error GoTo 0 ‘fin du traitement de l’erreur

VBA-V5R16 Page 42
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Recommandations de codage
Il est important de respecter certaines règles standards de codage afin de rendre le code plus lisible, et
donc plus facile à maintenir.

 Les noms des sub-routines et des fonctions doivent être des verbes ou des phrases verbales, avec des
majuscules au début de chaque mot, comme : ExecuteProcessAndUpdate()

 Les variables arguments d’entrée doivent être précédées de « i », et celles de sortie de « o » :


CreateProcess( iFichierEntree , oFichierSortie)

 Les variables pourront utiliser un préfixe en minuscule indiquant le type : aTableau, sChaîne, etc.

 Les constantes doivent être toutes en majuscules, avec «_» comme séparateur, comme : MAX_VALUE.

 Chaque fonction devra être précédé d’un en-tête (en commentaires) avec : nom (explicite) de la fonction,
entrées avec valeurs possibles, sorties. La sub-routine principale inclura en plus le nom du développeur,
la date, la version ainsi que la tâche réalisée.

 Les blocs (if…then…else, for…to…next, etc.) imbriqués les uns dans les autres devront être tabulés.

 Les affectations devront toujours s’effectuer via des variables :


MAX = 5 ; for i=1 to MAX , plutôt que : for i=1 to 5

VBA-V5R16 Page 43
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

4- Les flux de fichiers


Lecture dans un fichier
Ecriture dans un fichier
Manipulation de chaînes de caractères

VBA-V5R16 Page 44
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Lecture dans un fichier (Windows et Unix)


1. A partir de l’application racine (CATIA), récupérer l’objet FileSystem.
2. Créer un objet oFile de type fichier contenant le nom et le chemin où il se trouve, via GetFile().
3. Ouvrir le fichier en lecture avec OpenAsTextStream() (qui renvoie un flux) sur l’objet du fichier (oFile).
4. La méthode ReadLine appliqué sur l’objet flux (oStream) renvoie une chaîne de caractères contenant
le contenu de la première ligne du fichier. Le second appel de cette méthode s’effectuera sur la ligne
suivante, et ainsi de suite.
5. Tant que la ligne n’est pas la dernière lue (AtEndOfStream), on continue à lire et on affiche le contenu.
6. Fermer le flux de texte oStream avec la méthode Close.

Set oFileSys = CATIA.FileSystem

my_path = "C:\VB-Exemples\Input.txt"
Set oFile = oFileSys.GetFile( my_path )

Set oStream = oFile.OpenAsTextStream("ForReading")

Do Until oStream.AtEndOfStream
chaine = oStream.ReadLine
msgbox chaine
Loop
oStream.Close
VBA-V5R16 Page 45
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Ecriture dans un fichier (Windows et Unix)


1. A partir de l’application (CATIA), récupérer l’objet FileSystem.
2. Créer un objet iFile de type fichier contenant le nom et le chemin où il se trouve, via CreateFile().
3. Ouvrir le fichier en écriture avec OpenAsTextStream() (qui renvoie un flux) sur l’objet du fichier
(iFile).
4. La méthode Write() appliqué sur l’objet flux (iStream) écrit une chaîne de caractères dans le fichier.
5. Fermer le flux de texte iStream avec la méthode Close.

Set iFileSys = CATIA.FileSystem


my_path = "C:\VB-Exemples\Output.txt"
Set iFile = iFileSys.CreateFile( my_path , FALSE )

Set iStream = iFile.OpenAsTextStream("ForWriting")

iStream.Write ( "** Copyright Digital Product Simulation - 2005" & chr(10) )


iStream.Write ( "** Fichier de sortie" & chr(10) )

iStream.Close

 Chr(10) = vbLF = retour chariot

VBA-V5R16 Page 46
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Manipulation des chaînes de caractères


L’exemple ci-dessous montre comment dissocier les éléments d’une chaîne en fonction d’un séparateur (ici
le point-virgule) :

chaine = "100;200"

new_length = Len(chaine)  Len(chaine) = 7 (longeur totale)


My_new_pos = InStr(1, chaine, ";")
 My_new_pos = 4 (emplacement
new_position = My_new_pos - 1
du caractère « ; »)
xtxt = Left(chaine, new_position)
msgbox xtxt
 xtxt = 100
sepPosition = Len(chaine) - (new_position) - 1
ytxt = Right(chaine,sepPosition)  sepPosition = 3
msgbox ytxt
 ytxt = 200
Dim SplittedString() as String
SplittedString=Split(chaine, ";“)
xtxt = SplittedString(0)
ytxt = SplittedString(1)

Conversions de chaînes :
 Chaîne en valeur numérique : double =CDbl(chaîne) , ou : entier = CInt(chaîne)
 Valeur numérique en chaîne : chaîne = CStr(double)

VBA-V5R16 Faire exercice 4 Page 47


Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

5- Références, publications et paramètres


Sélection
Propriétés graphiques
Référence à partir d’un sous-élément
Référence à partir d’un objet
Les publications
Les paramètres Knowledge

VBA-V5R16 Page 48
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Sélection
Afin d’utiliser certaines fonctions ou méthodes VB, il est parfois demandé d’utiliser un objet de type
Selection. On utilisera alors la propriété Selection() sur le document.
En outre, nous pourrons notamment utiliser la méthode SelectElement<i> qui permet de récupérer un objet
sélectionné à la souris. Exemple :

Set selection1 = CATIA.ActiveDocument.Selection 1. Récupérer un objet avec Selection() sur


ReDim SelectFilter(1) un document (ici le document actif)
SelectFilter(0) = « Face »
SelectFilter(1) = « Vertex » 2. Définir un filtre de sélection (via tableau
SelectFilter). Ici objet face ou vertex.
OutputState =
selection1.SelectElement2(SelectFilter,"Select a face 3. Utiliser la méthode SelectElement2() sur
or a vertex",0) l’objet de sélection. Ajouter un
If OutputState = "Normal" Then message explicite.
Set selected = selection1.Item(1).value
Elseif OutputState = "Cancel" Then 4. Si l’utilisateur sélectionne un élément
Exit sub valide, stocker l’élément dans un
End If objet avec Value(), sinon terminer.

Il existe également la méthode SelectElement3, qui gère en plus la multisélection.

VBA-V5R16 Page 49
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Propriétés graphiques
 Les propriétés d’un objet, c’est-à-dire les options accessibles par menu contextuel sur un objet, tels que
le Show/NoShow, la couleur, le type de trait/point, etc, sont accessibles via VisProperties.
 Il faut d’abord récupérer l’élément sous forme d’une sélection, et ensuite utiliser la sub-routine
VisProperties.
 Sur l’objet de propriété, on utilisera alors SetShow, GetVisibleColor, etc ainsi qu’un type énuméré
pour valuer l’état. Attention, ce sont des sub-routines, donc pas de parenthèses.

Set Selection0 = ...


Dim Obj2 As VisPropertySet
Set Obj2 = Selection0.VisProperties
Set Obj2.SetShow catVisPropertiesNoShowAttr

VBA-V5R16 Page 50
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Référence à partir d’un sous-élément (topologie)


 Une référence est un type spécifique très utilisé (exemple : AddNewSolifFaceFillet de la classe
ShapeFactory)
 Les sous-éléments sont des éléments de topologie : vertex, edge, face.
 Dans Catia, le sous-élément est accessible via son nom à l’aide des deux méthodes
CreateReferenceFromName (en absolu) ou CreateReferenceFromBRepName (en relatif, avec nom de
l’objet). Le sous élément est appelé aussi BRep : Boundary Representation.
 Les sous-éléments sont délicats à manipuler car les noms intègrent l’historique de construction
complet. Il vaut mieux utiliser, quand c’est possible, un objet (de l’arbre) ou une publication.

Le nom qui référence un objet dans la méthode


CreateReferenceFromName suit la syntaxe suivante :

- dans une part : <nomPart> /! <nomObjet>


- dans un product : <nomProduct> / <nomInstancePart> /!
<nomObjet>

VBA-V5R16 Page 51
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Référence à partir d’un objet


1. On récupère l’objet à partir de la collection (ici, la collection des objets HybridShapes) via la méthode
Item en utilisant soit le rang dans la collection, soit le nom de l’objet (ici Fill.1).
2. On créé la référence en utilisant la méthode CreateReferenceFromObject. Cette méthode est valable
uniquement pour l’objet Part.

Pour retrouver l’objet à partie de la référence, on utilisera la méthode :


Set <obj> = <Part>.FindObjectByName( <reference>.DisplayName )
ATTENTION ! Si deux objets appartenant au même part possède le
même nom, seul le premier dans l’historique de construction est
renvoyé.

VBA-V5R16 Page 52
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Les publications
La publication est l’élément le plus stable qui soit, car on n’utilise plus l’objet lui-même mais un lien vers son
nom. Ainsi, si l’objet change mais son nom reste le même, le lien reste stable.
La méthode à utiliser pour créer une publication est :
1. Récupérer le set de publications (collection) via Publications sur l’objet Product d’un document Part
ou Product,
2. Créer la publication avec Add en donnant un nom comme argument,
3. Récupérer l’élément à publier via une référence (avec CreateReferenceFrom…),
4. Lier la référence à la publication avec SetDirect sur la collection de publications.

Set product1 = partDocument1.Product


Set publications1 = product1.Publications
nomPubli = « MyPubli »
Set publication1 = publications1.Add( nomPubli )

Set reference1 = product1.CreateReferenceFromName(…)


publications1.SetDirect nomPubli, reference1 La référence doit être demandée sur l’objet
product de la Part

VBA-V5R16 Page 53
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Les paramètres knowledge


Différentes fonctionnalités sont disponibles :
1. Récupérer le set global de paramètres via Parameters sur le document,
2. Filtrer par document : récupérer les paramètres relatifs à une Part ou un Product en vérifiant le nom
du premier parent du paramètre (Parent),
3. Filtrer par feature : récupérer les paramètres relatifs à un feature via SubList,
4. Filtrer par sous-sets : récupérer le set de paramètres racine puis les sous-sets (ParameterSets),
5. Valuer le paramètre (avec ou sans unités si numérique) avec ValuateFromString..

Dim ParamList As Parameters


Set ParamList = ActiveDoc.Part.Parameters

Msgbox ParamList.item(1).Parent.Parent.name

Set Pad1 = ...


Dim Pad1SubList As Parameters
Set Pad1SubList = ParamList.SubList(Pad1, False)

Set ParamSets = ParamList.RootParameterSet.ParameterSets

Pad1SubList .Item(1).ValuateFromString("300mm")

VBA-V5R16 Page 54
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

6- Développement en VBA
L’éditeur VBA
Les options
Aide au développement
Créer un module
Importer des données
Exporter des données
Exécuter une macro depuis VBA
Créer une procédure
Le typage des variables
Portée des variables, des procédures
Utilisation du debugger Windows only
Importer une bibliothèque externe
Liens avec Excel

VBA-V5R16 Page 55
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

L’éditeur VBA (1/5)


L’environnement de développement VBA est accessible dans le même menu Outils/Macro, ou via le
raccourci ALT+F11. Il n’est disponible que sur Windows.

Ici, nous allons créer un nouveau projet qui


contiendra les différentes sources du
programme

VBA-V5R16 Page 56
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

L’éditeur VBA (2/5)


1. La première étape est la même que pour un script classique. On doit sélectionner une
bibliothèque existante ou en créer une nouvelle. Choisir le type Projets VBA dans le menu
déroulant.
2. Cliquer Ajouter pour ouvrir un projet catvba existant.
3. Sinon, cliquer sur Créer une nouvelle bibliothèque. Double-cliquer sur le projet pour ouvrir
l’IDE VBA.

 Par défaut, le fichier CATVBA est généré dans les


settings utilisateur

VBA-V5R16 Page 57
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

L’éditeur VBA (3/5) Menus et barres d’outils (voir slide


suivant)

Fenêtre des projets avec liste des


sources

Fenêtre des propriétés (nom, Fenêtres des différentes sources du projet


propriétés graphiques, etc)
de la source sélectionnée

VBA-V5R16 Page 58
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

L’éditeur VBA (4/5)

VBA-V5R16 Page 59
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

L’éditeur VBA (5/5)

VBA-V5R16 Page 60
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Les options
Dans Tools/Options, nous pouvons définir les préférences utilisateur :

Auto Syntax Check : désactivé,


permet d’éviter le
débugage systématique
lors des erreurs de frappes

Require variable Declaration :


désactivé, permet de ne
pas déclarer Auto… : permet d’activer l’aide
systématiquement les intuitive (en mode « break »,
variables explicitement ou « debug »)

VBA-V5R16 Page 61
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Aide au développement (1/2)


 Pour chercher des informations sur des objets Catia, cliquer sur Aide html relative à l’objet
Object Browser dans la barre d’outils Standard.

Taper le nom de
l’objet à
chercher

Clic droit sur une méthode :


Group Members pour
afficher les méthodes et
propriétés héritées

prototype
Liste des méthodes et
propriétés.

VBA-V5R16 Page 62
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Aide au développement (2/2)

1. Aide intuitive en tapant « . » ou le


début du nom d’une propriété ou
d’une méthode sur un objet
dimensionné et typé (avec Dim et As).
2. Sélectionner la méthode et valider.
3. Fonctionne également pour le type
(taper « As » et l’aide apparaît).
4. Terminer en tapant F1 sur l’objet, la
collection ou la méthode, directement
dans le code, pour ouvrir l’aide html.

Aide Visual Basic


Pour mettre en commentaires un bloc complet de générale
code, on utilisera Comment Block dans le
menu View/Toolbars/Edit

VBA-V5R16 Page 63
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Créer un module
Dans l’éditeur VBA, on travail dans un projet dans lequel on vient créer :
 les modules : ils contiennent les sources du programme. Ils servent à organiser le projet.
 Les user-forms : ce sont les boites de dialogues. Les sources associées aux boutons (évènements, ou
call-back) y sont également intégrées.
Toutes les sources (modules, user-forms) sont stockés dans un seul et même fichier :le catvba.

1. Clic droit sur projet + Insert/Module.

2. Pour supprimer le
module, clic droit
sur projet +
Remove Module.

Class Module : module spécial pour


développement orienté objet

VBA-V5R16 Page 64
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Importer des données


Nous avons également la possibilité d’importer des données extérieures à Catia, via File/Insert File (ou
CTRL+M).
On peut aussi importer des données dans un projet ou un module en particulier, via le clic droit + Import File.
Les types de fichier reconnus sont :
 Form Files (.frm) : le code source des user-Forms (fichier type texte).
Attention : il est impossible d’importer un fichier .frm provenant de Visual Basic 6 ou .NET
 Basic Files (.bas) : le fichier d’échange contenant le code source des modules du programme (fichier
type texte).
 Class Files (.cls) : sources de modules de classes (POO). Réservés aux programmeurs confirmés.

VBA-V5R16 Page 65
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Exporter des données


 Nous avons également la possibilité d’exporter les données du projet global via File/Export File (ou
CTRL+E).
 Pour exporter le code source d’un module en particulier, en demandera l’export, via le clic droit sur le
module + Export File. Pas d’export possible du projet entier.
 Il n’ y a qu’un seul type de format de modules à l’export : le Basic File (.bas), lisible par tout éditeur
de texte et VBA (Microsoft Office).
 Pour exporter une User-Form, on utilisera également le clic droit sur la User-Form + Export File.
Dans ce cas, un fichier texte Form File (.frm) sera exporté. Un fichier binaire .frx sera aussi exporté,
contenant les données comme les images (bmp).

VBA-V5R16 Page 66
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Exécuter une macro depuis VBA


Les commandes d’exécution sont accessibles dans la barre d’outils Standard. Cliquer sur Run Sub/UserForm.

Pour basculer dans l’IDE depuis Catia


taper ALT+F11
Pour basculer dans Catia depuis l’IDE
cliquer sur

Le point d’entrée du projet


Si le projet est sélectionné, toutes les sub-
est la procédure
routines de tous les modules sont
appelée CATMain()
proposées. Cliquer sur Run Macro.

ATTENTION ! L’exécution de la
macro ne lance pas la sauvegarde. Il
faut penser à sauvegarder le projet
avant chaque exécution.
VBA-V5R16 Faire exercice 5 Page 67
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Créer une procédure


1. Insérer une procédure dans le module avec Insert/Procédure

2. Choisir le type de procédure, ainsi que la portée (public ou


private)

Déclaration procédure :
[Public | Private ] [Static] Function name [(arglist)] [As type]

Déclaration argument :
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]
En VBA, il est possible de spécifier le passage des variables par valeur (ByVal : contenu de la variable est
copié, donc variable d’origine inchangée ) ou par référence (ByRef : variable passée directement)

VBA-V5R16 Page 68
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Le typage des variables(1/3)


 Le typage des objets et variables est facultatif en VBA et inexistant en VBS.
 Pour déclarer et typer un objet ou une variable : Dim <nomVariable> As <Nomtype>

 Types et allocation mémoire :


Boolean : 2 octets
Integer : 2 octets (de -32.768 à 32767). Attention aux « overflows » (dépassement de limites)
Long : 4 octets (de -2.147.483.648 à 2.147.483.647)
Double : 8 octets
String : 1 octet par caractères (+ 10 octets si taille variable)
Object : 4 octets
Tableau : 20 octets + taille du contenu
Variant : 16 octets (numérique) ou 22 octets (string) + 1 octet par caractère

Si on ne « type » pas une variable, l’interpréteur utilisera un type par défaut : le Variant. Il alloue
alors 16 octets, qui seront partiellement utilisés, selon le contenu de la variable. A éviter.

VBA-V5R16 Page 69
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Le typage des variables(2/3)


Dans Catia, certains objets ne doivent pas être typés (en fait, typés en « Variant »). Sinon, on aura des
dysfonctionnements allant de l’erreur de compilation (voir ci-dessous), au crash de Catia.

De manière générale, lorsqu’un objet (classe) propose une méthode ou une propriété qui manipule un tableau
de « Variant » (CATSafeArrayvariant), il faudra typer cet objet en « Variant ». On s’aidera de la
documentation ou de l’explorateur d’objets pour vérifier.

Dim Selection1 'As Selection


Set Selection1 = CATIA.ActiveDocument.Selection
rep = Selection1.SelectElement2( tableauFilter , « », False )

VBA-V5R16 Page 70
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Le typage des variables (3/3)


Si on ne « type » pas correctement une variable ou un objet, on risque une erreur.
Si l’erreur est due à un type qui n’existe pas, l’erreur sera trouvée rapidement à la compilation syntaxique.
Sinon, l’erreur ne sera trouvée qu’au RunTime (exécution du programme), et sera donc plus difficile à
trouver. L’erreur sera de type « Type mismatch ».

Pour corriger l’erreur, il faut voir la signature de la méthode (dans la documentation) et vérifier le type de
l’argument. On devra utiliser celui indiqué, ou un type hérité.

Exemple : On utilise la méthode Part(). Si l’objet qui est retourné est typé en PartDocument, on aura une
erreur d’exécution Mismatch. On doit utiliser le type Part, un type hérité (Object), ou bien Variant (à éviter).

Les types VB dans la doc. sont souvent appelés CATIAXX


VBA-V5R16 ( avec XX le nom à utiliser dans le code) Page 71
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Portée des variables, des procédures


 En VBA, on ajoute également la notion de portée.
Portée de procédure : variable déclarée dans une fonction ou une sub-routine. Elle est détruite
au passage de « End Function » ou de « End Sub ».

Portée de module : variable déclarée dans un module (simple, userform ou classe) avec Dim,
Const ou Private. Visible uniquement dans le module.

Portée de projet : variable déclarée dans un module, mais avec le mot clef « Public ». Visible
dans tous les modules du projet. Ce sont des variables globales.

 Si la variable est précédée du mot clef Const, on interdit le changement de valeur de cette variable.
 Ce mot clef Const peut également être spécifié pour un argument de procédure.
 De la même manière, on utilisera les mots clés Private et Public dans la déclaration des procédures et
des fonctions pour définir leur portée.

‘ Module1 ‘ Module2
Private strPriv As String Public Sub proc ()
Public strPub As String Msgbox strPub ‘ -> 10
Private Const MAX_VALUE = 500 End Sub

Sub CATMain ()
strPub = 10
VBA-V5R16 Dim myObj = … Page 72
Copyright Digital Product Simulation 2007 End Sub
Automation : formation basique Cours
Digital Product Simulation

Utilisation du débuggeur (1/3)


La « compilation » (en fait la recherche d’erreurs de syntaxe) s’effectue automatiquement, et un message
apparaît le cas échéant. Cliquer sur Debug pour effectuer le debuggage : la ligne en défaut est
sélectionnée en jaune avec un marqueur sur la gauche.

Cliquer sur Reset pour arrêter le debuggage et  La fonction Compile dans le menu Debug
l’exécution. sert à lancer le correcteur syntaxique sans
exécuter le projet.
 Ce correcteur ne trouvera que les erreurs de
type : oubli de fermeture de parenthèse, de
guillemets, utilisation d’une fonction
inconnue, etc.

VBA-V5R16 Page 73
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Utilisation du débuggeur (2/3)

Fenêtres de debug.
Debug/Exécution Arrêt Watch : contenu des variables.
( F5 ) mode
Immediate : utilisé avec Debug.print
Debug
Steps in/over/out : pour définir si le débuggeur
doit court-circuiter les blocs (if then else, etc)
ou bien y passer (step in)

Point d’arrêt (Break Point) : l’endroit ou le


débuggeur s’arrête temporairement pour
permettre la visualisation des variables ( F9 ou
clic sur marge grise directement dans le code).
Un point rouge est alors inséré dans la marge, sur
la ligne de code sélectionnée.

VBA-V5R16 Page 74
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Utilisation du débuggeur (3/3)


 Création d’un point d’arrêt :
Cliquer sur une ligne du code (juste avant la partie à débugger) et taper F9.
Exécuter le mode Debug : il s’arrête au point d’arrêt, la ligne « Set pad1=… » n’est pas encore lue.
Dans Locals, l’objet pad1 est vide.
La ligne en cours de lecture est surlignée en jaune avec une flèche à gauche dans la marge.

Taper F8 pour continuer l’exécution pas à pas. Taper F5 pour passer d’un point d’arrêt à un autre.

En mode Debug, on peut modifier le code et ensuite continuer le défilement du debug (sauf modification d’une
déclaration de variable ou d’objet).
On pourra également faire un glisser-déposer du point de lecture (ligne en jaune) vers une autre ligne de la
procédure en cours de lecture, en amont ou en aval du point d’arrêt.

Pour connaître le contenu d’une variable de type numérique ou chaîne, placer le pointeur de souris dessus.
Pour tout autre type, cliquer droit dessus et Add/Watch, puis visualiser son contenu dans la fenêtre Watches.

VBA-V5R16 Faire exercice 6 Page 75


Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Importer une bibliothèque externe (1/2)


1. Aller dans Tools/References. On constate que toutes les bibliothèques de Catia ainsi que quelques unes
de Windows sont déjà chargées.
2. Cliquer sur Browse et sélectionner une bibliothèque :
un fichier OLB ou TLB : fichier de type (TypeLiB), accompagné d’une DLL
un fichier DLL : composant ActiveX
un fichier OCX : contrôle ActiveX (pour les UserForms)

Le choix des références est lié à


un projet en particulier.

VBA-V5R16 Page 76
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Importer une bibliothèque externe (2/2)


Pour certaines bibliothèques, il faut déclarer explicitement la ou les procédures (fonctions ou sub-routines)
de la bibliothèque que l’on souhaite utiliser, au tout début du programme, hors des procédures. Ca
sera le cas pour les fonctions de l’API Windows (bibliothèque User32 par exemple).

Dans l’exemple ci-dessous, nous souhaitons utiliser les fonctions permettant d’insérer un bouton « réduire »
(ou minimiser) dans une User-Form. La syntaxe est :

Private Declare Function (ou Sub) <nomProcedureDansLib> Lib <nomBibliothèque> [Alias


<AutreNomProcedure>] [( ByVal nomArgument As type … )]

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _


(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub CATMain() L’alias est optionnel dans la déclaration de


… la procédure. Il permet d’appeler la
Dim wLong As Long procédure par un autre nom (évite
wlong = FindWindow( vbNullString, Me.Caption) les conflits).

End Sub

VBA-V5R16 Page 77
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Liens avec Excel : Exécuter un script Catia depuis Excel


Les documents Office peuvent utiliser des scripts VB, via les mécanismes Object Link Embedding (OLE).
Dans l’exemple suivant, nous allons exécuter un script VB depuis une feuille Excel :

1. Ouvrir Excel et afficher la barre d’outils Formulaires

2. Créer un bouton de commande dans la feuille, et


cliquer sur Nouvelle. On bascule dans VBA, un
module est créé avec une sub-routine.

3. Dans la sub-routine insérer la commande


GetObject(, « CATIA.Application ») pour récupérer
l’application CATIA, indispensable pour récupérer
l’ensemble des objets CATIA.

Attention, la méthode GetObject ne fonctionne que si Catia


est déjà ouvert. Sinon, utiliser CreateObject
VBA-V5R16 Page 78
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Liens avec Excel : Créer des objets Excel depuis Catia (1/2)
On peut également utiliser les objets Excel dans une application VB Catia pour créer un document Excel, des
feuilles et des graphiques.

1. Récupérer l’application Excel avec GetObject si Excel


est ouvert, sinon utiliser CreateObject On Error Resume Next
Set xl = GetObject(, "Excel.Application")
2. L’objet récupéré « xl » correspond à l’application If Err <> 0 Then
Excel. Utiliser la méthode Workbooks.Add pour créer Set xl = CreateObject("Excel.Application")
le document XLS. Utiliser la méthode Visible pour End If
afficher ou non l’application Excel. On Error GoTo 0
3. Créer une feuille dans le document à l’aide de xl.Visible = True 'Debug
Worksheets.Add. Donner un nom à la feuille. xl.Workbooks.Add
xl.ActiveSheet.Name = "Results"
4. Insérer les données dans les cellules de la feuille avec : xl.Worksheets.Add
Workbooks.Item(1).Worksheets("Results").Range(...).Va xl.ActiveSheet.Name = "Analysis"
lue = <donnees Catia>
5. Créer le graphique avec Charts.Add xl.Charts.Add
6. Définir le type du graphique avec
ActiveChart.ChartType et utiliser les données des
cellules avec ActiveChart.SetSourceData

VBA-V5R16 Page 79
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Liens avec Excel : Exécuter Excel depuis Catia (2/2)


Catia ne connaît pas les types Excel, ni les constantes prédéfinies.
 Les objets Excel doivent donc être déclarés dans V5 comme étant de type Object,
 Les constantes doivent être redéfinies au début du module dans lesquelles elles sont utilisées.
 Ces constantes ne peuvent être trouvées que sur internet, ou alors en utilisant le mode debug sur une
macro Excel qui manipule des graphiques (watch des variables).
Exemples :
Private Const xlXYScatterSmooth = 72 'courbe 2D lissée
Private Const xlXYScatter = -4169 'courbe 2D non lissée
Private Const xlBarClustered = 57 'histogramme'

' équivalent CATIA :


' ex de module Excel :
Private Const xlXYScatter = -4169
Sub Main()
Sub CATMain()
Dim MyChart as Chart
Dim MyChart as Object
Set MyChart = ...
Set MyChart = ...
MyChart.ChartType = xlXYScatter
MyChart.ChartType = xlXYScatter
End Sub
End Sub

VBA-V5R16 Page 80
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

7- Interfaces Homme Machine en VBA


Créer une User-Form
Propriétés des objets de dialogue
Les évènements

VBA-V5R16 Page 81
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Créer une User-Form


1. Cliquer droit sur le module et sélectionner Insert/UserForm. Sous le projet, l’objet UserForm apparaît.

Boite à outils d’objets de dialogue : menus


déroulants, zones de texte, boutons
checks, fenêtre à onglets, etc.
2. Glisser Déposer les objets dans la User-
Form.
3. Modifier les propriétés (nom, images,
Pour réordonner les objets de dialogue, on utilisera Tab etc.) dans la fenêtre Properties
Order dans le menu View.
(propriétés initiales uniquement).

VBA-V5R16 Page 82
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Propriétés des objets de dialogue


Quelques exemples :
Modifier le nom affiché (pas interne) :
nomObjet.Caption = « nom »

Griser/Dégriser :
nomObjet.Enabled = False/True

Insérer une image :


nomObjet.Picture = LoadPicture(«nom.bmp»)

Modifier le contenu :
nomObjet.Value = 10

Afficher/Masquer :
nomObjet.Show, nomObjet.Hide

 Pour « décharger » de la mémoire une User-Form, on utilisera UnLoad nomUserForm.


 Pour insérer une image, on pourra la sélectionner directement dans le projet catvba, ou utiliser la
méthode LoadPicture qui permet d’alléger la taille du catvba.
 Pour afficher une User-Form en gardant la main dans Catia, il faut utiliser Show modal.

VBA-V5R16 Page 83
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Les évènements (1/2) - Principe

VBA-V5R16 Page 84
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Les évènements (2/2)


1. Double cliquer sur l’objet (bouton de commande par exemple) : une source relative à la UserForm (et
non au module) est créée, contenant une sub-routine privée vide.
Celle-ci correspond à un évènement (ou callback) tel que le clic souris sur le bouton. Les callbacks des
autres objets seront concaténées dans cette même source.

2. Cliquer sur le menu déroulant en haut à droite pour


changer l’évènement : clic droit, double clic,etc. Une
nouvelle sub-routine sera alors créée.

 Pour accéder à un objet de dialogue (bouton, case à cocher, etc) à partir d’un module, il faudra
utiliser la syntaxe NomUserForm.NomObjet.
 L’événement UserForm.initialize() est « lue » à la création et donc avant l’affichage de la User-Form
: c’est son constructeur. On y définira donc toutes les propriétés des objets de dialogue
(griser/dégriser, insertion d’image, etc). Choisir « UserForm » dans le menu déroulant de gauche.

VBA-V5R16 Faire exercice 7 Page 85


Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Ce qu’il faut retenir


 Pour gagner du temps, utiliser d’abord l’enregistrement de macro.

 Utiliser ensuite l’insertion de résolution d’objet ainsi que l’aide VB Catia.

 Ne pas hésiter à utiliser le débuggeur de l’IDE VBA, même pour une application
Unix.

 Les applications avec des Interfaces Homme Machine évoluées ne sont possibles
qu’en VBA, sur Windows uniquement.

 ATTENTION aux objets Catia qui nécessitent d’être typés en « Variant ».

VBA-V5R16 Page 86
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

FAQ (1/5)
Comment compiler mon application pour en faire un .EXE ?
 Il faut exporter les modules puis les importer un à un (attention aux User Forms) dans un nouveau projet dans
MS Visual Basic 6.0 par exemple, puis utiliser le compilateur.

Comment lire et écrire dans une variable d’environnement en VB ?


 On ne peut pas directement écrire dans une variable d’environnement en VB. Pour lire, il faut utiliser la
commande CATIA.SystemService.Environ( « nomVariable »).

L’éditeur VBA n’est pas accessible (grisé). Comment rétablir ?


Il faut exécuter le fichier vba6.msi, disponible dans le CD d’installation d’une GA. Il faut avoir les droits admin.
Si plusieurs releases de catia sont installés sur la même station, il faudra que l’administrateur lance l’éditeur VBA
pour chaque release, pour que tous les utilisateurs puissent y avoir accès.

Différences VBS et VBA pour les booléens ?


 En VBS, les booléens prennent les valeurs « vrai » et « faux ». En VBA, ce sera « true » et « false ».

VBA-V5R16 Page 87
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

FAQ (2/5)
Comment puis-je réaliser une temporisation ?
 Voici un exemple de sub-routine de temporisation. Elles sont très utiles notamment pour laisser le temps à
Catia de finir un processus avant d’en commencer un autre.

Public Sub temporisation( iDelayValue )

Start = Timer ' Début de la pause (en secondes)


Do While Timer < Start + iDelayValue
DoEvents ‘ Attention : à enlever en VBS
Loop

End Sub

Quelle est la différence entre une « Sub » et une fonction ?


 Une sub-routine (Sub…End Sub) ne renvoie pas de valeur, tandis que la fonction (Function…End Function)
en renvoie une obligatoirement.

VBA-V5R16 Page 88
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

FAQ (3/5)
Quel langage dois-je utiliser : le VBS, le VBA, le CAA ?
 Le langage VBS est plus souple et plus indiqué pour des petits programmes (temps de développement court).
Pour des projets de plus grande envergure, avec des IHM complexes, on utilisera plutôt le VBA, voir le CAA V5
(basé sur le C++) si le VB ne propose pas l’API souhaitée. Si l’application est complexe et doit obligatoirement
être portée sur Unix, on utilisera plutôt le CAA.

Comment créer des graphiques Excel à partir de Catia ?


 Il faut d’abord ouvrir Excel avec CreateObject("Excel.Application") puis on viendra créer un classeur et une
feuille avec les méthodes Workbooks et WorkSheets. La création du graphique se fera via Charts en utilisant :

Private Const xlXYScatter = -4169 'courbe 2D non lissée


Private Const xlBarClustered = 57 'histogramme
Sub CATMain()
Dim MyChart as Object
Set MyChart = ws.Charts.Add
MyChart.ChartType = xlXYScatter
End Sub

VBA-V5R16 Page 89
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

FAQ (4/5)
Comment accéder à la topologie en VB ?
 Il n’existe que deux moyens pour accéder aux sous éléments (Breps) d’une géométrie. Le premier est
l’utilisation de SelectElement (sélection souris). Le second consiste à utiliser la méthode Search sur l’objet
Selection (enregistrer la commande Recherche dans le menu Edition de Catia pour connaître la syntaxe exacte) :
selection1.Add pad1
selection1.Search "Topology.CGMFace,sel » ‘ Attention : dépendant de la langue de Catia !

Comment instancier un gabarit (User Defined Feature) ?


 Il faut d’abord récupérer la Factory des UDFs via la méthode GetCustomerFactory, et ensuite instancier via
AddInstance.
Dim factory As InstanceFactory
Set factory = PartDest.GetCustomerFactory("InstanceFactory")
Set instance = factory.AddInstance(reference)

Comment charger un document sans l’ouvrir en session ?


 Utiliser la commande Read sur le document :
Set PartDocumentStart = CATIA.Documents.Read("D:\Project2\Exe\udf.CATPart")

VBA-V5R16 Page 90
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

FAQ (5/5)
Comment connaître les interfaces VB qui sont modifiées entre deux
releases de Catia ?
 Dans la documentation VB Catia, voir dans la rubrique « What’s New » : nouvelles classes, méthodes et
propriétés modifiées.

VBA-V5R16 Page 91
Copyright Digital Product Simulation 2007
Automation : formation basique Cours
Digital Product Simulation

Copyright DIGITAL PRODUCT SIMULATION 2006

Ce manuel de formation Automation CATIA V5 ne peut être copié,


reproduit, divulgué, transféré ou réduit sous quelque forme que ce soit,
y compris sous forme de média électronique ou sous forme lisible par
une machine, ou transmis ou diffusé publiquement quel que soit le moyen,
électronique ou autre, sans autorisation écrite de DIGITAL PRODUCT SIMULATION.

Les informations figurant dans ce manuel sont fournies à titre indicatif uniquement,
elles n'engagent en aucune manière DIGITAL PRODUCT SIMULATION.
DIGITAL PRODUCT SIMULATION n'assume aucune responsabilité quant aux
erreurs ou inexactitudes susceptibles d'apparaître dans ce manuel.

VBA-V5R16 Page 92
Copyright Digital Product Simulation 2007

Vous aimerez peut-être aussi