Aller au contenu

Reflexions sur pages1à3 de rimbo


Labletech

Messages recommandés

Dans le cadre des informations fondamentales introduites par rimbo dans son pdf que j'ai nommé pages1à3, je pense qu'il peut être interessant d'ajouter ces éléments (à vous d'en ajouter d'autres en rapport avec les pages1à3)

 

.1. Reflexions complémentaires sur les symboles:

.1.a. L'apostrophe:

 

l'apostrophe est l'outil qui permet de nommer un symbole et ainsi de véhiculer son nom ou son image . Ainsi '(10 50 0) est l'image concrète d'une liste (10 50 0) qui aurait été fabriqué avec (list 10 50 0). Ce genre de raccourci ne va marcher que pour des valeurs algébriques ou textuelles (entiers, réels, chaine de caractères).

 

PAr contre ca ne marchera pas pour des symboles - en effet '(a b c) n'est pas identique à (list a b c).

(setq a 1 b 2 c 3)

alors (list a b c) retourne (1 2 3)

et '(a b c) retourne (A B C).

En effet l'image de (a b c) est constituée des symboles A , B et C et non de son contenu.

 

On en revient à cette histoire de pointeur haut et bas.

 

(setq ra 1 rb 2) attribue au pointeur haut de ra et rb , les valeurs 1 et 2.

(setq ra 'rb) attribue au pointeur haut de ra le nom ou l'image du symbole RB et ce faisant, il va aussi attribuer au pointeur bas de ra le pointeur de haut de rb c'est à dire sa valeur donc 2.

j'évalue alors le pointeur haut de ra:

je tape !ra ou encore (eval 'ra) --------------------------->> j'obtiens RB (le nom de RB)

j'évalue ensuite le pointeur bas de ra:

je tape (eval ra) ou encore (eval (eval 'ra))------------>> j'obtiens 2 (le pointeur bas de ra correspond au pointeur haut de rb).

 

Manipuler les noms de symboles peut s'avérer très pratique parcequ'il permet de différer l'évaluation d'un symbole.

En effet le symbole ra est inerte après une 1ère évaluation alors qu'il devient interessant après une double évaluation.

La notation symbolique permet donc de véhiculer des symboles qui portent des informations beaucoup plus puissantes qu'une simple valeur numérique ou littéraire.

 

Formateur

ATC Autocad - Mechanical - Inventor - Electrical

Lien vers le commentaire
Partager sur d’autres sites

.2. Exemple d'application sur l'apostrophe:

 

Le 1er exercice de rimbo est interessant à ce titre. Attention ne nous méprenons pas je vous invite seulement à réfléchir dans la continuité et de façon plus approfondie sur le cours débutant lisp de rimbo. Il y a bien-sûr d'autres façons plus poussées de résoudre l'exercice de rimbo.

Ecrire une ligne(je suppose horizontale) de 45 de long après avoir saisi le point de départ.

en macro classique j'écrirai _____________^c^c_line;\@45,0;

en autocad piloté par lisp j'écrirai _________(command "_line" (getpoint) "@45,0" "")

 

Un ordre lisp est une liste (opérateur opérande1 ...)

Et bien si j'affecte à un symbole L45 le nom de la liste précédente:

 

(setq L45 '(commande "_line" (getpoint) "@45,0" ""))

 

le symbole L45 sera inerte et si je veux son pointeur haut (je tape !L45) il me donne l'image de la ligne de commande

 

Mais si je veux son pointeur bas, le fait d'écrire (eval L45) lance réellement l'ordre attendu.

Un simple symbole devient donc une vrai fonction. Un symbole va donc pouvoir contenir une fonction.

 

Maintenant on peut pousser plus loin le raisonnement la chaine de caractère "@45,0" représente un point.

Imaginer une liste comme celle-la:

(setq l_point (list "@45,0" "@0,45" "@-45,0" "c"))

un début d'ordre comme ca:

(setq ordre '(command "_line" (getpoint)))

 

Si on complète ordre de la façon suivante (setq ordre (append ordre l_point))

 

alors (eval ordre) fait un joli carré de 45 de coté.

Les principes étant posés on imagine sans peine que l'on puisse fabriquer une liste comme l_point dont le nombre de points peuvent être variables et dans ce cas on a déjà un outil sympa permettant de tracer des polygones variables.

 

J'espère maintenant qu'on pourra voir ainsi différemment mes histoires de pointeurs haut et bas. (qui sont à la base de ces principes)

Formateur

ATC Autocad - Mechanical - Inventor - Electrical

Lien vers le commentaire
Partager sur d’autres sites

RRRRRRRhhhhhhhh (pas le film ) ça fais deux fois que j'écris je me suis planter tout a l'heure. :mad:

Donc chapeau bas à toi Labletech, mais tu comprends que je ne pouvais pas donner cette explication pour deux raisons :

1) Je ne connaissais rien de ce que tu viens de parler (je suis un débutant et m'adresse à des débutants...)

:red: 2)

Il faut d'abord une approche très facile et d'ailleurs ce qui ne peuvent pour le moment pour le moment ce que tu as très bien expliquer ( j'ai compris ;) ) ne seront pas larguer et avancerons à leur rythme et pour ceux qui suivent progresse énormément d'un coup grâce à tes compétences, donc je ne le rajouterais pas dans le cours mais par contre tu pourrais faire une page de complèment au cours appeller comme tu veux (complément cours 1 ou autres...)

 

En tout cas continue cars sa progresse dur, je me sens pousser des ailes... ;) :yltype: :yltype:

Cordialement

 

Lionel PERRIN | Ingénieur/Consultant Formateur expert Infrastructure - Géomédia

 

Civil 3D/Covadis/Autopiste/Infraworks 360 - VRD/Infrastructure routière ferroviaire Bus TRAM

Lien vers le commentaire
Partager sur d’autres sites

FONDAMENTAL

 

J'ai été très heureux de lire les réponses de notre camarade Lab le technicien.

 

La meilleure facon de le dire, c'est quand le lisant, je me suis rappelé une fonctionnalité que j'ai utilisé + d'une fois mais pas assez, j'en suis sûr.

 

2 avantages :

 

(setq l_point (list "@45,0" "@0,45" "@-45,0" "c")) est facile à construire mais surtout, à agrandir.

 

En procédent ainsi, les variables peuvent être beaucoup moins nombreuses, c'est tjs un avantage.

 

Donc Labletech nous fait un cours de haut niveau, avec des histoires de pointeurs, et il a raison. Comme un bon cours d'université, on va l'admirer et l'oublier. Pour en retenir le meilleur:

(eval ....) est une super fonction.

 

Merci et merci à Rimbo pour s'être ainsi lancé.

Si j'ai suivi, Rimbo a changé de nom.

 

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

tu parles de la petite magie effectué plus haut.... ;)

 

faut tout que je revoie donc

(setq l_point : si je décortique pour bien comprendre c'est variable l et commande _point et sa coordonnées.

 

Je trouve que j'ai du mal quand même...

Cordialement

 

Lionel PERRIN | Ingénieur/Consultant Formateur expert Infrastructure - Géomédia

 

Civil 3D/Covadis/Autopiste/Infraworks 360 - VRD/Infrastructure routière ferroviaire Bus TRAM

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é