Aller au contenu

hachures automatiques


Messages recommandés

Posté(e)

Bonjours a tous,

Je cherche à faire des hachures automatiques sans passer par la boite de dialogue d'autocad.

Je m'explique; je veus mettre une hachure de type solid à l'aide de pickpoint dans un layers définit (et non current) et ensuite le mettre automatiquement en arriere plan.

J'espère etre claire et remercie d'avance toute les personnes qui m'aurons aider.

Posté(e)

non, car je suis avec autocad 2004 anglais et puis les palette me donnes une hachure mais pas dans le layers qui convien et ne me la met pas automatiquement en arriere plan

Posté(e)

bonjour,

 

est ce que tu souhaites une solution lisp ?

 

est ce que TOUTES les polylignes fermées

du calque nommé doivent être hachurées ?

 

quelle est, dans ce cas, l'utilité du point de sélection ?

 

sans solution lisp :

 

isoler le calque à hachurer

lancer la commande hachures ( eh oui, il faut lancer la commande !!!)

choix des objets par capture

le tour est joué

 

pour l'affichage arrière

je n'ai pas le souvenir que la création des hachures en arrière plan existait sur la 2004

 

si ce n'est pas le cas

commande OrdreAffichage

choix des objets en FILTRANT les hachures

valider le choix AR

le tour est joué

 

amicalement

Posté(e)

Didier, c'est bien une solution lisp que je cherche.

 

ce que je voudrais, c'est que la routine me permette d'hachurer mes objets et de mettre en arriere plan mes hachure.

 

Je m'explique, la routine m'obligerais a utilisé par exemple le layer hach ensuite de m'obliger à utiliser le pattern par exemple solid et puis de demander à l'utilisateur de faire pick point afin d'achurer un ou plusieur élément et enfin de metre automatiquement l'hachure en arriere plan grace à la commande drauworder.

Posté(e)

Hello,

 

On va essayer de réunir quelques bout de code parci parlà pour reconstruire ta routine...

 

Ca c'est pour sélectionner et mémoriser le calque à hachurer. Fais un copier coller dans la ligne de commande pour le tester tel quel.

 

 (setq cname (cdr(assoc 8(entget(car(entsel))))))

 

Ca c'est pour créer un calque pour les hachures solides

 

(entmake '((0 . "LAYER") ; type d'entité
(100 . "AcDbSymbolTableRecord") ; marqueur de sous classe
(100 . "AcDbLayerTableRecord") ; marqueur de sous classe
(2 . "Hachures Solides") ; nom du calque
(70 . 0) ; drapeau d'état (gelé, vérouillé...)
(62 . 1) ; couleur
(6 . "Continuous") ; type de ligne
(370 . 18) ; épaisseur de ligne
)
)

 

Ca c'est pour mémoriser le calque courant initial

(Setq ccl (getvar "clayer")) 

 

Ca c'est pour rendre le calque des hachure courant

(setvar "clayer"  "Hachures Solides")

 

 

Ca c'est pour lancer la comande hachure en mode solide

(command "_hatch" "s" )

 

 

Ca je ne sais pas pourquoi mais ça fait masterclass ! On le met à la fin.

(Princ)

 

Manque plus que isoler les calques... Je teste "isocalque" et je reviens...

 

Je reviens.... Mais je ne sais pas quand... Mais je reviens... Promis !

 

EDIT : J'oublieais ça :

 

(setq ss(ssget "_x"(list'(cons 8 "TON CALQUE"))))    

 

Ce sera pour quand on lancera la commande hachure, pour qu'elle ne s'appluque qu'au calque que tu vaux hachurer... Hum je crois que je fais doublon avec ma prmière ligne de code... A méditer...

 

[Edité le 28/2/2008 par phil_vsd]

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

une simple MACRO permet déjà d'obtenir quelque chose de correct.

 

*^c^c_-bhatch;P;SOLID;\;_ai_draworder;_Back;_L;;CHPROP;_L;;CA;[surligneur]" TON_CALQUE"[/surligneur];;regen;

 

Il suffit de remplacer [surligneur] "TON_uCALQUE"[/surligneur] par le nom de calque que tu souhaites utiliser.

 

Cette MACRO peut être utilisée dans les PROPRIETES des outils (icônes) de la PALETTE d'OUTILS ou derrière une icône classique...

 

Je rejoins tout à fait LILI2006 qui a le réflexe d'utiliser les PALETTES D'OUTILS. Je trouve curieux qu'il y ait si peu d'utilisateur qui exploite toutes les possibilités de ces palettes. :P

 

Christian

 

[Edité le 28/2/2008 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Salut,

 

Pour une solution en LISP (très proche de la macro de Rebcao), quelques suggestions pour faire simple et compréhensible en utilisant la fonction command.

 

Comme le dit Phil_vsd (dont on peut admirer les rapides progrès), on commence par sauvegarder le calque courant.

 

L'option Etablir (_make) de la commande CALQUE (_layer) rend le calque spécifié courant et le crée s'il n'existe pas (on peut ajouter des options comme la couleur rouge dans l'expression ci-dessous)

 

La commande HACHURES (_bhatch) a, depuis les dernières versions, une option "ordre de Tracé" (_draw)

 

Puis on restitue la calque courant.

 

Le (princ) à la fin évite d'avoir le résultat de la dernière expression qui s'afiche sur la ligne de commande.

 

(defun c:test (/ cc)
 (setq cc (getvar "clayer"))
 (command "_.layer" "_make" "Hachures_solid" "_color" 1 "Hachures_solid" "")
 (command "_.bhatch" "_properties" "solid" "_draw" "_back" pause "")
 (setvar "clayer" cc)
 (princ)
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Hello tous,

 

D'abord merci à toi (gile) et à tous ceux qui prennent de leur temps pour guider les newbies de mon genre. Je note tous les post intéressants sur les bases du lisp.

 

Le lisp à l'air de bien marcher. J'aimerai savoir ce que F1 trouve comme problème.

 

Je travaille sur une version qui hachure automatiquement tous les objets d'un calque "x" pour éviter à les piquer un par un.

 

A ++++

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

coucou

 

pourquoi est ce que peu de gens utilisent les palettes ?

 

par négligence des nouvelles versions, tout simplement

celui qui commence avec cet environnement s'y met facilement,

il n'a pas encore d'habitudes...

 

celui qui tape sur son clavier des commandes depuis vingt ans

ne voit pas ce que ça lui apporte,

 

je fais partie de cette dernière catégorie, vous l'aviez compris.

 

et d'ailleurs, qu'elle est la REELLE amélioration qu'apporte cet outil ?

 

je ne suis hermétique à rien, mais ce n'est qu'un parasite

d'écran supplémentaire à mes yeux.

 

prouvez moi le contraire, et je changerai d'avis certainement.

 

amicalement

Posté(e)

prouvez moi le contraire, et je changerai d'avis certainement.

 

Essayes d'insérer un bloc dans un dessin où il n'existe pas ! combien de temps ?

 

ou tu vas me dire je tape I (alias de insérer) puis je choisi dans la liste le bloc ??? et HOP j'insère !...

 

Avec la PALETTE si le bloc s'y trouve ça coute UN CLIC on va dire 2 secondes le temps de déplacer la souris...

 

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Il y avait ce sujet

 

La version complétée:

 

(defun c:mhatch (/ cmdecho mod_hatch ang_hatch esp_hatch dbl_hatch ss i ss1 pt)
(setq cmdecho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(command "_.UNDO" "_Group")
(initget "Solide Utilisateur Courant _Solid User Current")
(setq mod_hatch (getkword (strcat "\nUtiliser le motif [solide/Utilisateur/Courant]? <" (getvar "HPNAME") ">: ")))
(cond
	((eq mod_hatch "Solid") (setvar "HPNAME" "_SOLID"))
	((eq mod_hatch "User") (setvar "HPNAME" "_USER"))
)
(if (and (/= (getvar "HPNAME") "_SOLID") (/= (getvar "HPNAME") "SOLID"))
	(if (or (wcmatch (getvar "hpname") "_U*") (wcmatch (getvar "hpname") "U*"))
		(progn
			(setq ang_hatch (getangle (strcat "\nSpécifiez l'angle des lignes de hachures <" (angtos (getvar "HPANG")) ">: ")))
			(if ang_hatch (setvar "HPANG" ang_hatch))
			(initget 6)
			(setq esp_hatch (getdist (strcat "\nSpécifiez l'espacement entre les lignes <" (rtos (getvar "HPSPACE")) ">: ")))
			(if esp_hatch (setvar "HPSPACE" esp_hatch))
			(initget "Oui Non _Yes No")
			(setq dbl_hatch (getkword (strcat "\nDouble hachures? [Oui/Non] <" (if (zerop (getvar "HPDOUBLE")) "N" "O") ">: ")))
			(cond ((eq dbl_hatch "Yes") (setvar "HPDOUBLE" 1)) ((eq dbl_hatch "No") (setvar "HPDOUBLE" 0)))
		)
		(progn
			(initget 6)
			(setq esp_hatch (getdist (strcat "\nSpécifiez l'échelle du modèle <" (rtos (getvar "HPSCALE")) ">: ")))
			(if esp_hatch (setvar "HPSCALE" esp_hatch))
			(setq ang_hatch (getangle (strcat "\nSpécifiez l'angle du modèle <" (angtos (getvar "HPANG")) ">: ")))
			(if ang_hatch (setvar "HPANG" ang_hatch))
		)
	)
)
(princ "\nChoisir des objet ou  pour point interne.")
(setq
	ss (ssget
		'((-4 . [b]"<[/b]OR")
			(-4 . [b]"<[/b]AND")
				(0 . "POLYLINE")
				(-4 . [b]"<[/b]AND")
					(-4 . "&") (70 . 1)
					(-4 . [b]"<[/b]NOT")
						(-4 . "&") (70 . 16)
					(-4 . "NOT>")
				(-4 . "AND>")
			(-4 . "AND>")
			(-4 . [b]"<[/b]AND")
				(0 . "LWPOLYLINE")
				(-4 . [b]"<[/b]AND")
					(-4 . "&") (70 . 1)
				(-4 . "AND>")
			(-4 . "AND>")
			(-4 . [b]"<[/b]AND")
				(0 . "MLINE")
				(-4 . [b]"<[/b]AND")
					(-4 . "=") (71 . 3)
				(-4 . "AND>")
			(-4 . "AND>")
			(-4 . [b]"<[/b]AND")
				(0 . "CIRCLE")
			(-4 . "AND>")
			(-4 . [b]"<[/b]AND")
				(0 . "3DFACE")
			(-4 . "AND>")
			(-4 . [b]"<[/b]AND")
				(0 . "ELLIPSE")
				(-4 . [b]"<[/b]AND")
					(-4 . "=") (41 . 0)
					(-4 . "=") (42 . 6.283185307179586)
				(-4 . "AND>")
			(-4 . "AND>")
			(-4 . [b]"<[/b]AND")
				(0 . "SPLINE")
				(-4 . [b]"<[/b]AND")
					(-4 . "&") (70 . 1)
				(-4 . "AND>")
			(-4 . "AND>")
			(-4 . [b]"<[/b]AND")
				(0 . "REGION")
			(-4 . "AND>")
		(-4 . "OR>"))
	)
	i -1
	ss1 (ssadd)
)
(cond
	(ss
		(repeat (sslength ss)
			(command "_.-bhatch" "_select" (ssname ss (setq i (1+ i))) "" "")
			(ssadd (entlast) ss1)
		)
	)
	(T
		(while (setq pt (getpoint "\nSpécifiez un point interne: "))
			(command "_.-bhatch" pt "")
			(ssadd (entlast) ss1)
		)
	)
)
(if (not (zerop (sslength ss1))) (command "_.draworder" ss1 "" "_back"))
(command "_.UNDO" "_End")
(setvar "CMDECHO" cmdecho)
(princ)
)

 

[Edité le 29/2/2008 par bonuscad]

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

Posté(e)

Une autre, pour une demande différente que j'ai posté sur un forum US, ci ça peut servir ...

 

La demande était de hachurer une/ des polylignes optimisées "LwPolyLine" fermée avec le motif à 45° par rapport au plus grand coté de la polyligne. Par exemple Hachurer du bati en une seule fois sur une cartographie.

 

(defun c:multi_hatch-45 ( / js n model_hatch scale_hatch ang_hatch ent dxf_ent lst_pt lst_d where alpha)
(setq js (ssget '((0 . "LWPOLYLINE") (-4 . "[b]<[/b]AND") (-4 . "&") (70 . 1) (-4 . "AND>"))))
(cond
	(js
		(setq
			n -1
			model_hatch (getvar "HPNAME")
			scale_hatch (getvar "HPSCALE")
			ang_hatch (getvar "HPANG")
		)
		(setvar "HPNAME" "ANSI31")
		(setvar "HPSCALE" (* (getvar "HPSCALE") (getvar "DIMSCALE")))
		(repeat (sslength js)
			(setq
				ent (ssname js (setq n (1+ n)))
				dxf_ent (entget ent)
				lst_pt (mapcar '(lambda (x) (trans x ent 0)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)))
				lst_d (mapcar 'distance lst_pt (cons (last lst_pt) lst_pt))
				where (- (length lst_pt) (length (member (apply 'max lst_d) lst_d)))
				alpha (angle (if (zerop where) (last lst_pt) (nth (1- where) lst_pt)) (nth where lst_pt))
			)
			(setvar "HPANG" (angle (trans '(0 0 0) 0 1) (trans (polar '(0 0 0) alpha scale_hatch) 0 1)))
			(command "_.HATCH" "" "" "" ent "")
		)
		(setvar "HPNAME" model_hatch)
		(setvar "HPSCALE" scale_hatch)
		(setvar "HPANG" ang_hatch)
	)
	(T (princ "\nAucune LWPOLYLINE fermée trouvé !"))
)
(princ)
)

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

Posté(e)

Bonsoir à toutes et tous,

 

Beaucoup d'intérêt au contraire les palettes !

Déjà, plus de problème de gestion des calques, les outils lignes, textes, cotations, hachures, multilignes, et j'en passe sont déjà associés. Ensuite un seul bloc pour tes 20 échelles. Encore, glisser-déposer de tout et n'importe quoi, un chantier entier si tu veux. Ou bien en un clic transformer ta bibliothèque en palette et donc plus de soucis de mise à jour incotrolé des blocs utilisés par l'entreprise . Exportation possible sur n'importe quel poste en 5 minutes à peine, d'ou, pour un bureau un travail homogène, bref un outil indispensable à la charte graphique. Et le ponpon, pour toi, didier qui utilise covadis, même combat, c'est à dire les outils utiles, les symboles, les hachures, les textes,...

Encore plus fort, grace aux espaces de travail, tu changes de configuration (dont tes palettes bien sur !) en 1 clic, c'est pas beau ça,...

 

Enfin bref, je serai aujourd'hui incapable de mieux organiser mon travail (ou au moins aussi bien) sans ses palettes, car bien sur il existe celle des XREFS, propriétés, tableau de bord, jeu de feuilles, désign-center,... et contrairement à ce que tu dis didier, elle prennent largement moins de place que tous les autres outils puisqu'elles ne s'ouvrent que si tu passes la souris dessus, alors,...même la ligne de commande =>

 

D'autes logiciels proposent mieux ? Sinon, je suis preneur !

 

<!--url{0}-->

 

par négligence des nouvelles versions, tout simplement

 

Pourquoi les acheter alors ?

 

A chaque changement de versions, des outils extrordinaires sont proposés, pour moi les révolutions ? Jeux de feuilles, blocs dynamiques, liaisons avec Excel, annotatifs, tableaux, champs,espace de travail...et j'en passe.

 

Effectivement, la deux cheveaux et la mercédés,...

 

 

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Re,

 

bonuscad, toujours aussi balaise, comme quoi, il nous faut aussi des "vieux" *,...

 

* : vieux routard, bien entendu !

 

Chez moi, pas de problème pour "mhatch", par contre pour "multi_hatch-45 ", j'ai ce message ??

 

MULTI_HATCH-45

Choix des objets: Spécifiez le coin opposé: 2 trouvé(s)

Choix des objets:

; erreur: paramètre de la variable AutoCAD rejeté: "HPSCALE" 0.0

Commande:

 

Quelle est donc cette variable ?

 

Merci d'avance.

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

La personne voulait que son facteur d'échelle pour les hachures soit en relation avec l'échelle des cotations.

 

Cela peut être supprimé dans le code, pour toi la variable "DIMSCALE" doit être à 0.0 pour entrainer cette erreur.

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

Posté(e)

Salut lili

 

j'avais meme pas pensé a organiser mes fenetres comme ça.Vachement interressant.

J'arrive pas à comprendre comment tu fais ça. tu as toutes tes fenetres les unes au dessus des autres et quand tu passes ta souris sur une des fenetres elle s'ouvre entierement sur toute la hauteur c'est ça ?

 

@+

Posté(e)

Bonjour à toutes et tous,

 

C'est exactement ça lesourd2 !. Pour organiser tes palettes de cette façon, tu le fais en 2 temps => Clic droit sur la bande bleu de la palette, autorisation ancrage, puis ancrage à droite ou à gauche. Et voilà!

Celles-ci s'organise dans le sens de la création, donc tu peux les disposer comme tu veux dans un espace de travail, pui différemment dans un autre espace, entr'autres,...

 

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

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é