CATIA V5 | 3DEXPERIENCE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Boutique Nike : -25% dès 50€ sur TOUT le ...
Voir le deal

Macro tolérance géométrique sur CATDrawing

2 participants

Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Macro tolérance géométrique sur CATDrawing

Message par Flo42 Jeu 22 Avr 2021 - 12:25

Bonjour,

Voici mon premier sujet bloquant.
J'ai effectué une macro pour remplir un cartouche complexe d'un CATDrawing, cette macro permet de façon intuitive de remplir les informations nécessaire du plan.
Dans mon cas cela permet de :
* retrouver les caractéristiques d'une cote (type de cote, valeur, tolérances, système de mesure)
* insérer les conditions de coupe d'un outil
* remplir le cartouche
* insérer les spécifications de l'outils coupant

Mon point bloquant est au niveau des caractéristiques d'une cote.
En me baladant sur divers forum, j'ai bien compris qu'on ne pouvait pas récupérer les tolérances géométriques (pas d'API pour cette fonction).
J'ai besoin de récupérer les tolérances géométriques d'une cote et de les mettre dans mon tableau général (Tableau nommé "TABLEAU COTATION"), ce tableau général sera par la suite exporté sur excel.

Du coup j'essaye de tricher en créant un tableau qui ressemblera comme 2 gouttes d'eau au tableau tolérance géométrique standard de Catia.

J'ai donc bidouillé une macro et ça marche presque !
J'ai créé un userform qui reprend les caractéristiques de la fonction tolérance géométrique de Catia.
J'arrive bien à choisir mon symbole (perpendicularité, planéité, etc) et mettre les spécifications qui vont derrières, mais une fois le tableau créé sur mon drawing, le symbole n'est pas représenté (comme une sorte d'erreur de représentation)... et je n'arrive pas à trouver la solution pour palier à ce problème.

Voici un extrait du code :
Code de l'userform :

Code:
Private Sub CommandButton1_Click()

Image1.Visible = True
Image2.Visible = True
Image3.Visible = True
Image4.Visible = True
Image5.Visible = True
Image6.Visible = True
Image7.Visible = True
Image8.Visible = True
Image9.Visible = True
Image10.Visible = True
Image11.Visible = True
Image12.Visible = True
Image13.Visible = True
Image14.Visible = True
Image15.Visible = True

End Sub

Private Sub CommandButton2_Click()
Image16.Visible = True
Image17.Visible = True
Image18.Visible = True
Image19.Visible = True
Image20.Visible = True

End Sub

Private Sub CommandButton3_Click()

Dim DrwDoc As DrawingDocument
    Set DrwDoc = CATIA.ActiveDocument

    Dim shActiveSheet As DrawingSheet
    Set shActiveSheet = DrwDoc.Sheets.ActiveSheet

    Dim vwActiveView As DrawingView
    Set vwActiveView = shActiveSheet.Views.ActiveView
    '------------------
    ' CREATE TABLE
    '-----------------
    ' table position: 350, 150
    ' number of rows equal to 10
    ' number of columns: 4
    ' row height: 20
    ' column width: 50
    Dim tblTable As DrawingTable
    Set tblTable = vwActiveView.Tables.Add(350, 150, 1, 3, 20, 50)
    tblTable.Name = "TOL GEO"
    tblTable.SetCellString 1, 1, TextBox6.Value
    tblTable.SetCellString 1, 2, TextBox1.Value
    tblTable.SetCellString 1, 3, TextBox2.Value
    

End Sub


Private Sub Image1_Click()
CommandButton1.Picture = Image1.Picture
End Sub

Private Sub Image10_Click()
CommandButton1.Picture = Image10.Picture
End Sub

Private Sub Image11_Click()
CommandButton1.Picture = Image11.Picture
End Sub

Private Sub Image12_Click()
CommandButton1.Picture = Image12.Picture
End Sub

Private Sub Image13_Click()
CommandButton1.Picture = Image13.Picture
End Sub

Private Sub Image14_Click()
CommandButton1.Picture = Image14.Picture
End Sub

Private Sub Image15_Click()
TextBox5.Text = "BATTOT"
CommandButton1.Picture = Image15.Picture
ChercheSymbole
End Sub

Private Sub Image16_Click()

TextBox5.Text = "DIA"
CommandButton2.Picture = Image16.Picture
ChercheSymbole

End Sub

Private Sub Image17_Click()
CommandButton2.Picture = Image17.Picture
End Sub

Private Sub Image18_Click()

TextBox5.Text = "MAXIMAT"
CommandButton2.Picture = Image18.Picture
ChercheSymbole

End Sub

Private Sub Image19_Click()
CommandButton2.Picture = Image19.Picture
End Sub

Private Sub Image2_Click()
TextBox5.Text = "PERP"
CommandButton1.Picture = Image2.Picture
ChercheSymbole
End Sub

Private Sub Image20_Click()
CommandButton2.Picture = Image20.Picture
End Sub

Private Sub Image3_Click()
CommandButton1.Picture = Image3.Picture
End Sub

Private Sub Image4_Click()
CommandButton1.Picture = Image4.Picture
End Sub

Private Sub Image5_Click()
CommandButton1.Picture = Image5.Picture
End Sub

Private Sub Image6_Click()
CommandButton1.Picture = Image6.Picture
End Sub

Private Sub Image7_Click()
CommandButton1.Picture = Image7.Picture
End Sub

Private Sub Image8_Click()
CommandButton1.Picture = Image8.Picture
End Sub

Private Sub Image9_Click()
CommandButton1.Picture = Image9.Picture
End Sub

Private Sub UserForm_Initialize()



End Sub

image userform :
Macro tolérance géométrique sur CATDrawing Captur10

code dans un module lié à l'userform :
Code:
Public Property Get DrawDocument() As DrawingDocument
Set DrawDocument = CATIA.ActiveDocument
End Property

Public Property Get param() As Parameters
Set param = DrawDocument.Parameters
End Property

Public Property Get Calque() As DrawingSheet
Set Calque = DrawDocument.Sheets.ActiveSheet
End Property

Public Property Get AcView() As DrawingViews
Set AcView = Calque.Views
End Property

Public Property Get MaNote() As DrawingTexts
Set MaNote = Calque.Views.ActiveView.Texts
End Property

Sub CATMain()

UserForm6.Show

End Sub

Public Function ChercheSymbole()

CountVieuw = AcView.Count
For k = 1 To CountVieuw
Set MaVieuw = AcView.Item(k)
   If MaVieuw.Name = "Background View" Then
   AcView.Item(k).Activate
   End If
Next
'


countnote = MaNote.Count
'
For k = 1 To countnote
Set MaNote02 = MaNote.Item(k)

   If MaNote02.Name = "TXT_DIA" And UserForm6.TextBox5.Text = "DIA" Then
   UserForm6.TextBox1.Value = MaNote02.Text
   End If
   If MaNote02.Name = "TXT_MAXIMAT" And UserForm6.TextBox5.Text = "MAXIMAT" Then
   UserForm6.TextBox1.Value = MaNote02.Text
   End If
   If MaNote02.Name = "TXT_PERP" And UserForm6.TextBox5.Text = "PERP" Then
   UserForm6.TextBox6.Value = MaNote02.Text
   End If
   If MaNote02.Name = "TXT_BATTOT" And UserForm6.TextBox5.Text = "BATTOT" Then
   UserForm6.TextBox6.Value = MaNote02.Text
   End If

Next
'

'
For k = 1 To CountVieuw
Set MaVieuw = AcView.Item(k)
   If MaVieuw.Name = "Main View" Then
   AcView.Item(k).Activate
   End If
Next



End Function

Et voici le tableau que j'obtiens (vous remarquez que les symboles ont été replacés par des tirets --> c'est là mon problème) :
Macro tolérance géométrique sur CATDrawing Captur11

J'espère ne pas vous avoir embrouillé...
Je vous remercie pour votre aide.

Flo42
timide
timide

Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par lumpazepfel Jeu 29 Avr 2021 - 21:58

Salut Flo42,

J'ai pas tout compris Sad
Ce que tu veux dans ta première colonne c'est bien "tblTable.SetCellString 1, 1, TextBox6.Value" ?
Avec " UserForm6.TextBox6.Value = MaNote02.Text" et MaNote est la collection de DrawingText.
D'où est sensée venir la tolérance géométrique?
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par Flo42 Ven 30 Avr 2021 - 8:18

Bonjour,

J'ai complètement oublié un détail, j'en suis désolé.
La tolérance géométrique vient d'une zone de texte du fond de calque.
Je n'arrivais pas à accéder au catalogue standard de catia des tolérances, j'ai donc "triché" en faisant une zone de texte par tolérance géométrique directement dans mon fond de calque catia.
Macro tolérance géométrique sur CATDrawing Captur12

MaNote est l'ensemble des zones de texte de mon drawing ouvert, MaNote02 est la tolérance géométrique que j'ai choisi dans mon userform (en cliquant sur l'image correspondante).

Voici une vidéo du fonctionnement de ce petit module :
Macro tolérance géométrique sur CATDrawing 2021-010

Je récupère bien la zone de texte qui s'insère parfaitement dans la textbox de l'userform, mais quand le tableau se crée dans le drawing et qu'il récupère le contenu de la textbox, ça me met des tirets...

Merci

Flo42
timide
timide

Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par lumpazepfel Ven 30 Avr 2021 - 13:54

Salut Florian,

Je pense que c'est un problème de police de caractère qui ne reconnaît pas les symboles utilisés.
As tu vérifié la valeur des variables à chaque étape (fenêtre espion ou utilisation de debug.print)?
N'ayant pas le code complet ni la userform, je ne peux pas tester. Si pour des raisons de confidentialité tu ne veux pas les poster, tu peux me les envoyer en message privé.
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par Flo42 Ven 30 Avr 2021 - 14:17

Merci Marc pour tes réponses.
J'essaye de gratter avec différentes polices mais j'ai toujours ces tirets affichés.
Pourtant, quand je double clique sur la cellule de mon tableau, la fenêtre édition du texte de catia m'affiche bien la tolérance géométrique.
Macro tolérance géométrique sur CATDrawing Captur13[/url]

Ayant appris le VBA Catia un peu sur le tas, je connais pas du tout l'option fenêtre espion ou debug.print... comment utiliser cette fonction ?

Voici le lien pour télécharger la macro :
Lien Macro Tol Geo

Merci

Flo42
timide
timide

Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par lumpazepfel Ven 30 Avr 2021 - 21:21

Salut,

J'ai bien récupérer le code, il me faudrait encore un CATDrawing.
Dans l'éditeur VBA tu peux visualiser la valeur des différentes variables dans la fenêtre "Local":
-insère un point d’arrêt dans la macro
-après vérification tu relance la macro par F5 ou appui sur F8 pour avancer ligne par ligne.
Macro tolérance géométrique sur CATDrawing Local10


Debug.print, te permet d'afficher des textes ou des valeurs de variable sans stopper la macro:
-dans l'éditeur VBA, affiche la fenêtre "Imediate Window"
-dans le code insère debug.print "Texte" & nomdelavariable par exemple

Macro tolérance géométrique sur CATDrawing Debugp10
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par Flo42 Mar 11 Mai 2021 - 13:53

Bonjour,

Désolé du temps de réponse, j'étais en vacances Cool
Merci pour ces explications !
Voici le lien du Drawing pour tester la macro :
https://drive.google.com/file/d/1iahN0N6T4hAAoBx9v33I5ig9wbxO5pkL/view?usp=sharing

Florian

Flo42
timide
timide

Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par lumpazepfel Mer 12 Mai 2021 - 8:36

Salut Florian,

C'est bien un problème de police.
Quand on insère un symbole dans du texte, sa police est "SYM2".
Il faut donc affecter cette police au texte du tableau:

tblTable.SetCellString 1, 1, TextBox6.Value
With tblTable.GetCellObject(1, 1)
.SetFontName 0, 0, "SYM2"
'.SetFontSize 0, 0, 3.5
End With
tblTable.SetCellString 1, 2, TextBox1.Value
With tblTable.GetCellObject(1, 2)
.SetFontName 0, 0, "SYM2"
'.SetFontSize 0, 0, 3.5
End With
tblTable.SetCellString 1, 3, TextBox2.Value
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par Flo42 Mer 12 Mai 2021 - 8:50

Bonjour,

Merci Marc, je viens de tester et ça fonctionne.
Grace à ça, je vais pouvoir extraire des cotes encadrées et donc leurs tolérances géométriques associées dans un tableau, qui sera par la suite transféré sur Excel.

Tout ça pour un simple problème de police ... comme quoi ça ne tient à rien.

Je partagerais le code quand j'aurai terminé la mise en forme de l'userform (pour le moment il est assez moche), je pense que ça pourra servir à des personnes qui veulent récupérer des tolérances géométriques.

J'ai une dernière demande avant de clôturer ce post, à ton avis, est-ce possible de positionner le tableau créé avec la macro dessous une cote sélectionnée ?

Florian

Flo42
timide
timide

Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par lumpazepfel Mer 12 Mai 2021 - 20:40

Salut,

Oui c'est possible. Ci dessous une possibilité.
L'affichage dans la barre de statut (en bas à gauche) n'est pas toujours super visible pour l'utilisateur.
Tu peut rajouter dans ta UserForm un Label et lui donner, au moment de la sélection le message pour l'utilisateur.

Code:
Private Sub CommandButton3_Click()
Dim PointLocation1(1)
Dim DrwDoc As DrawingDocument
    Set DrwDoc = CATIA.ActiveDocument

    Dim shActiveSheet As DrawingSheet
    Set shActiveSheet = DrwDoc.Sheets.ActiveSheet

    Dim vwActiveView As DrawingView
    Set vwActiveView = shActiveSheet.Views.ActiveView
    ' ------------------------------------------------------
    ' *** Sélection le texte ou la cote de référence     ***
    ' ------------------------------------------------------
    'Demande à l'utilisateur (dans la barre de statut CATIA) de séletionner une cote
    'ou par ajout d'un label dans ta userform
    'UserForm1.Label3.Caption = "Sélectionner une cote"
    Set selection1 = DrwDoc.Selection
    selection1.Clear
    Set mySelectObj = selection1
    Dim InputObjectType(1)
    'InputObjectType(1) = "DrawingText"  '"AnyObject"
    InputObjectType(0) = "DrawingDimension" ' Ne permet de sélectionner uniquement des cotes
    Status = mySelectObj.SelectElement2(InputObjectType(), "Sélectionner une cote", False)
    If (Status = "Cancel") Then
        MsgBox "Commande interrompue avec la touche Echap."
        Exit Sub
    End If
    'UserForm1.Label3.Caption = ""
    Dim SelectedElement1
    'Récupère les coordonnées de la cote sélectionnée
    Set SelectedElement1 = mySelectObj.Item(1)
    SelectedElement1.GetCoordinates PointLocation1

    
    '------------------
    ' CREATE TABLE
    '-----------------
    
    ' table position: 350, 150
    ' number of rows equal to 10
    ' number of columns: 4
    ' row height: 20
    ' column width: 50
    Dim tblTable As DrawingTable
    'Set tblTable = vwActiveView.Tables.Add(350, 150, 1, 3, 20, 50)
    Set tblTable = vwActiveView.Tables.Add(PointLocation1(0), PointLocation1(1) - 10, 1, 3, 20, 50)
    tblTable.Name = "TOL GEO"
    'tblTable.X = PointLocation1(0)
    'tblTable.Y = PointLocation1(1) - 10
    tblTable.SetCellString 1, 1, TextBox6.Value
        With tblTable.GetCellObject(1, 1)
            .SetFontName 0, 0, "SYM2"
            '.SetFontSize 0, 0, 3.5
        End With
    tblTable.SetCellString 1, 2, TextBox1.Value
        With tblTable.GetCellObject(1, 2)
            .SetFontName 0, 0, "SYM2"
            '.SetFontSize 0, 0, 3.5
        End With
    
    tblTable.SetCellString 1, 3, TextBox2.Value
    selection1.Clear

End Sub
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Macro tolérance géométrique sur CATDrawing Empty Re: Macro tolérance géométrique sur CATDrawing

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum