Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

Je n'arrive pas à récupérer le dernier point cliquer après la demande de getdist (si on donne la distance en cliquant s'entend) :

 

 (setq H (getdist "\n Hauteur :))
(setq pt (getvar "LASTPOINT"))

 

... ne marche pas ... et je ne vois pas pourquoi ....

 

merci

 

 

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

... eh ben non !!! ...

merci mais ça ne me va pas :

 

getdist me permet de rentrer une distance clavier OU 2 points ... et je veux garder ces possibilités (surtout de pouvoir rentrer une distance clavier) ...

 

Mais au cas ou la distance est calculé grâce au choix de 2points, je veux récupérer le dernier point cliquer pour le traiter ...

 

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Peut être en utilisant une fonction (getdist) redéfinie !

 

Exemple (possible qu'il faille encore l'affiner après quelques tests, je pense à equal avec un fuzz)

 

(defun my_getdist ( / pt h pt_snd)
(if (equal (setq pt (getpoint)) (polar (getvar "lastpoint") (angle (getvar "lastpoint") pt) (distance (getvar "lastpoint") pt)))
	(setq h (distance (getvar "lastpoint") pt))
	(progn
		(setq h (distance pt (setq pt_snd (getpoint pt "\nSpécifiez le deuxième point: "))))
		(setvar "lastpoint" pt_snd)
	)
)
h
)

 

Voilà au lieu d'utiliser (getdist), tu utilises (my_getdist) ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Super, merci, les premiers test semble fonctionner ...

 

par contre ton "fuzz" m'echappe ... l'aide en parle en anglais et perso je suis assez mal pourvu en langues... ça à l'air d'un argument de niveau d'aproximation ou je n'ai vraiment rien compris ???

 

De plus, dans ton lisp le h à la fin m'échappe ... ou alors c'est un raccourci de (print h) ???

 

merci encore ...

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

ça à l'air d'un argument de niveau d'aproximation

 

Tout à fait, c'est une tolérance de comparaison que l'on fixe comme on veut

ex: 1E-08 pour une tolérance de 8 chiffres après la virgule.

 

le "h" à la fin est pour être sur que la fonction retourne la valeur de h et non pas par exemple l'assignation de pt_snd à LastPoint qui pourrait être la dernière évaluation suivant la saisie effectuée.

 

donc (setq hauteur (my_getdist)) affectera bien à "hauteur" la valeur de la variable h (dernière évaluée) bien qu'elle soit remise à nil (variable locale) à la fin de la fonction (my_getdist).

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

dans ton lisp le h à la fin m'échappe ... ou alors c'est un raccourci de (print h) ???

 

(defun c:pourvoir ()
(setq h 10)
(alert "regarde bien ce qui va s'afficher en retour de la routine")
h
)

 

(setq i (c:pourvoir)), ainsi i récupère la valeur 10. C'est ce qu'on appelle la "valeur en retour", un fondement du lisp.

 

Dire que c'est un raccourci de princ n'est pas si faux, sauf que princ ne prends que des chaines de caractères.

 

[Edité le 22/6/2006 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Merci à vous deux pour vos explication.

 

bonuscad : je comprend le fonctionnement de donner une tolérance, mais ce n'est que pour l'affichage en ligne de commande, non ?, parceque personnelement, plus je suis "juste" dans mes variables, mieux je me sens, et donc avoir un variable avec une multitude de chiffre après la virgule me permet d'être on ne peu plus juste dans les données rentrés (ici ma hauteur...)

 

 

Tramber : ça faisais longtemp que tu ne t'étais plus occupé de répondre à mes souci... ça fait plaisir !!!

J'ai testé ta routine, et elle me permet trés bien de comprendre mon interrogation précedente, et je ne connaissais pas la "valeur de retour"... ça me plait bien ... merci

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

La précision d'AutoCAD (14 décimales) est forcément altérée par certaines opérations, par exemple les rotations de SCU.

 

Dans un SCU pivoté de 90° sur l'axe des X, on fait un point à 0,1000,0.

Ses coordonnées dans le SCG sont "théoriquement" 0,0,1000.

Or quand on interroge la liste dxf de ce point on note une "imprécision".

 

Extrait de la Fenêtre de texte.

 

Commande: scu

Nom du SCU courant: *GENERAL*

Spécifiez l'origine du SCU ou

[Face/NOMmé/OBjet/Précédent/Vue/Général/X/Y/Z/axEZ] : x

Spécifiez l'angle de rotation autour de l'axe X : 90

Commande: point

 

Modes point courants: PDMODE=34 PDSIZE=-3.0000

Spécifiez un point: 0,1000

 

Commande: (cdr (assoc 10 (entget (entlast))))

(0.0 [surligneur]2.22045e-013[/surligneur] 1000.0)

 

Il est donc nécessaire de laisser une tolérence quand on compare l'égalité ente 2 points :

 

(equal (cdr (assoc 10 (entget (entlast)))) '(0 0 1000)) retourne nil

 

(equal (cdr (assoc 10 (entget (entlast)))) '(0 0 1000) 1e-9) retourne T

 

Personnellement, par expérience, avec 1e-9 (le milliardième) je n'ai jamais encor été pris en défaut.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

merci (gile)...

c'est bon à savoir (et je pense que j'ai dû déjà le rencontrer, et je me suis énervé parceque ça ne marchait pas...)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

C'est dans le equal

 

Je m'en doute, mais je ne vois que çà :

 

(equal (setq pt (getpoint)) (polar (getvar "lastpoint") (angle (getvar "lastpoint") pt) (distance (getvar "lastpoint") pt)))

 

AU TEMPS POUR MOI :

 

J'avais mal lu ! C'est seulement une suggestion, je croyais que Bonus l'avait mis et que je ne voyais pas :P

 

[Edité le 23/6/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci pour ce lien,

 

J'étais persuadé jusque là que "Autant pour moi" était incorrect et je m'évertuais à utiliser "Au temps pour moi", en connaissance de ses origines militaires malgré le fait que je fus objecteur de conscience.

 

Extraits du "Petit Robert" qui reste une référence en matière d'expressions :

 

À "temps"

Au temps pour moi : se dit lorsqu'on admet son erreur (souvent écrit à tort autant pour moi).

 

À "autant" :

Loc. fam. (incorrect, par confus. avec au temps pour moi) Autant pour moi : je reconnais que je me suis trompé.

 

[Edité le 23/6/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é