Tramber Posté(e) le 26 novembre 2004 Posté(e) le 26 novembre 2004 Bonjour à tous les lispeurs. Je cherche à vraiment comprendre logand et n'y arrive pas tout à fait. Quelle est votre vision ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité Patrick Posté(e) le 27 novembre 2004 Posté(e) le 27 novembre 2004 logand signifie "ET Logique". C'est une fonction qui effectue une opération booléenne entre deux nombres exprimés sous forme binaire. Par exemple, la fonction (logand 2 3) renvoie 2. Le chiffre 2 s'écrit 10 en binaire. Le chiffre 3 s'écrit 11. Si tu additionnes 10 et 11 en mode binaire, c'est à dire comme on dit "bit à bit", (désolé), tu obtiens 10, toujours en binaire car si tu combines les deux chiffres du premier rang, 1 et 0 fait 0, (c'est le AND en informatique) et 1 et 1 fait 1 pour le deuxième rang. Résultat binaire = 10, transformé en décimal ça donne 2. Ces opérations booléennes sont assez souvent utilisées par les programmeurs, spécialement dans AutoCAD, par exemple pour savoir quel mode d'accrochage est actif... ;) (voir l'aide AutoCAD sur la variable système OSMODE)
Tramber Posté(e) le 27 novembre 2004 Auteur Posté(e) le 27 novembre 2004 En fait, là, c'est pour faire du DCL, mais peu importe, on voit en effet que ca sert à retrouver des valeurs de bit. Mais dieu que le concept parait tordu à un non informaticien. 4 s'écrit 101 ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité Patrick Posté(e) le 27 novembre 2004 Posté(e) le 27 novembre 2004 Non 4 en décimal s'écrit 100 en binaire...c'est à dire 2^2 (2 puissance 2). Seul le troisième rang est à 1, le rang puissance 1 et puissance 0 sont à zéro, en fait, tu écris les puissances de 2 de droite à gauche en partant de zéro, 100 en binaire se décompose donc comme suit: (1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 100 en binaire Bon weekend quand même ;) C'est sûr que c'est de l'informatique pure et dure.
Tramber Posté(e) le 27 novembre 2004 Auteur Posté(e) le 27 novembre 2004 http://images.google.fr/images?q=tbn:WvdKIBmkftMJ:www.oiq.qc.ca/etudiant/images/image39.gif Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 29 novembre 2004 Posté(e) le 29 novembre 2004 SalutPour essayer de simplifier les explications de Patrick --------------ENTIER 8 BITS----------------------------------------------------- |BINAIRE |128|64|32|16|8|4|2|1| DECIMAL|00000101|--0|-0|-0|-0|0|1|0|1| 4+1=5|00100010|--0|-0|-1|-0|0|0|1|0| 32+2=34|01001001|--0|-1|-0|-0|1|0|0|1| 64+8+1=73|11111111|--1|-1|-1|-1|1|1|1|1| 128+64+32+8+4+2+1=255 @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 29 novembre 2004 Posté(e) le 29 novembre 2004 je ne sais pas si ça peut intéresser j'avais fait un lisp qui donne les puissances des nombres (mais qui ne m'a pas servi...) :exemple : 2500- -> (2 6 7 8 11) soit 2^ 2+2^ 6+2^ 7+2^ 8+2^ 11 ;****************************************; ---------Décomposer binaire ---------- ;****************************************;by Ludwig Desmier(defun c:bin (/ NB n LISTn)(setq NB (getreal "\nEntrez le réel :\n"))(setq n 14) ; attention ne pas mettre plus car après 2^15 est un nombre trop grand pour autocad --> erreur fatale(while (> NB 0) (while (<= (+ NB 1) (expt 2 n)) (setq n (- n 1))) (setq NB (- NB (expt 2 n))) (setq LISTn (cons n LISTn))) (print LISTn)(print)) Autocad 2021 - Revit 2022 - Windows 10
bonuscad Posté(e) le 29 novembre 2004 Posté(e) le 29 novembre 2004 Pour ceux qui veulent manipuler les bits, vous trouverez des procédures lisp interessantes à http://www.autolisp-tutorial.mapcar.net/bits1.htmlhttp://www.crlf.de/Dokumente/Logical%20LISP.html Ca peut aider a comprendre l'utilisation des opérateur booléen. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 29 novembre 2004 Auteur Posté(e) le 29 novembre 2004 Merci à tous, on va regarder ça tranquillement ;) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
LUDWIG Posté(e) le 29 novembre 2004 Posté(e) le 29 novembre 2004 Ich spreichst nicht deutsch Autocad 2021 - Revit 2022 - Windows 10
bonuscad Posté(e) le 29 novembre 2004 Posté(e) le 29 novembre 2004 NIne (orthographe ?) Mais les procédures lisp sont internationales.Je pense que celle ci sont assez abouties pour que l'on puisse s'appuyer sur ce qu'elle retourne comme résultat En plus elles ne comportent aucun message en allemand. Mais pour notre ami Alsacien c'est du choucroute garnie ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 29 novembre 2004 Auteur Posté(e) le 29 novembre 2004 Du m'édonnes, mais che parle plutot Hanglais !On va allez voir ça. En glissant le code dans Vlisp, ca me parlera bien... Arrêtons de nous plaindre quand même, nous sommes parmis les mauvais élèves de l'Europe. Sauf en Alsace, où les gens sont souvent bilingues (disons, ont de grosses facilités avec l'Allemand, dont l'Alsacien est issu). Mais moi, qui suis des Flandres (Mein Vlaeke Land...). [Edité le 30/11/2004 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 29 novembre 2004 Posté(e) le 29 novembre 2004 Ah, une petite carbonnade et un flamiche au maroilles.... :cool: Et je suis en ce moment au régime galette saucisse, m'enfin...:angel: @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Serge Posté(e) le 29 novembre 2004 Posté(e) le 29 novembre 2004 Tramber, D'abord un extrait de l'aide sur la variable OSMODE. Type : EntierEnregistrée dans : Base de registresValeur Initiale : 4133Définit les modes d'accrochage aux objets actifs à l'aide des codes binaires qui suivent : 0 AUCun1 EXTrémité2 MILieu4 CENtre8 NODal16 QUAdrant32 INTersection64 INSertion128 PERpendiculaire256 TANGente512 PROche1024 RAPide2048 Intersection PROJetée4096 EXTension8192 PARallèle Pour spécifier plusieurs modes d'accrochage aux objets, entrez la somme de leurs valeurs. Par exemple, l'entrée de la valeur 3 spécifie les accrochages aux objets Extrémité (code binaire 1) et Milieu (code binaire 2). La valeur 16383 spécifie quant à elle tous les accrochages aux objets. Quand les accrochages aux objets sont désactivés à l'aide du bouton Accrobj de la barre d'état, le code binaire 16384 (0x4000) est renvoyé, en plus de la valeur normale d'OSMODE. Cette valeur supplémentaire permet aux développeurs d'écrire des applications pour AutoCAD et de distinguer ce mode des modes d'accrochage aux objets désactivés à partir de la boîte de dialogue Paramètres de dessin. Si vous affectez une valeur à ce bit, les modes d'accrochage aux objets actifs sont désactivés. Attribuer une valeur à OSMODE alors que ce bit est désactivé active les modes d'accrochage aux objets actifs. ======================================== Ensuite, le mot octet vient de l'utilisation de groupe de 8 chiffres, soit des zéros ou des uns. Lorsque je jouais au bowling, j'avais toujours l'impression d'écrire mon score en binaire (mais ça c'est une autre histoire). ======================================== La raison d'avoir choisi des nombres binaires est simple Ça permet de faire des combinaisons ou de vérifier plus facilement. Ci après la représentation binaire et décimale des mêmes modes d'accrochage. Binaire - Décimal - Signification00000000000000 - 0 AUCun00000000000001 - 1 EXTrémité00000000000010 - 2 MILieu00000000000100 - 4 CENtre00000000001000 - 8 NODal00000000010000 - 16 QUAdrant00000000100000 - 32 INTersection00000001000000 - 64 INSertion00000010000000 - 128 PERpendiculaire00000100000000 - 256 TANGente00001000000000 - 512 PROche00010000000000 - 1024 RAPide00100000000000 - 2048 Intersection PROJetée01000000000000 - 4096 EXTension10000000000000 - 8192 PARallèle Si tu veux rendre tous les modes actifs, tu t'assure qu'il y aura un 1 à chaque position. C'est le rôle d'un logior: 0 ou 0 donne 0, 1 ou 0 donne 1, 0 ou 1 donne 1 et 1 ou 1 donne 1. Tu peux donc faire (setvar "osmode" (logior (getvar "osmode") 16383))Ceci est un cas extrême, mais si tu avais voulu allumer CENtre et laisser les autres actifs, tu aurais déclaré (setvar "osmode" (logior (getvar "osmode") 4)). Note: La somme de tous ces chiffres est le dernier de la suite, multiplié par 2, moins 1. Dans l'exemple, la somme de 1 jusqu'à 8192 est donc (8192*2)-1, soit 16383. Pour le logang (et non logiand), cela te permet de savoir un un bit était allumé ou non: 0 et 0 donne 0, 1 et 0 donc 0, 0 et 1 donne 0 et 1 et 1 donne 1. Ainsi, si tu voulais savoir si le mode CENter était allumé, tu dirais: (if (logand (getvar "osmode") 4) ....)Comme 4 est en fait 00000000000100, tous ces zéros vont annuler les 1 présent dans le (getvar "osmode"). Seul le 1 va pouvoir se confronter à ce que vaut le getvar. Serge
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