bonuscad Posté(e) le 23 juillet 2010 Posté(e) le 23 juillet 2010 Bonsoir à tous, Je vous présente un bout de code, qui dans l'état est encore funJe pense aller plus loin. L'idée de départ et de faire une marque de pliage en dynamique de format A4 pour réaliser une mise en page la plus adéquate possible.L'idée finale sera de faire un carroyage lambert le plus simplement possible de façon assistée (j'essaye de reprendre réécriture, plus actuelle, de mes anciens codes) Voici où j'en suis rendu, je pense ajouter par la suite la notion de déplacement, d'échelle (gérer la notion d'échelle maxi par rapport à la possibilité d'un format A0 rouleau) ainsi qu'un pliage portrait ou paysage. Le code qui je l'espère pourra vous formuler des idées. (defun des_vec (lst col / lst_sg) (setq lst_sg (list (cadr lst) (car lst))) (setq lst (cdr lst)) (while lst (if (cadr lst) (setq lst_sg (cons (cadr lst) (cons (car lst) lst_sg))) (setq lst_sg (cons (last lst_sg) (cons (car lst) lst_sg))) ) (setq lst (cdr lst)) ) (setq lst_sg (cons col lst_sg)) (grvecs lst_sg) ) (defun c:A4_dyn ( / hview old_snapang pt_ins dx dy format_scale pt_tmp ang key pt_key n nb_column nb_raw pt_row count s_ang) (setq hview (getvar "VIEWSIZE") old_snapang (getvar "SNAPANG") pt_ins (list (- (car (getvar "VIEWCTR")) (* hview 0.5)) (- (cadr (getvar "VIEWCTR")) (* hview 0.5))) dx 210.0 dy (* 210.0 (sqrt 2)) format_scale 1.0 pt_tmp pt_ins ang (getvar "SNAPANG") ) (if (> (fix (/ hview dy)) 3) (while (> (fix (/ hview dy)) 3) (setq format_scale (* format_scale 10) dx (* dx 10) dy (* dy 10)) ) ) (if (< (fix (/ hview dy)) 1) (while (< (fix (/ hview dy)) 1) (setq format_scale (* format_scale 0.1) dx (* dx 0.1) dy (* dy 0.1)) ) ) (princ "\nSpécifiez le coin haut droit ou [R] pour effectuer une rotation, [D] un déplacement, [+/-] un changement d'échelle: ") (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (setq pt_key (cadr key)) (setq n (* (setq nb_column (fix (/ (+ (* (- (car pt_key) (car pt_ins)) (cos ang)) (* (- (cadr pt_key) (cadr pt_ins)) (sin ang))) dx))) (setq nb_raw (fix (/ (- (* (- (cadr pt_key) (cadr pt_ins)) (cos ang)) (* (- (car pt_key) (car pt_ins)) (sin ang))) dy))) ) pt_row pt_ins count 0 ) (redraw) (repeat n (des_vec (list (list (car pt_ins) (cadr pt_ins)) (list (+ (car pt_ins) (* dx (cos ang))) (+ (cadr pt_ins) (* dx (sin ang)))) (list (+ (car pt_ins) (- (* dx (cos ang)) (* dy (sin ang)))) (+ (cadr pt_ins) (+ (* dy (cos ang)) (* dx (sin ang)))) ) (list (- (car pt_ins) (* dy (sin ang))) (+ (cadr pt_ins) (* dy (cos ang)))) ) 3 ) (setq count (1+ count)) (if (< count nb_column) (setq pt_ins (list (+ (car pt_ins) (* dx (cos ang))) (+ (cadr pt_ins) (* dx (sin ang))))) (setq pt_ins (list (- (car pt_row) (* dy (sin ang))) (+ (cadr pt_row) (* dy (cos ang)))) pt_row pt_ins count 0) ) ) (setq pt_ins pt_tmp) ) ((or (eq (cadr key) 114) (eq (cadr key) 82)) (initget 0) (setq s_ang (getorient pt_ins (strcat "\nNouvel angle<" (angtos (getvar "SNAPANG")) ">: " ) ) ) (if (not s_ang) (setq s_ang ang)) (if (and (> s_ang (/ pi 2)) (<= s_ang (/ (* 3 pi) 2))) (setq ang (+ s_ang pi)) (setq ang s_ang) ) (setvar "SNAPANG" ang) (princ "\nSpécifiez le coin haut droit ou [R] pour effectuer une rotation, [D] un déplacement, [+/-] un changement d'échelle: ") ) ((or (eq (cadr key) 100) (eq (cadr key) 68)) (initget 9) (setq pt_ins (getpoint "\nSpécifiez le coin bas gauche: ")) (setq pt_ins (list (car pt_ins) (cadr pt_ins)) pt_tmp pt_ins) (princ "\nSpécifiez le coin haut droit ou [R] pour effectuer une rotation, [D] un déplacement, [+/-] un changement d'échelle: ") ) ((eq (cadr key) 43) (setq format_scale (* format_scale 2.0) dx (* dx 2.0) dy (* dy 2.0)) ) ((eq (cadr key) 45) (setq format_scale (* format_scale 0.5) dx (* dx 0.5) dy (* dy 0.5)) ) ) ) (setvar "SNAPANG" old_snapang) (princ "\n") (redraw) (prin1) ) [Edité le 27/7/2010 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bonuscad Posté(e) le 27 juillet 2010 Auteur Posté(e) le 27 juillet 2010 Une mise à jour du code ci-dessus Il sera plus facile de le tester; définition des paramètre de départ adapté à la vue en cours.J'ai rajouté le déplacement et l'échelle (facteur de 2 par rapport à celle calculée de la vue initiale). Dans l'état ce code n'a aucune influence sur le dessin en cours, les trace sont virtuelles (mis à part la variable SNAPANG, si la routine est "breakée") Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 28 juillet 2010 Posté(e) le 28 juillet 2010 Bonjour à toutes et tous, C'est pas faute d'avoir essayé, mais je n'arrive pas à utiliser "A4_dyn" ? Peux-tu développer un peu STP Bonuscad ? Merci d'avance, 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