willy95 Posté(e) le 16 septembre 2015 Posté(e) le 16 septembre 2015 Bonjour à tous, Bien que le sujet est été évoqué dans certains sujet, mon problème s'en ait trouvé noyer au milieu d'autre informations, alors je pose la question aussi simplement que je peux comprendre la réponse : Comment créer un fichier temporaire "dcl" pour ouvrir une boite de dialogue dans un lisp, sans de fichier "dcl" externe ? Le DCL :Tmp : dialog { label = ""; key = "Titre"; spacer; : edit_box { label = "Quel couleur : "; key = "couleur"; height = 1 ; edit_width = 10; value = ""; } ok_cancel; edit_width = 10; } et le lisp (qui est peut-être pas parfait mais qui fonctionne pour mon exemple) (setq Dcl_Id% (load_dialog "Tmp.dcl")) (new_dialog "Tmp" Dcl_Id%) (set_tile "Titre" "Choisir votre couleur") (set_tile "couleur" "") (start_dialog) (unload_dialog Dcl_Id%) J'ai testé un truc dans le genre mais il y doit y avoir beaucoup d'erreurs, car cela ne fonctionne pas :( . (setq tempo (vl-filename-mktemp "Tmp2.dcl") file (open tempo "w")) (write-line " Tmp2 : dialog { label = \"\"; key =\"Titre\"; spacer; : edit_box { label = \"Quel couleur : \"; key = \"couleur\"; height = 1 ; edit_width = 10; value = \"\"; } ok_cancel; edit_width = 10; } " file) (close file) (new_dialog "Tmp2" Dcl_Id) (set_tile "Titre" "Choisir votre couleur") (set_tile "couleur" "") (start_dialog) (unload_dialog Dcl_Id) Si une Ame courageuse peut m'éclairer sur ce sujet, j'en serai plus que ravi :) . La Fusion numérique est plus complexe que l'on ne croit :unsure: Merci par avance pour vos réponses instructives...
vincentp010 Posté(e) le 17 septembre 2015 Posté(e) le 17 septembre 2015 Salut, il te manque cette ligne après le (close file)(setq Dcl_Id (load_dialog tempo)) Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
Patrick_35 Posté(e) le 17 septembre 2015 Posté(e) le 17 septembre 2015 Salut Pour compléter la réponse de vincentp010, tu peux aussi ajouter cette ligne après ton (unload_dialog Dcl_Id)(vl-file-delete tempo) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
willy95 Posté(e) le 21 septembre 2015 Auteur Posté(e) le 21 septembre 2015 Merci pour ces réponses qui effectivement sont primordiales, car si j'ai bien compris la première charge la boite et la seconde efface le fichier temporaire. En fait j'étais pas si loin que ça, Merci encore pour vos aides précieuses.
willy95 Posté(e) le 21 septembre 2015 Auteur Posté(e) le 21 septembre 2015 Maintenant je bute sur les listes déroulantes, j'ai tout essayé dans tout les sens et j'arrive à la conclusion qui me semble la plus proche d'un résultat qui fonctionne à : " erreur: no function definition: SET_TILE_LIST " Si quelqu'un pouvait me dire ce qui cloche ce serait bien sympa (setq tmpdesi (vl-filename-mktemp "Questiondesi.dcl") file (open tmpdesi "w")) (write-line " Questiondesi : dialog { key = \"Titre\"; label = \"\"; initial_focus = \"List1\"; spacer; : row { fixed_width = true; : column { width = 24.76; fixed_width = true; spacer; : text { key = \"Text1\"; label = \"\"; } } : popup_list { key = \"List1\"; width = 11.42; fixed_width = true; }} : spacer { width = 10 ; height = 1 ; } ok_cancel; edit_width = 10; } " file) (close file) (setq Dcl_Id (load_dialog tmpdesi)) (new_dialog "Questiondesi" Dcl_Id) (if (not *Questiondesi@) (setq *Questiondesi@ (list nil "" "")) ) (setq Value1$ (nth 1 *Questiondesi@) List1@ (list "" "Entrée" "Cuisine" "Séjour" "Salle à Manger" "Salle de Bains")) (set_tile "Titre" "Saisir une Désignation") (set_tile "Text1" "Choisir une Désignation") (set_tile_list "List1" List1@ Value1$) (action_tile "List1" "(set_list_value \"List1@\" \"Value1$\")") (setq Return$ (start_dialog)) (unload_dialog Dcl_Id) (setq *Questiondesi@ (list nil Value1$)) (vl-file-delete tmpdesi)
(gile) Posté(e) le 21 septembre 2015 Posté(e) le 21 septembre 2015 Salut, set_tile_list n'existe pas.Regarde dans l'aide du côté des fonctions start_list, add_list et end_list. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 22 septembre 2015 Auteur Posté(e) le 22 septembre 2015 Ok super et un Grand Merci à Gile qui m'a redirigé dans la bonne direction :) Tout fonctionne et beaucoup plus simple à mettre en place, Merci. (setq listdesi '("Entrée" "Cuisine" "Séjour" "Salle à Manger" )) (start_list "List1" ) (mapcar 'add_list listdesi) (end_list) (action_tile "List1" "(setq Desi (nth (atoi $value) listdesi))") (start_dialog) (unload_dialog Dcl_Id)
willy95 Posté(e) le 23 septembre 2015 Auteur Posté(e) le 23 septembre 2015 Bonjour à tous, Pour ce coup la, j'ai tout essayé dans tout les sens et je comprends pas pourquoi j'ai la réponse "type d'argument incorrect: stringp nil" avec le Choix "HSP" ou "HFP" pour la valeur "Haut1" alors que si je la remplace la variable "Num" cela fonctionne parfaitement ?Un gros coup de projecteur sur mon problème serait formidable. Voici la partie du code ou je bloque... (setq tempo2 (vl-filename-mktemp "Question1.dcl") file (open tempo2 "w")) (write-line " Question1 : dialog { label = \"Saisir les informations de la pièce\"; key =\"\"; spacer; : radio_row { label = \"Numéro de la Pièce\"; key = \"Type\"; : edit_box { label = \"Choisir un Numéro de Pièce\"; key = \"List3\"; height = 1 ; edit_width = 6; fixed_width = true; alignment = left; } } : boxed_radio_row { label = \"Hauteur de la Pièce\"; key = \"\"; width = 20; fixed_width = true; alignment = centered; : radio_button { label = \"Hauteur Sous Plafond\"; key = \"HSP\"; } : radio_button { label = \"Hauteur Sous Faux Plafond\"; key = \"HFP\"; } : edit_box { label = \"\"; key = \"Hauts\"; height = 1 ; edit_width = 6; fixed_width = true; alignment = left; } } : spacer { width = 10 ; height = 2 ; } ok_cancel; edit_width = 10; } " file) (close file) (setq Dcl_Id (load_dialog tempo2)) (new_dialog "Question1" Dcl_Id) (action_tile "List3" "(setq Num $value)") (action_tile "Hauts" "(setq Haut1 $value)") (action_tile "HSP" (vl-prin1-to-string '(if (= $value "1") (setq Haut (StrCat "Hsp:" Haut1))))) (action_tile "HFP" (vl-prin1-to-string '(if (= $value "1") (setq Haut (StrCat "Hsfp:" Haut1))))) (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tempo2)
(gile) Posté(e) le 23 septembre 2015 Posté(e) le 23 septembre 2015 Salut, "type d'argument incorrect: stringp nil" veut dire que la fonction attend un argument de type "string" mais qu'elle reçoit nil.C'est donc que ta variable Haut1 vaut nil (elle n'est pas initialisée) quand elle est passée à : (strcat ...).(action_tile ...) n'est effectué que si on agit sur le contrôle. Tu peux l'initaliser dans le DCL : : edit_box { label = \"\"; key = \"Hauts\"; height = 1 ; edit_width = 6; fixed_width = true; alignment = left; value = \"0.0\"; }Ou dans le LISP :(setq Haut1 "0.0") (set_tile "Hauts" Haut1)Et tu devrais faire de même pour "Num"... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 24 septembre 2015 Auteur Posté(e) le 24 septembre 2015 Merci Gile pour ta réponse qui me permets d'étudier une nouvelle partie dans le lisp, en revanche après plusieurs essais, j'ai fini par comprendre que la question dans la boite de dialogue n'était pas au bon endroit. :blink: Avant qui ne fonctionnait pas : radio_button -> HSP radio_button -> HFP edit_box -> Hauts Après : edit_box -> Hauts radio_button -> HSP radio_button -> HFP En clair un manque de logique dans ma tête car il faut bien avoir une valeur dans la variable AVANT de s'en servir. Merci encore pour vos réponses instructives. :wub:
Messages recommandé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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant