lovecraft Posté(e) le 22 août 2008 Posté(e) le 22 août 2008 Bonsoir, travaillant souvent sur deux ecrans et ayant souvent plusieurs dessins ouvert dans la même session d'autocad, j'aimerais pouvoir lors de l'affichage des dessins sélectionner les dessins que je veux mettre lors d'une mosaîque verticale ou horizontale. Je connais la commande fensyst, mais via cette commande si j'ai 6 fichiers ouvert et que je choisi mosaique verticale, il me mets les 6 fichies les uns à coté des autres. ce que j'aimerais, c'est de pouvoir choisir uniquement 2 fichiers par exemple. Merci de me guider dans cette tâche. @plus LB http://www.youtube.com/user/CADMINATOR?feature=mhee
lovecraft Posté(e) le 20 octobre 2008 Auteur Posté(e) le 20 octobre 2008 Bonsoir, Voici le code permettant de réaliser la demande ci-dessus: Elle a été réaliser par T.Willey (defun c:TileSelect (/ AcObj ActDoc DocCol DocList DiaRtn RtnLen HorOpt tempDoc cDocSel oWinStList) ; Tile selected drawings. (vl-load-com) (setq AcObj (vlax-get-Acad-Object)) (setq ActDoc (vla-get-ActiveDocument AcObj)) (setq DocCol (vla-get-Documents AcObj)) (vlax-for i DocCol (setq DocList (cons (cons (vla-get-Name i) i) DocList)) (setq oWinStList (cons (cons (vla-get-WindowState i) i) oWinStList)) (while (not (equal (vlax-get i 'WindowState) 2)) (vlax-put i 'WindowState 2) ) ) (setq DocList (vl-sort DocList '(lambda (a b) ( (if (and (> (length DocList) 1) (setq DiaRtn (MultiSelect (mapcar 'car DocList) "Check to tile horizontal." T)) (if (equal (type (car DiaRtn)) 'INT) (> (setq RtnLen (length DiaRtn)) 1) (progn (setq HorOpt T) (setq DiaRtn (cdr DiaRtn)) (> (setq RtnLen (length DiaRtn)) 1) ) ) ) (progn (setq HorOpt (if HorOpt "_Horizontal" "_Vertical" ) ) (foreach i DiaRtn (setq tempDoc (cdr (nth i DocList))) (if (equal tempDoc ActDoc) (setq cDocSel T) ) (vlax-put tempDoc 'WindowState 1) ) (vlax-put ActDoc 'WindowState 1) (if (not cDocSel) (vlax-put ActDoc 'WindowState 2) ) (vla-Activate ActDoc) (command "_.syswindows" HorOpt) ) (foreach i oWinStList (while (not (equal (vla-get-WindowState (cdr i)) (car i))) (vla-put-WindowState (cdr i) (car i)) ) ) ) (princ) ) (defun MultiSelect (Listof Message Toggle / DiaLoad tmpStr tmpTog tmpList) (setq DiaLoad (load_dialog "MyDialogs.dcl")) (if (new_dialog "MultiSelect" DiaLOad) (progn (start_list "listbox" 3) (mapcar 'add_list Listof) (end_list) (if Message (set_tile "text1" Message) ) (if (not Toggle) (mode_tile "toggle1" 1) ) (mode_tile "listbox" 2) (action_tile "accept" "(progn (setq tmpStr (get_tile \"listbox\")) (if Toggle (setq tmpTog (get_tile \"toggle1\")) ) (done_dialog 1) )" ) (action_tile "cancel" "(done_dialog 0)") (if (= (start_dialog) 1) (progn (if tmpStr (setq tmpList (read (strcat "(" tmpStr ")"))) ) (if (= tmpTog "1") (cons T tmpList) tmpList ) ) ) ) ) ) Voici la boite de dialogue .dcl (ne pas oublier de mettre le fichier dans le repertoire de recherche de fichier support) MultiSelect : dialog{ label = "Select Item"; : list_box { key = "listbox"; width = 55; height = 25; multiple_select = true; } : toggle { key = "toggle1"; } : text { key = "text1"; } : row { : spacer { width = 1; } : button { label = "OK"; is_default = true; allow_accept = true; key = "accept"; width = 8; fixed_width = true; } : button { label = "Cancel"; is_cancel = true; key = "cancel"; width = 8; fixed_width = true; } : spacer { width = 1;} } } //------------------------------------------------------------------------------------------- @plus LB http://www.youtube.com/user/CADMINATOR?feature=mhee
(gile) Posté(e) le 20 octobre 2008 Posté(e) le 20 octobre 2008 lovecraft, tu peux ne garder que le code DCL de MultiSelect dans le fichier DCL, les autres codes sont des définitions de boite de dialogue qui ne servent pas ici. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lovecraft Posté(e) le 20 octobre 2008 Auteur Posté(e) le 20 octobre 2008 Merci Gile, je n'avais pas fait attention, je suis encore un novice @plus http://www.youtube.com/user/CADMINATOR?feature=mhee
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