(gile) Posté(e) le 8 mars 2006 Posté(e) le 8 mars 2006 La notion de "param" utlisée dans les fonctions (vlax-curve...) reste assez obscure pour moi (et il me semble que je ne suis pas le seul). En effet, vlax-curve-getParamAtPoint (par exemple) ne renvoie pas le même type d'information suivant le type d'entité à laquelle elle est appliquée. Bonuscad a éclairé ma lanterne avec ce LISP en ce qui concerne les param des polylignes. Je propose de regrouper dans ce fil les connaissances et découvertes de chacun à ce sujet. Dans les exemples suivants, obj est un vla-object correspondant au type d'entité de l'exemple et pt un point situé sur cet objet (les coordonnées de pt sont toujours dans le SCG). Pour les lignes (vlax-curve-getParamAtPoint obj pt) retourne la distance du point de départ de la ligne à pt. Pour les polylignes (lw ou 3D) -grâce aux lumières de Bonuscad- Les "params" entiers (0.0 1.0 2.0 ...) correspondent aux sommet de la polyligne. (vlax-curve-getPointAtParam obj 2.0) retourne les coordonnées du troisième sommet de la polyligne. Entre deux entiers, la décimale correspond à la proportion de la distance entre les sommets à laquelle se trouve le point par rapport au sommet précédent. (vlax-curve-getPointAtParam obj 1.5) retourne les coordonnées du point au milieu des deuxième et troisièmes sommets. Pour les cercles et les arcs param correspond à l'angle, en radians entre le rayon passant par le point et l'axe des X du SCG mesuré dans le sens trigonométrique (quelques soient les réglages de ANGDIR et ANGBASE) Pour les ellipses et arcs elliptiques Param correspond au paramètre de l'ellipse. Le paramètre d'une ellipse est l'angle entre le grand axe (du centre au point de départ) et la ligne qui joint le centre à l'intersection de la projection perpendiculaire au grand axe du point avec le cercle de même centre et d'un rayon égal au demi grand axe (ou l'intersection de la projection parallèle au grand axe du point avec le cercle de même centre et d'un rayon égal au demi petit axe). C'est aussi une méthode de traçage des ellipses consistant à tracer deux cercles concentriques de rayons égaux respectivement au demi grand axe et au demi petit axe et ensuite pour chaque rayon tracé à projeter l'intersection du rayon avec le petit cercle parallèlement au grand axe et celle avec le grand cercle perpendiculairement au grand axe, l'intersection de ces deux lignes est un point de l'ellipse. Le rapport entre le paramètre de l'ellipse et l'angle entre le grand axe et la ligne joignant le centre au point peut s'écrire sous la forme de l'équation : tg Angle = tg Param * (petit axe / grand axe) Pour les autres entités ? Je ne vois pas, je bute toujours ... ... j'espère que d'autres viendront compléter la liste et/ou corriger les bétises que j'ai pu dire. [Edité le 9/3/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 9 mars 2006 Posté(e) le 9 mars 2006 Bravo Apparemment, sur la spline, le EndParam correspond à la longueur.C'est tout ce que j'ai pu trouver. Au passage, je viens, par erreur, de faire un EndParam sur une entité lisp (et non Vlisp),....et ca marche aussi. Amusant. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 9 mars 2006 Auteur Posté(e) le 9 mars 2006 Quote Apparemment, sur la spline, le EndParam correspond à la longueur le EndParam peut-être, mais d'après ce que j'ai pu voir hier soir (mais j'étais fatigué) le ParamAtPoint ressemblait à la longueur, mais c'était pas tout à fait çà. il faudrait comparer (vlax-curve-getParamAtPoint obj pt) et (vlax-curve-getDistAtParam obj (vlax-curve-getParamAtPoint obj pt)) J'essayerai ce soir. Là, je suis au boulot, et pas du tout sensé être devant un ordi ! [Edité le 9/3/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 9 mars 2006 Auteur Posté(e) le 9 mars 2006 Après quelques essai sur des splines : (vlax-curve-getParamAtPoint spline pt) sur les points de lissage retourne la longueur cummulée des segments de droite rejoignant ces points. par exemple :(vlax-curve-getEndParam spline) retourne la même valeur que :(vlax-curve-getDistAtPoint pline (vlax-curve-getEndPoint pline)) où pline est la polyligne (lw sans arcs ou 3D) dont les sommets sont confondus avec les points de lissage de la spline. http://img425.imageshack.us/img425/4650/param45uf.png Entre les points de lissage, le mystère reste entier pour moi. Le ParamAtPoint au milieu de deux points de lissage ne correspond ni à la distance jusqu'au milieu du segment correspondant ni à la longueur d'une poly qui finirait sur ce point. http://img512.imageshack.us/img512/9246/param55pi.png http://img333.imageshack.us/img333/6151/param67ka.png PS : Je confirme les fonctions vlax-curve acceptent aussi bien les arguments de type ENAME ou VLA-object.Par curiosité, j'ai essayé un vlax-3d-point à la place d'un "point 2D/3D", là, çà marche pas. [Edité le 9/3/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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