Aller au contenu

demmande de code


mitnix

Messages recommandés

Salut tout le monde!!!!

 

J'ai voulut créer un programme en lisp alors que je connait rien en programmation je me suis renseigner et aprés des heure et des heure de galère je suis arrivé a faire ce que je voulait.

a faire tout non !!! il me manque juste une ou deux petite ligne pour bien achevai ce prog.

 

Donc voila mon problème:

durant le prog je creer deux variable "i" et "nbrf" et je voudrait seulement intégrer un texte qui dit ("i"/"nbrf"). ben voila ces la ou je plante.Donc je c pas si je mexprime bien mais si quelqu'un a la solution je le remerci d'avance.

 

Lien vers le commentaire
Partager sur d’autres sites

rha désolé pourtant c'est simple .

Je me reexplique.

J'ai deux variable "i" et "nbrf"

et je veut intégré un texte dans mon dessin qui ecrive ces deux variables sous la forme i/nrbf mais qui me remplace les variable par leur valeur.

 

Voila je pense que c'est plus clair comme ca.

Lien vers le commentaire
Partager sur d’autres sites

Voici un autre exemple qui te montrera de quoi il faut tenir compte pour ne pas avoir de surprise!

 

(defun c:test ( / i nbrf oldtxteval)
(setq i 50.0) ;définition de tes variables
(setq nbrf 35.0)

(setvar "CMDECHO" 1) ;activera  l'echo de la commande texte
(setq oldtxteval (getvar "TEXTEVAL")) ;enregistre l'état de la variable TEXTEVAL
(setvar "TEXTEVAL" 0) ;met la variable TEXTEVAL à 0
(princ "\nSolution avec TEXTEVAL à 0")
(if (zerop (cdr (assoc 40 (tblsearch "style" (getvar "textstyle"))))) ; Teste si la hauteur du style de texte est fixée
	(command "_.-text" pause "" "" (rtos (/ i nbrf) 2 2)) ;système décimal avec 2 unité de précision
	(command "_.-text" pause "" (rtos (/ i nbrf) 2 2))
)
(setvar "TEXTEVAL" 1) ;met TEXTEVAL à 1
(princ "\nSolution avec TEXTEVAL à 1")
(if (zerop (cdr (assoc 40 (tblsearch "style" (getvar "textstyle")))))
	(command "_.-text" pause "" "" (/ i nbrf)) ; evalue directement l'expression lisp
	(command "_.-text" pause "" (/ i nbrf))
)
(setvar "TEXTEVAL" oldtxteval) ;restaure l'état de la variable TEXTEVAL
)

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

Oki merci pour ces réponses

mais je suis pas arrivé a les intégrer dans mon lisp

 

heu je vous passe directement mon code et voir si je l'ai bien fait car en regardent vos code j'ai l'inpersion de pas etre dans le vrai.

 

Plus le de code

 

V'la parceque j'ai pas l'impression d'utilisé le lisp de bonne manière et de plutot me faire chier pour rien.

 

ben merci si vous voulait perdre un peu de temps avec moi. :)

 

[Edité le 21/9/2004 par mitnix]

Lien vers le commentaire
Partager sur d’autres sites

Hey ben voila j'ai trouver!!! :D :D :D :D :D :D :D

 

Et voui g bien regardé le code et je me suis aperçu que (itoa nbrf) ben ca marchait pas donc me sius demandé pourquoi?

Alors plutot que d'utilisé de faire (setq nbrf (getreal "blablablabla:)) j'ai utilisé (setq nbrf (getint "blablablabla:) et la ca marche alors pourquoi je sais pas mais si yen a qui savent ben je veut bien qui me le dise.

 

Voila merci bcp

Lien vers le commentaire
Partager sur d’autres sites

(getint = fournir un entier (INTeger)

(getreal= fournir un réel (REAL)

 

conseil: tu devrais utiliser la fonction (initget bit de controle) pour tes fonction (getxxx) excepté getstring

(getstring) peut être appelé avec l'argument T justement pour permettre la saisie d'espace dans la chaine de texte. La validation ne se fait alors qu'a l'aide de la touche ENTREE

 

Bonne continuation :D

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

En complément

 

(itoa) fait la conversion d'un entier en chaine de caractère (Interger TO Alphanuméric)

(rtos) fait la conversion d'un réel en chaine de caractère (Real TO String)

 

voilà pour les infos que j'ai oublié

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

Ben tient je donne le code. il est pas vraiment des plus intérressent du faite que ces un code que j'ai fait pour apprendre le lisp mais voila je donne comme si des gens veulle s'amuser avec pour lui amenner des modif des ameliorrations ben i peuvent et en plus il peuvent me le re transmettre pour que je puisse encor plus evoluer.

 

Bon sinon ma prochaine etape est de comprendre comment faire un interfasse graphique et des le faire pour ce prog donc je pense que l'on ce reverra bientot.

 

V'la merci pour tout

 

;Folio.lsp
(defun c:cfolio ()

;c:cfolio, permet de créer un nombre indéfini de folio A3 vertical

;A insérer dans fichier AutoCAD.pgp pour création d'alias
;cfo,   *cfolio

 ;Désactivez SCU et l'accroche object
 (command "accrobj""in" "iconescu""in")

 ;Entrez le nombre de folio dans la Variable "nbrf" positive
 (setq nbrf 0)
 (while (<= nbrf 0)
  (setq nbrf (getint "\nEntrez le nombre de folio:"))
 )
  
 ;variable "dist" donne la séparation entre chaque folio
 (setq dist 470)

 ;Spécifier le point d'insertion du premier folio
 (setq p0 (getpoint "\nEntrez point d'insertion:"))

 ;Attribution des variables Text

 (prompt "\nIMPORTANT\nSi votre texte comprend des espaces le mettre entre guillemets")
 (setq t1 (getstring "\nEntrez le nom de la société:"))
 (setq t2 (getstring "\nEntrez le nom de l'affaire:"))
 (setq t3 (getstring "\nEntrez le Déscriptif du folio:"))
 (setq t4 (getstring "\nEntrez le N° du plan:"))
 (setq t5 (getstring "\nEntrez la phase du projet:"))
 (setq t6 (getstring "\nEntrez la Date:"))
 (setq t7 (getstring "\nEntrez l'èchelle du plan:"))

 ;initialisation de i=1
 (setq i 1)

 ;Début de la boucle
 (while (<= i nbrf)

   ;Attribution de la variables P1
   (setq p1 (list (+ (car p0)(* dist (- i 1))) (cadr p0)))
  
   ;Dessin du cadre et cartouche folio
   (command "rectang" p1 (list (+ (car p1) 420)(+ (cadr p1) 297))"")
   (command "rectang" (list (+ (car p1) 10)(+ (cadr p1) 10)) (list (+ (car p1) 410)(+ (cadr p1) 40))"")
   (command "rectang" (list (+ (car p1) 10)(+ (cadr p1) 45)) (list (+ (car p1) 410)(+ (cadr p1) 287))"")
   (command "ligne" (list (+ (car p1) 10)(+ (cadr p1) 25)) (list (+ (car p1) 410)(+ (cadr p1) 25))"")
   (command "ligne" (list (+ (car p1) 70)(+ (cadr p1) 40)) (list (+ (car p1) 70)(+ (cadr p1) 10))"")
   (command "ligne" (list (+ (car p1) 290)(+ (cadr p1) 40)) (list (+ (car p1) 290)(+ (cadr p1) 10))"")
   (command "ligne" (list (+ (car p1) 350)(+ (cadr p1) 40)) (list (+ (car p1) 350)(+ (cadr p1) 10))"")

   ;Création des texte
   ;Définition du style de texte
   (command "style""verdana""verdana" "" "" "" "" "")
   ;"verdana" est maintenant le style de texte courant
  

   ;Création des textes constant du cartouche
   (command "texte""j""hg" (list (+ (car p1) 12.5)(+ (cadr p1) 37.5))"3.5" "" "Plan N° :" "" "")
   (command "texte""j""hg" (list (+ (car p1) 292.5)(+ (cadr p1) 37.5))"3.5" "" "Phase :" "" "")
   (command "texte""j""hg" (list (+ (car p1) 292.5)(+ (cadr p1) 22.5))"3.5" "" "Ech. :" "" "")
   (command "texte""j""hg" (list (+ (car p1) 352.5)(+ (cadr p1) 22.5))"3.5" "" "N° du folio :" "" "")
   (command "texte""j""hg" (list (+ (car p1) 352.5)(+ (cadr p1) 37.5))"3.5" "" "Date :" "" "")
   
  
   ;Création des textes variables du cartouche

   (command "texte""j""mc" (list (+ (car p1) 40)(+ (cadr p1) 17.5))"5" "" t1 "" "")
   (command "texte""j""mc" (list (+ (car p1) 180)(+ (cadr p1) 32.5))"7" "" t2 "" "")
   (command "texte""j""mc" (list (+ (car p1) 180)(+ (cadr p1) 17.5))"7" "" t3 "" "")
   (command "texte""j""bd" (list (+ (car p1) 67)(+ (cadr p1) 27.5))"4" "" t4 "" "")
   (command "texte""j""bd" (list (+ (car p1) 347)(+ (cadr p1) 27.5))"4" "" t5 "" "")
   (command "texte""j""bd" (list (+ (car p1) 407)(+ (cadr p1) 27.5))"4" "" t6 "" "")
   (command "texte""j""bd" (list (+ (car p1) 347)(+ (cadr p1) 12.5))"4" "" t7 "" "")

   ;Création du texte numero du folio
   (command "texte""j""bd" (list (+ (car p1) 407)(+ (cadr p1) 12.5))"4" "" (strcat (itoa i)"/"(itoa nbrf)) "" "")

   ;Rajoute +1 à i
   (setq i (1+ i))

 ;Fin de la boucle
 )

 ;Activez l'accroche objet
 (command "accrobj""extr,mil,cen,int,per,exte")

 (prompt "\nLes folios ont été créés!")
 
;Fin du programme
 (prompt "\nDeveloped by mitnix")
 (princ)
)

Lien vers le commentaire
Partager sur d’autres sites

Mitnix,

 

Pour un débutant, je trouve que tu te débrouilles bien. Pour moi la lisibilité du code est plus importante que la performance. Du moins, l'expérience améliorera cette dernière mais rarement la première.

 

Si j'ai 2 conseils à te donner, les voici:

1) Connaitre ce qu'est des variables locales

2) Essayer de travailler avec les noms anglais et n'utilise pas des abbréviations pour les options

 

Plus en détails:

1) Connaitre ce qu'est des variables locales

Par défaut, toutes les variables appartiennent à tout le monde. Par exemple, tes variables t1, t2, t3 peuvent être utilisées et modifiées par d'autre programme, donc les corrompre. Pour les protéger, tu les définies locales. Pour ce faire, tu les énumère dans la première parenthèse vide, précédé d'un /

 

Exemple:

(defun c:folio (

;; Liste incomplète des variables locales

/ t1 t2 t3 t4 t5 t6

t7 t8

;; fin de la liste des variables locales

)

;c:cfolio, permet de créer un nombre indéfini de folio A3 vertical

 

;A insérer dans fichier AutoCAD.pgp pour création d'alias

;cfo, *cfolio

etc. etc

)

 

 

2) Essayer de travailler avec les noms anglais et n'utilise pas des abbréviations pour les options

Si tu le peux, remplace les noms français par leur équivalent anglais, mais précédé d'un _. Ceci rendra ton programme plus portable. Pour les abbréviation, relire "Justification" est plus clair que simplement "j". Attention: il existe de rares situations conflictuelle (e.g. si une commande possède une option dont le nom est aussi le nom d'un mode d'accrochage)

 

Exemple:

(command "style""verdana""verdana" "" "" "" "" "")

(command "texte""j""bd" (list (+ (car p1) 347)(+ (cadr p1) 12.5))"4" "" t7 "" "")

(command "accrobj""extr,mil,cen,int,per,exte")

 

Deviennent

(command "_style""verdana""verdana" "" "" "" "" "")

(command "_text""_justify""_br" (list (+ (car p1) 347)(+ (cadr p1) 12.5))"4" "" t7 "" "")

(command "_osnap" "_end,_mid,_cen,_int,_per,_ext")

 

 

Serge

 

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é