pierrevigneux Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 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
Tramber Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 Il y a du faux. RTOS valeur mode précisionor toi tu écrisRTOS 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 ./__\. (.°=°.)
pierrevigneux Posté(e) le 4 mars 2010 Auteur Posté(e) le 4 mars 2010 Bonjour Tamber Par ailleurs, je ne connais pas de fonction RAD RADEst une variable prédéterminée qui correspond au rayon. [Edité le 4/3/2010 par pierrevigneux] Acadnadien
(gile) Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 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/2Il 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
Tramber Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 (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 ./__\. (.°=°.)
bonuscad Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 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
pierrevigneux Posté(e) le 5 mars 2010 Auteur Posté(e) le 5 mars 2010 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
pierrevigneux Posté(e) le 5 mars 2010 Auteur Posté(e) le 5 mars 2010 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
pierrevigneux Posté(e) le 5 mars 2010 Auteur Posté(e) le 5 mars 2010 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
(gile) Posté(e) le 5 mars 2010 Posté(e) le 5 mars 2010 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
pierrevigneux Posté(e) le 6 mars 2010 Auteur Posté(e) le 6 mars 2010 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
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