Invité Patrick Posté(e) le 12 mai 2005 Posté(e) le 12 mai 2005 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é?
Pako Posté(e) le 12 mai 2005 Posté(e) le 12 mai 2005 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 IfEnd Sub amicalement, l'ACADien ! http://img124.exs.cx/img124/7999/start.gif
Serge Posté(e) le 12 mai 2005 Posté(e) le 12 mai 2005 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: " & ObjectIDEnd Sub Serge
Pako Posté(e) le 13 mai 2005 Posté(e) le 13 mai 2005 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 turenomme 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
Invité Patrick Posté(e) le 13 mai 2005 Posté(e) le 13 mai 2005 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:
Serge Posté(e) le 13 mai 2005 Posté(e) le 13 mai 2005 Pako,En effet, ça faisait logtemps. Merci du mot de bienvenue. Pour le conseil, c'était pour Patrick. Patrick,Est-ce en VBA ou en Lisp ? La solution n'est pas la même. Serge
Serge Posté(e) le 13 mai 2005 Posté(e) le 13 mai 2005 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]
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant