jarod34 Posté(e) le 17 mars 2010 Posté(e) le 17 mars 2010 Bonsoir à tous, Un dilemme sur lequel je planche depuis plusieurs jours sans même avancer d'un yota trouvera peut être une solution ici, en tout les cas je l'espère! J'ai un lisp qui me permet de créer la base d'un profil en long. Le principe est simple, je clique sur l'axe de mon projet et le lisp dessine le profil à partir de touts les points qui ce situe sur cette polyligne. Cette fonction marchait très bien jusqu'à ce qu’aujourd’hui elle plante! Origine PROFIL ... : <722467.965,143331.434,0.000>Impossible de calculer l'air d'une courbe auto-concourant.*Sélection non valable*Attend un point ou Dernier*Sélection non valable*Attend un point ou Dernier; erreur: une erreur est survenue dans la fonction *erreur*Fonction annuléeChoix des objets: *Annuler* Voici l'un des morceaux du lisp qui pose problème je pense: le calcul de l'air et le périmètre! (defun dessine (lp pl / n x y z lc) (command "_ucs" "_o" ppc) (setq vpc (nth 1 (car lp))) (foreach n lp (setq vpc (min vpc (nth 1 n)))) (setq vpc (fix (- vpc 8))) [surligneur] (command "_area" "_o" (nent pl)) (setq x (getvar "PERIMETER"))[/surligneur] (setq x (arrondi x 0.01)) (cplan "cadre") (cplan "cotation") (cplan "profil") (setvar "clayer" "cadre") (command "_line" (list 0 0) (list (+ x 6) 0) (list (+ x 6) 59.4) (list 0 59.4) "") (setvar "clayer" "cotation") (command "_line" (list 0 02) (list x 02) "") (command "_line" (list 0 04) (list x 04) "") (command "_line" (list 0 06) (list x 06) "") (command "_line" (list 0 08) (list x 08) "") (command "_line" (list 0 10) (list x 10) "") (command "_line" (list 0 12) (list x 12) "") (command "_line" (list 0 14) (list x 14) "") (command "_line" (list 0 16) (list x 16) "") (command "_line" (list 0 02) (list 0 16) "") (command "_line" (list x 02) (list x 16) "") (command "_text" (list 0.2 16.2) "0.30" (list 1.2 16.2) (strcat "PC " (rtos vpc 2 0) " m")) (setq lc lp) (setq n 1) (while (car lc) (setq p (car lc)) (setq x (nth 0 p)) (setq z (nth 1 p)) (setq y (+ 16 (* 2 (- z vpc)))) (command "_line" (list x y) (list x 10) "") (command "_text" "_mc" (list x 09) "0.30" (list (+ x 1) 9) (rtos n 2 0)) (command "_text" "_bc" (list x 11) "0.30" (list x 12) (rtos x 2 2)) (command "_text" "_bc" (list x 15) "0.30" (list x 16) (rtos z 2 2)) (setq lc (cdr lc)) (setq n (+ n 1)) ) (setq lc lp) (while (cdr lc) (setq x (nth 0 (car lc))) (setq y (nth 0 (cadr lc))) (setq z (/ (+ x y) 2)) (if (>= (- y x) 1.5) (command "_text" "_mc" (list z 13) "0.30" (list (+ z 1) 13) (rtos (- y x) 2 2)) (command "_text" "_mc" (list z 13) "0.30" (list z 14) (rtos (- y x) 2 2)) ) (setq lc (cdr lc)) ) (setvar "clayer" "profil") (setvar "cecolor" "2") (setq lc lp) (command "_pline") (while (car lc) (setq p (car lc)) (setq x (nth 0 p)) (setq z (nth 1 p)) (setq y (+ 16 (* 2 (- z vpc)))) (command (list x y)) (setq lc (cdr lc)) ) (command "") (setvar "cecolor" "256")) Je pensais que cela pouvais venir de la version 2010 d'Autocad, mais sur d'autres plans avec cette version cela marche très bien. Quelqu'un a-t-il déjà rencontré ce cas, une solution ou une idée? D'avance merci de m'avoir lu et accordé de votre temps et de vos réponses ;) [Edité le 17/3/2010 par jarod34]
jarod34 Posté(e) le 18 mars 2010 Auteur Posté(e) le 18 mars 2010 Personne a des informations sur ces courbes auto-concourantes? comment détecter l'endroit qui pose problème sur ma polyligne? Qu'est qui rend cette erreur d'auto-concourantes? Help me! merci ;)
Invité Zeor_5 Posté(e) le 10 novembre 2010 Posté(e) le 10 novembre 2010 J'ai le même problème as tu trouvé une solution ? Quelqu'un a une solution? svp [Edité le 10/11/2010 par Zeor_5]
Fraid Posté(e) le 10 novembre 2010 Posté(e) le 10 novembre 2010 Bonjour, Il me semble avoir vu cela quand il y a des poignées superposées dans ta polyligne. Tu peux utiliser le lisp de Gile CleanPline http://www.cadxp.com/XForum+viewthread-fid-115-tid-17474.html https://github.com/Fraiddd
jarod34 Posté(e) le 10 novembre 2010 Auteur Posté(e) le 10 novembre 2010 Salut Fraid, oui j'avais déjà essayé à l'époque (ça va faire quelques mois ^^) mais sans résultat ! Par contre dans mon cas j'ai put résoudre le problème le mois dernier, j'espère que ça t'aidera Zeor_5. Le plantage du lisp venait de l'impossibilité pour la commande « area » de calculer l'aire d'une polyligne auto concourante. Une polyligne que tu traite mais qui n'est pas fermé et d’une certaine forme peut faire planter certaine fonction comme « area ». Par exemple si ta polyligne en ce fermant recroise un segment d'elle même, alors ça va planter. Je crois que c'est ce que veux dire le message d’erreur « auto concourante », elle se recroise et donc certaines fonctions ne marchent pas dans cette configuration. Dans mon cas la commande « area » était utilisé pour un calcul de périmètre simplement.J'ai remplacé la partie concernant cette commande pour utiliser plutôt "_LENGTHEN" que l'on m'a proposé sur Cadxp ;). Plus de problème depuis. [Edité le 10/11/2010 par jarod34]
nardoz Posté(e) le 26 mars 2011 Posté(e) le 26 mars 2011 Bonjour à tous,Je sais ça fait un moment que le pb des courbes auto-concourante a été évoqué, mais je viens de rencontrer le pb en voulant extruder un spline sur Autocad 2010.Comme le disait Fraid, il m'a semblé que 2 poignées se chevauchaient, et cela au niveau du point de départ de la spline (que j'avais crée à partir d'une polyligne transformée par la cde" Spline", option "Objet").Cette spline "auto-concourante", je l'ai ouverte par la commande "coupure" autour des poignées qui se chevauchaient, puis refermé en superposant les nouvelles poignées des extrémités, depuis elle s'extrude très bien ...A bientôt
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