Aller au contenu

fmult avec boite de dialogue (suite)


zebulon_

Messages recommandés

j'ai un peu bossé depuis l'ote jour et je vous soumet la nouvelle mouture

 

le fichier fmmo.dcl

dcl_settings : default_dcl_settings { audit_level = 0 ;}

Fmmo : dialog {
     label = "FENETRE FMULT";
     initial_focus = "pick_pt";
     : boxed_radio_column {
       label = "Type de FMULT";
       key = "pick_fm";
       : radio_button {
         label = "Saisir 2 points";
         key = "pick_pt";
       }
       : radio_button {
         label = "Saisir Polyligne";
         mnemonic = "P";
         key = "pick_po";
       }
       : radio_button {
         label = "Saisir Objet";
         mnemonic = "O";
         key = "pick_ob";
       }
     }
     : list_box {
       label = "Vues : ";
       key = "List_view";
     }
     : popup_list {
       label = "Echelle : ";
       key = "ECH";
     }
     : text {
       key = Factech;
     }
     : edit_box {
       label = "Facteur d'echelle global";
       key = "Echltp";
     }
     : toggle {
       label = "PSLTSCALE";
       key = "Psltscale";
     }

     spacer_1;
     ok_cancel;

     : button {
       label = "Paramétrer";
       key = "Param";
     }
}

FmmoDef : dialog {
         label = "Valeurs par défaut";
         initial_focus = "DefEchltp";
         : edit_box {
           label = "Facteur d'échelle globale";
           key = "DefEchltp"; 
         }
         : toggle {
           label = "PSLTSCALE par défaut";
           key = "DefPsltscale"; 
         }
         : row {
           : list_box {
             label = "Echelles et zoom : ";
             tabs = "15";
             width = 35;
             key = "DefListEch";
           }
           : column {
             : button {
               label = "Créer";
               key = "DefCreer";
             }
             : button {
               label = "Modifier";
               key = "DefModifier";
             }
             : button {
               label = "Supprimer";
               key = "DefSupprimer";
             }
             : button {
               label = "Monter";
               key = "DefMonter";
             }
             : button {
               label = "Descendre";
               key = "DefDescendre";
             }
             spacer_1;
             : button {
               label = "Importer";
               key = "DefImporter";
             }
             : button {
               label = "Exporter";
               key = "DefExporter";
             }
           }
         }
         : edit_box {
           label = "Position échelle par défaut";
           key = "DefEch"; 
         }
         spacer_1;
         ok_cancel;
}


FmmoCreer : dialog {
           label = "Echelle";
           initial_focus = "TextEch";
           : edit_box {
             label = "Composant de la liste";
             key = "TextEch"; 
           }
           : edit_box {
             label = "Facteur d'échelle associé";
             key = "FactEch"; 
           }
           spacer_1;
           ok_cancel;
           
} 

 

le fichier fmmo.lsp

 

;;;
;;; lancer une commande autocad

(defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO)
 (setq ETL (entlast))
 (setq OLDCMDECHO (getvar "CMDECHO"))
 (setvar "CMDECHO" 1)
 (foreach CMD LCMD
   (command CMD)
 )
 (while (not (zerop (getvar "cmdactive")))
   (command pause)
 )
 (setvar "CMDECHO" OLDCMDECHO)
 (setq LELEM nil)
 (if (not ETL) 
   (setq ETL (entnext))
   (setq ETL (entnext ETL))
 )
 (while ETL
   (setq LELEM (cons ETL LELEM))
   (setq ETL (entnext ETL))
 )
 (setq RES LELEM)
)


(defun lremove (POS LISTE / TEMP I L)
 (setq TEMP nil)
 (setq I 0)
 (while LISTE
   (setq L (car LISTE))
   (setq LISTE (cdr LISTE))
   (If (/= I (atoi POS))
     (setq TEMP (append TEMP (list L)))
   )
   (setq I (+ I 1))
 )
 TEMP
)


(defun lmodif (POS LISTE ELEM / TEMP I L)
 (setq TEMP nil)
 (setq I 0)
 (while LISTE
   (setq L (car LISTE))
   (setq LISTE (cdr LISTE))
   (If (/= I (atoi POS))
     (setq TEMP (append TEMP (list L)))
     (setq TEMP (append TEMP (list ELEM)))
   )
   (setq I (+ I 1))
 )
 TEMP
)

(defun lmonte (POS LISTE / TEMP I L E1 E2)
 (setq TEMP nil)
 (setq E1 (nth (atoi POS) LISTE))
 (setq E2 (nth (- (atoi POS) 1) LISTE))
 
 (setq I 0)
 (while LISTE
   (setq L (car LISTE))
   (setq LISTE (cdr LISTE))
   (If (= I (- (atoi POS) 1))
     (setq TEMP (append TEMP (list E1)))
     (If (= I (atoi POS))
       (setq TEMP (append TEMP (list E2)))
       (setq TEMP (append TEMP (list L)))
     )
   )
   (setq I (+ I 1))
 )
 TEMP
)


(defun ldescend (POS LISTE / TEMP I L E1 E2)
 (setq TEMP nil)
 (setq E1 (nth (atoi POS) LISTE))
 (setq E2 (nth (+ (atoi POS) 1) LISTE))
 
 (setq I 0)
 (while LISTE
   (setq L (car LISTE))
   (setq LISTE (cdr LISTE))
   (If (= I (+ (atoi POS) 1))
     (setq TEMP (append TEMP (list E1)))
     (If (= I (atoi POS))
       (setq TEMP (append TEMP (list E2)))
       (setq TEMP (append TEMP (list L)))
     )
   )
   (setq I (+ I 1))
 )
 TEMP
)


(defun ecrire_fichier_fmmo (FNAME L1 L2 L3 LISTE / F FNAME)
 (if (setq F (open  FNAME "w"))
   (progn
     (write-line L1 F)
     (write-line L2 F)
     (write-line L3 F)
     (While LISTE
       (write-line (car (car LISTE)) F)
       (write-line (cadr (car LISTE)) F)
       (setq LISTE (cdr LISTE))
     )
     (close F)
   )
   (alert (strcat "La céation de \n" FNAME "\na échouée"))
 )  
)


(defun construire_liste (/ VLIST VNAME What_Space What_Pers)
;;
;; Revoie VNLISTO qui contient la liste des vues de l'espace objet.
;; La vue est rappelée dans la FMULT + zoom 1/ECHxp
;; La vue *GENERALE* permet de faire un zoom étendu + zoom centré + zoom 1/ECHxp
;;
 ;construire la liste des vues
 (setq VNLISTO nil)
 (setq VLIST (tblnext "VIEW" T))
 (while vlist
   (setq VNAME (cdr (assoc 2 VLIST)))
   (setq What_Space (cdr (assoc 70 VLIST)))
   (setq What_Pers (cdr (assoc 71 VLIST)))
   (if (= What_Space 0)  ;; que les vues de l'espace objet
     (setq VNLISTO (cons VNAME VNLISTO))
   )
   (setq VLIST (tblnext "VIEW"))
 )
 ;trier les noms des vues
 (if VNLISTO
   (If (>= (getvar "maxsort") (length VNLISTO))
     (setq VNLISTO (acad_strlsort VNLISTO))
   )
 )
 ;rajouter au début une vue *GENERALE*
 (setq VNLISTO (cons "*GENERALE*" VNLISTO))
)

(defun do_accept ()
 (setq VIEW (get_tile "List_view"))
 (setq ECH (get_tile "ECH"))
 (setq PICK_FM (get_tile "pick_fm"))
 (setq ECHLTP (get_tile "Echltp"))
 (setq PSLTSCALE (get_tile "Psltscale"))
 (if (> (distof ECHLTP 2) 0)
   (done_dialog 2)
   (alert "Echltp doit être\nsupérieur à zéro")
 )
)


(defun zoom_general ()
 (if (zerop (logand 1 (getvar "viewmode"))) ;; ne faire le zoom que si ce n'est pas une vue perspective
   (progn
     (command "_ZOOM" "_e")
     (initget 1)
     (setq pick_ptg (getpoint "\nCentre de la fenêtre : "))
     (command "_ZOOM" "_c" pick_ptg "")
     (command "_ZOOM" val_ECH)
   )
 )
)

(defun do_list_view ()
 (setq VIEW $value)
 (if (= VIEW "0") ;; vue générale
   (mode_tile "ECH" 0)
   (if (= (cdr (assoc 71 (tblsearch "view" (nth (atoi VIEW) VNLISTO)))) 0) ; activer echelle que si ce n'est pas une vue perspective
     (mode_tile "ECH" 0)
     (mode_tile "ECH" 1)
   )
 )
)


(defun do_ech ()
 (setq ECH $value)
 (set_tile "Factech" (strcat "Facteur d'échelle : " (cadr (nth (atoi ECH) LECH)) "XP"))  
)

(defun do_test_param_button (/ POS)
 (setq POS (get_tile "DefListEch"))
 (if LTEXTFACTECH
   (progn
     (mode_tile "DefSupprimer" 0)
     (mode_tile "DefModifier" 0)
     (if (= (get_tile "DefEch") "Liste vide")
       (progn
         (mode_tile "DefEch" 0)
         (set_tile "DefEch" "0")
       )
     )
     (if (<= (length LTEXTFACTECH) (atoi (get_tile "DefEch")))
       (set_tile "DefEch" (itoa (- (atoi (get_tile "DefEch")) 1)))
     )
     (if (= POS "0")
       (mode_tile "DefMonter" 1)
       (mode_tile "DefMonter" 0)
     )
     (if (= POS (itoa (- (length LTEXTFACTECH) 1)))
       (mode_tile "DefDescendre" 1)
       (mode_tile "DefDescendre" 0)
     )
   )
   (progn
     (set_tile "DefEch" "Liste vide")
     (mode_tile "DefEch" 1)
     (mode_tile "DefSupprimer" 1)
     (mode_tile "DefModifier" 1)
   )
 )  
)


(defun do_DefSupprimer ()
 (setq DEFLISTECH (get_tile "DefListEch"))
 (setq LTEXTFACTECH (lremove DEFLISTECH LTEXTFACTECH))
 (setq LECHPARAM (lremove DEFLISTECH LECHPARAM))

 (start_list "DefListEch")
   (mapcar 'add_list LTEXTFACTECH)
 (end_list)
 (set_tile "DefListEch" "0")
 (do_test_param_button)
)

(defun do_DefCreerAccept ()
 (setq TEXTECH (get_tile "TextEch"))
 (setq FACTECH (get_tile "FactEch"))
 (if (/= TEXTECH "")
   (if (> (cal FACTECH) 0)
     (progn
       (setq LECHPARAM (append LECHPARAM (list (list TEXTECH FACTECH))))
       (setq LTEXTFACTECH (append LTEXTFACTECH (list (strcat TEXTECH "\t" FACTECH))))
       (done_dialog 2)
     )
     (alert "Facteur d'échelle supérieur à 0")
   )
   (alert "Elément vide")
 )
)



(defun do_DefCreer ()
 (if (not (new_dialog "FmmoCreer" dcl_id)) (exit))
 (action_tile "accept" "(do_DefCreerAccept)")
 (action_tile "cancel" "(done_dialog 0)")

 (setq what_next_creer (start_dialog))
 (if (= What_next_creer 2)
   (progn
     (start_list "DefListEch")
       (mapcar 'add_list LTEXTFACTECH)
     (end_list)
     (set_tile "DefListEch" "0")
     (do_test_param_button)
   )
 ) 
)



(defun do_DefModifierAccept ()
 (setq TEXTECH (get_tile "TextEch"))
 (setq FACTECH (get_tile "FactEch"))
 (if (/= TEXTECH "")
   (if (> (cal FACTECH) 0)
     (progn
       (setq LECHPARAM (lmodif LIGNEMOD LECHPARAM (list TEXTECH FACTECH)))
       (setq LTEXTFACTECH (lmodif LIGNEMOD LTEXTFACTECH (strcat TEXTECH "\t" FACTECH)))
       (done_dialog 2)
     )
     (alert "Facteur d'échelle supérieur à 0")
   )
   (alert "Elément vide")
 )
)



(defun do_DefModifier ()
 (setq LIGNEMOD (get_tile "DefListEch"))
 (if (not (new_dialog "FmmoCreer" dcl_id)) (exit))
 (action_tile "accept" "(do_DefModifierAccept)")
 (action_tile "cancel" "(done_dialog 0)")

 (set_tile "TextEch" (car (nth (atoi LIGNEMOD) LECHPARAM)))
 (set_tile "FactEch" (cadr (nth (atoi LIGNEMOD) LECHPARAM)))

 (setq what_next_modifier (start_dialog))
 (if (= What_next_modifier 2)
   (progn
     (start_list "DefListEch")
       (mapcar 'add_list LTEXTFACTECH)
     (end_list)
     (set_tile "DefListEch" LIGNEMOD)
   )
 ) 
)


(defun do_DefMonter ()
 (setq LIGNEDEP (get_tile "DefListEch"))
 (setq LECHPARAM (lmonte LIGNEDEP LECHPARAM))
 (setq LTEXTFACTECH (lmonte LIGNEDEP LTEXTFACTECH))
 (start_list "DefListEch")
   (mapcar 'add_list LTEXTFACTECH)
 (end_list)
 (set_tile "DefListEch" (itoa (- (atoi LIGNEDEP) 1)))
 (do_test_param_button)
)


(defun do_DefDescendre ()
 (setq LIGNEDEP (get_tile "DefListEch"))
 (setq LECHPARAM (ldescend LIGNEDEP LECHPARAM))
 (setq LTEXTFACTECH (ldescend LIGNEDEP LTEXTFACTECH))
 (start_list "DefListEch")
   (mapcar 'add_list LTEXTFACTECH)
 (end_list)
 (set_tile "DefListEch" (itoa (+ (atoi LIGNEDEP) 1)))
 (do_test_param_button)
)


(defun do_DefExporter (/ EXPECHLTP EXPPSLTSCALE EXPECH FNAME)
 (setq EXPECHLTP (get_tile "DefEchltp"))
 (setq EXPPSLTSCALE (get_tile "DefPsltscale"))
 (setq EXPECH (get_tile "DefEch"))
 (if (not LECHPARAM)
   (alert "Liste vide")
   (if (not (> (distof EXPECHLTP 2) 0))
     (alert "ECHLTP supérieur à 0")
     (if (not (distof EXPECH 2))
       (alert "Valeur numérique incorrecte")
       (if (< (- (length LECHPARAM) 1) (atoi EXPECH))
         (alert "Position hors liste")
         (if (setq FNAME (getfiled "Exporter" "" "fmo" 1))
           (ecrire_fichier_fmmo FNAME EXPECHLTP EXPPSLTSCALE EXPECH LECHPARAM) 
         )
       )
     )
   )
 )
)

(defun do_DefImporter (/ FNAME FLAG TEXTECH I)
 (if (setq FNAME (getfiled "Importer" "" "fmo" 16))
   (if (setq F (open FNAME "r"))
     (progn
       (setq LECHPARAM nil)
       (setq FLAG T)
       (set_tile "DefEchltp" (read-line F))
       (set_tile "DefPsltscale" (read-line F))
       (set_tile "DefEch" (read-line F))
       (While (setq L (read-line F))
         (if FLAG
           (progn
             (setq TEXTECH L)
             (setq FLAG nil)
           )
           (progn
             (setq LECHPARAM (append LECHPARAM (list (list TEXTECH L))))
             (setq FLAG T)
           )
         )
       ) 
       (close F)

       (setq I 0)
       (setq LTEXTFACTECH nil)
       (repeat (length LECHPARAM)
         (setq LTEXTFACTECH (append LTEXTFACTECH (list (strcat (car (nth I LECHPARAM)) "\t" (cadr (nth I LECHPARAM))))))
         (setq I (+ I 1))
       )

       (start_list "DefListEch")
         (mapcar 'add_list LTEXTFACTECH)
       (end_list)

       (set_tile "DefListEch" "0")
     )
     (alert (strcat "Ouverture du fichier\n" FNAME "\néchouée"))
   )
 )
)


(defun do_accept_param ()
 (setq ECHLTP (get_tile "DefEchltp"))
 (setq PSLTSCALE (get_tile "DefPsltscale"))
 (setq ECH (get_tile "DefEch"))
 (if (not LECHPARAM)
   (alert "Liste vide")
   (if (not (> (distof ECHLTP 2) 0))
     (alert "ECHLTP supérieur à 0")
     (if (not (distof ECH 2))
       (alert "Valeur numérique incorrecte")
       (if (< (- (length LECHPARAM) 1) (atoi ECH))
         (alert "Position hors liste")
         (done_dialog 2)
       )
     )
   )
 )
)


(defun do_param ()
 (setq ECHLTP (get_tile "Echltp"))
 (setq PSLTSCALE (get_tile "Psltscale"))
 (setq ECH (get_tile "ECH"))
 (setq LECHPARAM LECH)

 (if (not (new_dialog "FmmoDef" dcl_id)) (exit))

 (setq I 0)
 (setq LTEXTFACTECH nil)
 (repeat (length LECHPARAM)
   (setq LTEXTFACTECH (append LTEXTFACTECH (list (strcat (car (nth I LECHPARAM)) "\t" (cadr (nth I LECHPARAM))))))
   (setq I (+ I 1))
 )

 (start_list "DefListEch")
   (mapcar 'add_list LTEXTFACTECH)
 (end_list)

 (set_tile "DefListEch" "0")

 (set_tile "DefEchltp" ECHLTP)
 (set_tile "DefPsltscale" PSLTSCALE)
 (set_tile "DefEch" ECH)

 (do_test_param_button)

 (action_tile "DefSupprimer" "(do_DefSupprimer)")
 (action_tile "DefCreer" "(do_DefCreer)")
 (action_tile "DefModifier" "(do_DefModifier)")
 (action_tile "DefMonter" "(do_DefMonter)")
 (action_tile "DefDescendre" "(do_DefDescendre)")
 (action_tile "DefExporter" "(do_DefExporter)")
 (action_tile "DefImporter" "(do_DefImporter)")
 (action_tile "DefListEch" "(do_test_param_button)")
 (action_tile "accept" "(do_accept_param)")
 (action_tile "cancel" "(done_dialog 0)")

 (setq what_next_def (start_dialog))
 (if (= what_next_def 2)
   (progn
     (setq LECH LECHPARAM)
     (start_list "ECH")
       (mapcar 'add_list (mapcar 'car LECH))
     (end_list)
     (set_tile "ECH" ECH)
     (set_tile "Factech" (strcat "Facteur d'échelle : " (cadr (nth (atoi ECH) LECH)) "XP"))
     (set_tile "Echltp" ECHLTP)
     (set_tile "Psltscale" PSLTSCALE)
     (ecrire_fichier_fmmo (strcat (getvar "ROAMABLEROOTPREFIX") "fmmo.fmo") ECHLTP PSLTSCALE ECH LECH) 
   )
 )
)

(defun main_FM ()
 (command "_PSPACE")
 ;initalisation des variables
 (setq VIEW "0")

 (if (setq F (open (strcat (getvar "ROAMABLEROOTPREFIX") "fmmo.fmo") "r"))
   (progn
     (setq LECH nil)
     (setq FLAG T)
     (setq ECHLTP (read-line F))
     (setq PSLTSCALE (read-line F))
     (setq ECH (read-line F))
     (While (setq L (read-line F))
       (if FLAG
         (progn
           (setq TEXTECH L)
           (setq FLAG nil)
         )
         (progn
           (setq LECH (append LECH (list (list TEXTECH L))))
           (setq FLAG T)
         )
       )
     ) 
     (close F)
   )
   (progn
     (setq ECHLTP "0.02")
     (setq PSLTSCALE "1")
     (setq ECH "5")
     (setq LECH '(("1:1" "1000/1") ("1:2" "1000/2") ("1:5" "1000/5") ("1:10" "1000/10") ("1:20" "1000/20") ("1:25" "1000/25") ("1:50" "1000/50") ("1:75" "1000/75") ("1:100" "1000/100") ("1:200" "1000/200") ("1:250" "1000/250") ("1:500" "1000/500")))
   )
 )

 ;construction de la liste des vues
 (construire_liste)
 ;ouverture de la boîte de dialogue
 (setq dcl_id (load_dialog "fmmo.dcl"))

 (if (not (new_dialog "Fmmo" dcl_id)) (exit))

 (start_list "List_view")
   (mapcar 'add_list VNLISTO)
 (end_list)

 (start_list "ECH")
   (mapcar 'add_list (mapcar 'car LECH))
 (end_list)

 (set_tile "ECH" ECH)
 (set_tile "List_view" VIEW)
 (set_tile "Factech" (strcat "Facteur d'échelle : " (cadr (nth (atoi ECH) LECH)) "XP"))
 (set_tile "Echltp" ECHLTP)
 (set_tile "Psltscale" PSLTSCALE)
 
 (action_tile "List_view" "(do_list_view)")
 (action_tile "ECH" "(do_ech)")
 (action_tile "Param" "(do_param)")
 (action_tile "accept" "(do_accept)")
 (action_tile "cancel" "(done_dialog 0)")
 (setq what_next (start_dialog))

 (unload_dialog dcl_id)
 ;Création du FMULT en fonction des paramètres de la boîte de dialogue
 (if (= What_next 2)
   (progn
     (setq VNAME (nth (atoi VIEW) VNLISTO))
     (setq val_ECH (strcat (cadr (nth (atoi ECH) LECH)) "XP"))

     (setq CLAY (getvar "CLAYER"))
     (if (not (tblsearch "LAYER" "FMULT"))
       (command "_layer" "_M" "FMULT" "_P" "_N" "FMULT" "")
       (command "_LAYER" "L" "FMULT" "AC" "FMULT" "_S" "FMULT" "")
     )
     
     (setq oldFILL (getvar "FILLMODE"))
     (setvar "FILLMODE" 0)
     (setvar "LTSCALE" (distof ECHLTP 2))
     (setvar "PSLTSCALE" (atoi PSLTSCALE))

     (cond
       ((= PICK_FM "pick_pt") (mycmd '("_.mview")))
       ((= PICK_FM "pick_po") (mycmd '("_.mview" "_p")))
       ((= PICK_FM "pick_ob") (mycmd '("_.mview" "_ob")))
     )

     (command "_MSPACE")

     (if (= VNAME "*GENERALE*")
        (zoom_general)
        (progn
          (command "_view" "_r" VNAME)
          (if (zerop (logand 1 (getvar "viewmode")))
            (command "_ZOOM" val_ECH)
          )
        )
     )

     (command "_PSPACE")

     (setvar "FILLMODE" oldFILL)
     (command "_regenall")


     (command "_LAYER" "_S" CLAY "")
   )
 )
)


(defun C:FMMO ()
 (setq OLD_CMD (getvar "cmdecho"))
 (setvar "cmdecho" 0)
 (setq TM (getvar "tilemode"))
 (if (= (getvar "tilemode") 1)
   (setvar "tilemode" 0)
 )
 (main_FM)
 (setvar "cmdecho" OLD_CMD)
 (princ)
)

 

c'est un peu long, il faudra m'expliquer comment déposer un fichier quelque part où vous pourrez le télécharger

 

amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Impressionant !!!

 

J'ai remarqué une ou deux petites choses :

 

les appels de la commande cal (do_DefCreerAccept et do_DefModifierAccept) ne fonctionnent pas si geomcal.arx n'est pas chargé, peut-être faudrait il glisser quelque part quelque chose du genre :

(if (not (member "geomcal.arx" (arx)))
(arxload "geomcal")
) 

 

J'ai remarqué aussi dans le*.dcl :

key = Factech;

sans guillemets, les attributs peuvent ils être autre choses que des chaines de caractères (des variables) ?

 

En tous cas, BRAVO !!!

 

[Edité le 26/10/2005 par (gile)]

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

bien vu pour la commande cal. Je me suis dit qu'en utilisant la calculatrice, après avoir fait un get_tile, ça permet à l'utilisateur d'entrer soit un chiffre, soit une expression arithmétique dans la boîte de dialogue. Un bémol, quand l'utilisateur met n'importe quoi dans la boîte de dialogue, la fonction cal affiche un message sur la ligne de commande (ça fait tache...), mais renvoie nil (ce qui est bien).

 

Pour ce qui est du dcl, j'ai une fois oublié de mettre les guillements et ça a marché quand même. Alors, tantôt je les mets, tantôt pas... c'est pas bien... je devrais toujours les mettre...

 

 

Amicalement

 

Zebulon_

 

[Edité le 26/10/2005 par zebulon_]

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Oouuiiiiinnn, ça plante chez moi. Dés que je lance la commande, j'ai cette erreur ---> ; erreur:type d'argument incorrect: stringp nil

L'erreur vient de la variable "ROAMABLEROOTPREFIX" qui est inconnu sur une A2000

Et tant que j'y suis, j'ai remarqué que tu faisais appel à des "commande" et je n'ai pas vu un (command "_.undo" "_group") et (command "_.undo" "_end") pour pouvoir revenir facilement en arrière au cas ou.

 

ps : Tu n'as pas osé te lancer dans la lecture/écriture des registres apparemment ;)

 

@+

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

ps : Tu n'as pas osé te lancer dans la lecture/écriture des registres apparemment

 

pas encore...

 

les fichiers texte, je connais. Les registres, je sais les lire. Ecrire dedans j'ai pas encore osé. C'est vrai qu'avec les registres, on n'aurait pas ce problème de nom de variable inconnue. Mais comme dans mon cas, la longueur de la liste est variable. Quand je lis un fichier texte, je m'arrête quand j'arrive à la fin du fichier. Avec des registres, je ne sais pas quand je dois m'arrêter de lire ?

 

L'erreur vient de la variable "ROAMABLEROOTPREFIX" qui est inconnu sur une A2000

 

en début de lisp, il te suffirait donc de faire un (setq ROAMABLEROOTPREFIX "c:etc ...") en pointant vers un répertoire existant. Ou de remplacer par TEMPPREFIX (si c'est connu sur l'A2000) ??

 

Amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Quand je lis un fichier texte, je m'arrête quand j'arrive à la fin du fichier. Avec des registres, je ne sais pas quand je dois m'arrêter de lire ?

Dans ce cas, il est vrai qu'un fichier est bien plus pratique

 

en pointant vers un répertoire existant

Essaye ceci

(acet-ui-pickdir "" (if (eq (vl-string-elt (getvar "dwgprefix") (1- (strlen (getvar "dwgprefix")))) 92)(substr (getvar "dwgprefix") 1 (1- (strlen (getvar "dwgprefix"))))(getvar "dwgprefix")))

Sinon, il reste la variable dwgprefix et tempprefix est connu sous A2000

 

@+

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

Pas mal le acet-ui-pickdir. J'utilise une des fonctions du DOSLIB pour faire cela. Mais je ne voudrais pas que l'utilisateur choisisse un répertoire.

 

DWGPREFIX est variable et je vais me retrouver avec des fichiers de configuration aux 4 coins de mon disque dur. TEMPPREFIX est une bonne alternative, mais il arrive quelque fois qu'on y fasse le ménage. Je vais me garder mon ROAMABLEmachin, comme ça marche sur ma 2004...

 

à plus

 

Amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

J'ai créé un bat qui me vide mon répertoire temp à chaque lancement de ma bécane.

Une autre solution est d'utiliser le répertoire d'installation d'autocad

 

Elle correspond à quoi cette variable ?

 

ps : le acet-ui-pickdir vient des express tools, il y a la même chose avec (acet-ui-message "STOP" "BREAK" 16) par exemple.

 

@+

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

Salut,

 

Je m'immisce...

 

Extrait de l'aide

ROAMABLEROOTPREFIX

 

(Lecture seule)

Type : Chaîne

Enregistrée dans : Base de registres

Valeur initiale : "chemin d'accès"

 

Enregistre le chemin d'accès complet au dossier racine où les fichiers personnalisables itinérants sont installés.. Si vous travaillez sur un réseau prenant en charge l'itinérance, lorsque vous personnalisez des fichiers présents dans votre profil itinérant, vous pouvez accéder à ces fichiers quelle que soit la machine que vous utilisez.

 

 

Ces fichiers sont stockés dans le dossier du produit, sous le dossier Application Data ; par exemple, "C:\Documents and Settings\nomd'utilisateur\Application Data\nomduproduit\version\langue".

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

Lien vers le commentaire
Partager sur d’autres sites

Merci (gile), tu fais bien.

 

Excuse-moi Patrick, je n'avais pas compris le sens de la question.

 

Il y a aussi la variable LOCALROOTPREFIX, qui pointe vers le même répertoire, mais des Local settings (donc pas itinérant sur un réseau prenant en charge cette fonctionnalité)

 

Amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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é