Aller au contenu

Dessiner un rectangle par son cente


bonuscad

Messages recommandés

Dessiner un rectangle en definissant le centre (intersection des diagonales) et son encombrement en dynamique.

 

Imperfection de la routine:

*Les dimensions ne peuvent pas être entrées aux clavier.

*L'accroche objet, bien qu'effectif, ne peut se voir lors du dimensionnement en dynamique.

 

NB: Les précédents paramètres de rectangle [Chanfrein/Elévation/Raccord/Hauteur/Largeur] sont repris mais ne peuvent pas être modifiés

(defun c:rectang_cen ( / o mod ptx key pt_sup pt_inf)
(setq o (getvar "osmode"))
(if (or (zerop o) (eq (boole 1 o 16384) 16384))
	(setq mod "_none")
	(progn
		(setq mod "")
		(mapcar
			'(lambda (xi xs)
				(if (not (zerop (boole 1 o xi)))
					(if (zerop (strlen mod))
						(setq mod (strcat mod xs))
						(setq mod (strcat mod "," xs))
					)
				)
			)
			'(1 2 4 8 16 32 64 128 256 512 2048 4096 8192)
			'("_endp" "_mid" "_cen" "_nod" "_qua" "_int" "_ins" "_per" "_tan" "_nea" "_appint" "_ext" "_par")
		)
	)
)
(initget 1)
(setq ptx (getpoint "\nPoint central du rectangle: "))
(princ (strcat "\nSpécifiez un coin à [" mod "] de: \n"))
(while (and (not (member (setq key (grread T 4 0)) '((2 13) (2 32)))) (/= (car key) 3))
	(cond
		((eq (car key) 5)
			(setq
				pt_sup (cadr key)
				pt_inf (polar ptx (+ (angle ptx pt_sup) pi) (distance ptx pt_sup))
			)
			(redraw)
			(grvecs
				(list
					7 ptx pt_sup
					7 pt_inf (list (car pt_sup) (cadr pt_inf))
					7 (list (car pt_sup) (cadr pt_inf)) pt_sup
					7 pt_sup (list (car pt_inf) (cadr pt_sup))
					7 (list (car pt_inf) (cadr pt_sup)) pt_inf
				)
			)
		)
		(T (setq pt_inf nil pt_sup nil))
	)
)
(redraw)
(cond
	((and pt_inf pt_sup)
		(if (osnap pt_sup mod)
			(setq
				pt_sup (osnap pt_sup mod)
				pt_inf (polar ptx (+ (angle ptx pt_sup) pi) (distance ptx pt_sup))
			)
		)
		(setvar "osmode" 0)
		(setvar "cmdecho" 0)
		(command "_.rectangle" pt_inf pt_sup)
		(setvar "osmode" o)
		(setvar "cmdecho" 1)
		(command "_.rotate" (entlast) "" ptx)
	)
)
(prin1)
)

 

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

Lien vers le commentaire
Partager sur d’autres sites

Avec tous ces cadeaux, tu mérites vraiment ton nom !

 

Enfin, je vais apprendre à me servir correctement de :

zerop (je l'oublie toujours celui-là)

(grread ) , génial

(grvecs )

 

Ca augment la puissance d'un getpoint, me^me avec un point de référence.

 

Par contre, je ne pige pas tout aux bool et autres fonctions pour les accrobj de ta routine.

...mais je vais faire un effort !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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é