Aller au contenu

Editeur Etendu des Attributs dans les Palettes d'outils


Messages recommandés

Posté(e)

Bonjour,

 

Lorsque j’insère un bloc avec attributs via les palettes d'outils, c'est l'éditeur simple qui s'ouvre.

 

Y a t'il un moyen d'avoir d’éditeur étendu?

 

en fait ce qui m’énerve, c'est que ctrl+entrée ne fonctionne pas dans le simple...

Posté(e)

Bonjour,

 

En résumé :

- si ATTREQ = 0, AutoCAD ne demandera pas de renseigner les attributs, quelle que soit la manière dont le bloc a été inséré (commande INSERER ou via une palette)

- si ATTREQ = 1 et ATTDIA = 0, il faut renseigner les attributs en ligne de commande lors de l'utilisation de la commande INSERER. En utilisant une palette d'outils, c'est l'éditeur d'attributs simple qui s'affiche

- si ATTREQ = 1 et ATTDIA = 1, l'éditeur d'attributs simple s'affiche lors de l'insertion (avec la commande INSERER ou via une palette).

 

L'éditeur étendu ne s'affiche que lors de la modification (double-clic sur le bloc après insertion).

Il n'existe pas (à ma connaissance) de moyen simple pour afficher l'éditeur étendu directement au moment de l'insertion, en remplacement de l'éditeur simple. :(

 

Si tu as envie de tester (à tes risques et périls :P ), j'ai bricolé avec des réacteurs un truc qui marche pas trop mal a priori :

(vl-load-com)
(if (= (type *insertionreactor*) 'VLR-Command-Reactor)
 (progn
   (vlr-remove *insertionreactor*)
   (setq *insertionreactor* nil)
 )
)
(setq *insertionreactor* (vlr-command-reactor "insertionreactor" '(
                   (:vlr-commandWillStart . beforeinsertion)
                   (:vlr-commandEnded . afterinsertion)
                   (:vlr-commandCancelled . insertionfailed)
                   (:vlr-commandFailed . insertionfailed)
                 ))
)

(defun beforeinsertion ( rea data / commande )
 (setq commande (strcase (car data)))
 (if (or
       (= commande "EXECUTETOOL")
       (and (= (getvar 'attdia) 1) (member commande '("INSERT" "-INSERT")))
     )
   (progn
     (setq *attreq* (getvar 'attreq))
     (setvar 'attreq 0)
   )
 )
 (princ)
)

(defun afterinsertion ( rea data / lastent commande )
 (setq commande (strcase (car data)))
 (if (or
       (= commande "EXECUTETOOL")
       (and (= (getvar 'attdia) 1) (member commande '("INSERT" "-INSERT")))
     )
   (progn
     (setvar 'attreq *attreq*)
     (if (and
           (= *attreq* 1)
           (setq lastent (vlax-ename->vla-object (entlast)))
           (= "ACDBBLOCKREFERENCE" (strcase (vla-get-objectname lastent)))
           (= (vla-get-hasattributes lastent) :vlax-true)
           (or *acdoc* (setq *acdoc* (vla-get-activedocument (vlax-get-acad-object))))
         )
       (vla-sendcommand *acdoc* "_eattedit _l ")
     )
   ) 
 )
 (princ)
)

(defun insertionfailed ( rea data / commande )
 (setq commande (strcase (car data)))
 (if (or
       (= commande "EXECUTETOOL")
       (and (= (getvar 'attdia) 1) (member commande '("INSERT" "-INSERT")))
     )
     (setvar 'attreq *attreq*)
 )
 (princ)
)

(princ)

 

Il suffit de charger le code, il n'y a aucune commande à exécuter.

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é