kclement Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Salut à tous, J'ai récupéré un Lisp qui pemet d'inverser une cote, seulement je dois lancer la commande autant de fois que j'ai de cotes à inverser car il ne permet pas d'en sélectionner plusieurs. Donc j'aimerai faire en sorte que cela soit possible, mais je débute encore en lisp et j'ai pas su le faire malgré mes longues recherches... Merci...
(gile) Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Ton LISP doit utiliser quelque chose du type (setq ent (car (entsel ...))) pour sélectionner une cote, c'est ça qu'il faut changer. Si tu veux sélectionner plusieurs cotes d'un coup : Utilise :(setq ss (ssget '((0 . "DIMENSIONS")))) puis parcours le jeu de sélection :(repeat (setq n (sslength ss))(setq ent (ssname ss (setq n (1- n))));; ici tu mets ce que ton lISP fait avec le nom d'entité récupéré par (car (entsel ...))) ou si tu préfères sélectionner les cotes une par une jusqu'à ce que l'utilisateur fasse Entrée, Espace, Echap ou clic droit, il faut inclure la sélection avec (entsel ...) dans une boucle :(while (setq ent (car (entsel)))....) [Edité le 10/4/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
kclement Posté(e) le 10 avril 2007 Auteur Posté(e) le 10 avril 2007 Bouhouhou ! Ca me désespère : je pensais pouvoir m'y retrouver toute seule mais y a rien à faire!J'ai bien essayé pourtant... Il y a certains trucs que je commence à comprendre dans ce langage, mais là je suis perdue ! Donc je te donnes le LISP pour que tu puisses me dire où mettre quoi si ça te dérange pas... (defun c:inv(/ ent l); par Christophe PALMERIO (setq ent (entget (car (entsel "\nSelectionnez une cote: ")))) (if (= "DIMENSION" (cdr (assoc 0 ent))) (progn (setq l (subst (cons 51 (+ (cdr (assoc 51 ent)) pi)) (assoc 51 ent) ent ) ) (entmod l) ) ) (princ) ) Merci d'avance !
(gile) Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Je te donnes les deux méthodes que je proposais pour que tu puisses les essayer et les étudier tranquilement. Avec while, il suffisait de mettre un (while au début du code et de refermer la parenthèse à la fin. (defun c:m_inv (/ ent l) ; par Christophe PALMERIO (while (setq ent (entget (car (entsel "\nSelectionnez une cote: ")))) (if (= "DIMENSION" (cdr (assoc 0 ent))) (progn (setq l (subst (cons 51 (+ (cdr (assoc 51 ent)) pi)) (assoc 51 ent) ent ) ) (entmod l) ) ) ) (princ) ) Avec un jeu de sélection la modification est plus importante. (defun c:ss_inv (/ ss n ent l) ;; faire un jeu de sélection uniquement avec des cotes (filtre) (setq ss (ssget '((0 . "DIMENSION")))) ;; mettre un compteur à 0 (setq n 0) ;; si le jeu existe (if ss ;; répéter autant de fois que le jeu contient d'entités (repeat (sslength ss) ;; récupérer la liste des données de la n-ième entité (setq ent (entget (ssname ss n))) ;; modifier la liste (setq l (subst (cons 51 (+ (cdr (assoc 51 ent)) pi)) (assoc 51 ent) ent ) ) ;; modifier l'entité (entmod l) ;; passer à l'entité suivante (setq n (1+ n)) ) ) (princ) ) Dans ma réponse précédente je proposais une façon plus concise (mais peut-être moins facilement compréhensible) pour parcourir la sélection en partant du dernier élément. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Et bien, (gile) comme dans son habitude nous vient en aide.... et là, c'est même ultra-"commentariser", détaillé, avec exemple.... !!!... bizarre.... (moi, il me laissais beaucoup plus longtemps dans le flou au début...) je pensais pouvoir m'y retrouver toute seule mais y a rien à faire!Ah.. !!! je comprends mieux !!! ;) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Rien à voir Bred, je ne fais pas dans le sexisme, j'essaye juste d'adapter mes réponses à ce qui me semble être le niveau de l'interlocuteur. Enfin, ça c'est un peu de la frime, ça dépend surtout du temps que j'ai et de mon état d'esprit à ce moment là. Ceci dit quand on voit la vitesse à laquelle tu as progressé, je me demande si je fais bien de mettre autant de commentaires. ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 je ne fais pas dans le sexismeNon... mais peut-être dans la galanterie ...Ce que je comprends trés bien.... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
zebulon_ Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Une des premières règle de galanterie nous demande d'être prévenant et attentionné à l'égard des femmes.Attention (gile), certaines féministes qualifient la galanterie comme un comportement sexiste, puisqu'elle sous-entend que l'homme possèderait un statut supérieur à la femme.D'un autre côté, tu t'exposes à la jalousie de certains membres du sexe dit "fort", puisque, de ce fait, ils ne sont pas traités avec le même égard. Cruel dilemme Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Bred Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Et, ho! à la base c'était un clin d'oeuil ma remarque....soyons un peu léger !...Revenons au lisp.... Alors, kclement, as-tu besoin d'autre chose ??? ;) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
zebulon_ Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Moi aussi c'était un clin d'oeil, même si je n'ai pas mis le smilie. Alors, kclement, as-tu besoin d'autre chose ??? Bred, tu essayes de te rattraper aux branches ? Amicalement Zébulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
kclement Posté(e) le 10 avril 2007 Auteur Posté(e) le 10 avril 2007 Eh bien, quelle effervescence !!! Je crois que je n'avais jamais encore vu de conversation tourner dans ce sens sur ce forum ! Je vous avoue que je n'ai pas eu le temps de tester (au fait : merci (gile) !!!)J'ai malheureusement un petit coup de speed au boulot en ce moment même, mais je vous promets que je vous tiens au courant de mes avancées en matière de LISP ! A bientôt alors ! Kclement
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