sef Posté(e) le 29 novembre 2017 Posté(e) le 29 novembre 2017 Bonjour, je cherche un moyen de créer rapidement des flèches de repères contenant le nom du calque de l'objet sélectionné. Je sais déjà le faire manuellement avec la commande "champ" ("Field" sur mon Autocad 2014 en anglais)mais à chaque fois il faut faire Ctrl+F (Edit Field) puis "objet", "objet" encore, sélectionner l'objet puis "layer" et "ok". Du coup quand on en a des dizaines ça devient vite fastidieux. Ce que j'aimerais c'est cliquer sur l'objet et poser le repère. Je n'ai pas réussi à trouver l'équivalent de "Field" en commande au clavier sinon j'aurais créé un macro. Sinon j'ai trouvé des Lisp qui y ressemblaient et récupéraient par exemple le nom du bloc comme ICImais il n'utilise pas la commande "field" du coup le texte créé perds son lien avec l'objet sélectionné. Si vous avez ça dans vos routines, ça me ferait gagner du temps et je serais super reconnaissant. ;) Merci d'avance et bonne journée. :P
DenisHen Posté(e) le 29 novembre 2017 Posté(e) le 29 novembre 2017 Salut. As-tu essayé avec la variable CLAYER ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
sef Posté(e) le 29 novembre 2017 Auteur Posté(e) le 29 novembre 2017 Salut. As-tu essayé avec la variable CLAYER ? "CLAYER" c'est pour définir le calque courant...ex: "CLAYER" puis "1" défini le calque "1" comme courant(si ce calque existe) Pas tout à fait ce que je recherche. Par contre je viens de voir dans "Field" qu'on obtientune expression de ce genre la: %<\AcObjProp Object(%<\_ObjId 8796088379056>%).Layer>% Du coup il faudrait que le premier clic sur l'objetremplisse ce qui est derrière _ObjId Malheureusement je ne suis pas assez fort en lisp pour ça,c'est pourquoi je fais appel à vous, les Spécialistes :D ;)
DenisHen Posté(e) le 29 novembre 2017 Posté(e) le 29 novembre 2017 Re. La variable CLAYER peut aussi être intérogée. Je ne suis pas très sûr d'avoir compris... Tu veux dessiner une flèche avec un texte au bout et ce texte serait le nom d'un calque sélectionné par le choix d'une entité ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
sef Posté(e) le 29 novembre 2017 Auteur Posté(e) le 29 novembre 2017 Re. La variable CLAYER peut aussi être intérogée. Je ne suis pas très sûr d'avoir compris... Tu veux dessiner une flèche avec un texte au bout et ce texte serait le nom d'un calque sélectionné par le choix d'une entité ? Exactement ça... Une petite image pour illustrer ce que je veux:
(gile) Posté(e) le 29 novembre 2017 Posté(e) le 29 novembre 2017 Salut, Un LISP minimaliste sans champ : (defun c:sef (/ ent) (if (setq ent (entsel)) (command "_leader" (cadr ent) pause "" (cdr (assoc 8 (entget (car ent)))) "") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 29 novembre 2017 Posté(e) le 29 novembre 2017 Si (gile) s'en mêle... Je ne pourrais jamais faire mieux... ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 29 novembre 2017 Posté(e) le 29 novembre 2017 Avec un champ : (defun c:sef (/ ent) (vl-load-com) (if (setq ent (entsel)) (progn (command "_leader" (cadr ent) pause "" "foo" "") (vla-put-TextString (vlax-ename->vla-object (entlast)) (strcat "%<\\AcObjProp Object(%<\\_ObjId " (vla-GetObjectIdString (vla-get-Utility (vla-get-Activedocument (vlax-get-acad-object))) (vlax-ename->vla-object (car ent)) :vlax-false ) ">%).Layer>%" ) ) ) ) (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sef Posté(e) le 29 novembre 2017 Auteur Posté(e) le 29 novembre 2017 Salut, Un LISP minimaliste sans champ : (defun c:sef (/ ent) (if (setq ent (entsel)) (command "_leader" (cadr ent) pause "" (cdr (assoc 8 (entget (car ent)))) "") ) (princ) ) Merci pour ces réponses rapides. ;) Je viens de tester, et ça fonctionne. Par contre, je voulais un champ pour conserver le lien entre l'objet et le texte.Si demain on change le nom du calque, le repère se mets à jour. Autre avantage de la fonction "field", même si on est en espace papier,elle peut aller chercher les propriétés d'un élément se trouvant dans l'espace objet(comme le nom du calque), ce qui n'est pas possible avec ton lisp.
(gile) Posté(e) le 29 novembre 2017 Posté(e) le 29 novembre 2017 Tu as probablement raté mon dernier message. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sef Posté(e) le 29 novembre 2017 Auteur Posté(e) le 29 novembre 2017 Tu as probablement raté mon dernier message. Exact, quelle réactivité ;)le temps que je réponde tu avais mis la deuxième version avec Champ. Du coup ça fonctionne, on a un champ intelligent. Par contre le repère est créé en espace objet et pas dans l'espace papier. Le faire à la main avec la commande "field" permets de piquer les propriétéssans rentrer dans la fenêtre flottante et le repère est créé dans la présentation. Du coup si quelqu'un a une version pour créer ces repères dans l'espace papieren allant chercher les infos des éléments qui sont dans l'espace objet je suis preneur. On y est presque ;) mais c'est déjà super :) merci :P
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