Aller au contenu

Messages recommandés

Posté(e)

Voilà un outil qui me permet d'explorer la tortueuse structure d'Autocad

Il 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.fr

Blog: http://g-eaux.over-blog.com

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é