Aller au contenu

trait multicolor


haithem

Messages recommandés

Juste un exemple vite fait, pour montrer le résultat.

Si cela peut convenir, il faudra approfondir le code.

 

L'avantage: une seule entité crée. L'inconvénient: pas de vraies courbes possible.

 

Pour tester, un copier-coller en ligne de commande

 

((lambda ( / pt l_pt n count)
 (while (setq pt (getpoint "\nPoint suivant: "))
   (setq l_pt (cons pt l_pt))
 )
 (setq n (length l_pt) count 1)
 (command "_.pface")
 (while l_pt
   (command "_none" (car l_pt))
   (setq l_pt (cdr l_pt))
 )
 (command "")
 (repeat (1- n)
   (command "_color" count)
   (command count)
   (command (setq count (1+ count)))
   (command "")
 )
 (command "")
))

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

Un petit peu plus poussé...

 

Génère une entité bicolore (ici rouge-jaune) avec la longueur de tiret voulu.

 

(defun c:line_multi-color ( / js e_curv e_tiret vlaobj pt_start pt_end param_start param_end perim_obj d_x lst_pt n count first_color)
 (princ (strcat"\nSélectionner une entité curviligne: "))
 (while
   (not
     (setq js
       (ssget "_+.:E:S" 
         (list
           (cons 0 "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE,SPLINE")
           (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
           (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
           (cons -4 "              (cons -4 "&") (cons 70 112)
           (cons -4 "NOT>")
         )
       )
     )
   )
 )
 (redraw (setq e_curv (ssname js 0)) 3)
 (initget 7)
 (setq e_tiret (getdist "\nLongueur du tireté à généré: "))
 (setq
   vlaobj (vlax-ename->vla-object e_curv)
   pt_start (vlax-curve-getStartPoint vlaobj)
   pt_end (vlax-curve-getEndPoint vlaobj)
   param_start (vlax-curve-getStartParam vlaobj)
   param_end (vlax-curve-getEndParam vlaobj)
   perim_obj (vlax-curve-getDistAtParam vlaobj param_end)
 )
 (setq d_x 0.0 lst_pt nil)
 (while (< d_x perim_obj)
   (setq
     lst_pt (cons (vlax-curve-getPointAtDist vlaobj d_x) lst_pt)
     d_x (+ d_x e_tiret)
   )
 )
 (setq n (length lst_pt) count 1 first_color 1)
 (redraw e_curv 4)
;  (entdel e_curv)
 (setvar "cmdecho" 0)
 (command "_.pface")
 (while lst_pt
   (command "_none" (car lst_pt))
   (setq lst_pt (cdr lst_pt))
 )
 (command "")
 (repeat (1- n)
   (command "_color" first_color)
   (command count)
   (command (setq count (1+ count)))
   (command "")
   (setq first_color (rem (1+ first_color) 3))
   (if (zerop first_color) (setq first_color 1))
 )
 (command "")
 (setvar "cmdecho" 1)
 (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

bonsoir à toutes et à tous

 

merci pour les lisp

 

maintenant, une autre idee pour la couleur des traits.

quelqu'un peu nous faire un lisp dessinant une polyligne en 3 ou plusieurs couleurs, mais cette fois-ci superposées (empillees les unes sur les autres), à la maniere de 3 ou plusieurs polylignes superposées avec des largeurs différentes.

a+

 

 

[Edité le 10/3/2010 par jalloul]

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é