(gile) Posté(e) le 2 décembre 2007 Auteur Posté(e) le 2 décembre 2007 J'ai modifié la routine GetLayers : ajout d'une quatrième colonne à partir de 45 calques. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 2 décembre 2007 Posté(e) le 2 décembre 2007 Bonsoir à toutes et tous, J'ai testé avec 130 calques avec des noms assez long, sur un écran 21 poces, que du bonheur,... Merci encore (gile) de tout ce travail aussi généreusement partagé. Bonne soirée. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 2 décembre 2007 Auteur Posté(e) le 2 décembre 2007 Une petite nouvelle : GetLayouts pour choisir une ou plusieurs presentations dans la liste de toutes les présentation du dessin. ;; GETLAYOUTS (gile) 03/12/07 ;; Retourne la liste des présentations choisies dans la boite de dialogue ;; ;; arguments ;; titre : titre de la boite de dialogue ou nil, défauts = Choisir la (ou les) présentation(s) ;; mult : T ou nil (pour choix multiple ou unique) (defun GetLayouts (titre mult / lay tmp file ret) (setq lay (vl-sort (layoutlist) (function (lambda (x1 x2) ( (TabOrder x2) ) ) ) ) tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "GetLayouts:dialog{label=" (if titre (vl-prin1-to-string titre) (if mult "\"Choisir les présentations\"" "\"Choisir une présentation\"" ) ) ";:list_box{key=\"lst\";multiple_select=" (if mult "true;}:row{:retirement_button{label=\"Toutes\";key=\"all\";} ok_button;cancel_button;}}" "false;}ok_cancel;}" ) ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "GetLayouts" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list lay) (end_list) (action_tile "all" "(setq ret (reverse lay)) (done_dialog)") (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (foreach n (str2lst (get_tile \"lst\") \" \") (setq ret (cons (nth (atoi n) lay) ret)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) (reverse ret) ) ;; str2lst ;; Transforme un chaine avec séparateur en liste de chaines ;; ;; Arguments ;; str : la chaine à transformer en liste ;; sep : le séparateur ;; ;; Exemples ;; (str2lst "a b c" " ") -> ("a" "b" "c") ;; (str2lst "1,2,3" ",") -> ("1" "2" "3") (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) ;; TabOrder ;; Retourne le numéro d'ordre de la présentation ;; ;; Argument : le nom de la présentation (chaîne) ;; ;; Retour : le numéro d'ordre de la présentation (entier) (defun TabOrder (name / dict lay) (setq dict (dictsearch (namedobjdict) "ACAD_LAYOUT")) (if (setq lay (cdr (assoc 350 (member (cons 3 name) dict)))) (cdr (assoc 71 (entget lay))) ) ) [Edité le 2/12/2007 par (gile)][Edité le 3/12/2007 par (gile)] [Edité le 29/12/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 2 décembre 2007 Posté(e) le 2 décembre 2007 Bonsoir à toutes et tous, J'ai encore du faire une boulette,... Commande: (GetLayouts ); erreur: nombre d'arguments insuffisants Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 2 décembre 2007 Auteur Posté(e) le 2 décembre 2007 Salut, Lis les commentaires au début du LISP, il faut spécifier 2 arguments. Essaye : (getlayouts "Test lili" t)pour "Test lili" comme titre et un choix multiple (touche CTRL enfoncée) ou (getlayouts nil nil)(pour le titre par défaut et choix unique. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 2 décembre 2007 Posté(e) le 2 décembre 2007 Re, Lis les commentaires au début du LISP, il faut spécifier 2 arguments C'est ce que je fais systématiquement, mais tu sais que mon niveau est encore bien trop bas pour comprendre toutes les subtilités des écritures,.... Trois questions au passage, Que veut dire " nil nil" dans (getlayouts nil nil) ? (boite de dialogue AutoCAD par défaut ?)Que veut dire le " t" dans "(getlayouts "Test lili" t)" ? (Par déduction, titre perso ?) Quand cette boite de dialogue apparaitra t-elle ? Merci d'avance. [Edité le 2/12/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 3 décembre 2007 Auteur Posté(e) le 3 décembre 2007 Commentaires en début de LISP (précédés par un point virgule) : ;; GETLAYOUTS (gile) 02/12/07;; Retourne la liste des présentations choisies dans la boite de dialogue;;;; arguments;; titre : titre de la boite de dialogue ou nil, défauts = Choisir la (ou les) présentation(s);; mult : T ou nil (pour choix multiple ou unique) Début de la routine : (defun GetLayouts (defun GetLayouts (titre mult / lay tmp file ret)...) Comme les fonctions LISP prédéfinies, les routines peuvent requérir des arguments :dans l'expression LISP (+ 2 3) les nombres 2 et 3 sont les arguments de la fonction + La fonction defun admet plusieurs arguments, les deux premiers étant obligatoires : le nom de la fonction et une liste (même vide) contenant les symboles des arguments requis par la fonction et des variables locales. Les arguments suivants sont des expressions LISP dont le nombre peut varier.Dans la routine GetLayouts, par exemple, GetLayouts est le symbole utilisé comme nom de la fonction. Le deuxième argument : (titre mult / lay tmp file ret) est la liste contenant les des symboles séparés par une barre oblique : titre et mult placés avant la barre oblique sont les arguments requis par la fonction, lay tmp file ret sont les variable locales utilisées dans la fonction. À la différence des fonctions LISP prédéfinies, pour les fonctions définies avec defun les arguments ne peuvent être optionnels. La routine GetLayers requiert 2 arguments (obligatoirement spécifiés) titre et mult : - titre : comme dans les autres boites dialogue de ce sujet, j'ai voulu laisser la possibilité à l'utilisateur de spécifier le titre de la boite de dialogue, dans ce cas il faut spécifier l'argument avec une chaîne (ex : (getlayouts "Test lili" nil) sinon, on met nil comme argument pour avoir les titres par défaut : "Choisir les présentations" ou "Choisir une présentation" en fonction de l'autre argument : mult. - mult : si cet argument n'est pas nil, il sera possible de sélectionner plusieurs présentations dans la liste de la boite de dialogue, sinon un seul choix sera possible (ex : (getlayouts nil nil) = choix unique, (getlayouts nil T) = choix multiples) La boite de dialogue apparaît lors de l'interprétation de l'expression (getlayouts ...) pendant le déroulement du LISP dans lequel elle est utilisée. Un exemple ici. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 3 décembre 2007 Auteur Posté(e) le 3 décembre 2007 Ajout d'un bouton "Toutes" dans GetLayouts (option multiple). la routine GetLayout est ajoutée au fichier Dialog.lsp sur cette page. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 3 décembre 2007 Posté(e) le 3 décembre 2007 Bonsoir à toutes et tous, Merci encore (gile) pour le développement de tes réponses. Petit à petit, on y vois plus clair,... Ok pour le test donné en exemple. En fait on choisi les présentations (toutes, par exemple) et aprés, on fait quoi ?? ! Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 3 décembre 2007 Auteur Posté(e) le 3 décembre 2007 En fait on choisi les présentations (toutes, par exemple) et aprés, on fait quoi ?? ! Ces routines s'adressent plutôt à ceux qui écrivent des LISP. Elles peuvent être utilisées dans ces LISP pour récupérer de entrées de la part de l'utilisateur qui choisisra dans une boite de dialogue au lieu de le faire à la ligne de commande. Dans ce LISP, par exemple, l'utilisateur spécifie les présentations auxquelles il veut donner la même configuration de traçage que dans la présentation courante. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 3 décembre 2007 Posté(e) le 3 décembre 2007 Re, Ok ! , mais concrétement, comment s"en sert t-on ? Je vais dans un onglet de présentation, et là,... Spécifiez le coin de la fenêtre ou [Actif/Inactif/Zonegraph/Tracombr/Verrou/Objet/Polygonal/Restaurer/Calque/2/3/4] :Spécifiez le coin opposé: Régénération du modèle.Commande: prop_layoutCommande: Je perd ensuite la main,...??! (Probablement une mauvaise utilisation,...). Bonsoir. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 3 décembre 2007 Auteur Posté(e) le 3 décembre 2007 Ok ! , mais concrétement, comment s"en sert t-on ? Je vais dans un onglet de présentation, et là,... Là, tu configures le traçage de la présentation dans laquelle tu es, puis tu lances Prop_Layout et tu choisis dans la boite de dialogue les présentations auxquelles tu veux appliquer la même configuration de traçage. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 3 décembre 2007 Posté(e) le 3 décembre 2007 Re, OK ! C'est vu (gile). Merci encore. Bonne nuit. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 décembre 2007 Auteur Posté(e) le 29 décembre 2007 J'ai modifié GETLAYOUTS : suppression des fonctions vlisp pour plus de polyvalence (compatibilité avec les clônes d'AutoCAD et LT Extender). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 29 décembre 2007 Posté(e) le 29 décembre 2007 Bonjour à toutes et tous, Super (gile), les lights équipés d'Extender ou les clônes n'auront bientôt plus rien à envier des fulls,.. Joyeux réveillon à tous, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 18 mai 2008 Auteur Posté(e) le 18 mai 2008 Une nouvelle, pour choisir une option parmi plusieurs. Les arguments sont :- Le titre de la boite de dialogue- une liste d'association du type ((key_1 . label_1) (key_2 . label_2) ...) Exemple d'utilisation: (ChooseBox "Type de fichier" '(("dwg" . "Dessin AutoCAD (.dwg)") ("dwt" . "Gabarit AutoCAD (.dwt)") ("dxf" . "DXF AutoCAD (.dxf)") ) ) http://img387.imageshack.us/img387/541/chooserf6.png En fonction du choix, la clé ("dwg" "dwt" ou "dxf") est retournée. Cette routine a été ajoutée au fichier Dialog.lsp en téléchargement sur cette page Le code : ;; ChooseBox (gile) ;; Boite de dialogue permettant de choisir une option ;; ;; Arguments ;; title : le titre de la boite de dialogue (chaîne) ;; keylab : une liste d'association du type ((key1 . label1) (key2 . label2) ...) ;; ;; Retour : la clé de l'option choisie (chaîne) ;; ;; Exemple d'utilisation ;; (choosebox "Type de fichier" '(("lin" . "Type de ligne") ("pat" . "Motif de hachure"))) (defun ChooseBox (title keylab / tmp file dcl_id choice) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "ChooseBox:dialog{label=\"" title "\";:radio_column{key=\"choice\";" ) file ) (mapcar (function (lambda (p) (write-line (strcat ":radio_button{key=\"" (car p) "\";label=\"" (cdr p) "\";}" ) file ) ) ) keylab ) (write-line "}spacer;ok_cancel;}" file) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "ChooseBox" dcl_id)) (exit) ) (set_tile "choice" (caar keylab)) (action_tile "accept" "(setq choice (get_tile \"choice\")) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) choice ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 18 mai 2008 Posté(e) le 18 mai 2008 Bonsoir à toutes et tous, Une nouvelle, pour choisir une option parmi plusieurs. (gile), peux-tu donner un exemple STP ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 18 mai 2008 Auteur Posté(e) le 18 mai 2008 Salut, J'en ai donné un dans le message ci-dessus, pour choisir un type de fichier qui retourne l'extension. Un autre pour choisir un système d'unités angulaire qui retourne, sous forme de chaine, le même nombre que la variable AUNITS. La boite de dialogue: http://img141.imageshack.us/img141/3135/unitstg0.png Le code : (ChooseBox "Unités angulaires" '(("0" . "Degrés décimaux") ("1" . "Degrés/minutes/secondes") ("2" . "Grades") ("3" . "Radians") ("4" . "Unité géodésiques") ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 18 mai 2008 Posté(e) le 18 mai 2008 Re, Bon, nous voilà donc avec deux exemples,.. J'avais pas bien saisi, Merci (gile) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 18 mai 2008 Auteur Posté(e) le 18 mai 2008 Cette routine est utilisée dans ce LISP à deux reprises : pour choisir le type de fichier (lin ou pat) et pour choisir vers quel système (métrique ou impérial) convertir le fichier. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 18 mai 2008 Posté(e) le 18 mai 2008 Re, Ok, je viens de tester ! Merci encore (gile). Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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