Aller au contenu

Param selon objets


(gile)

Messages recommandés

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)

 

Ellipse_parameter.png

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

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é