lecrabe Posté(e) le 10 décembre 2008 Partager Posté(e) le 10 décembre 2008 Hello N'ayant pas trouvé "chaussure à mon pied", SVP je sollicite "encore" la communauté des super-développeurs de ce forum pour le besoin suivant : Sur l'ensemble des Présentations / Mise en Pages (Espaces Papier)(ou peut être MIEUX avec un choix des Présentations à traiter), 1) Poser la question : Quel Facteur d'Echelle personnalisé (Défaut=1) : xx.xx 2) Traitement de la plus Grande Fenêtre ou de la plus Petite Fenêtre (en terme de surface Papier de la Fenêtre)Choix Grande ou Petite (Défaut = Grande) : Traitement : Appliquer le facteur d'Echelle Personnalisée sur la Fenêtre choisie (Grande ou Petite) et CE sur toutes les Présentations choisies Cas particuliers : SI il y a UNE SEULE Fenêtre dans la Présentation, on traite ! :) Si il y a DEUX Fenêtres par Présentation, on traite soit la plus Grande, soit la plus Petite !En fonction de la question 2 ... :D Si il y a TROIS Fenêtres ou plus, on traite soit la Grande, soit la Petite ! Merci d'avance de votre aide ! Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 11 décembre 2008 Partager Posté(e) le 11 décembre 2008 Salut, EDIT : j'avais encore oublié (vl-load-com) et *acdoc* :P ;;; SVP (gile) ;;; Attribue une échelle aux plus grandes (ou aux plus petites) fenêtres ;;; des présentations sélectionnées (defun c:SVP (/ *error* VportsSortedList rgnctl layouts scale size viewport) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (setq rgnctl (getvar "LAYOUTREGENCTL")) (setvar "LAYOUTREGENCTL" 0) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (setvar "LAYOUTREGENCTL" rgnctl) (princ) ) (defun VportsSortedList (layout / ss lst) (if (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 layout) '(-4 . "!=") '(69 . 1) ) ) (progn (vlax-for vp (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (setq lst (cons vp lst)) ) (vla-delete ss) (vl-sort lst '(lambda (x1 x2) (> (* (vla-get-Height x1) (vla-get-Width x1)) (* (vla-get-Height x2) (vla-get-Width x2)) ) ) ) ) ) ) (if (and (setq layouts (getLayouts nil T)) (not (initget 6)) (or (setq scale (getdist "\nFacteur d'échelle [b]: ")) (setq scale 1.0) ) (not (initget "Grandes Petites")) (or (= (setq size (getkword "\Fenêtres à traiter ? [plus Grandes/plus Petites] [b]: " ) ) "Petites" ) (setq size "Grandes") ) ) (foreach layout layouts (setq viewport ((if (= size "Grandes") car last ) (VportsSortedList layout) ) ) (vla-put-CustomScale viewport scale) ) ) (setvar "LAYOUTREGENCTL" rgnctl) (princ) ) ;; 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) ) ;; 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))) ) ) ;; 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") ;; (mapcar 'read (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) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 11 décembre 2008 Auteur Partager Posté(e) le 11 décembre 2008 Hello Gilles Merci beaucoup ! :) J'explique le pourquoi du comment : J'ai des DWGs de SIG/Cartographie/Bâtiments/etc avec pour la plupart d'entre eux 2 Fenêtres :) - une Grande (Fenêtre principale) Carto de "détail" sur une zone précise - une Petite (Fenêtre de "situation") Carto générale ... et parfois une 3eme Fenêtre "moyenne" qui zoome en fait sur la Légende Après coup, on change parfois "un peu" l'echelle de ces Fenêtres ... et de dans des dizaines de présentations, donc c quand même pénible de faire ça à la main ! Je vais tester des que possible !Je pense que cela peut intéresser d'autres personnes ! Bien le bonjour dans le Sud, Le Decapode "sous la pluie/neige" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 11 décembre 2008 Partager Posté(e) le 11 décembre 2008 J'avias encore oublié les mêmes trucs automatiquement chargés chez moi :P Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabcad Posté(e) le 12 décembre 2008 Partager Posté(e) le 12 décembre 2008 Hello Lecrabe et Gile,Il y aura vraiment Un logiciel SIG nommé LecrabeSIG sur AutoCAD. J'ai testé votre fonction mais voici le message retourné sur MAP 2008 : [surligneur] svp ; erreur: no function definition: TABORDER [/surligneur] Je pense qu'une sous-fonction manque à l'appel. Voilà, Salutations à vous deux, Fabcad [Edité le 12/12/2008 par fabcad] Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 12 décembre 2008 Partager Posté(e) le 12 décembre 2008 Merci Fabcad, il manquait effectivement la routine "TabOrder" :P Je pense que ce coup ci, c'est enfin complet... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabcad Posté(e) le 12 décembre 2008 Partager Posté(e) le 12 décembre 2008 Hello Gile, J'ai re-testé ta fonction mais voici le message retourné sur MAP 2008 : [surligneur] svp ; erreur: no function definition: STR2LST [/surligneur] Je pense encore qu'une sous-fonction manque à l'appel. Voilà, Salutations, Fabcad Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 12 décembre 2008 Partager Posté(e) le 12 décembre 2008 Décidément !!!... Je n'ai pas testé ce LISP dans un profil "vierge" et toutes ces routines sont chargées automatiquement sur mon profil habituel. C'est réparé (enfin, j'espère...) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabcad Posté(e) le 12 décembre 2008 Partager Posté(e) le 12 décembre 2008 Hello Gile, J'ai re-testé ta fonction et elle fonctionne ! Voilà, Salutations, Fabcad Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 12 décembre 2008 Partager Posté(e) le 12 décembre 2008 Merci pour ta patience. ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 13 décembre 2008 Auteur Partager Posté(e) le 13 décembre 2008 Hello Gilles Merci beaucoup pour ta rapidite et ton efficacite ! :) Hello Fab, vas tu utiliser cette routine ? Le Decapode "curious" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
lovecraft Posté(e) le 13 décembre 2008 Partager Posté(e) le 13 décembre 2008 Bonjour, Effectivement sympa comme lisp (encore merci gile) bonne initiative Mister Lecrabe. Ceci améliore l'utilisation des Atlas dans Map. @plus LB http://www.youtube.com/user/CADMINATOR?feature=mhee Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabcad Posté(e) le 13 décembre 2008 Partager Posté(e) le 13 décembre 2008 Bien sur et c'est pour ça que je l'ai testée, Bonsoir Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 13 décembre 2008 Auteur Partager Posté(e) le 13 décembre 2008 Bonsoir Lovecraft et Fabcad ont gagné la question mystère ! :) C'était bien sur pour améliorer la génération des Atlas dans MAP (ou CIVIL) Merci à Gilles qui contribue à notre bonheur ! :D Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 15 décembre 2008 Partager Posté(e) le 15 décembre 2008 Bonjour A vous lire, ça ne vous dit pas de vous lancer au lisp, puis vlisp ? @+ Les Lisps de PatrickLe 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 More sharing options...
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