zza427 Posté(e) le 17 mars 2016 Posté(e) le 17 mars 2016 Bonjour,je relance mon sujet que j'avais fait paraitre dans le mauvais forum (autocad 2004). A partir d'un plan d'implantation dans lequel j'ai un bloc inséré plusieur fois avec des attributs différents, je souhaite faire un synoptique.Du coup je cherche une commande ou un lisp qui permettrait de récuperer des blocs existant dispersés et de les aligner avec un pas. Si en plus on peut tenir compte de la valeur alphanumérique d'un des attributs pour les ordonner dans l'alignement, ce serait parfait. Si vous connaissez quelque chose de ce type ou si vous avez une piste, je serais intéressé. Merci. J'ai depuis réfléchi, pour aligner les blocs, il me semble qu'il faut récuperer les coordonnées du 1er bloc, le déplacer de X= -1*ancienne coordonnée x + A et Y= -1* ancienne coordonnée y ; où A est une valeur incrémenté à chaque bloc traité.Ce que j'ai du mal a concevoir c'est si il est possible de traiter les blocs dans l'ordre alphanumérique d'un attribut, est ce qu'il existe une fonction qui fait ca ou est ce que c'est tout un programme à faire?
(gile) Posté(e) le 18 mars 2016 Posté(e) le 18 mars 2016 Salut, Tu peux essayer ça : (defun c:synoptique (/ att dist tag bloc elst base ss lst i) (if (and (setq att (car (nentsel "\nSélectionnez un attribut: "))) (= (getpropertyvalue att "LocalizedName") "Attribut") (setq dist (getdist "\nSpécifiez le pas: ")) ) (progn (setq tag (getpropertyvalue att "Tag") bloc (getpropertyvalue att "OwnerId") elst (entget bloc) base (cdr (assoc 10 elst)) ss (ssget "_X" (list (assoc 0 elst) (assoc 2 elst) (assoc 410 elst)) ) ) (repeat (setq i (sslength ss)) (setq lst (cons (ssname ss (setq i (1- i))) lst)) ) (setq lst (vl-sort lst '(lambda (x y) (< (getpropertyvalue x tag) (getpropertyvalue y tag)) ) ) i 0 ) (foreach b lst (setpropertyvalue b "Position" (mapcar '+ base (list (* i dist) 0 0)) ) (setq i (1+ i)) ) ) ) (princ) ) Un petit screencast. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
zza427 Posté(e) le 21 mars 2016 Auteur Posté(e) le 21 mars 2016 Merci, c'est super, ca va me faire gagner un temps fou.Encore merci.
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