Aller au contenu

[Résolu] Petit souci de DCL avec une ouverture de fichier


Messages recommandés

Posté(e)

Bonjour à la communauté.

 

J'ai réussi à bien progresser dans mes DCL, merci à CadXP...

 

Mais voilà, dans une fenêtre DCL, j'ai un bouton "Import" par lequel j'aimerai, lorsque je clique dessus, avoir une fenêtre (getfiled et, après avoir lu ce fichier (un fichier format ASCII avec les contenus des edit_box), revenir à la fenêtre DCL avec les nouvelles valeurs.

 

Je n'arrive pas à lier une image ("Le serveur a retourné une erreur durant l'envoi."). J'ai essayé un JPG et un PNG... Rien à faire... Même le ZIP déconne...

 

Donc, en gros, j'ai des calques prédéfinis dans un fichiers TXT que j'aimerai mettre à jour ma DCL après la lecture de ce TXT.

 

J'espère être clair... C'est vrai qu'une image serait plus "parlante"...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut,

 

Si je comprends bien la demande, il faut, dans le action_tile du bouton, appeler getfiled, ouvrir et lire le fichier, puis remplir les contrôles edit_box avec set_tile.

Quand le contenu d'un action_tile dépasse une ou deux instructions il est souvent plus clair et plus lisible de définir une fonction locale qui fait le boulot et d'appeler simplement cette fonction depuis le action_tile.

 

Un exemple minimaliste :

 

DCL

test :dialog{
 label="Test";
 :button{
   label = "Import";
   key = "import";
 }
 spacer;
 :edit_box{
   label = "Ligne1";
   key = "ligne1";
   edit_width = 16;
 }
 :edit_box{
   label = "Ligne2";
   key = "ligne2";
   edit_width = 16;
 }
 :edit_box{
   label = "Ligne3";
   key = "ligne3";
   edit_width = 16;
 }
 spacer;
 ok_only;
}

 

LSP

(defun test (/ import dcl_id)

 (defun import (/ filename file line lines)
   (if (setq filename (getfiled "Choisir le fichier à importer" "" "txt" 8))
     (progn
       (setq file (open filename "r"))
       (while (setq line (read-line file))
         (setq lines (cons line lines))
       )
       (close file)
       (setq lines (reverse lines))
       (set_tile "ligne1" (car lines))
       (set_tile "ligne2" (cadr lines))
       (set_tile "ligne3" (caddr lines))
     )
   )
 )

 (setq dcl_id (load_dialog "test.dcl"))
 (if (new_dialog "test" dcl_id)
   (progn
     (action_tile "import" "(import)")
     (start_dialog)
     (unload_dialog dcl_id)
   )
 )
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut (gile), et merci de m'aider.

 

Effectivement, tu as tout compris... Je prend bien note de ton code.

 

Merci encore...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Re.

 

J'ai maintenant un souci avec un (set_tile_list (sur TerryCAD) qui reste en noir dans l'éditeur VisualLISP...

 

Et je n'ai rien trouvé dans l'aide...

 

Par contre, j'ai aussi trouvé un (defun set_tile_list.

 

Cela voudrait dire que (set_tile_list n'existe pas ? ? ?

 

Edit : Et ben non, (set_tile_list n'existe pas. C'est gérer par un (defun...

Par contre, ma liste est bien remplie dans ma DCL, mais dès que je clique sur une valeur, ça me ferme ma fenêtre :

  (set_tile_list "TypeSepar" TypeSepar@ 1)
 (action_tile "TypeSepar" "(set_list_value \"TypeSepar@\" \"Value1$\")")

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut

 

Je ne saisie pas bien le problème.

Si c'est la valeur choisie dans une liste, tu auras la position dans la liste.

(action_tile "TypeSepar" "(setq position $value)")

Puis dans le lisp

(nth (atoi position) ma_liste)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut Patrick_35, et merci pour ta réponse...

 

Je craignais une solution trop complexe pour mon humble niveau, j'ai donc opter pour des "radio_button", vu que ma liste ne comportait que 3 valeurs et qu'ils ont l'air plus simple d'utilisation...

 

Merci encore...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é