Essai Catia image accueil

L’automatisation de Catia V5 via une application externe est une chose  très intéressante.
On peut par exemple créer une application interactive pour:

  • créer un 3D à partir de données fonctionnelles comme une aile d’avion (envergure, choix des profils, surface, allongement …) et ça se dessine tout seul en appuyant sur le bouton générer !
  • faire un traitement de masse sur un répertoire contenant des Catpart et des Catproduct (ouvrir, mettre à jour, générer un jpg et un 3dXml, enregistrer et fermer).
  • et bien plus si l’on extirpe des données d’un fichier texte, Excel ou que l’on génère automatiquement un rapport en Pdf via Word avec les images de notre CAO.

Il n’y a pratiquement pas de limite finalement si ce n’est le temps que l’on va passer à fabriquer cette Interface Homme/Machine (IHM) avec bien sûr une réflexion sur l’intérêt de la chose vis à vis du temps que cela fera gagner par la suite.

Voici en vidéo le fonctionnement de ce premier essai:

Dans cet article, je rentre dans le détail et vous montre comment…

Créer une application simple en VB.net pour piloter CATIA V5

Avant propos

Tout d’abord, je tiens à vous signaler que ceci est ma première application en Visual Basic.
Si j’ai réussi, vous devriez vous en sortir aussi.
Si j’ai développé dans le passé quelques programmes en python afin de piloter Catia, je ne suis pas développeur professionnel ni même un acharné du code.
Je pense même que la lecture de mes lignes de code feront sourire plus d’un. Ce n’est pas parfait ni optimal mais cela fonctionne.
J’ai donc passé du temps pour comprendre l’interface de Visual Basic et un minimum de sa philosophie.
Apprendre, c’est parfois long mais avec un peu de patience et quelques recherches sur le Web, on finit par parvenir à ses fins.

J’en profite donc pour partager avec vous mon apprentissage de VB.Net pour le pilotage de Catia V5.

VBA, VB6 et VB.Net ?

Catia V5 utilise VbScript (comprendre Visual Basic 6 avec les librairies de Catia) et CatScript comme langages (Macro).
CatScript comme le langage Knowledge est un langage interne à Catia. CatScript est assez proche de VbScript. C’est un VB allégé. Nous allons donc l’oublier au profit de VbScript (VB6 pour Catia) qui a l’avantage d’être complet.

Ah oui, pour ceux qui ne le saurait pas, VBA ce n’est pas un autre langage ça veut dire Visual Basic for Application … Comprendre le code Visual Basic plus l’interface avec les les fenêtres et les boutons (ce que vous avez l’habitude de manipuler en fait).
Catia ne génère pas de VBA. Donc pour fabriquer des boites de dialogue comme celle que je vous montre ici, il faut développer ça sur l’environnement de développement Visual Basic.

Attention, Visual Basic (jusqu’à la version 6 incluse) et Visual Basic.net ce n’est pas vraiment la même chose !

Oui, ce n’est même plus compatible et même si cela y ressemble beaucoup, il faut retoucher un code VB6 pour le faire fonctionner en VB.Net

VB.net fut une évolution nécessaire de Visual Basic pour le rendre compatible avec la logique de l’ensemble des produits de Microsoft.

Donc attention aux abus de langage ! Toujours préciser la version de Visual Basic.

Pourquoi j’ai choisi  VB.Net ?

Sur le net, on trouve beaucoup d’exemples de code pour Catia en VB6 mais si l’on veut créer une IHM (en VBA6) sur un Windows d’aujourd’hui cela devient compliqué (problème de compatibilité).
Et puisqu’il est possible de créer du code en VB.net pour piloter Catia, j’ai opté pour cette solution même si elle est un peu plus lourde et que l’on ne trouve quasiment aucun exemple au sujet de l’interfaçage avec Catia.
Quoi qu’il en soit, il est toujours possible de s’inspirer des codes VB6 existants une fois que l’on s’est fait la main avec VB.Net.

Une application pour la prise en main de VB.Net à l’usage de Catia V5

L’application en elle même ne sert à rien sinon à vous montrer comment mettre en œuvre Visual Basic.net pour:

  • Créer une nouvelle Part
  • Créer un point et une sphère surfacique centrée dessus
  • Piloter la position de la sphère grâce à trois curseurs. C’est presque du “temps réel” car l’update est très rapide avec si peu de géométrie !
Application VB.net Catia pilotage position sphère

Installation de VB.Net 2010.

Tout commence par là. Il vous faut Visual Basic 8 express (VB.Net 2010 Express).
Express c’est la version gratuite mise à disposition par Microsoft. Elle est accessible via ce lien.

J’ai choisi cette version car elle correspond à l’excellent tuto d’Open Classroom.
De plus tout a parfaitement fonctionné avec Catia contrairement à la version 2012 !? (problème de registre).

Création d’un nouveau projet VB.Net

Très simple au lancement de Visual Basic on choisit Nouveau projet

VB.net 2010 Nouveau projet

Puis Application Windows Form (ce qui correspond à une application comme on l’entend avec une ou des fenêtres et des boutons).
On donne un nom à notre projet (en bas de la fenêtre).

VB.net 2010 Nouveau projet type Windows form
On a alors accès à un éditeur permettant de créer l’interface visuelle.
On ne peut pas plus simple en prenant les contrôles à gauche et en les glissant dans la Form.
Tout est redimensionnable (poignées) et paramétrable grâce à l’éditeur en bas à droite.

VB.net 2010 editeur visuel

Un double clic sur un objet permet d’accéder au code événementiel associé.
Par exemple si l’on crée un bouton “Quitter Catia”, on double clic dessus dans cet éditeur et l’on accède à l’editeur de texte permettant d’écrire une suite d’instructions qui provoquera la fermeture de l’application Catia V5 si l’évènement est un simple clic sur ce bouton.

Je ne rentre pas dans le détail de l’interface.
Ceci bien mieux expliqué dans le tutoriel d’Open classroom.

Je vais par contre vous montrer à quoi ressemble le code lié à Catia.

L’application de cet article.

L’IHM est la suivante:

VB.net 2010 application essai Catia

On trouve bien sûr le bouton quitter permettant de fermer l’application.
Mais on trouve deux zones.
Je ne vous donne pas ici le détail de la partie permettant de lancer ou fermer Catia et rendre sa fenêtre visible ou non car cela alourdirait l’article.
La partie du haut est plus amusante car elle permet de repositionner une sphère selon X,Y et Z grâce à trois curseurs.

J’ai mis en plus une coquetterie. Si l’on clic sur le bandeau (logo Apprendre la CAO) cela vous ouvre le blog dans votre explorateur internet.

Vous aurez remarqué que certains boutons sont inactivés selon le contexte.
Ceci s’obtient en utilisant la propriété Enabled comme ceci:

Lors de l’évènement “Nouvelle Part”, on crée la nouvelle part et on active le bouton “Créer point” avec l’instruction:

cmdCreerPoint.Enabled = True

car l’identifiant (label) du bouton “Créer point” est cmdCreerPoint.
Ce qui est écrit physiquement sur le bouton est la propriété texte.

C’est avec ce genre de chose que l’on donne un peu de cohérence à l’interface.

Avant de pouvoir écrire du code relatif à Catia V5

Catia utilise pour son fonctionnement de nombreuses dll visibles dans son répertoire d’installation.
Sous Windows 7 64b par exemple:

C:\Program Files\Dassault Systemes\B21\win_b64\code\bin

Dans ce répertoire, il existe aussi des fichiers tlb qui comme certaines de ces dll sont lisibles par Visual basic pour avoir accès aux librairies de Catia.
Avant de commencer à écrire la moindre ligne de code à destination de Catia, il faut donc faire référence à ces librairies (du moins celles qui nous seront utiles).
Cela se fait dans le menu déroulant  Projet de visual basic puis Ajouter une référence puis Onglet COM.
Sélectionnez les références qui vous seront utiles.
Oui mais lesquelles ?
Je pense que ces deux librairies sont incontournables

VB.net 2010 references librairie Catia MECMOD INFITF

mais vous pouvez comme moi sélectionner toutes celles qui sont relatives à Catia et les importer en cliquant sur OK (dans ce cas cela prend beaucoup de temps, il faut être patient).

Si il n’y a rien dans cette liste (pas de ligne relative à Catia) ce n’est pas normal.
Vous pouvez alors tenter de faire (en tant qu’administrateur en invite de commande dans le répertoire C:\Program Files\Dassault Systemes\B[votre version de Catia]\win_b64\code\bin) un petit

cnext /unregserver
puis
cnext /regserver

pour remettre de l’ordre dans les registres Windows. Si ça ne marche pas, changez de version de VB.
Pour ma part c’est ce qui a justifié au bout d’une semaine de recherche le fait de désinstaller VB2012 et d’installer VB2010.

Se connecter à Catia

Cela se fait grâce à la librairie INFITF (dialogue de base avec Catia).
L’autre librairie importante est MECMOD pour tout ce qui touche aux Catpart.

On définit l’objet CATIA
et comme Catia est déjà lancé sur le PC on attribue à l’objet CATIA l’application Catia.

Dim CATIA As INFITF.Application
CATIA = GetObject(, "CATIA.Application")

C’est la base de la conversation.
Si Catia n’est pas encore lancé, on pourra alors remplacer GetObject par un CreateObject en précisant que l’application est visible (True) sinon (valeur False) Catia tournera en Batch (Cnext dans les processus de Windows) mais pas de fenêtre visible.

Dim CATIA As INFITF.Application
CATIA = CreateObject("CATIA.Application")
CATIA.Visible = True

Créer une nouvelle part

Le code suivant est associé au bouton “Créer part”.
On retrouve les deux premières lignes correspondant à l’établissement de la communication avec CATIA.
La troisième ajoute un document de type part à la session en utilisant la librairie MECMOD relatif aux part.
Le code est presque identique à celui de VB6. Il y a en plus le mot MECMOD.

La quatrième ligne définit l’objet Mypart comme étant la part du document de type Part

La cinquième ligne active le bouton “Créer point”.

Private Sub cmdCreerPart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCreerPart.Click
        Dim CATIA As INFITF.Application
        CATIA = GetObject(, "CATIA.Application")
        Dim MyPartDoc As MECMOD.PartDocument = CATIA.Documents.Add("Part")
        Dim MyPart As MECMOD.Part = MyPartDoc.Part

        cmdCreerPoint.Enabled = True

    End Sub

Créer le point et la sphère

Le début est toujours le même mais la troisième ligne indique que l’on travaille sur le document actif.

Pour pouvoir utiliser les outils surfaciques il faut importer une librairie avec

Imports HybridShapeTypeLib

on le place au tout début du programme comme ceci:

VB.net 2010 import catia hybridshapetypelib

MyHB correspond au Set géométrique qui est ici crée.
On invoque ensuite Hybridshapefactory, l’outil créateur de tout ce qui est surfacique en créant l’objet MyHSF.
On l’utilise ensuite pour créer l’objet MyP, un point défini par ses coordonnées. Celles-ci sont directement récupérées des valeurs des curseurs (Trackbar1,2 et 3 pour X,Y et Z) initialement à 0.
Je renomme le point dont le nom par défaut serait “Point.1” en “Pt”.
J’ajoute l’objet point à l’objet Set géométrique.

La sphère ensuite:

La sphère s’appuie sur une référence qui est son point de centre.
Il faut donc d’abord créer un objet référence basé sur l’objet MyP, c’est reference1.

Je crée ensuite l’objet sphère (hybridShapeSphere1) et l’ajoute au set géométrique MyHB.

On n’oublie pas l’update de l’ensemble !
La sphère est centrée sur le point aux coordonnées 0,0,0.

J’active ensuite les curseurs et désactive le bouton “Créer Point”

Private Sub cmdCreerPoint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCreerPoint.Click
        Dim CATIA As INFITF.Application
        CATIA = GetObject(, "CATIA.Application")

        Dim MyPartDoc As MECMOD.PartDocument = CATIA.ActiveDocument

        Dim MyPart As MECMOD.Part = MyPartDoc.Part
        Dim MyHB As MECMOD.HybridBody = MyPart.HybridBodies.Add()
        Dim MyHSF As HybridShapeFactory = MyPart.HybridShapeFactory
        Dim MyP As HybridShapePointCoord = MyHSF.AddNewPointCoord(TrackBar1.Value, TrackBar2.Value, TrackBar3.Value)
        MyP.Name = "Pt"
        MyHB.AppendHybridShape(MyP)
        Dim reference1 As INFITF.Reference = MyPart.CreateReferenceFromObject(MyP)
        Dim hybridShapeSphere1 As HybridShapeSphere = MyHSF.AddNewSphere(reference1, Nothing, 5.0, -45.0, 45.0, 0.0, 180.0)

        hybridShapeSphere1.Limitation = 1

        MyHB.AppendHybridShape(hybridShapeSphere1)

        MyPart.Update()

        TrackBar1.Enabled = True
        TrackBar2.Enabled = True
        TrackBar3.Enabled = True

        cmdCreerPoint.Enabled = False

    End Sub

Pilotage du point

L’entête de cette subroutine indique que les instructions qui la suivent doivent s’exécuter dès que l’évènement Scroll survient sur l’un des trois curseurs.

Les deux premières lignes initialisent la communication avec CATIA.

Les 3 lignes suivantes affichent les valeurs des curseurs à coté de ceux-ci.
Plus loin je définis l’objet MyHB comme étant le set géométrique répondant au nom “Set géométrique.1”.
En dessous, l’objet MyHBS est un objet surfacique de ce set géométrique.
MyP est l’entité surfacique répondant au nom “Pt” de l’ensemble des objets surfacique du set géométrique.

Enfin, je modifie les propriétés values des objets X, Y et Z de l’objet Point.

Finalement un Update et le point se déplace à la place donnée par ces nouvelles coordonnées.

Private Sub TrackBar_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll, TrackBar2.Scroll, TrackBar3.Scroll
        Dim CATIA As INFITF.Application
        CATIA = GetObject(, "CATIA.Application")


        LblX.Text = "X : " & CStr(TrackBar1.Value)
        lblY.Text = "Y : " & CStr(TrackBar2.Value)
        lblZ.Text = "Z : " & CStr(TrackBar3.Value)


        Dim MyPartDoc As MECMOD.PartDocument = CATIA.ActiveDocument
        Dim MyPart As MECMOD.Part = MyPartDoc.Part
        Dim MyHB As MECMOD.HybridBody = MyPart.HybridBodies.GetItem("Set géométrique.1")
        Dim MyHBS As MECMOD.HybridShapes = MyHB.HybridShapes

        Dim MyP As HybridShapeTypeLib.Point = MyHBS.GetItem("Pt")


        MyP.X.Value = CStr(TrackBar1.Value)
        MyP.Y.Value = CStr(TrackBar2.Value)
        MyP.Z.Value = CStr(TrackBar3.Value)

        MyPart.Update()

    End Sub

Faire des essais

Le bouton F5 de l’interface de développement (image ci dessous) vous permet de compiler le programme et d’essayer votre application. Cela permet aussi de débugger.

image

Finaliser

Lorsque votre application est au point, vous pouvez générer le .EXE pour l’utiliser directement sur votre machine.
Vous pouvez également générer un fichier d’installation pour le distribuer. C’est ce que je vous donne en téléchargement ci-dessous. Il suffit alors de décompresser l’archive puis d’installer avec Setup.exe

Conclusion

L’environnement de développement Visual Basique est particulièrement ergonomique pour créer de petites (ou de grosses) applications permettant d’attaquer Catia et de l’automatiser depuis l’extérieur.
L’interface visuelle s’utilise sans effort et conduit à des IHM propres et malléables.
L’auto complétion fait gagner un temps précieux dans l’écriture du code.
Ce dernier est très orienté “objet” et reste difficile à prendre en main pour celui qui n’en a pas l’habitude.
Il est toujours possible de s’aider des nombreux exemples (vb6) dispensés sur le net ou simplement se servir de l’enregistrement de macro directement sur CATIA pour recopier et adapter une portion de programme.

Avec cet exemple, vous avez le minimum pour vous lancer comme moi dans l’aventure et créer des applications pour Catia.

Si cet article vous a plu, mettez moi un like ou un commentaire, ça me fera plaisir.

Le programme à télécharger

Je vous laisse, si vous le souhaitez, télécharger gratuitement, cette petite application pour l’essayer.

5 Responses

    • Bonjour Brahim,
      Malheureusement, à ma connaissance cela n’existe pas. J’ai beaucoup cherché sur ce sujet. Il faut en fait adapter du code VB6 en VB.Net
      En essayant un peu et en s’aidant de l’auto-complétion on finit par y arriver.

  1. Bonjour!
    Tres bon guide! Mais moi je cherche un tutorial qui explique comment je peux changer une valuer dans l’equisse en utilisant un fenetre de saisie ou un program. C-a-d, je peux changer tout de suite sans avoir chercher l’equisse. Merci.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.