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

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

  1. Polo
     
    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
  2. Yoda
     
    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
    1. Polo
       
      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
  3. Polo
     
    Ouf enfin...

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