Macro tolérance géométrique sur CATDrawing
2 participants
Page 1 sur 1
Macro tolérance géométrique sur CATDrawing
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 :
image userform :
code dans un module lié à l'userform :
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) :
J'espère ne pas vous avoir embrouillé...
Je vous remercie pour votre aide.
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 :
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) :
J'espère ne pas vous avoir embrouillé...
Je vous remercie pour votre aide.
Flo42- timide
- Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne
Re: Macro tolérance géométrique sur CATDrawing
Salut Flo42,
J'ai pas tout compris
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?
J'ai pas tout compris
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- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro tolérance géométrique sur CATDrawing
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.
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 :
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
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.
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 :
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
- Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne
Re: Macro tolérance géométrique sur CATDrawing
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é.
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- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro tolérance géométrique sur CATDrawing
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.
[/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
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.
[/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
- Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne
Re: Macro tolérance géométrique sur CATDrawing
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.
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
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.
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
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro tolérance géométrique sur CATDrawing
Bonjour,
Désolé du temps de réponse, j'étais en vacances
Merci pour ces explications !
Voici le lien du Drawing pour tester la macro :
https://drive.google.com/file/d/1iahN0N6T4hAAoBx9v33I5ig9wbxO5pkL/view?usp=sharing
Florian
Désolé du temps de réponse, j'étais en vacances
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
- Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne
Re: Macro tolérance géométrique sur CATDrawing
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
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- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro tolérance géométrique sur CATDrawing
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
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
- Messages : 19
Date d'inscription : 22/04/2021
Localisation : Saint-Etienne
Re: Macro tolérance géométrique sur CATDrawing
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.
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- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Sujets similaires
» macro VBA: recupérer le format d'un CATdrawing
» MACRO - Insertion cartouche depuis un template .CATDRAWING
» macro/script pour sauvegarder les CATDrawing d'un dossier en pdf
» VBA Changer de set Geometrique
» Couleur dans un Set Géométrique
» MACRO - Insertion cartouche depuis un template .CATDRAWING
» macro/script pour sauvegarder les CATDrawing d'un dossier en pdf
» VBA Changer de set Geometrique
» Couleur dans un Set Géométrique
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum