ACAD666 Posté(e) le 10 février 2011 Posté(e) le 10 février 2011 Coucou décidément aujourd'hui je sollicite à mort. Je ne trouve nulle part sur le forum quoi que ce soit qui permettrait de mettre à jour l'attribut 'alt' d'un bloc point en fonction du Z de son point d'insertion.Sans modifier la rotation du blocAvec deux décimalesEn conservant la position de l'attribut par rapport au point. En gros du covadis sans covadis,quoi... Et AutoCAD se tourna vers le dessinateur à bout de nerfs, et lui dit:"ERREUR FATALE: Unhandled Access Violation Reading 0x5e43dff0 Exception at 5e43dff0h"Ce à quoi le dessinateur répondit:"Ca tombe bien je vais en profiter pour écouter un peu de rock qui décrasse les esgourdes"http://www.facebook.com/pages/Ex-Voto/206836112741129?sk=wall
didier Posté(e) le 10 février 2011 Posté(e) le 10 février 2011 coucou un truc vite fait sans contôlesi et seulement si l'attribut ALT est le DEUXIEME attribut du bloc (setq ent(car(entsel"point")) altval (cons 1 (cdr(assoc 1 (entget (entnext(entnext ent)))))) altpos (cons 1 (rtos (caddr (cdr(assoc 10 (entget ent)))) 2 2)) tempo (subst altpos altval (entget (entnext(entnext ent)))) ) (entmod tempo) (entupd ent) amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 10 février 2011 Posté(e) le 10 février 2011 Salut, Un autre, vite fait aussi, mais avec un peu plus de contrôles. (defun c:updalt (/ ent att) (vl-load-com) (while (setq ent (car (entsel "\nSélectionnez un bloc: "))) (if (= (vla-get-ObjectName (setq ent (vlax-ename->vla-object ent))) "AcDbBlockReference") (if (setq att (assoc "ALT" (mapcar '(lambda (x) (cons (vla-get-TagString x) x) ) (vlax-invoke ent 'GetAttributes) ) ) ) (vla-put-TextString (cdr att) (rtos (caddr (vlax-get ent 'InsertionPoint)) 2 2)) (princ "\nLe bloc sélectionné ne contient pas d'attribut 'ALT'") ) (princ "\nL'entité sélectionnée n'est pas un bloc") ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ACAD666 Posté(e) le 10 février 2011 Auteur Posté(e) le 10 février 2011 Merci à tous!Les deux fonctionnent nickel.J'aimerais essayer d'adapter pour faire ça sur toute une sélection.Si j'en ai le courage, on se retrouvera dans le forum lisp! EDIT: Oups, j'ais essayé deux fois le même lisp...En fait je ne sais pas mettre en oeuvre le code de Didier tel quel. [Edité le 10/2/2011 par ACAD666] Et AutoCAD se tourna vers le dessinateur à bout de nerfs, et lui dit:"ERREUR FATALE: Unhandled Access Violation Reading 0x5e43dff0 Exception at 5e43dff0h"Ce à quoi le dessinateur répondit:"Ca tombe bien je vais en profiter pour écouter un peu de rock qui décrasse les esgourdes"http://www.facebook.com/pages/Ex-Voto/206836112741129?sk=wall
didier Posté(e) le 10 février 2011 Posté(e) le 10 février 2011 coucou malgré ton pseudo diaboliquej'ai fait un effort pour que tu ne penses pas que (Gile) soit plus fort que moije rougis de ce que je viens d'écrire tant (Gile) m'en a appris et m'en apprend encore. enregistre ce code dans un fichier avec une extension .LSPload ou boen glisser dans l'interface graphiqueet roule ... (defun c:modif-attz ( / jeusel n ent altval altpos tempo) (setvar "dimzin" 0) (setq jeusel (ssget (list (cons 0 "INSERT")))) (setq n 0) (repeat (sslength jeusel) (setq ent (ssname jeusel n)) (if ( = "ALT" (cdr (assoc 2 (entget (entnext (entnext ent)))))) (progn (setq altval (cons 1 (cdr(assoc 1 (entget (entnext(entnext ent)))))) altpos (cons 1 (rtos (caddr (cdr(assoc 10 (entget ent)))) 2 2)) tempo (subst altpos altval (entget (entnext(entnext ent)))) ) (entmod tempo) (entupd ent) (setq n (+ 1 n)) ) ) ) ) amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
ACAD666 Posté(e) le 11 février 2011 Auteur Posté(e) le 11 février 2011 Yes!Et ça marche sur toute une sélection!Et bien encore merci! En fait si on me donne du code qui ne commence pas par (defun c:etc... je suis largué.J'avais commencé à lisper il y a trois ans, en bidouillant un petit programme de métrés (qui se trouve qqpart dans ce forum).D'ailleurs c'était plus un mix amélioré de lisp existants qu'un vrai lisp original.Mais je ne me suis pas replongé dans le lisp depuis. Et AutoCAD se tourna vers le dessinateur à bout de nerfs, et lui dit:"ERREUR FATALE: Unhandled Access Violation Reading 0x5e43dff0 Exception at 5e43dff0h"Ce à quoi le dessinateur répondit:"Ca tombe bien je vais en profiter pour écouter un peu de rock qui décrasse les esgourdes"http://www.facebook.com/pages/Ex-Voto/206836112741129?sk=wall
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