Aller au contenu

Messages recommandés

Posté(e)

A la demande d'un membre je reposte un code, mais contrairement à mon habitude, je l'ai commenté pour une meilleure compréhension.

 

Comme ça vous pourrez mieux décortiquer et le modifier\inspirer pour autre chose!

 

Pouff, ça fait du boulot de commenter, f'rais pas ça tous les jours

 

[color=red];;fonction pour dessiner des segments virtuel avec (grvecs)[/color]
[color=blue];;passe la liste de points sousmise au format requis par (grvecs)
;; arguments passés à la fonction (liste de points) et numéro de couleur[/color]
(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)
)

[color=red];;fonction principale[/color]
(defun c:A4-A3_dyn ( / pt_ins dx dy pt_tmp q n key pt_key pt_cen)
(setq pt_ins (getpoint "\nPoint d'insertion pour le 1er Format? <0.0,0.0,0.0>: "))
(if (null pt_ins) (setq pt_ins '(0.0 0.0 0.0)))
(initget "A4 A3")
(setq
	dx (if (eq (getkword "\nQuel format [A4/A3]? : ") "A3") 420.0 210.0)
	dy (* 210.0 (sqrt 2))
[color=blue];;stoke le point d'insertion original[/color]
	pt_tmp pt_ins
[color=blue];;compteur pour inscription du texte[/color]
	q 0
)
(initget 7)
(setq n (getint "\nNombre de format A3 ou A4 à mettre en place?: "))
[color=blue];;effectue un zoom sur la partie maximum calculé de nombre de A4/A3 necessaire[/color]
(command "_.zoom" "_window" pt_ins (list (+ (car pt_ins) (* dx n)) (+ (cadr pt_ins) (* dy n))))

[color=blue];;Ici une boucle sur la lecture du positionnement du curseur à l'écran[/color]
[color=blue];;Tant que le périphérique d'entrée est lu ET qu'un point n'est pas cliqué (click-gauche), on boucle[/color]
(while (and (setq key (grread T 4 0)) (/= (car key) 3))

	(cond
[color=blue];;execute cette action seulement si le code et équivalement à l'évolution dynamique du curseur (déplacement)[/color]
		((eq (car key) 5)
[color=blue];;récupère les coordonnées du point du curseur à l'instant T[/color]
			(setq pt_key (cadr key))
[color=blue];;redessine l'écran[/color]
			(redraw)
[color=blue];;redessine le rectangle A4/A3 pour chaque format[/color]
			(repeat n
				(des_vec
					(list
						(list (car pt_ins) (cadr pt_ins))
						(list (+ (car pt_ins) dx) (cadr pt_ins))
						(list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy))
						(list (car pt_ins) (+ (cadr pt_ins) dy))
					)
					3
				)
[color=blue];;test pour substituer le point de départ du prochain format: si a droite du précédent ou nouvelle rangée[/color]
				(if (> (car pt_key) (car pt_ins))
					(setq pt_ins (list (+ (car pt_ins) dx) (cadr pt_ins)))
					(setq pt_ins (list (car pt_tmp) (+ (cadr pt_ins) dy)))
				)
			)
[color=blue];on restore le point d'insertion original pour la boucle suivante[/color]
			(setq pt_ins pt_tmp)
		)
[color=blue];Fin de la condition vrai du dessin virtuel des rectangles en dynamique[/color]
	)
)
[color=blue];;fin de la boucle de lecture du périphérique
;;redessine l'écran[/color]
(redraw)
(setvar "cmdecho" 0)
(repeat n
	(command "_.rectang" (list (car pt_ins) (cadr pt_ins)) (list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy)))
[color=blue];calcul du milieu du format[/color]
	(setq pt_cen (mapcar '/ (mapcar '+ (list (car pt_ins) (cadr pt_ins)) (list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy))) '(2.0 2.0)))
	(command "_.text" "_justify" "_mcenter" pt_cen "5.0" "0.0" (itoa (setq q (1+ q))))
	(if (> (car pt_key) (car pt_ins))
		(setq pt_ins (list (+ (car pt_ins) dx) (cadr pt_ins)))
		(setq pt_ins (list (car pt_tmp) (+ (cadr pt_ins) dy)))
	)
)
(setvar "cmdecho" 1)
(prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci... c'est vraiment du boulot....

mais heu.... A quoi ça sert ???

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Ben tu peux l'essayer! (dans un dessin vierge)

 

Normalement ça mord pas :P

 

Trève de plaisanterie, ça sert à agencer un nombre (que tu fixes) de format A4-A3 en dynamique.

Là le format est en mm, mais on pourrait sophistiquer pour inclure d'autre unités.

 

Voilà, c'est tout, mais ça montre surtout la fonction (grread) en boucle qui permet de faire des trucs sympa avec un interactif visuel.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Je l'avais essayé ... et je suis sur le ... s"CU" concernant la commande de mise en ordre final...c'est ça la fonction greead ???

 

En fait mon interrogation venait du fait qu'il y a un chiffre au centre de chaque page, et je ne vois pas la raison...

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Ici ca ne sert à rien, à part numéroter les format au centre.

 

Il faut bien te dire que ce code à été sorti de son contexte original pour pouvoir commenter la partie obscure (de la force :P )

 

Cette fonction (grread) est assez difficile à cerner quand elle est employée en boucle.

 

Moi je l'adore, le seul et GROS inconvénient; l'accrochage aux objets ne peut se faire (en tout cas pas de manière simple) Mais quand on arrive à comprendre ses possibilités on peut faire de belles choses.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é