Cyrchap Posté(e) le 4 juin 2019 Posté(e) le 4 juin 2019 Bonjour à tous, je souhaiterais hachurer automatiquement des polylignes fermés (300 env.) mais avec une couleur et/ou un motif différent sur chaque contour. - L’idéal serait de donner une série de couleurs et/ou de motif à utiliser. - Que des couleurs ou des motifs identiques ne se retrouvent pas côte à côte pour éviter la confusion. Si quelqu’un à une solution à me proposer, même partielle. Merci. Cyrchap
lecrabe Posté(e) le 4 juin 2019 Posté(e) le 4 juin 2019 Hello DONC si maximum 6 contours voisins d'un quelconque contour alors il te faut 7 couleurs !? As tu une idee de ce nombre fatidique ?? Cela me parait etre un challenge interessant pour Gilles / Bruno / Patrick et autres "PROs" de la programmation !? Cela a peut etre ete deja publie sur TheSwamp !? Bye, lecrabe Autodesk Expert Elite Team
bonuscad Posté(e) le 4 juin 2019 Posté(e) le 4 juin 2019 J'ai fais un assemblage rapide de 2 routines que j'avais.Cela semblerait répondre à la demande des couleurs (enfin presque), à essayer...Commande MHATCH(defun ACI2RGB (n / l1 l3) (cond ( (or(> n 255)(< n 1))nil) ( (> 7 n 0)(aci2rgb(+ 10(* 40(1- n))))) ( (> 250 n 9) (setq l1 '(0 1 2 3 4 4 4 4 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0) ) (setq l3 '(1 0.8 0.6 0.5 0.3)) (mapcar '(lambda(v w / ) (fix (* 255 (+ (* 0.25 (nth(rem(+(1-(/ n 10))v)24)l1) (nth(/(rem n 10)2)l3) ) (* (rem n 2) 0.125 (nth(rem(+(1-(/ n 10))w)24)l1) (nth(/(rem n 10)2)l3) ) ) ) ) ) '(8 0 16) '(20 12 4) ) ) (1 (apply '(lambda(v w / )(list w w w)) (assoc n '((7 255)(8 128)(9 192)(250 51)(251 91)(252 132) (253 173)(254 214)(255 255))) ) ) ) ) (defun randnum (/ modulus multiplier increment random);retourne valeur entre 0 et 1 (if (not seed) (setq seed (getvar "DATE")) ) (setq modulus 65536 multiplier 25173 increment 13849 seed (rem (+ (* multiplier seed) increment) modulus) random (/ seed modulus) ) ) (defun getrandnum (minNum maxNum / tmp);fourchette du nombre aleatoire (if (not (< minNum maxNum)) (progn (setq tmp minNum minNum maxNum maxNum tmp ) ) ) (setq random (+ (* (randnum) (- maxNum minNum)) minNum)) ) (defun c:mhatch (/ cmdecho mod_hatch ang_hatch esp_hatch dbl_hatch ss i ss1 n obj ncol oColor RGBcolor 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 <Entrée> pour point interne.") (setq ss (ssget '((-4 . "<OR") (-4 . "<AND") (0 . "POLYLINE") (-4 . "<AND") (-4 . "&") (70 . 1) (-4 . "<NOT") (-4 . "&") (70 . 16) (-4 . "NOT>") (-4 . "AND>") (-4 . "AND>") (-4 . "<AND") (0 . "LWPOLYLINE") (-4 . "<AND") (-4 . "&") (70 . 1) (-4 . "AND>") (-4 . "AND>") (-4 . "<AND") (0 . "MLINE") (-4 . "<AND") (-4 . "=") (71 . 3) (-4 . "AND>") (-4 . "AND>") (-4 . "<AND") (0 . "CIRCLE") (-4 . "AND>") (-4 . "<AND") (0 . "3DFACE") (-4 . "AND>") (-4 . "<AND") (0 . "ELLIPSE") (-4 . "<AND") (-4 . "=") (41 . 0) (-4 . "=") (42 . 6.283185307179586) (-4 . "AND>") (-4 . "AND>") (-4 . "<AND") (0 . "SPLINE") (-4 . "<AND") (-4 . "&") (70 . 1) (-4 . "AND>") (-4 . "AND>") (-4 . "<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) ) ) ) (cond (ss1 (repeat (setq n (sslength ss1)) (setq obj (vlax-ename->vla-object (ssname ss1 (setq n (1- n))))) (while (not (eq (rem (setq ncol (fix (getrandnum 11 241))) 10) 1))) (setq oColor (vlax-get-property obj 'TrueColor) RGBcolor (ACI2RGB ncol) ) (vlax-invoke-method oColor 'SetRGB (car RGBcolor) (cadr RGBcolor) (caddr RGBcolor)) (vla-put-TrueColor obj oColor) ) (command "_.draworder" ss1 "" "_back") ) ) (if (not (zerop (sslength ss1))) (command "_.draworder" ss1 "" "_back")) (command "_.UNDO" "_End") (setvar "CMDECHO" cmdecho) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Cyrchap Posté(e) le 4 juin 2019 Auteur Posté(e) le 4 juin 2019 Trop bien ! Cela répond à une partie du problème et me suffit pour le moment. Je vais gérer manuellement les quelques couleurs quasi similaires qui sont trop proches et cela ira bien. Merci bonuscad Le sujet reste quand même ouvert et en réponse à LeCrabe, une dizaine de couleurs choisies ( perso j'utilise souvent les pastels 11,31,61,91,etc) et avec une dizaine de motifs hachures choisis ( Ansi ou autres prédéfinis) cela devrait faire l'affaire. Merci
tiphon Posté(e) le 5 juin 2019 Posté(e) le 5 juin 2019 BonjourNormalement, 4 couleurs suffisent :https://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_des_quatre_couleursIl faut juste trouver le bon algorithme pour mettre les couleurs au bon endroit... Cordialement
lecrabe Posté(e) le 5 juin 2019 Posté(e) le 5 juin 2019 Hello YES Theoreme des 4 couleurs ! Si il n'y a pas des ilots multiples ou ilots imbriques !? Bye, lecrabe Autodesk Expert Elite Team
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant