Aller au contenu

J\'ai reçu mon bouquin et je m\'éclate, mais...


DenisHen

Messages recommandés

Salut à tous ! !

 

Ca y est ! ! j'ai reçu le bouquin de M. Contensou : "La CAO par le menu Lisp" ! !

 

Et je m'éclate ! !

 

Je n'intègre pas correctement tous à la première lecture... Mais je commence à comprendre le Lisp ! ! Comme dans l'exemple de Gile pour dessiner une flèche en une polyligne avec 2 points... Je l'ai même amélioré...

 

La preuve :

(defun c:Branchement (/ p1 p2 p3 p4) ; je l'ai renommée, c'est même la première chose que j'ai fait  
(initget 1)
(setq p1 (getpoint "\nLimite du lot : "))
(initget 1)
(setq p2 (getpoint p1 "\nRéseau: "))
(setq p3 (polar p1 (angle p2 p1) 1))
(setq p4 (polar p3 (angle p2 p1) 0.5))
(command "_.pline" "_non" p4 "_w" 0.0 0.5 "_non" p3 "_w" 0.1 0.1 "_non" p2 "")
(princ)
)

 

Ah ah, Maintenant, j'essai de dessiner un carré par 2 point (une arrête) puis un troisième point, qui définira de quel coté le carré (ou rectangle) sera dessiné...

le p3 pourra être une distance ( positive, dessin à droite / négative; dessin à gauche..

taille du rectangle : distance du point p3 à la droite p1-p2...

 

....

 

Je me creuse mais je vais trouvé ! !

 

Denis...

 

 

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Oui, thierryd , j'ai bien la version pour la R10.... Avec la gestion de mémoire pour éditer depuis Autocad un fichier (Acad.lsp) avec la commande EDIT,64000, acad.lsp...... Que de souvenirs...

 

Mais il y a un truc que je n'ai pas bien saisi, pour "cond", comment fait-t'on s'il y a deux condition

exemple en VB:

ça donnerait If angle > 300 OR angle < 100 THEN Ya=0 ? ?

 

Mais en Lisp ? C'est çà ?

 

(cond (> anngle >300)(< angle 100)

(= Ya angle)

)

 

???

 

Merci d'avance...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

(if (and (> anngle 300)(

(remarque au passage que c'est dur d'être >300 et

 

Sinon, le cond, c'est

(cond( (> anngle300)....); si sup à 300

((

(T ......)); ou bien encore...

 

Ce qui n'a rien à voir.

 

[Edité le 7/4/2006 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Gile ? ? ? En lisp on a "or" ? ? ? Woaw, je ne le savait pas... ( mon bouquin ne le dit pas)

Mais ils s'utilises comment ?

 

Car le bouquin de "Compt en sous" ne me parle pas de (cond...) et de (and) au pluriel...)

 

Tu me répondra qu'il date du quaternaire... Et qu'à cette époque... Le lisp ne comportait qu'une vingtaine de commande... (( (( (( (( JE RIGOLE )) )) ) ))) ( <-comptes le nombre de parenthèses ;-) c'est super important...)

 

 

(Ma première leçon c'est : S'il n'y a pas "cond" "((" est faux ! !, Non ?

 

Mais s'il doit il y avoir plusieur "cond" ? ? Comment faire ? ?

 

Et quoi qu'en pense BonusCad ?

 

Merci à vous...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Tamber, je pense que tes yeux ont lu trop vite... C'est supérieure à OU inférieur à 100, C'est OU et non pas ET.... L'erreur n'est que pour les novices.. Pour les maitre, c'est une inatantion, dû à leur rang.... N'ai crainte.... Rien n'ébranle ton édifice...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Pour compléter ton bouquin, tu peux voir les liens donnés dans ce sujet et aussi consulter l'aide aux dévellopeurs AutoLISP References -> AutoLISP Functions, toutes les commandes y sont décrites (en anglais certes, mais avec les arguments et parfois des exemples)

 

Pour les paranthèses, tu peux utiliser l'éditeur VisualLISP (menu outils), un double clic devant une paranthèse ouvrante ou derrière une paranthèse fermante sélectionne tout le code jusqu'à la paranthèse correspondante. Mais aussi beaucoup d'autres fonctions que je te laisse découvrir.

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

Lien vers le commentaire
Partager sur d’autres sites

Mais s'il doit il y avoir plusieur "cond" ? ? Comment faire ? ?

 

Et quoi qu'en pense BonusCad ?

 

(if est idéal pour:

* condition vrai alors ceci

ou

* condition vrai alors ceci autrement cela

condition peut contenir une liste de test (qui devra retourner T au final pour faire ceci nil pour faire cela)

ceci ne peut contenir qu'UNE liste

cela (si present= non nil) ne peut contenir aussi qu'UNE seule liste

 

Ce qui explique l'usage fréquent de (progn pour faire ceci/cela avec (if pour n'avoir qu'une seule liste; (progn rassemble l'execution.

 

Pour (cond

* condition vrai (donc retourne T) fait cela autrement passe à condition suivante

* condition vrai fait cela autrement passe à condition suivante

* ........suivant

* ...... suivant

* ......

* Aucune condition vérifiée alors faire cela transcrit par (T (.......))

)

 

ATTENTION dés qu'une condition est vérifié ET vrai, on fait cela ET on sort de condition (on ne peut faire executer plusieurs condition faire cela). Il est des fois important de placer ses conditions dans le bon ordre séquentiel.

 

Voilà j'ai essayé de te faire comprendre le mode de fonctionnement pour pouvoir différencier l'usage de (if ou (cond

 

J'ai l'impression de parler Chinois quand j'essaye d'expliquer. :P

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

Lien vers le commentaire
Partager sur d’autres sites

Oui, merci BonusCad ( et pour ts menuns..)

 

Mais pour induire une condition comme

(En VB on ferait :

If A > 300 OR A < 100 THEN Pouette ! !

 

C'est pour compléter la super routine de Gile...Car selon l'angle... On se retrouve à 200Gr près... ou 180 ° voir même 2Pi ! ! ! !

Donc je cherche... Mais requière votre attention.....

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Tu peux copier l'exemple suivant et le coller dans un nouveau fichier de l'éditeur VisualLISP :

 

(if
 (or
   (    (> 100 anngle)
 )
  (setq Ya 0)
) 

 

ensuite tu fais "Formater la fenêtre d'édition :

 

http://xs75.xs.to/pics/06146/editeur.PNG.xs.jpg

 

L'éditeur décale vers la droite chaque niveau de paranthèse équivalent.

 

Le (or est un or logique (non exclusif), si un des test ( 100 anngle) retourne T à (or, (or retourne T à (if et (if exécute (setq Ya 0). Si aucun des test ne retourne T (if retourne nil.

 

Si le code est :

 

(if
 (or
   (    (> 100 anngle)
 )
  (setq Ya 0)
  (setq Ya 1)
) 

 

Et si aucun des test ne retourne T (if exécute (setq Ya 1)

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

Lien vers le commentaire
Partager sur d’autres sites

Tamber, je pense que tes yeux ont lu trop vite...

 

En effet, je crois que je suis épuisé

 

Mais, j'ai souvenance que le livre expliquait bien la différence entre COND et IF.

 

Patience, dans un an tu seras une bête !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Whaow ! ! Merci 1000 fois à Gile...

 

Et comment utilise-t'on la commande calque ?

 

Et aussi, dernière question....faire passer une variable depuis AutoCAD vers Lisp ex

 

Commande AutoCAD (cmdlsp "Denis")

Pour créer le calque "Denis"

J'ai fais ça mais rien ne se passe ....

(defun c:cmdlsp ()
(command "-calque" "e" "Denis" "" "")
)

 

Denis..

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Et comment utilise-t'on la commande calque ?

On tape -CALQUE et on s'entraine,....et bien sur on tape F1 en cas de doute

 

Et aussi, dernière question....faire passer une variable depuis AutoCAD vers Lisp

SETVAR et GETVAR sont expliqués dans le bouqin je pense.

 

Commande AutoCAD (cmdlsp "Denis")

Pour créer le calque "Denis"

J'ai fais ça mais rien ne se passe ....

 

Forcemment, une defun sans l'argument ne peut pas marcher correctement si tu l'appelles avec un argument.

 

(defun c:cmdlsp (arg /)
(command "-calque" "e" arg "" "")
)

 

Dis-donc Denis, tu le lis ton bouquin ou quoi ? J'ai relu la page sur le COND est c'est très bien expliqué, et tout le reste :cool:

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Si tu fais un (defun c:cmdlsp ... c'est pour pouvoir lancer le lisp en tapant cmdlsp directement à la ligne de commande, dans ce cas, tu ne peux pas avoir d'argument. Si tu défini une fonction avec des arguments, il faut l'appeler (depuis un lisp ou la ligne de commande) avec une expression LISP (cmdlsp arg1 arg2 ...)

 

Dans ton exemple, c'est, soit :

 

(defun c:cmdlst ()
 (setq nom_calque (getstring "\nEntrez le nom du caque: "))
 (command "-calque" "e" nom_calque "")
 (princ)
)

 

et, pour appeler la commande, taper cmdlst à la ligne de commande et répondre ensuite Denis à l'invite,

 

soit :

 

(defun cmdlsp (nom_calque)
 (command "-calque" "e" nom_calque "")
) 

 

et (cmdlsp "Denis") à taper à la ligne de commande ou à intégrer à l'intérieur d'une autre routine.

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

Lien vers le commentaire
Partager sur d’autres sites

Grands mercis à vous ...

 

Pour répondre à Tramber, je ne demandais pas l'utilisation de la commande "calque" dans AutoCAD, je la connais très bien (même en ligne de commande "-calque") mais bien dans Lisp......

 

Pour le bouquin, oui, je le lis tous les jours... Et page 74, "Traitement conditionnels" ne traite que d'une condition à la fois... Je ne savais par utiliser la commande "or"...

 

Et merci pour la déclaration de variable globale (avant le "/") je pensais qu'en déclarant la variable après sa vréation (dans AutoCAD) elle serait réinitialisée...

Merci encore...

 

Et un grand merci à Gile... Je vais faire un tour dans les bois en famille (car on est dimanche) Et je n'y affaire dès lmundi...

 

Merci encore à tous...

 

Et bon dimanche...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Et merci pour la déclaration de variable globale (avant le "/")

 

Je pense qu'il est primordial, si nous voulons essayer de nous comprendre, d'être rigoureux avec le vocabulaire.

 

(defun fonction1 (arg1 arg2 / var1 var2) ...)

 

arg1 et arg2 sont les arguments (non optionnels) de fonction1, ils doivent être spécifiés conformément aux besoin de fonction1 lors de l'appel de fonction1.

 

(fonction1 arg1) -> ; erreur: nombre d'arguments insuffisants

(fonction1 arg1 arg2) -> ; erreur: type d'argument incorrect: ... Si arg1 ou arg2 ne sont pas conformes au type d'argument nécéssaire à fonction1

 

var1 et var2 sont des variables définies dans fonction1 (avec setq par exemple).

Si elle sont déclarées, comme dans l'exemple, on les appellent variables locales.

La valeur qui leur est attribuée dans fonction1 ne le sera que pendant l'exécution de fonction1, elles reprendront ensuite la valeur qu'elles avaient avant l'appel à fonction1 (nil ou autre).

Si au sein de fonction1, var3 est definie avec setq, et qu'elle n'a pas été déclarée, on l'appelle variable globale, elle conserve sa valeur pendant toute la session du dessin.

 

De plus amples expilcations, en anglais, dans Aide aux dévellopeurs -> AutoLISP Developer's Guide ->Using the AutoLISP Language -> AutoLISP Basics -> Symbol and Function Handling -> Local Variables in Functions -> Local Variables versus Global Variables

et, en français dans le Didactitiel AutoLISP -> Utilisation des outils de débogage Visual LISP -> Différenciation entre les variables locales et les variables globales.

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

Lien vers le commentaire
Partager sur d’autres sites

Pour répondre à Tramber, je ne demandais pas l'utilisation de la commande "calque" dans AutoCAD, je la connais très bien (même en ligne de commande "-calque") mais bien dans Lisp......

 

Tu mets beaucoup trop de questions dans un seul message. et, je te cite, quand tu dis "Et comment utilise-t'on la commande calque ?", tu ne nous laisse guère le choix que de te répondre éventuellement par des réponses bêtes.

 

Excuses pour ma réponse, je n'avais pas vu ta salade ( :cool: ) entre c:cmdlst et cmdlst

 

Encore une fois, je pense que tu dois décomposer un peu tes questions et poster de nouveaux sujets...... et te poser un peu, car trop de questions tuent les questions. Moi qui fait toujours des allers-venues très rapides et brêves sur CADxp pour me détendre de mon travail, j'ai du mal avec les sujets qui abordent 1000 questions.

 

Je pense que (Gile) est un garçon en sucre d'orge pour répondre si patiemment !

 

On devrait écrire un livre avec toutes ses patientes contributions ;)

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Mercis à tous les deux... à Gile pour l'épine du pied entre les arguments et les variables...Et à Tramber... Il est vrai que dans ma tête c'est pas super clair... En VB, je vois bien le truc... Mais en Lisp, c'est encore brouillon...Je vais donc me contenir et effectivement, ouvrir quelques nouveaux sujets...(mais pas 10 par jour)

 

Dans tous les cas, je vous remercie grandement... Je vais tenter de mettre à profitvos dernière "patientes contributions" (dixit Tramber)

 

 

Merci encore pour l'aide et la patience....

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é