Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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 !

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)
je ne fais pas dans le sexisme

Non... 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...

Posté(e)

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)

Posté(e)

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

Posté(e)

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)

Posté(e)

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

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é