Aller au contenu

Attributs et Z


ACAD666

Messages recommandés

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 bloc

Avec deux décimales

En 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

Lien vers le commentaire
Partager sur d’autres sites

coucou

 

un truc vite fait sans contôle

si 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

Lien vers le commentaire
Partager sur d’autres sites

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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

coucou

 

malgré ton pseudo diabolique

j'ai fait un effort pour que tu ne penses pas

que (Gile) soit plus fort que moi

je 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 .LSP

load ou boen glisser dans l'interface graphique

et 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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é