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.

 

Posté(e)
il y a une heure, didier a dit :

Bonjour @Loïc MICHEL

Désolé, je ne comprends pas.

Je ne vois pas du tout comment en arriver là avec vos blocs.
C'est quoi ces lettres dans un cercle ?
Les points d'insertion ne collent pas (dans ce que je comprends).

Est-ce que vous avez regardé du côté de la casse des strings ?

Amicalement
 

Bonjour,

Désolé pour la confusion. Pour être plus précis, les lettres dans un cercle étaient simplement un exemple utilisé pour la légende d'un projet.

Pour l'instant, l'objectif était simplement de tester si l'ajustement fonctionnait correctement. À la fin du programme, je positionnerai tous les différents états de visibilité vers un même point et définirai ensuite le point de base du bloc.

Mon programme est conçu éditer des blocs en fonction des choix de l'utilisateur. Chaque état de bloc (selon les paramètres choisis) sera ajusté, et les textes seront ajoutés à des positions fixes par rapport à l'éclaté.

Merci pour votre compréhension.

Amicalement,

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é