mitnix Posté(e) le 21 septembre 2004 Posté(e) le 21 septembre 2004 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.
mitnix Posté(e) le 21 septembre 2004 Auteur Posté(e) le 21 septembre 2004 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.
Romain Posté(e) le 21 septembre 2004 Posté(e) le 21 septembre 2004 Essaye cela: (setq montexte (strcat (itoa i) "/" (itoa nbrf)) pointins (getpoint "\nPoint d'insertion du texte:")) (command "texte" pointins 10 0 (print montexte)) Romain
bonuscad Posté(e) le 21 septembre 2004 Posté(e) le 21 septembre 2004 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
mitnix Posté(e) le 21 septembre 2004 Auteur Posté(e) le 21 septembre 2004 Oki merci pour ces réponsesmais 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]
mitnix Posté(e) le 21 septembre 2004 Auteur Posté(e) le 21 septembre 2004 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
bonuscad Posté(e) le 21 septembre 2004 Posté(e) le 21 septembre 2004 (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
bonuscad Posté(e) le 21 septembre 2004 Posté(e) le 21 septembre 2004 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
mitnix Posté(e) le 21 septembre 2004 Auteur Posté(e) le 21 septembre 2004 Merci Beaucoup pour ton aideJe modifie le code et je le reposterai ensuite Encore merci
mitnix Posté(e) le 21 septembre 2004 Auteur Posté(e) le 21 septembre 2004 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) )
Serge Posté(e) le 22 septembre 2004 Posté(e) le 22 septembre 2004 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 locales2) 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 localesPar 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, *cfolioetc. etc) 2) Essayer de travailler avec les noms anglais et n'utilise pas des abbréviations pour les optionsSi 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
mitnix Posté(e) le 29 septembre 2004 Auteur Posté(e) le 29 septembre 2004 Merci baucoup pour tes conseil Serge, je vait essayer de les mettre en pratique des que j'aurai de nouvel idée de prog. Merci Bcp. :thumbup:
Tramber Posté(e) le 29 septembre 2004 Posté(e) le 29 septembre 2004 Alors si t'es content, plus de gros mots !? (ou juste ch....) ;) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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