Aller au contenu

lisp hachures toutes polyligne couleur


Messages recommandés

Posté(e)

Bonjour à tous, j'ai cherché dans cad xp, mais je n'ai pas trouvé de lisp qui permettrait de selectionner par exemple 25 polylignes et de toute les hachurer d'un coup (hachures séparées) et que chaque hachure est la meme couleur que la polyligne lui ayant servi de base, sachant que les polylignes seront toutes dans le meme calque et en couleur forcée.

 

Je vous remercie par avance ...

Posté(e)

Salut.

 

Ça m'étonnerais beaucoup que quelqu'un ait ça dans sa besace, mais on ne sait jamais.

 

Après, le Lisp ne doit pas être bien compliqué...

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)

Coucou

 

Encore une fois on parle de réinventer la roue

Pourquoi faire un lisp ?

Il faudrait de toute façon sélectionner les polylignes, les forcer de couleur n'est pas vraiment un souci !

En natif c'est tellement simple

 

Je ne veux pas ne pas te répondre, le lisp est facile à faire, je voudrais qu'on pense AutoCAD natif avant de faire des lisp à tour de bras

Ou bien c'est dans un but éducatif et là je dis OK, on te filera de l'aide su tu veux t'y coller.

 

Amicalement

Posté(e)

Salut à vous.

Ou bien c'est dans un but éducatif et là je dis OK, on te filera de l'aide su tu veux t'y coller.

C'est dans cette optique que j'ai répondu...

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)

Pardon à vous mais je ne vois pas pourquoi vous dites que c'est faisable facilement sans lisp.

Si vous avez 10 polylignes rouges 10 vertes 10 bleu 10 jaunes 10 orange 10 violette 10 marron 10 magenta etc .. etc ..300 polylignes dans une vingtaine de couleurs différentes.. sans lisp il faut les selectionner par couleur puis appliquer la hachure, c'est vrai que c'est pas insurmontable.. et recommencer la selection pour chaque couleur, si vous avez trois couleurs differentes c'est pas très long, mais si vous avez 20 couleurs (ou +) différentes..

 

En tout cas en natif créer une hachure dont la couleur est celle de l'objet servant de base à la hachure (polyligne en couleur forcée) et le faire sur pleins d'objet à la fois, je ne vois pas du tout comment faire... (ce qui veut dire que j'ai cherché....

:wub: avant d'appeler mon dernier recours CAD XP ..

 

Dans l'attente de vous lire je vous souhaite à tous une excellente fin de journée..

Posté(e)

Bonjour,

 

Je pense que tu sera obligé de retoucher le code suivant.

Au départ; il était conçu pour faire des hachures individuelles en ANSI31 en orientant le motif sur le plus grand coté de la polyligne, ceci pour toute les polylignes fermées sélectionnées.

J'ai donc juste rajouté la couleur à transmettre à la hachure.

 

(defun c:multi_hatch-45 ( / js n model_hatch scale_hatch ang_hatch ent dxf_ent col lst_pt lst_d where alpha dxf_hatch)
 (setq js (ssget '((0 . "LWPOLYLINE") (-4 . "<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)
         col (if (assoc 62 dxf_ent) (cdr (assoc 62 dxf_ent)) 256)
         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 "")
       (if (assoc 62 (setq dxf_hatch (entget (entlast))))
         (entmod (subst (cons 62 col) (assoc 62 dxf_hatch) dxf_hatch))
         (entmod (append dxf_hatch (list (cons 62 col))))
       )
     )
     (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)

Bonjour,

 

En tout cas en natif créer une hachure dont la couleur est celle de l'objet servant de base à la hachure (polyligne en couleur forcée) et le faire sur pleins d'objet à la fois, je ne vois pas du tout comment faire...

 

Il y a bien une solution, forcé la couleur dans les propriétés (donc prendre celle des polylignes) puis dans les propriétés de la création de Hachures tu mets "Utiliser la valeur courante" et dans Options "Créer des hachures séparées". Tu peux ensuite sélectionner toutes tes polylignes de la couleur forcé.

 

Tu as également la sélection rapide (par couleur dans ce cas) pour séparer les polylignes d'une certaine couleur du reste de ton fichier puis les remettre une fois les hachures créées.

Personnellement si c'est un problème ponctuel c'est comme ça que je procéderais.

 

Edit : Trop lent bon courage

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é