Aller au contenu

Dessiner des hachures entre Points connus


Messages recommandés

Posté(e)

Voilà, j'ai fait une petite routine qui dessine la façade d'un batiment et ses amorces de 2 mètres (une de chaque côté du bati) puis un prolongement de 3 mètres de ces deux amorces en pointillé (pour montrer que cette partie est "suposée", puis, je ferme ce bâtiment avec une polyligne qui cera dans un calque gelé à l'impression.

 

Bref, je me retrouve avec quatre polylignes, que je ne peut joindre, qui forment à elles quatre un rectangle fermé.

Ma question est donc... Comment hachurer ca batiment ?

 

Voici ma routine :

 

(defun c:_PhBatiOuvert  ()
 (setvar "cmdecho" 0)
 (setq p1 (getpoint "\nDébut du bâtiment : "))
 (setq p2 (getpoint p1 "\nFin du bâtiment : "))
 (setq Co (getstring "\nCoté bâti (<+> / -): "))
 (cond
   ((= Co "-")
    (setq p3 (polar p1 (+ (angle p1 p2) (/ pi 2)) 2))
    (setq p4 (polar p3 (+ (angle p1 p2) (/ pi 2)) 3))
    (setq p5 (polar p2 (+ (angle p1 p2) (/ pi 2)) 2))
    (setq p6 (polar p5 (+ (angle p1 p2) (/ pi 2)) 3))
    )
   (T
    (setq p3 (polar p1 (- (angle p1 p2) (/ pi 2)) 2))
   (setq p4 (polar p3 (- (angle p1 p2) (/ pi 2)) 3))
   (setq p5 (polar p2 (- (angle p1 p2) (/ pi 2)) 2))
   (setq p6 (polar p5 (- (angle p1 p2) (/ pi 2)) 3))
   )
   )
 (command "-calque" "e" "Bâtiments (Contour)" "")
 (command "_.pline" "_non" p3 "_non" p1 "_non" p2 "_non" p5 "")
 (command "-calque" "e" "Bâtiments (non levé)" "")
 (command "_.pline" "_non" p3 "_non" p4 "")
 (command "_.pline" "_non" p5 "_non" p6 "")
 (command "-calque" "e" "Titre Cache" "")
 (command "_.pline" "_non" p4 "_non" p6 "")

 )

 

Nota, Comment faire si la façade de mon batiment comporte plus que 2 sommets ?

 

Merci d'avance...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut

En faisant un jeu de sélection

(setq js (ssadd))
(command "calque....")
(command "_pline....")
(setq js (ssadd (entlast) js))
.....
.....
(command "_.hatch" "" "" "" js)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Waow ! ! Merci Patrick_35...

 

Mais cela ne me sélectionne que le dernier élément créé...

 

Pourtant, Ca devrait marcher...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Tu veux dire qu'après chaque commande qui dessine une entité, je place "(setq js (ssadd (entlast) js))" sur la ligne suivante pour qu'il ajoute l'entité créée dans la liste "js" ?

 

J'avais pas compris comme çà...

 

Je vais essayé de ce pas...

 

Merci encore...

 

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Génial, ca marche super ! !

 

Merci mille fois Patrick_35 ! ! !

 

Denis... (<- très content) ;)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Encore un truc.

 

Si la facede de mon bâtiment (ma Pline entre p1 et p2) fait contient plus de deux sommets, c-a-d que la pline serait composée de x sommet, je devrais donc gérer des getpoint pour nourir une liste.... Et les deux extrémités de la liste seraient le p1 et p2... Mais je ne sait pas gérer les liste en Lisp...Et je pense qu'en Lisp , çà me serait TRÈS utile, non ?

 

Enfin, merci encore...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Pas besoin de gérer une liste, apprend splutôt le truc de la variable CMDACTIVE :

Un sujet qui m'a beaucoup appris à l'époque.

 

Maintenant, tu peux faire une poly à x sommets, avec toutes les options que tu veux, sans interrompre le programme.

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Pour le "Fun" et si ça peut te donner des idées, un exemple de ce qu'on peut faire ausssi pour avoir un contour un peu "spécial" hachuré.

 

(defun make_line (flag p10 p11 / )
(entmake
	(list
		(cons 0 "LINE")
		(cons 100 "AcDbEntity")
		(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
		(cons 410 (getvar "CTAB"))
		(cons 8 (getvar "CLAYER"))
		(cons 60 flag)
		(cons 62 (if (eq (getvar "CECOLOR") "BYLAYER") 256 (getvar "CECOLOR")))
		(cons 6 (getvar "CELTYPE"))
		(cons 370 (getvar "CELWEIGHT"))
		(cons 100 "AcDbLine")
		(cons 39 (getvar "THICKNESS"))
		(cons 10 p10)
		(cons 11 p11)
		(cons 210 (list 0.0 0.0 1.0))
	)
)
)
(defun c:bound_hatch ( / pt1 pt2 pt_o mod js)
(setvar "cmdecho" 0)
(initget 9)
(setq pt1 (getpoint "\nPoint de départ: ") pt_o pt1 mod 0 js (ssadd))
(initget 9 "Invisible Clore")
(while (not (equal pt2 pt_o))
	(setq pt2 (getpoint pt1 "\nPoint suivant ou segment [invisible/Clore]: "))
	(if (listp pt2)
		(progn
			(make_line mod (trans pt1 1 0) (trans pt2 1 0))
			(setq mod 0 pt1 pt2 js (ssadd (entlast) js))
		)
		(if (eq pt2 "Invisible")
			(setq mod 1)
			(progn
				(make_line mod (trans pt1 1 0) (trans pt_o 1 0))
				(setq pt2 pt_o js (ssadd (entlast) js))
			)
		)
	)
	(initget 9 "Invisible Clore")
)
(cond
	((> (sslength js) 2)
		(command "_.-bhatch" "_select" js "" "")
	)
	(T (princ "\nIl faut 3 segments pour hachurer cette zone."))
)
(setvar "cmdecho" 1)
(prin1)
)

 

[Edité le 24/5/2006 par bonuscad]

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é