Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1249 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro pour catiaV5 dans un drawing avec "selectelement2"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

macro pour catiaV5 dans un drawing avec "selectelement2"

n°2196296
arnaud61
Posté le 02-07-2013 à 19:35:09  profilanswer
 

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

mood
Publicité
Posté le 02-07-2013 à 19:35:09  profilanswer
 

n°2196314
mmarle
Posté le 02-07-2013 à 21:59:33  profilanswer
 

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.
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro pour catiaV5 dans un drawing avec "selectelement2"

 

Sujets relatifs
aide macro excel!^^Macro : Analyse/copie de colonne
Probleme sur Macro Excel 2010Macro pour des boutons de commande
Macro pour suprimer les lignes à 0Macro importer des fichiers txt d'un dossier dans des fichiers excel
Macro pour Importer fichier txt spécifique [résolu]Macro rechercher remplacer [Résolu]
[macro WORD]: extraction de phrases à partir de mot clémacro pour rechercher/remplacer sur plusieurs fichiers
Plus de sujets relatifs à : macro pour catiaV5 dans un drawing avec "selectelement2"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR