Aller au contenu

Problème de l'utilisation d'un LISP avec une fonction if


Messages recommandés

Posté(e)

Bonjour,

J'ai actuellement un problème sur mon programme.
Je veux générer des conditions afin de modifier la visibilité de deux blocs.
Tout fonctionne parfaitement sauf au moment de ma condition if.
Savez-vous où est le problème ? Voici le moment où ça bloque :  ;; Condition correcte
  (if (and
        (= (type_rsx) "PROJET")
        (= (config_nom) "TE À 3 EMBOITEMENTS")
      )
    (progn
      (setpropertyvalue bloc1 "AcDbDynBlockPropertyVisibilité1" "Te à 3 emboitements")
      (setpropertyvalue bloc2 "AcDbDynBlockPropertyVisibilité1" "reseaux pour te  a 3 emboitements (PROJET)")
    )
  )

Dessin2.dwg pi lisp.LSP PI.DCL

Posté(e)

Bonjour,

 

type_rsx est une fonction ou une variable. SI on le met entre parenthèse, c'est une fonction, donc quelque part dans le code il y a une définition du type

(defun type_rsx 

Si c'est une variable, alors il faut écrire le code

 (if (and
        (= type_rsx "PROJET")
        (= config_nom "TE À 3 EMBOITEMENTS")
      )
    (progn
      (setpropertyvalue bloc1 "AcDbDynBlockPropertyVisibilité1" "Te à 3 emboitements")
      (setpropertyvalue bloc2 "AcDbDynBlockPropertyVisibilité1" "reseaux pour te  a 3 emboitements (PROJET)")
    )
  )

 

Posté(e)

Bonjour @Loïc MICHEL

Je n'ai aucune idée du rendu que vous attendez à la suite de ce programme.
Ça aiderait pour vous répondre, car je travaille dans le flou absolu.

Ce que je peux dire d'ores et déjà, c'est qu'en plus de la remarque d'Olivier dont il faut tenir compte en supprimant ces parenthèses superflues,
vous devriez être rigoureux sur la casse des chaines de caractères, on trouve de tout, des majuscules, des accents...
Quand on teste une égalité sur des strings accent, majuscules, espaces et autres fioritures sont à proscrire urgemment !

(= "Maison" "maison") renvoie nil
(= "maison" "maison") renvoie T

Vous testez des égalités marquées correctes en commentaire alors qu'elles ne le sont pas, ça renvoie nil à chaque passage à cause de la casse.

Vous nous faites un aperçu du rendu attendu s'il vous plaît…

Amicalement

 

Éternel débutant…
Mon site perso : Programmer dans AutoCAD

 

Posté(e)
il y a 20 minutes, didier a dit :

Bonjour @Loïc MICHEL

Je n'ai aucune idée du rendu que vous attendez à la suite de ce programme.
Ça aiderait pour vous répondre, car je travaille dans le flou absolu.

Ce que je peux dire d'ores et déjà, c'est qu'en plus de la remarque d'Olivier dont il faut tenir compte en supprimant ces parenthèses superflues,
vous devriez être rigoureux sur la casse des chaines de caractères, on trouve de tout, des majuscules, des accents...
Quand on teste une égalité sur des strings accent, majuscules, espaces et autres fioritures sont à proscrire urgemment !

(= "Maison" "maison") renvoie nil
(= "maison" "maison") renvoie T

Vous testez des égalités marquées correctes en commentaire alors qu'elles ne le sont pas, ça renvoie nil à chaque passage à cause de la casse.

Vous nous faites un aperçu du rendu attendu s'il vous plaît…

Amicalement

 

 

Je souhaite réaliser un raccordement à un poteau incendie sous la forme d'une liaison en T inversé, où je pourrai modifier les pièces présentes. Cela influencera la longueur des tuyaux sur l'éclaté, et selon les choix effectués, les blocs pourront se chevaucher de différentes manières. Il y a trois parties modifiables : le réseau de gauche, le réseau de droite, et le haut, qui représente la liaison au poteau incendie.

Pour le moment, je voudrais créer un aperçu dans lequel les deux blocs se chevauchent afin d'obtenir le résultat attendu.
Le bloc A est un bloc "pièce", tandis que le bloc B est un bloc "réseaux". J'ai séparé ces deux blocs pour limiter le nombre de combinaisons à gérer manuellement.

À l'origine, je ne pensais pas que cela prendrait autant de temps, mais finalement, c'est assez long.
En réalité, il pourrait y avoir plusieurs variantes, par exemple : un réseau en "projet" en partie haute, et de l'"existant" sur la partie gauche ou droite.

MAIS, il est vrai qu'à présent, j'hésite à ne faire cela que sur un seul bloc.

L'utilisation du Lisp permettrait surtout, en plus de l'insertion d'un bloc et de son état de visibilité, d'insérer des textes en fonction du point de base (pt1) pour définir le diamètre, la nature du tuyau et le numéro d'éclaté.

Cela pourrait grandement me faciliter la création des éclaté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 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é