Aller au contenu

Integrer une action dans la structure dcl dans un fichier lisp


fabcad

Messages recommandés

Bonjour,

Voici l'extrait issu du fichier dcl d'origine :

		action = "(setq Cou \"_YELLOW\")";

et voici l'extrait erroné que je voudrais mettre dans la sous-fonction d’écriture du fichier dcl temporaire :

		"          action = "(setq Cou \"_YELLOW\")";"

Je sèche sur les guillemets nécessaires au write-line et ceux nécessaires à la fonction lisp.

De l'aide serait la bienvenue,

Fabcad
Le Rennais Métropolitain

COULEUR3.DCL COULEUR3.LSP COULEUR3_DCL.LSP

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Je pense qu'il serait plus sage de gérer l'action via la fonction (action_tile), donc en dehors de l'écriture du fichier DCL évitant ainsi ces écritures un peu barbares et sources d'erreurs ^^" Perso je l'intègre toujours au bouton "accept" pour définir les variables, comme ci-dessous :

;Fichier: COULEUR1.LSP
;

;;;---------------------------------------------------------------
;;;
;;; Creation de la boite de dialogue et retour du fichier cree.
;;;
;;;---------------------------------------------------------------

(defun writeDCL ()
  (setq
    filename (vl-filename-mktemp "tmp.dcl")
    file (open filename "W")
  )
  (write-line
    (strcat
      "Couleur : dialog {"
      "      label   = \"Modifier la couleur\";"
      "      : text {"
      "        label = \"Nouvelle couleur pour la derniere entite\";"
      "      }"
      "      : radio_row {"
      "        key = \"Boutons\";"
      "        : radio_button {"
      "          label = \"Rouge\";"
      "          key   = \"_RED\";"
      "        }"
      "        : radio_button {"
      "          label = \"Bleu\";"
      "          key   = \"_BLUE\";"
      "        }"
      "        : radio_button {"
      "          label = \"Jaune\";"
      "          key   = \"_YELLOW\";"
      "        }"
      "      }"
      "      ok_cancel;"
      "}"
    );fin strcat
  file
  ); fin write-line
  (setq file (close file))
); fin defun writeDCL

(defun C:Colorbox (/  *error* col filename file Fic Cou)

  (vl-load-com)

  (defun *error* (msg)
    (if file (close file))
    (if filename (vl-file-delete filename))
    (princ msg)
  )
  (defun col (/ r)
    (foreach c '("_RED" "_BLUE" "_YELLOW")
      (if (= "1" (get_tile c)) (setq r c))
    )
    r
  )

  (writeDCL)

  (setq Fic (load_dialog filename))
  (if (not (new_dialog "Couleur" Fic)) (exit))
  (action_tile "accept" "(setq Cou (col)) (done_dialog)")
  (action_tile "cancel" "(done_dialog)")
  (start_dialog)
  (unload_dialog Fic)
  Cou
); fin defun writeDCL

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Merci pour votre aide,

Je suis entrain de revoir des lisp's et des dcl's qui étaient dans un livre de Microapp "Programmation AutoCAD 12" pour les dinosaures comme moi,

Il s’avère que dans les programmes ils expliquent tous les cas de figure action_tile, c'est pourquoi je teste l'ensemble des routines transposables en fichiers combinés.

Bonne journée,

Fabcad
Le Rennais Métropolitain

Lien vers le commentaire
Partager sur d’autres sites

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é