Macro Catia v5 r27
3 participants
Page 1 sur 1
Macro Catia v5 r27
Bonjour,
J'aimerai faire une macro pour Catia v5 R27, permettant de modifier la hauteur de texte, la mise en gras ainsi que la mise en majuscule des texte de vue coupe détail.
Exemple,
J'ai réalisé une coupe mon nom de vue est: Coupe B-B Echelle : 1:1 j'aimerai qu'avec la macro CoupeB-B passe en gras, majuscule et soulignée texte hauteur 7 et Echelle 1:1 passe à une hauteur 5 mais pas en gras ni souligné.
Merci de m'aider.
J'aimerai faire une macro pour Catia v5 R27, permettant de modifier la hauteur de texte, la mise en gras ainsi que la mise en majuscule des texte de vue coupe détail.
Exemple,
J'ai réalisé une coupe mon nom de vue est: Coupe B-B Echelle : 1:1 j'aimerai qu'avec la macro CoupeB-B passe en gras, majuscule et soulignée texte hauteur 7 et Echelle 1:1 passe à une hauteur 5 mais pas en gras ni souligné.
Merci de m'aider.
TISSEYRE- timide
- Messages : 3
Date d'inscription : 23/04/2020
Localisation : France
Re: Macro Catia v5 r27
Bonjour Alexandre,
A ma connaissance, il n'est pas possible par macro d'avoir un format de texte différent pour le nom de la vue et l'échelle, car en passant par la macro c'est un objet DrawingText unique.
Ci dessous un début de macro VBA qui modifie ce texte. A TESTER...
Une autre possibilité serait de supprimer la partie "échelle" du nom de la vue et de recréer ce texte avec les propriétés souhaitées, mais ça risque de poser problème en cas de future modification du plan (échelle...)
Dans l'attente de ton retour.
A ma connaissance, il n'est pas possible par macro d'avoir un format de texte différent pour le nom de la vue et l'échelle, car en passant par la macro c'est un objet DrawingText unique.
Ci dessous un début de macro VBA qui modifie ce texte. A TESTER...
- Code:
Sub CATMain()
'***********************************************************
'*** Macro de modification format des textes ***
'*** des noms des vues ***
'*** V00 du 25/04/2020 de Marc Litzler ***
'*** https://catiav5.forumactif.org/t1670-macro-catia-v5-r27#7279 ***
'***********************************************************
Dim myDrawing As Document
Dim myViewName As String
' Vérifie si le document actif est un CATDrawing
On Error Resume Next
Set myDrawing = CATIA.ActiveDocument
If (Err.Number <> 0) Then
MsgBox ("Un CATDrawing doit être actif")
Exit Sub
End If
On Error GoTo 0
If (InStr(myDrawing.Name, ".CATDrawing")) = 0 Then
MsgBox ("La fenêtre active doit être un CATDrawing")
Exit Sub
End If
Set mySheets = myDrawing.Sheets
Set myActiveSheet = mySheets.ActiveSheet
Set myViewColl = myActiveSheet.Views
nbView = myViewColl.Count
For i = 1 To nbView
'le calque des vues et le fond de calque fond parti de la collection, mais il ne faut pas les traiter.
If (myViewColl.Item(i).Name <> "Main View" And myViewColl.Item(i).Name <> "Background View") Then
myViewName = myViewColl.Item(i).Texts.Item(1).Text
'à faire : vérifier si le nom de vue est toujours dans Texts.item(1)
'filtrer ici suivant le nom de vue si besoins
myViewColl.Item(i).Texts.Item(1).TextProperties.Bold = 1 'mise en gras
myViewColl.Item(i).Texts.Item(1).TextProperties.FONTSIZE = 5 'taille de la police
End If
Next i
'il faut forcer la mise à jour de la vue pour la prise en compte de la modification
myActiveSheet.ForceUpdate
End Sub
Une autre possibilité serait de supprimer la partie "échelle" du nom de la vue et de recréer ce texte avec les propriétés souhaitées, mais ça risque de poser problème en cas de future modification du plan (échelle...)
Dans l'attente de ton retour.
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro Catia v5 r27
Bonjour Alexandre,
Après vérification, le nom de vue n'est pas toujours dans Texts.item(1)-->je recherche "Echelle" dans la collection des textes de chaque vue.
Il faut donc que les noms des vues aient été générés automatiquement et pas modifiés.
J'ai également trouvé la possibilité d'avoir des tailles de police différentes pour un même objet texte (avec SetFontSize) mais pas pour la mise en gras ou souligné.
Voici le code VBA modifié:
Pour la deuxième solution qui consiste à recréer le nom de la vue en deux textes différents, j'ai trouvé la façon de rattacher le texte au attribut nom de vue et échelle.
Le texte se mettra à jour si l'on modifie le nom de la vue ou l'échelle.
Voici le code en VBA
Dans l'attente de ton retour.
Après vérification, le nom de vue n'est pas toujours dans Texts.item(1)-->je recherche "Echelle" dans la collection des textes de chaque vue.
Il faut donc que les noms des vues aient été générés automatiquement et pas modifiés.
J'ai également trouvé la possibilité d'avoir des tailles de police différentes pour un même objet texte (avec SetFontSize) mais pas pour la mise en gras ou souligné.
Voici le code VBA modifié:
- Code:
Option Explicit
Sub CatMain()
'**********************************************************************
'*** Macro de modification format des textes ***
'*** des noms des vues ***
'*** V00 du 25/04/2020 de Marc Litzler ***
'*** https://catiav5.forumactif.org/t1670-macro-catia-v5-r27#7279 ***
'**********************************************************************
Dim myDrawing As Document
Dim myViewColl As DrawingViews
Dim myViewTextColl As DrawingTexts
Dim MyText As DrawingText
Dim myViewName As String
Dim myViewText As String
Dim nbView As Integer
Dim i As Integer
Dim k As Integer
Dim myCutPos As Integer
Dim myStrLenght As Integer
' Vérifie si le document actif est un CATDrawing
On Error Resume Next
Set myDrawing = CATIA.ActiveDocument
If (Err.Number <> 0) Then
MsgBox ("Un CATDrawing doit être actif")
Exit Sub
End If
On Error GoTo 0
If (InStr(myDrawing.Name, ".CATDrawing")) = 0 Then
MsgBox ("La fenêtre active doit être un CATDrawing")
Exit Sub
End If
Set myViewColl = myDrawing.Sheets.ActiveSheet.Views
nbView = myViewColl.Count
For i = 1 To nbView
Set myViewTextColl = myViewColl.Item(i).Texts
myViewName = myViewColl.Item(i).Name
'le calque des vues et le fond de calque font partie de la collection, mais il ne faut pas les traiter.
If (myViewTextColl.Count > 0 And myViewName <> "Main View" And myViewName <> "Background View") Then
For k = 1 To myViewTextColl.Count
myViewText = myViewTextColl.Item(k).Text
myCutPos = InStr(myViewText, "Echelle") 'on recherche un texte contenant "Echelle"
If myCutPos > 1 Then
myStrLenght = Len(myViewText)
Set MyText = myViewColl.Item(i).Texts.Item(k)
MyText.TextProperties.Bold = 1 'mise en gras
MyText.TextProperties.Underline = 1 'souligné
'SetFontSize permet de préciser la position de départ et le nombre de caractères:
MyText.SetFontSize 0, myCutPos, 7 'nom de vue en taille 7
MyText.SetFontSize myCutPos, myStrLenght, 5 'echelle en taille 5
Exit For
End If
Next
End If
Next i
End Sub
Pour la deuxième solution qui consiste à recréer le nom de la vue en deux textes différents, j'ai trouvé la façon de rattacher le texte au attribut nom de vue et échelle.
Le texte se mettra à jour si l'on modifie le nom de la vue ou l'échelle.
Voici le code en VBA
- Code:
Option Explicit
Sub CatMain()
'**********************************************************************
'*** Macro de modification format des textes ***
'*** des noms des vues ***
'*** V00 du 26/04/2020 de Marc Litzler ***
'*** Supprime et recréer le nom de la vue et l'echelle ***
'*** en 2 textes avec propriétés différentes ***
'*** et en gardant le lien avec le nom de la vue et l'échelle ***
'*** https://catiav5.forumactif.org/t1670-macro-catia-v5-r27#7279 ***
'**********************************************************************
Dim myDrawing As Document
Dim myViewColl As DrawingViews
Dim myViewTextColl As DrawingTexts
Dim myViewName As String
Dim myViewText As String
Dim myCutPos As Integer
Dim PointLocation1(1)
Dim myTextV As DrawingText
Dim myTextS As DrawingText
Dim myScaleText As String
Dim nbView As Integer
Dim i As Integer
Dim k As Integer
Dim iParameter As Parameter
Dim myParaName As String
' Vérifie si le document actif est un CATDrawing
On Error Resume Next
Set myDrawing = CATIA.ActiveDocument
If (Err.Number <> 0) Then
MsgBox ("Un CATDrawing doit être actif")
Exit Sub
End If
On Error GoTo 0
If (InStr(myDrawing.Name, ".CATDrawing")) = 0 Then
MsgBox ("La fenêtre active doit être un CATDrawing")
Exit Sub
End If
Set myViewColl = myDrawing.Sheets.ActiveSheet.Views
nbView = myViewColl.Count
For i = 1 To nbView
myViewName = myViewColl.Item(i).Name
Set myViewTextColl = myViewColl.Item(i).Texts
'le calque des vues et le fond de calque font partie de la collection, mais il ne faut pas les traiter.
If (myViewTextColl.Count > 0 And myViewName <> "Main View" And myViewName <> "Background View") Then
For k = 1 To myViewTextColl.Count
myViewText = myViewTextColl.Item(k).Text
myCutPos = InStr(myViewText, "Echelle")
If myCutPos > 1 Then
'récupère la position du texte nom de vue
PointLocation1(0) = myViewTextColl.Item(k).X
PointLocation1(1) = myViewTextColl.Item(k).Y
myViewTextColl.Remove (k)
'récrée le texte nom de vue avec ses propriétés
Set myTextV = myViewTextColl.Add("", PointLocation1(0), PointLocation1(1))
myTextV.SetFontSize 0, 0, 7
myTextV.AnchorPosition = catBottomCenter
myTextV.TextProperties.Bold = 1
myTextV.TextProperties.Underline = 1
myTextV.Name = "Nom: " & myViewName
'lier le texte à l'attribut nom de la vue:
myParaName = myDrawing.Sheets.ActiveSheet.Name & "\" & myViewName & "\Name"
Set iParameter = myDrawing.Parameters.Item(myParaName)
myTextV.InsertVariable 0, 0, iParameter
'recréer la partie échelle avec ses propriétés
myScaleText = "Echelle :"
Set myTextS = myViewTextColl.Add(myScaleText, PointLocation1(0), PointLocation1(1))
myTextS.SetFontSize 0, 0, 5
myTextS.AnchorPosition = catTopCenter
myTextS.Name = "Echelle : " & myViewName
myTextS.AssociativeElement = myTextV
'lier le texte à l'attribut echelle:
Call myViewColl.Item(i).InsertViewScale(1 + Len(myTextS.Text), myTextS)
Exit For
End If
Next k
End If
Next i
End Sub
Dans l'attente de ton retour.
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro Catia v5 r27
Bonjour Marc,
Merci pour votre macro qui fonctionne parfaitement, cependant il faudrait que l’échelle soit ni en gras ni soulignée et si possible pour voir mettre en majuscule le nom de la vue tout en gardant en gras et souligné hauteur 7mm.
Cordialement
a bientôt
Alexandre
Merci pour votre macro qui fonctionne parfaitement, cependant il faudrait que l’échelle soit ni en gras ni soulignée et si possible pour voir mettre en majuscule le nom de la vue tout en gardant en gras et souligné hauteur 7mm.
Cordialement
a bientôt
Alexandre
TISSEYRE- timide
- Messages : 3
Date d'inscription : 23/04/2020
Localisation : France
Re: Macro Catia v5 r27
voir le deuxième code ci dessus
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro Catia v5 r27
Bonjour, je suis tombé sur ce post et même si cela fait un petit moment qu'il a été fermé, j'aurais un petit complément d'info à apporter su jamais de n'est pas déjà fait :
En effet, on peut parfaitement avoir un format de texte différent pour le nom de la vue et l'échelle avec l'instruction "MyDrawingText.SetParameterOnSubString". Par contre attention à ne pas modifier la chaine de caractère sinon toutes les modification "SubString" seront réinitialiser selon les paramètres du DrawingText parent.
Par contre j'aurais une question, vu que vous parlez de coupe, est-ce que vous sauriez modifier le texte
fléché avec l'identifiant de la vue de coupe dans la vue de référence ?
En effet, on peut parfaitement avoir un format de texte différent pour le nom de la vue et l'échelle avec l'instruction "MyDrawingText.SetParameterOnSubString". Par contre attention à ne pas modifier la chaine de caractère sinon toutes les modification "SubString" seront réinitialiser selon les paramètres du DrawingText parent.
Par contre j'aurais une question, vu que vous parlez de coupe, est-ce que vous sauriez modifier le texte
fléché avec l'identifiant de la vue de coupe dans la vue de référence ?
moringaou- timide
- Messages : 6
Date d'inscription : 19/05/2022
Localisation : Vitrolles
Re: Macro Catia v5 r27
Salut Grégory,
Le nom de la coupe se trouve dans les propriétés de la vue, dans le champ "Identificateur" (si CATIA en français).
D'après la doc CATIA, on peut le modifier avec (je ne l'ai pas testé) :
Sub SetViewName( CATBSTR iViewNamePrefix,
CATBSTR iViewNameIdent,
CATBSTR iViewNameSuffix)
Sets the prefix, the ident and the suffix of the name of the drawing view. The method returns an error in case of 2D component reference.
Note: Prefix of drawing view can be also modified across name property defined in CATIABase
Warning: This method is not available with 2D Layout for 3D Design.
Example:
This example sets the prefix, the ident, and the suffix of the name
of the MyView drawing view respectively to "MyPrefix", "MyIdent",
and "MySuffix".
MyView.SetViewName ("MyPrefix", "MyIdent", "MySuffix")
Le nom de la coupe se trouve dans les propriétés de la vue, dans le champ "Identificateur" (si CATIA en français).
D'après la doc CATIA, on peut le modifier avec (je ne l'ai pas testé) :
Sub SetViewName( CATBSTR iViewNamePrefix,
CATBSTR iViewNameIdent,
CATBSTR iViewNameSuffix)
Sets the prefix, the ident and the suffix of the name of the drawing view. The method returns an error in case of 2D component reference.
Note: Prefix of drawing view can be also modified across name property defined in CATIABase
Warning: This method is not available with 2D Layout for 3D Design.
Example:
This example sets the prefix, the ident, and the suffix of the name
of the MyView drawing view respectively to "MyPrefix", "MyIdent",
and "MySuffix".
MyView.SetViewName ("MyPrefix", "MyIdent", "MySuffix")
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro Catia v5 r27
Salut lumpazepfel,
Merci pour ta réponse. "SetViewName" permet effectivement de changer le nom de la vue avec la possibilité de changer indépendamment l'identifiant et le suffixe. Cependant, ce n'est pas le titre de la vue de coupe que je cherche à modifier, mais le "callout" de la vue sur laquelle la vue de coupe ou de détail est pointée. En clair, lors de la création de la "coupe A:A" ou de la vue de "détail A", un "A" est généré sur la vue de référence pointant la zone impactée. Malheureusement ce n'est pas un DrawingText standard et je n'arrive pas à l'identifier. Une idée ?
Merci pour ta réponse. "SetViewName" permet effectivement de changer le nom de la vue avec la possibilité de changer indépendamment l'identifiant et le suffixe. Cependant, ce n'est pas le titre de la vue de coupe que je cherche à modifier, mais le "callout" de la vue sur laquelle la vue de coupe ou de détail est pointée. En clair, lors de la création de la "coupe A:A" ou de la vue de "détail A", un "A" est généré sur la vue de référence pointant la zone impactée. Malheureusement ce n'est pas un DrawingText standard et je n'arrive pas à l'identifier. Une idée ?
moringaou- timide
- Messages : 6
Date d'inscription : 19/05/2022
Localisation : Vitrolles
Re: Macro Catia v5 r27
Salut,
Quand dans CATIA, tu change la propriété "Identificateur" de la vue de coupe, la lettre du callout se met automatiquement à jour.
Je ne sais pas si ça marche avec la macro.
Je n'arrive pas à faire fonctionner la commande SetViewName
Est ce que tu y arrives?
Quand dans CATIA, tu change la propriété "Identificateur" de la vue de coupe, la lettre du callout se met automatiquement à jour.
Je ne sais pas si ça marche avec la macro.
Je n'arrive pas à faire fonctionner la commande SetViewName
Est ce que tu y arrives?
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Macro Catia v5 r27
Salut,
Oui les SetViewName et Getviewname fonctionne très bien chez moi. Et effectivement la partie ident. permet changer l'identifiant de la vue et par extension la lettre qu'il y a dans le callout. Je t'ai fait un petit bout de code pour t'expliquer la syntaxe ci-dessous (il faut au préalable être actif sur une vue de coupe). Par contre le texte où il y a le callout, pour par exemple pour ajouter "détail" devant la "A" qui est tout seul par défaut, impossible de mettre la main dessus.
Oui les SetViewName et Getviewname fonctionne très bien chez moi. Et effectivement la partie ident. permet changer l'identifiant de la vue et par extension la lettre qu'il y a dans le callout. Je t'ai fait un petit bout de code pour t'expliquer la syntaxe ci-dessous (il faut au préalable être actif sur une vue de coupe). Par contre le texte où il y a le callout, pour par exemple pour ajouter "détail" devant la "A" qui est tout seul par défaut, impossible de mettre la main dessus.
- Code:
Public CATIA As Object
Sub CATMain()
Dim dDoc As DrawingDocument, dViewA As DrawingView, dText As DrawingText
Dim nomV As String, identV As String, suffV As String
Set CATIA = CreateObject("CATIA.Application")
Set dDoc = CATIA.ActiveDocument
Set dViewA = dDoc.Sheets.ActiveSheet.Views.ActiveView
dViewA.GetViewName nomV, identV, suffV
MsgBox dViewA.Name & " nom: " & nomV & ", ident: " & identV & ", suffixe: " & suffV & ", va devinir toto tata-tata titi"
nomV = "toto "
identV = "tata"
suffV = " titi"
dViewA.SetViewName nomV, identV, suffV
MsgBox dViewA.Name & " nom: " & nomV & ", ident: " & identV & ", suffixe: " & suffV
End Sub
moringaou- timide
- Messages : 6
Date d'inscription : 19/05/2022
Localisation : Vitrolles
Re: Macro Catia v5 r27
Merci pour le code, ça fonctionne également pour moi.
Effectivement le texte du callout n'apparaît pas dans la collection des Drawingtexts de la vue, c'est un lien type attribut vers l'ident et je n'ai pas trouvé de moyen d'y accéder.
Une solution pourrait être de mettre la valeur dans l'ident et rien dans le préfixe de la vue de coupe:
nomV = ""
identV = "Détail A"
suffV = ""
Effectivement le texte du callout n'apparaît pas dans la collection des Drawingtexts de la vue, c'est un lien type attribut vers l'ident et je n'ai pas trouvé de moyen d'y accéder.
Une solution pourrait être de mettre la valeur dans l'ident et rien dans le préfixe de la vue de coupe:
nomV = ""
identV = "Détail A"
suffV = ""
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Sujets similaires
» macro catia V5
» Macro Excel Catia
» Macro dans catia inertie
» Problème Macro Catia V5R18
» Macro CATIA vers Excel
» Macro Excel Catia
» Macro dans catia inertie
» Problème Macro Catia V5R18
» Macro CATIA vers Excel
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|