Aller au contenu

Gestion d\'onglets et événements


Invité Patrick

Messages recommandés

Invité Patrick

Est-il possible de détecter les événements "onglet renommé" et "onglet supprimé" dans AutoCAD? Dans le même ordre d'idée, peut-on connaitre les propriétés du dernier objet effacé?

Lien vers le commentaire
Partager sur d’autres sites

Est-il possible de détecter les événements "onglet renommé" et "onglet supprimé" dans AutoCAD?

 

Salut Pat,

 

Voici quelques lignes de code qui pourront peut-être te donner des idées :

 

Private Sub AcadDocument_ObjectModified(ByVal Object As Object)

....If TypeName(Object) = "IAcadLayout" Then

........MsgBox " Les propriétés de l'onglet : " & Object.Name & " a été modifié ! "

....End If

End Sub

 

 

 

 

amicalement,

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Lien vers le commentaire
Partager sur d’autres sites

Patrick,

 

Pour le code de Pako, il faut l'insérer dans la fenêtre de ThisDrawing et non pas dans un module. Le passge d'un Layout à l'autre sera également capté par ce réacteur.

 

En quel langage ce réacteur ? Lisp ou VBA ? En passant, ça se fait, le MVPort le fait. On affiche le nom de la présentation parente comme info-bulle, donc on capte s'il est renommé ou s'il est effacé.

 

Pour ce qui est de détecter les objets effacés via un réacteur en Lisp, c'est très difficile. En VBA, il y a le ObjectErased

 

Exemple (à copier aussi dans la portion AcadDocument de ThisDrawing) :

 

Private Sub AcadDocument_ObjectErased(ByVal ObjectID As Long)

....' This example intercepts a drawing ObjectErased event.

....'

....' This event is triggered when an object is removed from a drawing.

....'

....' To trigger this example event: Delete (Cut) an existing object from an open drawing

 

....' Use the "Object" variable to determine the type of object removed

....MsgBox "The ID of the object deleted is: " & ObjectID

End Sub

 

Serge

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Salut Serge,

 

Content de voir que tu es de retour sur CADxp.... Ça fait un bou'tte qu'on t'avait pas vu !

 

 

il faut l'insérer dans la fenêtre de ThisDrawing et non pas dans un module.

Merci du conseil, mais j'étais déjà au courant....

 

 

 

Le passge d'un Layout à l'autre sera également capté par ce réacteur

Oupps ! Comment faire pour éviter ça ? Comme seulement avoir un message lorsque tu

renomme un onglet ?

 

 

En passant, le copie/coller des exemples de l'aide (F1) pour VBA.

cela nous donne pas plus d'Information......comme dirait Tramber !

 

amaicalement,

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Lien vers le commentaire
Partager sur d’autres sites

Invité Patrick

Si je peux détecter un onglet renommé, ce qui m'intéresserait vraiment est de connaitre l'ancien nom de l'onglet, mais je crois que ce n'est pas possible, ni de connaitre les propriétés, par exemple le calque, d'un objet effacé. Me trompé-je? :casstet:

Lien vers le commentaire
Partager sur d’autres sites

J'oubliais ...

 

Lorqu'on efface un Layout, les objets qui sont dessus ne sont pas effacés. Seulement, leur code 410 disparait (ce sont des objets sans propriétaires). Ils seront détruits en quittant le dessin avec sauvegarde (mais pas avant)..

 

Pour ce qui est de ne pas réagir au changement de layout, il y a beaucoup de précautions à prendre et je ne suis pas sur que ça marche tout le temps vu qu'AutoCAD fait ses notifications aux réacteurs de façon aléatoire.

 

Et comme je ne sais pas lire, je n'avais pas vu que c'était un sujet en VBA. Malheureusement, VBA ne peut lire un objet effacé. Seule technique envisageable est un COM Wrapper (appel à une routine en C++)

 

Dim deletedObj As AcadObject

' NON -> Set deletedObj = ThisDrawing.ObjectIdToObject(ObjectID)

 

Serge

 

 

[Edité le 13/5/2005 par Serge]

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité