macro pour catiaV5 dans un drawing avec "selectelement2"

macro pour catiaV5 dans un drawing avec "selectelement2" - VB/VBA/VBS - Programmation

Marsh Posté le 02-07-2013 à 19:35:09    

Bonjour,
je suis un technicien BEO qui début en VB donc merci d’être indulgent
j'ai crée une macro qui m'instancie autant de fois que je clic un "drawing text" dans une "active view"
le problème c'est que je peux avoir à mettre ce "drawing text" dans d'autre "view" ou dans une "view" qui est dans un autre "sheet" ou encore l'associer à une cote.
Pour l'instant ,je le fais manuellement en stoppant la macro,en activant l'autre view et en relançant la macro .
je pense qu'un "selectelement2" me permettrai de passer d'une view à l'autre, de sélectionner une cote pour pouvoir l'associer sans avoir à arrêter ma macro mais je ne sais pas comment taper ce code.
merci de m'aiguiller.
 
voici mon code:
 
Sub CATMain()
'********************************************************************************************************************
'declare le document actif
Dim Adoc 'As DrawingDocument est commanté parceque indicat2d ne fonctionne pas avec
Set Adoc = CATIA.ActiveDocument
'declare la vue active
Dim MyView As DrawingView
Set MyView = Adoc.Sheets.ActiveSheet.Views.ActiveView
'********************************************************************************************************************
 
'********************************************************************************************************************
'déclare une chaine de caractere
Dim Rse As String
Rse = InputBox("Quel est le numéro d'indice ?", "Ajouter indices" )
Dim Maj As String
Maj = UCase(Rse) 'permet de mettre la chaine de caractere en majuscule
'********************************************************************************************************************
 
LA:
'********************************************************************************************************************
Dim DrawingWindowLocation(1) 'declare un tableau de 2 ligne
Status = Adoc.Indicate2D("select a location into the drawing window", DrawingWindowLocation) 'recupere les coordonnées au moment du clic
If (Status = "Cancel" ) Then Exit Sub 'sort si autre action que clic
Dim MyText As DrawingText 'declare un texte
Set MyText = MyView.Texts.Add(Maj, DrawingWindowLocation(0), DrawingWindowLocation(1)) 'recupere le texte en majuscule _
et le positionne à l'endroit du clic
'********************************************************************************************************************
 
'********************************************************************************************************************
'propriété du texte:font,couleur etc
Dim TP As DrawingTextProperties
Set TP = MyText.TextProperties
TP.FrameType = catCircle
TP.FONTSIZE = 2.5
TP.Justification = catCenter
MyText.Name = "REV|" & Maj
Sel.Clear
Sel.Add MyText
Sel.VisProperties.SetRealColor 255, 0, 254, 1
Sel.Clear
 
'********************************************************************************************************************
 
TP.Update
GoTo LA
 
End Sub

Reply

Marsh Posté le 02-07-2013 à 19:35:09   

Reply

Marsh Posté le 02-07-2013 à 21:59:33    

Salut,
 
À vue de nez je crois que le problème vient simplement de la déclaration de tes variables Adoc et MyView.
Car tu les instancies une seule fois, c'est à dire au moment de lancer la macro. Mais dès lors que tu changes de fenêtre, par exemple, ta variable MyView ne pointe pas vers la nouvelle vue mais bel et bien sur celle ou tu as lancé ta macro, puisque tu n'as pas raffraichie ta variable MyView, tu saisis!?
 
Il faut en fait déclarer les variables à chaque appel, et dans ton cas a chaque fois que tu veux introduire du texte.
Pour cela créer une sub avec les déclarations Adoc et MyView, puis tu l'appelles régulièrement.
 
Personnellement, je travaille sous AutoCAD et il existe d'autres moyens pour remédier à ces problèmes.
Notamment l'appel d'événements à l'ouverture de l'application.
Avec:
 
AddHandler et RemoveHandler.
 
Ce sont des commandes qui détectent les événements tels:
- Changement de vue.
- Changement de dessin.
- Passage de l'espace objet à l'espace papier.
Et tant d'autres...
 
Ce qui fait que l'application peut effectuer un bout de code lorsque qu'elle rencontre les événements déclarés.
 
Tiens moi au courant.
@+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed