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…
Sommaire
- 1 Créer une application simple en VB.net pour piloter CATIA V5
- 1.1 Avant propos
- 1.2 VBA, VB6 et VB.Net ?
- 1.3 Pourquoi j’ai choisi VB.Net ?
- 1.4 Une application pour la prise en main de VB.Net à l’usage de Catia V5
- 1.5 Installation de VB.Net 2010.
- 1.6 Création d’un nouveau projet VB.Net
- 1.7 L’application de cet article.
- 1.8 Avant de pouvoir écrire du code relatif à Catia V5
- 1.9 Se connecter à Catia
- 1.10 Créer une nouvelle part
- 1.11 Créer le point et la sphère
- 1.12 Pilotage du point
- 1.13 Faire des essais
- 1.14 Finaliser
- 1.15 Conclusion
- 1.16 Le programme à télécharger
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 !
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…
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).
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.
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:
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
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:
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.
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
je cherche un tutorial pdf qui qui explique comment piloter catia via .net merci
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.
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.
Bonjour Pendi,
Ce qu’il vous fait ce sont des paramètres utilisateurs.
J’en parle souvent dans mes tutos.
En voici un exemple:
https://apprendre-la-cao.go.yo.fr/un-moule-a-tarte-parametre-sur-catia-v5/
Merci pour la reponse! Vous etes un genius!!