dilack Posté(e) le 12 octobre 2010 Posté(e) le 12 octobre 2010 bonjour,ce lisp bug sous le version 2008 (de bonuscad) et je ne vois pas la solution.J'aurais besoin de vos lumières.Merci d'avance Théoriquement la polyligne multucolore devrait se dessiné comme le tracé en rouge.A chaque fois j'ai un retour avec un angle http://http://img87.imageshack.us/img87/2315/capture01n.jpg Uploaded with ImageShack.us (defun c:mp(/ Cmd Co Coo Compt ep Lg os Pt1 Pt2 Pts Pas s) (defun *errmp* (msg) (if (/= msg "Function cancelled") (if (= msg "quit / exit abort") (princ) (princ (strcat "\nErreur : " msg)) ) (princ) ) (if os (setvar "osmode" os) ) (setvar "cecolor" coo) (command "_.undo" "_end") (setvar "cmdecho" Cmd) (setq *error* s) (princ) ) (defun cg_co() (setvar "cecolor" (itoa Co)) (if (= Co 50) (setq Co 100) (setq Co 50) ) ) (setq s *error*) (setq *error* *errmp*) (setq Cmd (getvar "cmdecho") Coo (getvar "cecolor")) (setvar "cmdecho" 0) (setq Ep (getstring (strcat "\nEpaisseur des polylignes <" (rtos (getvar "plinewid")) "> : "))) (if Ep (setvar "plinewid" (atof Ep)) ) (setq Pt1 (getpoint "\nPremier point : ") Pt2 '(0.0 0.0 0.0) Co 50 Compt 0) (if Pt1 (progn (setq Pts (list (cons 0 Pt1))) (while Pt2 (initget "Undo") (setq Pt2 (getpoint Pt1 "\nPoint suivant / Undo : ")) (if Pt2 (progn (if (= Pt2 "Undo") (progn (if (/= Compt 0) (progn (command "_.undo" "1") (setq Pts (vl-remove (assoc Compt Pts) Pts) Compt (1- Compt) Pt1 (cdr (assoc Compt Pts))) ) (princ "\nRien à annuler") ) ) (progn (command "_.undo" "_group") (setq os (getvar "osmode")) (setvar "osmode" 0) (setq Pas 0 Lg (* (getvar "ltscale") 5)) (while (< Pas (- (distance Pt1 Pt2) Lg)) (cg_co) (command "_.pline" (if (= Pas 0) Pt1 "@" ) (strcat "@" (rtos Lg) "<" (angtos (angle Pt1 Pt2) 0 16)) "") (setq Pas (+ Pas Lg)) ) (cg_co) (command "_.pline" "@" Pt2 "") (setvar "osmode" os) (setvar "cecolor" coo) (command "_.undo" "_end") (setq Pt1 Pt2 Compt (1+ Compt) Pts (append Pts (list (cons Compt Pt2)))) ) ) ) ) ) ) ) (setvar "cmdecho" Cmd) (setq *error* s) (princ) )
bonuscad Posté(e) le 12 octobre 2010 Posté(e) le 12 octobre 2010 Bonjour, ce lisp bug sous le version 2008 (de bonuscad) Une petite rectification, je pense que c'est plutôt lesourd2 . Pour moi, voir cette proposition Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 13 octobre 2010 Auteur Posté(e) le 13 octobre 2010 merci bonuscad.petite question pour changer la couleur je dois modifier quelle ligne? je n'arrive pas à les identifier. j'ai une erreur: Commande: pmcSélectionner une entité curviligne:Choix des objets:Longueur du tireté à généré: 0.5; erreur: no function definition: VLAX-ENAME->VLA-OBJECT [Edité le 13/10/2010 par dilack]
bonuscad Posté(e) le 13 octobre 2010 Posté(e) le 13 octobre 2010 ; erreur: no function definition: VLAX-ENAME->VLA-OBJECT Un oubli de ma part... généralement je pense à mettre l'instruction (vl-load-com) en tête de fichier. petite question pour changer la couleur je dois modifier quelle ligne? je n'arrive pas à les identifier. (setq n (length lst_pt) count 1 [surligneur]first_color 1[/surligneur] ) ;..... (setq first_color (rem (1+ first_color) 3)) (if (zerop first_color) (setq first_color 1)) Ici je m'étais simplifié la vie pour générer l'alternance de couleur (numéro de couleur à 1 ou 2)Pour faire d'autres combinaisons revoir la fonction (rem) qui peut te permettre de faire une alternance sur plus de couleurs, mais celles ci doivent se suivre. (3 4 5 6) ou (5 6 7 8 9) etc... Ou alors revoir complétement la génération du numéro de couleur avec une autre technique... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 13 octobre 2010 Auteur Posté(e) le 13 octobre 2010 ce qui donne pour avoir une alternance rouge noir?je ne vois pas l'astuce(codage un peu trop compliqué pour moi)
bonuscad Posté(e) le 13 octobre 2010 Posté(e) le 13 octobre 2010 pour avoir une alternance rouge noir? Tu peux remplacer par exemple les 2 dernières lignes précitées par cette unique ligne: (if (eq first_color 1) (setq first_color 7) (setq first_color 1)) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 14 octobre 2010 Auteur Posté(e) le 14 octobre 2010 merci bonuscadmanque plus une astuces pour appliquer une épaisseur et le tour et joué.en ployface pas possible :( dommagemerci comme meme de ton aide
bonuscad Posté(e) le 14 octobre 2010 Posté(e) le 14 octobre 2010 appliquer une épaisseur Il y a quand même l'épaisseur générale des objets qui peut être appliqué. C'est sur que cela n'a rien à voir avec l'épaisseur (largeur) que l'on peut avoir avec une polyligne, mais au traçage cela reste applicable. Et puis les segments restent groupés. Cela facilite la manipulation... Il reste que le code n'est parfait, on peut faire mieux. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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