Aller au contenu

inserer un bloc avec demande d\'échelle


Messages recommandés

Posté(e)

Bonjour

 

Bon je débute en LISP.

 

Le but du programme est d'insérer un bloc qui tiens compte de l'échelle de mon plan sans que j'ai besoin de la renseigner. Le problème c'est que je ne sais pas comment faire pour inserer un bloc au bon facteur d'échelle. A noté que le bloc est au mètre. J'ai essayé d'utiliser If mais cela ne marche pas

 

La c'est mon début du programme.

(defun c:F (/)

(initget 1 "M C i")

(setq A(getkword "Unite du dessin? (M/C/i)"))

(command "inserer" "c:/test lisp/fm")

(princ)

)

 

 

Par conter si vous pouviez me dire quel fonction utilisé en détaillent sont fonctionnement plutôt que de me donner tout de suite la réponse ça serait sympa.

Posté(e)

 

 

(command "inserer" "bloc" (getpoint) 1 1 0)

 

ou

 

(command "inserer" "bloc" (list 0 0) 2.3 2.3 0)

 

Ces indices t'aident-ils ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Oh, les gars, laissez-le apprendre :cool:

Au lieu du if, je te conseille COND :

 

(setq ech

(cond((= A "M") 1)((= A "C") 2.3)((= A "i") 5)(T 1)))

(command "inserer" "bloc" (list 0 0) ech ech 0)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Re

 

(setq A(getkword "Unite du dessin? (M/C/i)"))

(if (= A M) (setvar "unitsdefsource" 0))

 

En faite j'aimerai savoir ce que comprend le lisp dans les deux lignes de commandes ci dessus.

 

Pour moi: Il stocke la réponse a la question dans A et si A est égale a M,M étant une des réponses possible, alorsla variable unitsdefsource est mise a zéro.

 

Je pense que mon problème viens de la condition.

Merci de l'aide et pour l'aide a venir

Posté(e)

je viens de voir ton message tramber j'essaye cond qui doit être la fonction lisp que je cherchais. La fonction cond peut se traduire par si alors que IF s'utilise plus tôt pour vérifier une condition si j'ai bien tout compris

Posté(e)

(defun c:F (/)

(setvar "insunits" 0)

(initget 1 "M C i")

(setq A(getkword "Unite du dessin? (M/C/i)"))

(setq ech

(cond((= A "M") 1)((= A "C") 2.3)((= A "i") 5)(T 1)))

(command "inserer" "c:/test lisp/FA" (getpoint) ech ech 0)

(princ)

)

 

Voila le prog qui marche. Merci beaucoup pour l'aide.

Maintenant je vais rajouter encore quelques conditions donc je vais peut etre encore avoir besoin d'aide.

 

Y un petit truc que je comprend pas. C'est les valeurs 1 , 2.3 et 5. C'est des valeurs que tu m'as donné au hasard ou alors cela correspond a quelque chose

 

[Edité le 19/2/2009 par jhazz]

Posté(e)

COND est un peu comme un IF multiple et permet de s'en sortir quand il y a plusieurs réponses. J'ai mis T qui donnera 1 pour le cas où aucune des 3 réponses M,C ou i n'est choisie.

 

Fait attention, getkword renvoie une chaine et non un chiffre : (= A "M") et non (= A M)

 

Ne fais pas attention au message de Patrick_35 ( :cool: ) et commence avec des blocs sans unité d'insertion (si tu sais ce que c'est) pour apprendre déjà la base, l'utilisation de (command "inserer" "bloc" (getpoint) 1 1 0)

 

 

[Edité le 19/2/2009 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

Re

 

Tramber

Je ne comprends pas la difficulté de ma réponse. :(

Si le dessin est en mm et le bloc en m, il suffit juste de changer la variable.

C'est de l'Autocad pur et dur. :o

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Généralement mes bloques sont crées sans unité vu qu'on est plusieurs a les utilisés et que je ne suis pas le seul a en faire. Tous le monde faire pareil comme ca.

 

[Edité le 19/2/2009 par jhazz]

Posté(e)

Et toc Patrick_35, tralalalalère !

 

D'ailleurs rien ne nous dit qu'on est pas en V2000 ou 2002 !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

j'ai 2007 au travail.

 

Maintenant je recherche un truc plus compliqué. LA question:

(setq A(getkword "Unite du dessin? (M/C/i)"))

reviens a chaque fois que je lance le lisp. Il faudrait que la question ne sois posé qu'une fois par plan. Mais la je vois vraiment pas comment faire.

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é