PhilOctet Posté(e) le 1 décembre 2009 Posté(e) le 1 décembre 2009 Bonjour, Toujours dans le cadre de la création de mon outil de nettoyage de mes dessins AutoCAD, j'ai créé un évênement lors de la fermeture d'un dessin. 1/ Extrait de MyPlugin.vb Public Class MyPlugin Implements IExtensionApplication Public Sub Initialize() Implements IExtensionApplication.Initialize ' Initialize your plug-in application here Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument AddHandler acDoc.BeginDocumentClose, AddressOf docBeginDocClose End Sub Public Sub Terminate() Implements IExtensionApplication.Terminate ' Do plug-in application clean up here End Sub End Class 2/ Extrait de Module1.vb Public Sub docBeginDocClose(ByVal senderObj As Object, ByVal docBegClsEvtArgs As DocumentBeginCloseEventArgs) System.Windows.MessageBox.Show("Au revoir ...") End Sub Mais voilà, cela ne fonctionne qu'une seule fois. J'ai bien chargé la dll via la commande NetLoad qui normalement ne se décharge que lors de la fermeture complète d'AutoCAD. J'ouvre plusieurs dessins soit avec sdi =1 (les uns après les autres) ou avec sdi = 0 (tous ensembles). Cela ne fonctionne qu'une seule fois pour le premier dessin. Qu'est ce que je ne fais pas ? ou qu'est ce que je fais mal ? J'attire l'attention sur le fait que je travaille en VB.Net. Je vous remercie par avance pour votre aide.
(gile) Posté(e) le 11 décembre 2009 Posté(e) le 11 décembre 2009 Salut, Je n'avais pas vu passer le message... J'ai du mal à lire le VB, mais je crois comprendre d'où vient le problème. acDoc pointe sur le document avtif et seul ce document est abonné à l'évènement :AddHandler acDoc.BeginDocumentClose, AddressOf docBeginDocClose Si tu veux que ça fonctionne sur tous les documents qui seront ouvert après l'ouverture d'AutoCAD, il faut abonner le DocumentManager à un évènement DocumentCreated et c'est la méthode de réaction à cet évènement qui abonnera chaque nouveau document à ton évènement.Si ton application n'est pas chargée au démarrage, il faut aussi, dans la méthode Initialize, abonner tous les documents déjà ouverts. Voilà ce que ça donnerait en C#public class MyPlugin : IExtensionApplication { private DocumentCollection docMan = Application.DocumentManager; // Abonnement du DocumentManager à l'évènement "DocumentCreated" // Abonnement de tous les documents déjà ouverts à l'évènement "BeginDocumentClose" public void Initialize() { docMan.DocumentCreated += new DocumentCollectionEventHandler(OnDocumentCreated); foreach (Document doc in docMan) { doc.BeginDocumentClose += new DocumentBeginCloseEventHandler(docBeginDocClose); } } public void Terminate() { } // Réaction à l'ouverture d'un document => abonnement à l'évènement "BeginDocumentClose" private void OnDocumentCreated(object sender, DocumentCollectionEventArgs e) { e.Document.BeginDocumentClose += new DocumentBeginCloseEventHandler(docBeginDocClose); } // Réaction à l'évènement "BeginDocumentClose" private void docBeginDocClose(object sender, DocumentBeginCloseEventArgs e) { Application.ShowAlertDialog("Au revoir ..."); } } et une traduction automatique (pas testé) en VB Public Class MyPlugin Implements IExtensionApplication Private docMan As DocumentCollection = Application.DocumentManager ' Abonnement du DocumentManager à l'évènement "DocumentCreated" ' Abonnement de tous les documents déjà ouverts à l'évènement "BeginDocumentClose" Public Sub Initialize() AddHandler docMan.DocumentCreated, AddressOf OnDocumentCreated For Each doc As Document In docMan AddHandler doc.BeginDocumentClose, AddressOf docBeginDocClose Next End Sub Public Sub Terminate() End Sub ' Réaction à l'ouverture d'un document => abonnement à l'évènement "BeginDocumentClose" Private Sub OnDocumentCreated(ByVal sender As Object, ByVal e As DocumentCollectionEventArgs) AddHandler e.Document.BeginDocumentClose, AddressOf docBeginDocClose End Sub ' Réaction à l'évènement "BeginDocumentClose" Private Sub docBeginDocClose(ByVal sender As Object, ByVal e As DocumentBeginCloseEventArgs) Application.ShowAlertDialog("Au revoir ...") End Sub End Class Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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