Aller au contenu

[Résolu] Petit lisp qui fait correspondre une liste de calques


DenisHen

Messages recommandés

Bonjour à tous,

 

Voilà, j'ai développé aujourd'hui, un petit LISP qui lit dans un fichier (.lst) et fusionne les calques décrits dans ce fichier.

 

Voici le contenu du fichier .lst :

1COMM;CAD_LIM_COMMUN;Amorces des limites communales

1DEPART;CAD_LIM_DEPART;Amorces des limites départementales

1ETAT;CAD_LIM_ETAT;Amorces des limites étatiques

 

AncienCalque ; NouveauCalque ; Commentaire (sans espace autour des ";")

 

Au lancement du LISP (commande "ImpLstCalque"), il demande le fichier .lst, ensuite, il fucionne "AncienCalque" vers "NouveauCalque". Il ignore le commentaire.

 

Si quelqu'un a des questions...

 

Fichier LISP :

(defun c:ImpLstCalque ( / Fichier File Lign LignList)
 (princ "\n***** Importation des calques d'un fichier LST *****")
 (setq Fichier (getfiled "Sélectionner un fichier de correspondance des calques" "" "Lst;*" 0))
 (if (/= (findfile Fichier) "")
   (progn (setq File (open Fichier "r"))
      	(while (setq Lign (read-line File))
        	(cond ((/= (vl-string-search ";" Lign) nil)
                   (setq LignList (str2lst Lign ";"))
                   (if (tblsearch "layer" (nth 0 LignList))
                     (progn (command "-calque" "n" (nth 1 LignList) "")
                        	(command "fuscalques" "n" (nth 0 LignList) "" "n" (nth 1 LignList) "o")
                     ) ;_ Fin de progn
                   ) ;_ Fin de if
              	)
        	) ;_ Fin de cond
      	) ;_ Fin de while
   ) ;_ Fin de progn
 ) ;_ Fin de if
) ;_ Fin de defun

 

Le fichier ZIP comporte un exemple de fichier .lst...

 

Denis...

ImpLstCalque.zip

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)

Lien vers le commentaire
Partager sur d’autres sites

Salut Patrick_35

 

J'y ai pensé, mais vu qu'un simple copier/coller peut le faire...

 

Et que c'est plus compliquer que ça en a l'air, surtout pour moi. J'avais pensé à la commande "GetLayers" de (gile) mais elle ne veut pas d'un trop grand nombre de calques...

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)

Lien vers le commentaire
Partager sur d’autres sites

J'y ai pensé, mais vu qu'un simple copier/coller peut le faire...

Ben, le problème est la structure de ton fichier .lst

C'est toi qui l'a fait, donc le copier/coller est facile pour toi.

 

Et que c'est plus compliquer que ça en a l'air, surtout pour moi. J'avais pensé à la commande "GetLayers" de (gile) mais elle ne veut pas d'un trop grand nombre de calques...

Avec une liste et sélection multiple comme dans ONG, GEF, SYN, EXL, etc...

Un exemple avec MyMultiLists

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Ben, le problème est la structure de ton fichier .lst

C'est toi qui l'a fait, donc le copier/coller est facile pour toi.

Pas nécessairement, une sélection des calques dans le gestionnaire, puis, coller cette liste dans un tableur et sauvegarde avec ";" comme séparateur...

 

Mais ça ne donne qu'une liste, anciens ou nouveaux calques... Il faut de toutes façons "bidouiller" dans le fichier .lst...

 

Avec une liste et sélection multiple comme dans ONG, GEF, SYN, EXL, etc...

Un exemple avec MyMultiLists

Je pense que tu me surestimes... :rolleyes: Je prend ça pour un compliment... ;)

 

Mais je vais tout de même faire un tour sur MyMultiLists...

 

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)

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Je relève le "défi"...

 

Bon, pour faire une sélection de calque, je me suis inspiré de MyMultiLists... Et mon DCL donne ça :

SelectCalque.dcl
//---------------------------------------------------------------------------------------------------------
// SelectCalque
//---------------------------------------------------------------------------------------------------------
SelectCalque : dialog {
 key = "Title";
 label = "";
 : boxed_column {
   label = "Sélection multiple";
   : list_box {
     multiple_select = true;
     key = "List1";//Value1$ from lsp file
     height = 40;
     fixed_height = true;
     width = 50;
     fixed_width = true;
   }
   spacer;
 }
 spacer;
 ok_only;}//SelectCalque

Et mon code est ceci :

(defun c:SelectCalque (/ Dcl_Id% List1@ Return# Value1$)
 (princ "\nSelectCalque")
 (princ) ; Set Default Variables
 (if (not *SelectCalque@) ;Unique global variable name to store dialog info
   (setq *SelectCalque@ (list nil "" ""))
 ) ;if
 (setq Value1$ "")
 (while (setq lay (tblnext "LAYER" (not lay)))
   (if (not (wcmatch (cdr (assoc 2 lay)) "*|*"))
     (setq List1@ (cons (cdr (assoc 2 lay)) List1@))
   ) ;_ Fin de if
 ) ;_ Fin de while
 (setq List1@ (vl-sort List1@ '<))
 (setq Dcl_Id% (load_dialog "SelectCalque.dcl"))
 (new_dialog "SelectCalque" Dcl_Id%) ; Set Dialog Initial Settings
 (set_tile "Title" "Sélection de calques")
 (set_tile_list "List1" List1@ Value1$) ;*Included
 ; Dialog Actions
 (action_tile "List1" "(set_list_value \"List1@\" \"Value1$\")") ;*Included
 (setq Return# (start_dialog)) ; Unload Dialog
 (unload_dialog Dcl_Id%)
 (setq *SelectCalque@ (list nil Value1$))
 (princ)
) ;_ Fin de defun

 

Le code s'arrête avant de remplir la fenêtre dans le DCL...

 

Je n'arrive pas à savoir pourquoi... Mais comme tout est en anglais sur le site, je ne saisi pas tout... :unsure:

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)

Lien vers le commentaire
Partager sur d’autres sites

Allez, c'est mon jour

 

La routine

  (defun bda(titre / dcl ele fil lay lst nom pos tmp res txt val)
   (vlax-for ele (vla-get-layers doc)
     (or (wcmatch (setq nom  (vla-get-name ele)) "*|*")
(setq lay (cons nom lay))
     )
   )
   (setq tmp (vl-filename-mktemp "bda" nil ".dcl")
  fil (open tmp "w")
  lay (acad_strlsort lay)
   )
   (foreach txt '(	"bda : dialog {"
		"  key = \"titre\";"
		"  alignment = centered;"
		"  is_cancel = true;"
		"  allow_accept = true;"
		"  : list_box {label = \"Calques\"; key=\"lay\"; height = 30; width = 100; multiple_select=true;}"
		"  spacer;"
		"  ok_cancel;"
		"}"
	 )
     (write-line txt fil)
   )
   (close fil)
   (setq dcl (load_dialog tmp)
  pos "0"
   )
   (new_dialog "bda" dcl "")
   (start_list "lay")
   (mapcar 'add_list lay)
   (end_list)
   (set_tile "titre" titre)
   (set_tile "lay" "0")
   (action_tile "lay"		"(setq pos $value)")
   (action_tile "cancel"	"(done_dialog 0)")
   (action_tile "accept"	"(done_dialog 1)")
   (setq res (start_dialog))
   (unload_dialog dcl)
   (vl-file-delete tmp)
   (and (eq res 1)
     (while (not (eq pos ""))
(setq val (read pos)
      lst (cons (nth val lay) lst)
      pos (substr pos (+ 2 (strlen (itoa val))) (strlen pos))
)
     )
   )
   (reverse lst)
 )

 

Et pour appeler la fonction

  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (setq mes_calques (bda "Ma liste de calques by DenisH"))

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Merci de ton aide Patrick_35.

 

Effectivement, je ne sais pas quand ma fenêtre se remplie...

 

Mais je trouverais... ;)

 

Par contre, "set_tile_list" n'apparait pas en bleu dans ma fenêtre Lisp... Ce qui sous-entend qu'il ne connait pas cette commande...

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)

Lien vers le commentaire
Partager sur d’autres sites

D'autre part, le lisp en lien "MyMultiLists" ne fonctionne pas chez moi...

MyMultiLists; erreur: no function definition: SET_TILE_LIST

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)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Le fichier MyDialog.lsp contient un bibliothèque de routines (à la fin du fichier) où est définie set_tile_list.

 

;-------------------------------------------------------------------------------
; set_tile_list - Sets a dialog popup_list or list_box tile to a list
; Arguments: 3
;   KeyName$ = Key name of tile
;   ListName@ = The list to set in tile
;   Selected = An item in the ListNames@ or a list of items selected
; Syntax: (set_tile_list "TileName" '("A" "B" "C") "B")
;         (set_tile_list "TileName" '("A" "B" "C") '("A" "C"))
; Returns: Sets Selected items in dialog popup_list or list_box tiles.
;-------------------------------------------------------------------------------
(defun set_tile_list (KeyName$ ListName@ Selected / Item)
 (start_list KeyName$ 3)
 (mapcar 'add_list ListName@)
 (end_list)
 (foreach Item (if (listp Selected) Selected (list Selected))
  (if (member Item ListName@)
    (set_tile KeyName$ (itoa (- (length ListName@) (length (member Item ListName@)))))
  );if
 );foreach
);defun set_tile_list
;-------------------------------------------------------------------------------

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

Lien vers le commentaire
Partager sur d’autres sites

Salut (gile)...

 

Eh ben voilà, ma fenêtre se rempli...

 

Mais dès que je sélectionne un calque, ça plante...

; erreur: no function definition: SET_LIST_VALUE

 

EDIT : même problème qu'avec set_tile_list... C'est corrigé...

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)

Lien vers le commentaire
Partager sur d’autres sites

Par contre, à la sortie du DCL, le contenu de Value1$ est égale à la première sélection dans la fenêtre, et non la liste des calques sélectionnés...

SELECTCALQUE (nil 1ETAT)

EDIT : il fallait un "set_multilist_value" à la sortie du DCL...

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)

Lien vers le commentaire
Partager sur d’autres sites

Petit problème...

 

Lorsque je lance plusieurs fois ma commande, l'ancienne liste existe encore, j'ai donc les calques en double, triple...

 

Comment "vider" la fenêtre contenant la liste des calques avant de la remplir à nouveau ?

 

Edit : En vidant List1@ avant...

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)

Lien vers le commentaire
Partager sur d’autres sites

Effectivement, c'est un de mes gros défauts... Parmi tant d'autres... ;)

 

Merci (gile)...

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)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

J'avais essayé il y a longtemps OpenDCL... Résultat : rien pigé ! ! !

 

J'ai juste repéré qu'il y a trois façons de faire une DCL :

 

1. directement dans le Lisp,

2. en créant un fichier DCL (qui revient un peu au 1),

3. avec OpenDCL : vachement plus complexe, à mes yeux... En plus, ça fait des .odcl et je ne sais pas quoi faire avec...

 

Je vais revoir tout ça, car tu as raison, ça ouvre beaucoup de possibilités et surtout, une interface entre le Lisp et l'utilisateur...

 

Bon, j'ai un peu de temps, j'y retourne, j'ai une petite routine de "configuration" que j'aimerais faire avec une DCL...

 

Merci encore pour ton aide...

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)

Lien vers le commentaire
Partager sur d’autres sites

Bon, j'ai refais un lisp qui n'utilisait que la ligne de commande AutoCAD par un autre qui utilise une DCL, voici mon Lisp :

(defun c:ConfigPTRL (/ *ConfigPTRL@ Dcl_Id% Toggle1$ Toggle2$ Toggle3$ Toggle4$ Toggle5$ Toggle6$ Edit1$)
 (princ "\nDéveloppé par Denis H.")
 (if (not *ConfigPTRL@) ;Unique global variable name to store dialog info
   (setq *ConfigPTRL@ (list nil "" "" ""))
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_PTRL") "Oui")
   (setq Toggle1$ "1")
   (setq Toggle1$ "0")
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Prof") "Oui")
   (setq Toggle2$ "1")
   (setq Toggle2$ "0")
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Zgs") "Oui")
   (setq Toggle3$ "1")
   (setq Toggle3$ "0")
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Efface") "Oui")
   (setq Toggle4$ "1")
   (setq Toggle4$ "0")
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Calcul") "Oui")
   (setq Toggle5$ "1")
   (setq Toggle5$ "0")
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Cste") nil)
   (setq Edit1$ "0")
   (setq Edit1$ (vlax-ldata-get "DenisH" "EtiqPTRL_Cste"))
 ) ;_ Fin de if
 (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Zr") "Oui")
   (setq Toggle6$ "1")
   (setq Toggle6$ "0")
 ) ;_ Fin de if
 (setq Dcl_Id% (load_dialog "ConfigPTRL.dcl"))
 (new_dialog "ConfigPTRL" Dcl_Id%)
;;;
 (set_tile "Title" " Configuration des PTRL")
 (set_tile "Toggle1" Toggle1$)
 (set_tile "Toggle2" Toggle2$)
 (set_tile "Toggle3" Toggle3$)
 (set_tile "Toggle4" Toggle4$)
 (set_tile "Toggle5" Toggle5$)
 (set_tile "Toggle6" Toggle6$)
 (set_tile "Edit1" Edit1$)
 ; Dialog Actions
 (action_tile "Toggle1" "(setq Toggle1$ $value)")
 (action_tile "Toggle2" "(setq Toggle2$ $value)")
 (action_tile "Toggle3" "(setq Toggle3$ $value)")
 (action_tile "Toggle4" "(setq Toggle4$ $value)")
 (action_tile "Toggle5" "(setq Toggle5$ $value)")
 (action_tile "Toggle6" "(setq Toggle6$ $value)")
 (action_tile "Edit1" "(check_editreal \"Edit1$\")")
 (setq Return# (start_dialog))
 (setq *ConfigPTRL@ (list nil Toggle1$ Toggle2$ Toggle3$ Toggle4$ Toggle5$ Toggle6$ Edit1$))
 (unload_dialog Dcl_Id%)
 (if (= (nth 1 *ConfigPTRL@) "0")
   (vlax-ldata-put "DenisH" "EtiqPTRL_PTRL" "Non")
   (vlax-ldata-put "DenisH" "EtiqPTRL_PTRL" "Oui")
 ) ;_ Fin de if
 (if (= (nth 2 *ConfigPTRL@) "0")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Prof" "Non")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Prof" "Oui")
 ) ;_ Fin de if
 (if (= (nth 3 *ConfigPTRL@) "0")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Zgs" "Non")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Zgs" "Oui")
 ) ;_ Fin de if
 (if (= (nth 4 *ConfigPTRL@) "0")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Efface" "Non")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Efface" "Oui")
 ) ;_ Fin de if
 (if (= (nth 5 *ConfigPTRL@) "0")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Calcul" "Non")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Calcul" "Oui")
 ) ;_ Fin de if
 (if (= (nth 6 *ConfigPTRL@) "0")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Zr" "Non")
   (vlax-ldata-put "DenisH" "EtiqPTRL_Zr" "Oui")
 ) ;_ Fin de if
 (vlax-ldata-put "DenisH" "EtiqPTRL_Cste" (atof (nth 7 *ConfigPTRL@)))
 ;; Affichage
 (alert (strcat "Configuration actuelle : \n\tBloc PTRL \t= "
                (vlax-ldata-get "DenisH" "EtiqPTRL_PTRL")
                "\n\tTexte Zgs \t\t= "
                (vlax-ldata-get "DenisH" "EtiqPTRL_Zgs")
                "\n\tTexte Profondeur \t= "
                (vlax-ldata-get "DenisH" "EtiqPTRL_Prof")
                "\n\tConstante ajoutée \t= "
                (rtos (vlax-ldata-get "DenisH" "EtiqPTRL_Prof_Cste") 2 2)
                "\n\tTexte Z réseau \t= "
                (vlax-ldata-get "DenisH" "EtiqPTRL_Zr")
                "\n\tCalcule du Zgs \t="
                (vlax-ldata-get "DenisH" "EtiqPTRL_Calcul")
        ) ;_ Fin de strcat
 ) ;_ Fin de alert
 (princ)
) ;_ Fin de defun

Et mon DCL :

ConfigPTRL : dialog {
 key = "Title";
 label = "";
 spacer;
 : boxed_column {
   label = "Choix :";
   width = 30;
   fixed_width = true;
   : toggle {
     key = "Toggle1";
     label = "Placer des PTRL";
   }
   : toggle {
     key = "Toggle2";
     label = "Placer les profondeurs";
   }
   : toggle {
     key = "Toggle3";
     label = "Placer les Zgs";
   }
   : toggle {
     key = "Toggle4";
     label = "Effacer les anciens textes";
   }
   : toggle {
     key = "Toggle5";
     label = "Calcul du Zgs";
   }
   : toggle {
     key = "Toggle6";
     label = "Placer Zréseau";
   }
   spacer;
 }
 : row {
   fixed_width = true;
   : column {
     width = 18;
     fixed_width = true;
     spacer;
     : text {
       key = "Text1";
       label = "Constante à ajouter au Z :";
     }
   }
 : edit_box {
     key = "Edit1";
     edit_width = 6.42;
     fixed_width = true;
   }
 }
 spacer;
 ok_only;
}

 

Mon code affiche bien ma DCL mais stop après... Je n'arrive pas à savoir pourquoi...

 

Biensur, j'utilise MyDialog comme l'a si bien remarqué (gile).

 

Si quelqu'un a une astuce, un conseil ou une idée, je suis preneur...

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)

Lien vers le commentaire
Partager sur d’autres sites

Je te laisse méditer

 

(vlax-ldata-put "DenisH" "EtiqPTRL_Cste" (atof (nth 7 *ConfigPTRL@)))

avec

(rtos (vlax-ldata-get "DenisH" "EtiqPTRL_Prof_Cste") 2 2)

 

Et plus tard, tu auras une autre erreur avec

(setq Edit1$ (vlax-ldata-get "DenisH" "EtiqPTRL_Cste"))
...
(set_tile "Edit1" Edit1$)

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Merci Patrick_35 pour ton aide, encore une fois... ;)

 

J'ai corrigé mon Lisp, maintenant, (vlax-ldata-... "DenisH" "EtiqPTRL_Cste" sera toujour un réel.

 

Quant à ta deuxième remarque, je ne saisi pas, Edit1$ est un string dans la DCL ?

 

J'ai pourtant un ...check_editreal....

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)

Lien vers le commentaire
Partager sur d’autres sites

Oui, mais ta valeur avec le vlax-ldata-get est un réel.

Ben alors à quoi sert le check_editreal ? Je ne comprend pas...

 

Ce n'est pas pour contrôler la saisi ?

 

Car il faut que ça reste un réel...

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)

Lien vers le commentaire
Partager sur d’autres sites

D'après ce que j'ai lu, check_editreal vérifie si la valeur saisie est un réel

 

Quand tu utilises un set_tile, l'argument est la clé + un string.

Toi, tu fais clé + réel dans le set_tile.

Il faut juste faire la conversion pour l'affichage. Tu peux conserver ton réel.

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Patrick_35.

 

Juste une petite question : si check_editreal vérifie que le valeur saisie est bien un réel, que renvoi Texte1$, un string ou un réel ?

 

Je pense que le mieux serait que cette variable soit toujours un string, sauf lors des calculs.

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)

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é