GEGEMATIC Posté(e) le 7 juin 2007 Posté(e) le 7 juin 2007 Voilà un outil qui me permet d'explorer la tortueuse structure d'AutocadIl utilise le handle pour se promener dans les dictionaires, les xrecord et autres atrocité Autocadiennes ...Pour avoir de handle cours, il vaut mieux créer un nouveau dessin contenant le strict minimum de ce que l'on veux explorer Il peut être utile d'obtenir l'handle d'un objet situé en sommet de pyramide, mais on peut parfois partir d'un objet du dessin, pour remonter la hiérarchie pour info, exemple de recherche d'un element sommet de hierachie (setq doc (vla-get-activedocument (vlax-get-acad-object))) ;;acceder à la table (collection) LAYER (setq ObjTablLayer (vla-get-layers doc)) (prompt "\nEntget de la table layer ") (print (setq egtabl (entget (vlax-vla-object->ename ObjTablLayer )))) Le prog handle explorer:il utilise 2 fonctions de la librairie powerClic, pw_getstringmem et pw_getkwordmem,qui servent à garder en mémoire la question utilisateur.Il est donc facile de s'en passer.Ce qui serait bien, c'est de pouvoir explore les methodes et propriété de l'objet en cours, c'est le todo, mes on verra ... ; **************************************************************************** ;;§/dxf/Exploration autour d'un handle vers les entités présentes /none ;;les code rechercés sont 330,340,350,360 ;;;330 ID/identificateur pointeur logiciel du dictionnaire propriétaire (facultatif) ;;; ;;;360 ID/identificateur de propriétés matérielles du dictionnaire propriétaire (facultatif) ;;; ;;;330 ID/identificateur pointeur logiciel de l'objet propriétaire ;;; ;;;350 ID/identificateur propriétaire logiciel de l'objet entrée (un pour chaque entrée) (facultatif) ;;autres codes : ;;;331 ID/identificateur de la dernière fenêtre active dans la présentation lorsque celle-ci était la présentation courante. ;;; ;;;345 ID/identificateur de l'énumération AcDbUCSTableRecord s'il s'agit d'un SCU nommé. En cas d'absence, le SCU n'est pas nommé ;;; ;;;346 ID/identificateur de l'énumération AcDbUCSTableRecord du SCU de base s'il s'agit d'un SCU orthogonal (code 76 différent de 0). En cas d'absence et si le code 76 est différent de 0, le SCU de base est du type GENERAL (defun c:handle_explorer ( / eg i cont ident eg2 dxf id) (pw_getstringmem "\nMaintien de l'entité ?" "ident") (print (setq eg (entget (handent ident)))) (prompt "\n - * - * - * - * - * - * - * - * - * - * - * - * - *") (setq i 0 cont "Oui" ) (while (setq dxf (nth i eg)) (if (member (car dxf) '(330 331 340 345 346 350 360 390 )) (if (setq eg2 (entget (cdr dxf))) (progn (setq id (cdr (assoc 5 eg2))) (prompt (strcat "\n Code " (itoa (car dxf)) " trouvé: " id " ")) (prin1 (cdr dxf)) (pw_getkwordmem "\nAfficher l'entget entité ?/Oui Non" "cont") (if (= "Oui" cont) (progn (print eg2) (prompt "\n- - - - - - - - - - - - - -")) ) ) (prompt "\nEntité sans entget: ename = 0") ) ) (setq i (+ 1 i)) ) ) ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
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