Rechercher dans la communauté
Affichage des résultats pour « challenge » dans sujets.
502 résultats trouvés
-
Bonjour Et bien, voici un challenge que j'ai raté, mais qui a bien fonctionné apparement. :) Je constate que se sont ceux d'un certain niveau qui ont beaucoup participé. Faut-il en déduire qu'il faut toujours que cela soit dur pour avoir des participations ? @+
-
J'ai vu cette demande dans un forum US. J'ai trouvé le challenge intéressant (réécrire une commande raccord) Après ne nombreux tests et ce n'est pas encore parfait (parfois; problème de mise en place dans des SCU non parallèles), mais déjà bien aboutie ,je trouve. Si certains veulent essayer d'aller plus loin... pour le "fun" ;) (defun ang_x (px p1 p2 / l_pt l_d p ang) (setq l_pt (mapcar '(lambda (x) (list (car x) (cadr x))) (list px p1 p2)) l_d (mapcar 'distance l_pt (append (cdr l_pt) (list (car l_pt)))) p (/ (apply '+ l_d) 2.0) ang (* (atan (sqrt (/ (* (- p (car l_d)) (- p (caddr l_d))) (* p (- p (cadr l_d)))))) 2.0) ) ) (defun det_wh (px p1 p2 / v1 v2 det_or) (setq v1 (mapcar '- p2 p1) v2 (mapcar '- px p1) ) (if (> (apply '(lambda (x1 y1 z1 x2 y2 z2) (- (* x1 y2) (* y1 x2))) (append v1 v2)) 0.0) 1 -1) ) (defun k_th (p1 p2 c / k) (setq k (/ c (distance p1 p2))) (mapcar '+ (mapcar '* (mapcar '- p2 p1) (list k k k)) p1) ) (defun c:bubble_fillet ( / js1 js2 ps1 ps2 pt_lst pt l3 key_fillet alpha chord p_o a1 a2) (princ "\nSélectionnez la première ligne: ") (while (or (null (setq js1 (entsel))) (/= (cdr (assoc 0 (entget (car js1)))) "LINE"))) (princ "\nSélectionnez la deuxième ligne: ") (while (or (null (setq js2 (entsel))) (/= (cdr (assoc 0 (entget (car js2)))) "LINE"))) (setq ps1 (trans (cadr js1) 1 0) ps2 (trans (cadr js2) 1 0) js1 (entget (car js1)) js2 (entget (car js2)) pt_lst (list (cdr (assoc 10 js1)) (cdr (assoc 11 js1)) (cdr (assoc 10 js2)) (cdr (assoc 11 js2))) pt (inters (car pt_lst) (cadr pt_lst) (caddr pt_lst) (cadddr pt_lst) nil) ) (cond ((and pt (equal (assoc 210 js1) (assoc 210 js2) 1E-8)) (if (eq (det_wh (cadddr pt_lst) (car pt_lst) (cadr pt_lst)) (det_wh (caddr pt_lst) (car pt_lst) (cadr pt_lst))) (if (> (distance pt (caddr pt_lst)) (distance pt (cadddr pt_lst))) (setq l3 (list pt (caddr pt_lst))) (setq l3 (list pt (cadddr pt_lst))) ) (if (eq (det_wh ps2 (car pt_lst) (cadr pt_lst)) (det_wh (caddr pt_lst) (car pt_lst) (cadr pt_lst))) (setq l3 (list pt (caddr pt_lst))) (setq l3 (list pt (cadddr pt_lst))) ) ) (if (eq (det_wh (cadr pt_lst) (caddr pt_lst) (cadddr pt_lst)) (det_wh (car pt_lst) (caddr pt_lst) (cadddr pt_lst))) (if (> (distance pt (car pt_lst)) (distance pt (cadr pt_lst))) (setq l3 (cons (car pt_lst) l3)) (setq l3 (cons (cadr pt_lst) l3)) ) (if (eq (det_wh ps1 (caddr pt_lst) (cadddr pt_lst)) (det_wh (car pt_lst) (caddr pt_lst) (cadddr pt_lst))) (setq l3 (cons (car pt_lst) l3)) (setq l3 (cons (cadr pt_lst) l3)) ) ) (initget 4) (setq key_fillet (getdist (strcat "\nSpécifiez le rayon du raccord [b]<[/b]" (rtos (getvar "FILLETRAD")) ">:" ) ) ) (if (null key_fillet) (setq key_fillet (getvar "FILLETRAD")) (setvar "FILLETRAD" key_fillet)) (setq alpha (ang_x (cadr l3) (car l3) (caddr l3)) chord (/ (* (getvar "FILLETRAD") (sin (- pi alpha))) (sin (* alpha 0.5))) js1 (subst (cons 10 (car l3)) (assoc 10 js1) js1) js2 (subst (cons 10 (caddr l3)) (assoc 10 js2) js2) ) (entmod (setq js1 (subst (cons 11 (k_th pt (car l3) chord)) (assoc 11 js1) js1))) (entmod (setq js2 (subst (cons 11 (k_th pt (caddr l3) chord)) (assoc 11 js2) js2))) (setq p_o (k_th pt (mapcar '* (mapcar '+ (cdr (assoc 11 js1)) (cdr (assoc 11 js2))) '(0.5 0.5 0.5)) (getvar "FILLETRAD")) a1 (angle p_o (cdr (assoc 11 js1))) a2 (angle p_o (cdr (assoc 11 js2))) ) (entmake (list (cons 0 "ARC") (cons 100 "AcDbEntity") (assoc 67 js1) (assoc 410 js1) (cons 8 (getvar "CLAYER")) (if (assoc 62 js1) (assoc 62 js1) (cons 62 256)) (if (assoc 6 js1) (assoc 6 js1) (cons 6 "BYLAYER")) (cons 38 (+ (cadddr (assoc 10 js1)) (getvar "ELEVATION"))) (cons 39 (getvar "THICKNESS")) (cons 100 "AcDbCircle") (cons 10 (trans p_o 0 (cdr (assoc 210 js1)))) (cons 40 (getvar "FILLETRAD")) (assoc 210 js1) (cons 100 "AcDbArc") (cons 50 (if (equal (* (+ (max a1 a2) (min a1 a2)) 0.5) (angle p_o pt) 1E-8) (min a1 a2) (max a1 a2) ) ) (cons 51 (if (equal (* (+ (max a1 a2) (min a1 a2)) 0.5) (angle p_o pt) 1E-8) (max a1 a2) (min a1 a2) ) ) ) ) ) (T (princ "\nNe peut raccorder des lignes dans des plans différents!") ) ) (prin1) )
-
Salut Zebulon, on peut en effet faire ce que tu dits, et c'est d'aileur la finalité je pense de ce challenge. Personnellement j'utilise cette routine : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; (lst-assoc 10 ent-lwpolyligne) -> tous les sommets de la lwpolyligne; (defun lst-assoc (cle lst) (mapcar 'cdr (vl-remove-if '(lambda (x) (not(equal(car x) cle))) lst)) ) Edit : Je viens de réaliser un Echo à (gile).... Ok, gile, il est vrais que assoc doit certainement passer en revue la liste (c'est bien lent d'ailleurs... :casstet:) [Edité le 11/12/2007 par Bred]
-
Bred, Pas vraiment, assoc doit bien parcourrir la liste jusqu'au premier (10 ...) trouvé et vl-remove parcourt toute la liste à la recheche de toutes les occurences. _$ (benchmark '((coord-recurs lst20) (bred4 lst20))) Benchmarking ................Elapsed milliseconds / relative speed for 8192 iteration(s): (COORD-RECURS LST20).....1219 / 1.90 (BRED4 LST20)............2312 / 1.00 _$ (benchmark '((coord-recurs lst100) (bred4 lst100))) Benchmarking ..............Elapsed milliseconds / relative speed for 2048 iteration(s): (COORD-RECURS LST100)......1125 / 9.08 (BRED4 LST100)............10219 / 1.00 zebulon_, C'est ce que je voulais dire avec dxf-grpe, on peut adapter chacune des routines qui ont été données plus haut. Pour le nouveau challenge (retourner la liste des longueurs de chaque segment), pour ceux qui ne savent pas à quoi correspond le bulge (la courbure) d'un segment de polyligne, pour ceux qui ont du mal en anglais avec le lien donné par zebulon_, La valeur du code de groupe DXF 42 des polylignes correspond à la tangente du quart de l'angle de l'arc, autrement dit à la longueur de la flèche divisée par la moité de la corde. Cette valeur est positive quand l'arc (par rapport à l'ordre des sommets) est dans le sens trigonométrique, négative si l'arc est dans le sens horaire. Elle est égale à 0.0 pour les segments droits à 1 (ou -1) pour les demi cercles. La longueur d'un arc est égale à l'angle de l'arc (en radians) multiplié par le rayon. http://img212.imageshack.us/img212/3293/arcdw7.png [Edité le 11/12/2007 par (gile)]
-
Il me semble qu'on peut maintenant passer au niveau supérieur en reprenant ce que proposait _Zebulon. Pour ne pas trop s'éparpiller, je propose de cadrer le challenge à un exercice pour l'instant, quitte à en faire d'autre ensuite. Toujours à partir d'une liste telle que celle retournée par entget sur une lwpolyline, écrire une fonction qui retourne une liste contenant les longueurs de chaque segment de la polyligne (ces segments pouvant être courbes bien sur). PS : les fonctions trouvées plus haut peuvent être rendues plus polyvalentes. En ajoutant un argument (le code de groupe DXF), elles peuvent servir à retourner les listes de tous les groupes DXF à entrées multiples (10 40 41 42 pour les polylignes par exemple). (defun dxf-grpe (elst code / ret) (foreach p elst (if (= (car p) code) (setq ret (cons (cdr p) ret)) ) ) (reverse ret) ) (dxf-grpe (entget (car (enstel))) 42) retournera la liste des bulges de la polyligne. [Edité le 11/12/2007 par (gile)]
-
Bonjour, Voici ma p'tit contrubution. J'espere qu'elle réponds à la demande du challenge. Merci d'avance de vos commentaires. (defun c:test () (setq ent (entget(car(entsel)))) (setq i 0) (repeat (length ent) (setq entit (nth i ent)) (setq codeentit (car entit)) (if (= codeentit 10) (setq lst_pt (cons (cdr entit) lst_pt)) ) (setq i (+ i 1)) ) (reverse lst_pt) ) @plus
-
Salut Matt666! Et bien ca lance en challenge :D ! Pour le 14 et 15, je n'ai pas eu trop de temps, mais pour celui-là, j'ai déjà une solution. JE vais tenter une version différente et voir la meilleure. a+.
-
Salut ! Bon Patrick_35 a proposé un nouveau challenge à la fin du challenge 14, et je permets d'en faire un nouveau post. C'est encore un challenge de niveau assez facile.... Exemple : Liste de base : (setq lst '((-1 . ) (0 . "LWPOLYLINE") (5 . "33EC") (67 . 0) (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -1) (48 . 1.00000) (60 . 0) (90 . 8) (70 . 1) (38 . 0.000000) (39 . 0.000000) (210 0.000000 0.000000 1.00000) (10 0.000000 0.000000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000) (10 20.0000 0.000000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000) (10 20.0000 16.0000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000) (10 -8.88178E-016 16.0000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000) (10 -1.46953E-015 12.0000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000) (10 8.00000 12.0000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000) (10 8.00000 7.00000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000) (10 -1.77568E-015 7.00000 0.000000) (40 . 0.000000) (41 . 0.000000) (42 . 0.000000))) Fonction : (coor lst) Retourne : ((0.000000 0.000000 0.000000) (20.0000 0.000000 0.000000) (20.0000 16.0000 0.000000) (-8.88178E-016 16.0000 0.000000) (-1.46953E-015 12.0000 0.000000) (8.00000 12.0000 0.000000) (8.00000 7.00000 0.000000) (-1.77568E-015 7.00000 0.000000)) Voilà... Alors, s'il vous plait, faites un peu plaisir à Patrick_35 !!! Pour les pros, on essaie de faire la même en autolisp pur ? (bon je sais c pas très dur...) Allez lili, lovecraft, on ne regarde les codes existants, et on essaie ! Bonne chance. Matt. [Edité le 12/12/2007 par Matt666]
-
Oui... Mais quand c'est trop dur, Gile trouve ça facile :D Ceci dit ton challenge 15 est très intéressant !! Pas eu le temps de répondre. Dommage... Sinon, Tu ne veux pas poster un nouveau sujet, plutot ? Je n'avais pas vu ton post.... C'est un bon challenge, je pense ! A bientot. Matt. [Edité le 10/12/2007 par Matt666]
-
Salut Quand c'est trop facile, personne ne répond ou presque :( Des idées de challenge pour évoluer, ce n'est pas ce qui manque, se sont les volontaires Allez, juste une pour voir et ne trichez pas ;) Il s"agit de retrouver toutes les cordonnées d'une polyligne dans une liste @+
-
C'est sympa ce que tu fais gile, Merci pour l'encouragement ;) Oui vivement un autre challenge...avant Noel faites que je puisse y participé comme celui-ci. Merci @plus
-
Merci... :red: C'est marrant pourtant l'utilise un append... Je croyais que c'était plus lent... Vivement un autre challenge (un peu moins balaise que le 15 !!) :o A bientot.. Matt.
-
Bah voilà ! Bravo !!! :D Vu que je ne connais pas bien ta maitrise du lisp, je vais (si je peux me permettre) préciser les remarques constructives de (gile)... Dans ta routine, tu utilises plusieurs variables (setq). Pour éviter de les mettre à nil au début de la routine, tu peux les déclarer. Comment déclarer des variales, et où ?? la première ligne de ton code est (en général) la fonction defun (DEfine FUNction). (defun nom_de_la_fonction (arguments / variables_locales)) Voilà où tu dois mettre tes variables locales. Pour ton premier programme, ce serait ça : (defun c:test (/ lst nbrelts p_dep nbr_supp i lst2 lst1 lst_final) ...) Déclarer tes variables signifie en quelque sorte lister toutes les variables qui servent au programme, mais qui ne servent pas en dehors. Lorsque ton programme est fini, toutes les variables inscrites ici seront mises à nil. Si tu ne déclares pas tes variables, et ça tu l'as compris puisque tu as mis certaines variables à nil avant de les utiliser, elles peuvent encore avoir une information lorsque tu démarres ton programme. En plus déclarer ses variables est très pratique pour utiliser les mêmes variables dans tous tes programmes ! par exemple toutes mes listes se nomment lst, mes chaînes de caractères str, etc... Rappel de la définition de la fonction defun (defun nom_de_la_fonction (arguments / variables_locales)) Un argument est un paramètre de la fonction. Presque toutes les fonctions interne utilisées en lisp utilisent des arguments ! Exemple : (setq nom1 definition_de_la_variable1 [nom2 definition_de_la_variable1]) où nom = nom de la variable definition_de_la_variable = Ce que tu mets sous cette variable. Autre exemple : (defun carre (nb) (* nb nb)) Donc pour trouver le carré de 5, tu fais (carre 5), et ça te retourne 25... Pour notre challenge, Gile te propose ceci : (defun delist (lst dep nb / nbrelts ...) ...) Avec lst = liste à modifier dep = Numéro de départ nb = nombre d'éléments à enlever.. Nota : juste un truc, on ne peut pas faire d'arguments optionnels pour des fonctions persos. Par exemple la fonction (substr) : (substr chaîne début [longueur]) Tu vois que la longueur est entre crochet... Eh bien cet argument n'est pas obligatoire. Voilà. Voilà !! A toi de jouer maintenant !! Bon courage.. A bientot. Matt.
-
Attention substr ne fonctionne que pour les chaînes de caractère... Pas pour les listes... Ceci dit, ce que tu demandes est exactement la réponse de ce challenge, mais à l'envers !! Un équivalent à la fonction substr pour les listes... Donc pour ta gouverne, nan !! :) Courage lili !! Petite piste : Au lieu de chercher à supprimer, pourquoi ne pas recréer une liste sans les éléments que l'on souhaite enlever ? ;) [Edité le 5/12/2007 par Matt666] [Edité le 6/12/2007 par Matt666]
-
Bonsoir à toutes et tous, Matt666, merci de ta pensée, mais entre le manque de temps pour s'y pencher vraiment et la marche que j'ai "peur" de franchir, je crains de ne pouvoir rien sortir,... Mais, je suis ce challenge de prés et avec le même intérêt que les autres,.... Je me contente encore d'essayer d'assimiler tout ce que je vois, mais je reste convaincu qu'il faut (comme me dis (gile)) commencer par le bon bout et je compte sur vous pour savoir ou il est ??!!! Désolé de ne pas encore être apte à te suivre . Vivement du temps car ces challenges sont trés utiles pour la recherche et la compréhension. N'y connaissant pas grand chose, je pense cependant qu'il faut te laisser libre dans la pédagogie et la vision que tu as de ce que tu recherches à faire faire (ouh là, même moi j'comprend pas c'que j'veux dire !!??) Enfin si, quand même. NON, c'est ta vision ! Justement, c'est ce que tu cherches, et les questions vont arriver dans ce sens. Promis, j'essaye quelque chose mais attendez-vous au pire,... Bonne nuit.
-
Bred, Oui ma routine est récursive, elle ressemble à remove_ind (ici) et à celle d'Evgeniy (qui, par ailleurs, ne répond pas précisément à l'énnoncé tel que je le donnais réponse 8 mais à ce que je pensais avoir compris réponse 4). Evegeniy, There's a new challenge here, ann you can see this thread [Edité le 5/12/2007 par (gile)]
-
Salut Patrick_35! Ton challenge fait référence à un arbre binaire de données. Ton idée est intéressante. On peut la pousser en faisant la fonction de création de la liste, je sais qu'il existe vl-sort et AutoCAD-strl-sort, mais en se basant sur ce principe on peut faire la fonction qui ajoute un élément dans une liste en le plaçant au bon endroit.
-
Vous voulez quelque chose de prenant ;) Faire l'algorithme d'une recherche dichotomique Par exemple avec cette liste (setq lst '("a" "d" "g" "t" "r")), je recherche la position de "t" dans la liste Cette recherche procède de cette manière Le milieu de la liste est "g" soit (setq mil (fix (/ (length lst) 2))) "t" = "q" non, donc avant ou après "t" < "g" non, donc après "t" > "g" oui --> je prends le milieu de ma liste entre "g" et "r" qui me donne "t" soit (+ mil (fix (/ (- (length lst) mil) 2))) Le but est de faire une recherche rapide et intelligente plutôt que d'utiliser les boucles. Je n'ai pas l'algorithme, mais je pense qu'il va être plaisant à faire @+
-
Donc il s'agit de supprimer, dans une liste (argument 1), à partir de l'indice spécifié (argument 2), le nombre d'éléments successifs (argument 3). Exemple : (setq lst '(1 2 3 4 5 6 7 8 9)) (delst lst 1 2) -> (1 4 5 6 7 8 9) ; supprimé 2 éléments à partir de l'indice 1 (2ème élément) (delst lst 0 3) -> (4 5 6 7 8 9) ; supprimé 3 éléments à partir de l'indice 0 (1er élément) (delst lst 3 2) - > (1 2 3 6 7 8 9) ; supprimé 2 éléments à partir de l'indice 3 (4ème élément) (delst lst 3 12) - > (1 2 3) ; supprimé tous les éléments à partir de l'indice 3 (4ème élément) (delst lst 3 0) -> (1 2 3 4 5 6 7 8 9) ; supprimé aucun élément J'avais déjà une routine pour supprimer les éléments de l'indice n à l'indice m, donc pratiquement rien à changer pour l'adapter ua challenge. Je laisse jouer les autres avant de poster. Please Evgeniy, let some newbies try to answer before posting a reply, it's too easy for you !
-
Raaah là là... Va falloir que je revois ma capacité à établir un énoncé clair... :( En fait je pensais que tout ça était à trouver, justement... Comment faire pour supprimer de la liste un nombre d'éléments donné en partant d'une position dans la liste... Bon... J'ai fait une routine comme suit : (delst lst pos nb) Avec : lst -> La liste à modifier pos -> La position de dépoart nb -> le nombre d'éléments à supprimer. J'ai trouvé qu'il était intéressant d'en faire un challenge, c'est tout ! Mais je voulais pas en dire trop... Faut croire que j'aurais du !! Nan, promis ! ;) Avec la position de départ... Voilà, désolé pour tout ça... PS : Il commence bien ce challenge !!! :mad2: [Edité le 4/12/2007 par Matt666]
-
Ah afin je peux me reconnecter sur cadxp (des petits soucis de server de proxy). Merci de penser à nous Matt. Je vais voir ce que je peux faire de ton challenge, j'aurais certainement quelques questions.... @plus
-
Cadeau de noël !!! :) Petit challenge pas très dur, mais intéressant, je trouve... Donc tout le monde sur le pont ! Il s'agit de supprimer des éléments au sein d'une liste (encore un challenge sur les listes !!). Un exemple est toujours plus probant : Une liste : (1 2 3 4 5 6 7 8 9 10 11 12 23) La routine retourne la même liste sans le 7 8 9. Donc : (1 2 3 4 5 6 10 11 12 23) A l'attaque !!! PS : Ce challenge est un peu visé... Lili, lovecraft et consorts, à vous de jouer !! Allez-y tranquillement, et puis si vous avez besoin d'un coup de main, ya qu'à demander :D ! Bon courage.. A bientot ! Matt. [Edité le 4/12/2007 par Matt666]
-
Bon, j'entame ce challenge ;) Le code qui suit ne fonctionnera que sur une polyligne 3D. Il vous sera demandé un interval en Z qui devra être répété pour placer les points en Z correspondants (exemple tout les 1 mètres, ou 25 mètre (centimètre,...) (defun round_number (xr n / ) (* (fix (atof (rtos (* xr n) 2 0))) (/ 1.0 n)) ) (defun c:z_interval ( / js dxf_ent vla_obj n pt_lst z_value z_min z_max pt_int) (vl-load-com) (princ "\nSélectionnez une polyligne 3D.") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "POLYLINE") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) '(-4 . "[b]<[/b]NOT") '(-4 . "&") '(70 . 112) '(-4 . "NOT>") ) ) ) ) (princ "\nCe n'est pas une polyligne 3D!") ) (setq dxf_ent (entget (ssname js 0)) vla_obj (vlax-ename->vla-object (cdar dxf_ent)) n -1 pt_lst nil ) (if (zerop (getvar "USERR1")) (setvar "USERR1" 1.0)) (initget 6) (setq z_value (getreal (strcat "\nEntrez l'interval en Z [b]<[/b]" (rtos (getvar "USERR1")) ">: "))) (if (not z_value) (setq z_value (abs (getvar "USERR1")))) (setvar "USERR1" z_value) (repeat (fix (vlax-curve-getEndParam vla_obj)) (setq pt_lst (cons (vlax-curve-getPointAtParam vla_obj (setq n (1+ n))) pt_lst)) ) (if (zerop (boole 1 1 (cdr (assoc 70 dxf_ent)))) (setq pt_lst (cons (vlax-curve-getEndPoint vla_obj) pt_lst)) (setq pt_lst (cons (vlax-curve-getStartPoint vla_obj) pt_lst)) ) (while (cdr pt_lst) (setq z_min (round_number (min (caddar pt_lst) (car (cddadr pt_lst))) (/ 1 z_value)) z_max (max (caddar pt_lst) (car (cddadr pt_lst))) ) (while ([b]<[/b] z_min z_max) (setq pt_int (inters (car pt_lst) (cadr pt_lst) (list (caar pt_lst) (cadar pt_lst) z_min) (list (caadr pt_lst) (cadadr pt_lst) z_min) T ) ) (if pt_int (entmake (list (cons 0 "POINT") (cons 100 "AcDbPoint") (cons 10 pt_int) (list 210 0.0 0.0 1.0) ) ) ) (setq z_min (+ z_min z_value)) ) (setq pt_lst (cdr pt_lst)) ) (prin1) ) NB: Le calcul des Z et les points sont traités dans tous les cas dans le SCG. Le code a été testé rapidement.
-
Par contre il peut y avoir plusieurs points sur cette polyligne... Si elle n'est pas linéaire en Z... C'est vrai que c'est un bon challenge !
-
Bonjour, Dans un premier temps ce n'est pas possible avec un polyligne "uniquement un elevation" mais avec une ligne ou une polyligne3D. Je vais voir si je peux faire qques chose. Autrement c'est un bon challenge . @plus
