Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous!

 

Question à deux volets.

 

1 - Je veux sortir la longueur de la corde d'un arc avec la formule suivante: Lc= 2r*sin alpha/2

 

 "\\PCord = " (rtos (rad 2) (/ 2( sin alpha )) 2 3)

 

Bien sur ça ne fonctionne pas ?

 

2 - Comment installer un compteur pour le segment en question ?

 

A+

Acadnadien

Posté(e)

Il y a du faux.

 

RTOS valeur mode précision

or toi tu écris

RTOS valeur valeur mode précision

 

Autre erreur (/ 2 valeur) n'est pas bon. Préfère (/ 2.0 valeur). C'est la garantie d'avoir au moins un nombre réel. Toujours se méfier des entiers dans une division.

 

Par ailleurs, je ne connais pas de fonction RAD.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Salut,

 

Il semble qu'il te manque les bases fondamentales de la syntaxe du LISP, tu peux voir ce sujet.

 

Typiquement, un appel de fonction a la forme :

(fonction [argument ...])

Le premier terme de la liste est une fonction les termes suivants les arguments pour cette fonction.

Les fonctions LISP natives sont décrites dans l'aide aux développeurs avec le nombre, le type et l'ordre des arguments suivant les fonctions.

 

Les arguments peuvent être aussi des appels de fonction c'est une imbrication d'expressions et ce sont les parenthèses qui déterminent quelles expressions sont évaluées en premier.

Il n'y a pas en LISP d'opérations prioritaires comme en langage mathématique ou avec les calculatrices.

Les priorités doivent être spécifiées explicitement à l'aide de parenthèses :

En langage mathématique on peut écrire a * b + c sans équivoque : la multiplication sera effectuée avant la somme, par contre il faut écrire a * (b + c) pour que la somme soit effectuée avant.

En LISP on imbrique systématiquement les opération à effectuer en premier :

 

a * b + c => (+ (* a b) c)

a * (b + c) => (* a (+ b c))

 

Tu veux implémenter la formule : c= 2r*sin alpha/2

Il faut d'abord évaluer alpha/2 pour pouvoir passer ce résultat à la fonction sinus et ensuite passer le résultat de la fonction sinus à la multiplication.

 

alpha/2 s'écrit en LISP (/ alpha 2.)

 

sin (alpha/2) s'écrit donc (sin (/alpha 2.))

 

et 2r*sin alpha/2 s'écrit (* 2 rad (sin (/ alpha 2.)))

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

Posté(e)

(gile) a bien du courage :cool:

J'espère qu'il fait des copier-coller !

 

Donc, reprenons, (rad 2) ne signifie rien même si rad est une variable.

et

(rtos (rad 2) (/ 2( sin alpha )) 2 3) a un argument de trop

 

Pour ta quesion 2 : pas compris :P

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

un compteur pour le segment en question ?

 

Cela me laisse supposer que tu parles de segment de polyligne/arc.

 

Dans ce cas pas besoin de calculer la corde, c'est simplement la (distance vertex_n vertex_n+1)

 

 

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

Posté(e)

Merci! Gile

 

Il semble qu'il te manque les bases fondamentales de la syntaxe du LISP

pour ton mini cours, je garde tes instructions en copie.

 

Merci également Tramber pour tes précieux conseils.

 

Salutations !

Acadnadien

Posté(e)

Salut bonuscad !

 

Cela me laisse supposer que tu parles de segment de polyligne/arc.

 

Dans ce cas pas besoin de calculer la corde, c'est simplement la (distance vertex_n vertex_n+1)

 

 

T'as raison c'est ce que je voulais calculer (la corde ) !

J'ai tapé ce qui suit :

 

"\\PCord = " ((distance vertex_n vertex_n+1) 2 3) "

 

Ça as donné ?

 

; error: bad argument type: 2D/3D point: nil

Acadnadien

Posté(e)
Salut bonuscad !

 

Cela me laisse supposer que tu parles de segment de polyligne/arc.

 

Dans ce cas pas besoin de calculer la corde, c'est simplement la (distance vertex_n vertex_n+1)

 

 

T'as raison c'est ce que je voulais calculer (la corde ) !

J'ai tapé ce qui suit :

 

"\\PCord = " ((distance vertex_n vertex_n+1) 2 3) "

 

Ça as donné ?

 

; error: bad argument type: 2D/3D point: nil

 

As-tu une idée de quel manière je pourrais sortir cette distance ?

 

Merc A+

Acadnadien

Posté(e)

Salut,

 

Le problème est qu'on ne sait pas de quoi tu part (excepté ce qu'on peu imaginer de ton niveau actuel en LISP) ni précisément où tu veux arriver.

 

Dans l'expression :

 

(distance vertex_n vertex_n+1)

vertex_n et vertex_n+1 sont des variables à qui il faut attribuer une valeur (de type point 2d ou 3d dans ce cas) avant de les utiliser.

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

Posté(e)

Salut Gile

 

Le problème est qu'on ne sait pas de quoi tu part (excepté ce qu'on peu imaginer de ton niveau actuel en LISP) ni précisément où tu veux arriver.

Pour ce qui est de la longueur de la corde cherchée, j'ai trouvé un autre moyen d'y arriver.

 

"\\PCord = "(rtos ( distance pt_start pt_end) 2 3)

Ça fait la job comme on dit chez nous.

 

Bon je reveins sur mon deuxième volet.

 

2 - Comment installer un compteur pour le segment en question ?

J'ai essayé "\\Courbe= "no","no +1"

 

Mais je ne sais pas comment y introduire la chaine de carractère ou variable pour y arriver ?

 

En attente d'une réponse, merci!

Acadnadien

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é