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

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

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