krunch Posté(e) le 10 mai 2012 Posté(e) le 10 mai 2012 Bonjour J'obtiens des bugs avec entget dans des cas très spécifiques :- appelé depuis un réacteurs- appliqué à une entité ViewPort Des bugs qui empêchent d'utiliser entget !Mon système : Win7(64)/A2010 Bug1 :- charger le code suivant dans un dessin avec au moins 2 présentations- changer de présentation (le réacteur est déclenché par une modif de CVPORT) >> si le zoom est différent il n'est pas mis à jour, AutoCad s'emmêle les pinceaux dans les zooms ..- passer en Objet et repasser dans une présentation >> même chose mais en altérant la ViewPort qui est agrandie ou réduite (defun callback1 (u v) ; un moyen d'obtenir une ViewPort (entget (vlax-vla-object->ename (vla-get-ActivePViewport (vla-get-ActiveDocument (vlax-get-acad-object))))) ) (vlr-editor-reactor nil '((:vlr-sysVarChanged . callback1))) Bug2 :- charger le code suivant- modifier une ViewPort>> CRASH! (defun callback2 (u v) (print (cadr v)) (entget (cadr v)) ) (vlr-acdb-reactor nil '((:vlr-objectModified . callback2)))
VDH-Bruno Posté(e) le 10 mai 2012 Posté(e) le 10 mai 2012 Bonjour, Avec les réacteurs d’évenement, Il faut exclusivement travailler avec ActiveX (pas de entget, entmode, command …)Regarde dans l’aide c’est assez explicite ici :http://translate.google.fr/translate?sl=en&tl=fr&js=n&prev=_t&hl=fr&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fdocs.autodesk.com%2FACD%2F2011%2FENU%2FfilesALG%2FWS73099cc142f4875516d84be10ebc87a53f-7c2f.htm Une fonction de rappel est une fonction régulière AutoLISP, que vous définissez à l'aide defun. Cependant, il existe quelques restrictions sur ce que vous pouvez faire dans une fonction de rappel. Vous ne pouvez pas appeler des commandes AutoCAD en utilisant la fonction de commande. En outre, pour accéder à des objets de dessin, vous devez utiliser les fonctions ActiveX ®; entget et entmod ne sont pas autorisés à l'intérieur des fonctions de rappel. Voir Utiliser les directives du réacteur pour plus d'informations. Et la :http://translate.google.fr/translate?sl=en&tl=fr&js=n&prev=_t&hl=fr&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fdocs.autodesk.com%2FACD%2F2011%2FENU%2FfilesALG%2FWS73099cc142f4875516d84be10ebc87a53f-7c2f.htm Ne pas utiliser toutes les fonctions interactives de votre fonction de rappel du réacteur (par exemple, ne pas utiliser GetPoint, entsel). Tenter d'exécuter des fonctions interactives à partir d'une fonction de rappel du réacteur peut causer des problèmes graves, comme AutoCAD peuvent encore être le traitement d'une commande à la fois l'événement est déclenché. Par conséquent, éviter l'utilisation de l'entrée à l'acquisition des méthodes telles que GetPoint, entsel, et getkword, ainsi que les opérations de sélection fixés et la fonction de commande. Donc je ne pense pas que l’on puisse parler de bug mais plutôt de limitation ;) A+ Apprendre => Prendre => Rendre
krunch Posté(e) le 10 mai 2012 Auteur Posté(e) le 10 mai 2012 Ok j'avais oublié que c'était si limitatif .. Sinon j'utilise depuis un moment et sans problème les setvar, getvar dans des réacteurs, ainsi que dans un réacteur pickfirstModified : entget (aucun pb même avec les VPort) et des fonctions ss.. (sauf ssget) Merci pour ta réponse
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