LISP - Si dans la sélection x, y il existe...

Fermé
Polo - Modifié par Polo le 17/09/2012 à 13:07
 Polo - 18 sept. 2012 à 17:50
Bonjour,
Je cherche à réaliser une condition en lisp pour l'automatisation d'un programme.

Je souhaiterais pouvoir dire:

Si dans la sélection (x1,y1) (x2,y2) il existe quelque chose (bloc, ligne, point...) j'exécute tel instruction, sinon tel autre

les X et Y sont des entier pour définir un rectangle de sélection

Merci par avance pour votre aide

3 réponses

UP svp

Après avoir tâtonné longuement j'en arrive à ceci

(defun c:test()
(setq ax 395 ay 275 bx 405 by 285)
(setq pt1 (strcat (itoa ax) "," (itoa ay)))
(setq pt2 (strcat (itoa bx) "," (itoa by)))
(setq valid (command "_select" "c" pt1 pt2 ""))

(if (/= valid nil)
(alert "Quelque chose")
(alert "Rien")
)
)

Mais visiblement le "/= valid nil" ne fonctionne pas

Merci
0
Bonjour,

les coordonnées d'un point sont une liste de valeur numériques et non du texte.

(defun c:test() 
(setq ax 395 ay 275 bx 405 by 285) 
(setq pt1 (list ax ay))
(setq pt2 (list bx by))
;faire une selection
(setq ss1 nil)
(setq ss1 (ssget "F" pt1 pt2))

(if (/= ss1 nil) 
  (alert "Quelque chose") 
  (alert "Rien") 
) 

) 
0
MERCI Yoda pour ta réponse

Lorsque je le lance ça me retourne
=> liste de points incorrecte

en faisant ceci, sur la ligne de commande
(setq valid (command "_select" "c" pt1 pt2 ""))
il s'affiche 20 trouvé(s), mais visiblement ce n'est stocké dans la variable valid...

J'ai également essayé avec
(setq ss1 (ssget "W" pt1 pt2))
=> chaîne du mode ssget incorrecte

Je comprend pas ...
0
Ouf enfin...

Il faut mettre un underscore devant le F
(setq ss1 (ssget "_F" pt1 pt2))
0