Guigues Posté(e) le 14 septembre 2009 Posté(e) le 14 septembre 2009 bonjour, J'ai fabriqué une série de lisp pour formatter un fichier vierge en gabarit A0, A1, 12, 13 ou A4. J'en profite pour initialiser des variables, pour importer des styles de cotes etc etc...>> Ces lisps fonctionnent trés bien ! Afin de lancer mes lisps j'ai décidé d'utiliser un fichier DCL + Lisp et la boite DCL + Le lisp fonctionnent trés bien ! Mais.... dés que j'ordonne le lancement du lisp GA0 ou GA1 etc etc via le lisp qui commande la boite DCL ca plante.... J'ai essayé de :- intégrer le contenu du lisp GA1 au lisp Gabarit >> même erreur- supprimer GA1 et integrer les commandes dans (defun (dobutton (a) .. >> même erreur- tester les lisps sur un autre poste équipé de autocad 09 version pleine >> même erreur voici les codes : LISP GA1 (defun c:GA1() (command "tilemode" "0") (command "_erase" "to" "") (command "tilemode" "1") (command "_erase" "to" "") (command "Purger" "to" "*" "N") (command "Purger" "to" "*" "N") (command "Purger" "to" "*" "N") (command "Purger" "to" "*" "N") (command "-inserer" "Cotation" "0,0" "1" "1" "0") (command "_erase" "to" "") (command "ATTDia" "1") (command "INSUNITS" "4") (command "RESVUE" "o" "20000") (command "ortho" AC) (command "Mirrtext" "0") (command "LUNITS" "2") (command "LUPREC" "2") (command "MEASUREINIT" "1") (command "MEASUREMENT" "1") (command "-unites" "2" "2" "1" "2" "0" "n") (command "ECRANGRA") (command "-style" "standard" "Simplex.shx" "0" "1" "0" "non" "non" "non") (command "-inserer" "FANTOMEA1" "0,0" "1" "1" "0") (command "_zoom" "_e") (command "-calque" "N" "Neuf,Depose,Existant,Texte,Instrum,Liaison_Instrum" "TL" "CACHE" "Liaison_Instrum" "CO" "Rouge" "Neuf" "CO" "Vert" "Instrum,Liaison_Instrum,Depose" "CH" "Texte" "") (command "ECRANGRA") (command "tilemode" "0") (command "_erase" "to" "") (command "-inserer" "CA1" "0,0" "1" "1" "0") (command "_zoom" "_e") (command "_-vports" "836,5" "5,589") (command "_.MSPACE") (command "_zoom" "_w" "0,0" "831,584") (command "_.PSPACE") (command "-inserer" "CART" "836,5" "1" "1" "0") (command "tilemode" "1") (command "_zoom" "_e") ) DCL GABARIT GABARIT : dialog { label = "GENERATEUR DE GABARITS ver.1.0"; : column { : boxed_column { : button { key = "but1"; label = "GABARIT A4"; is_default = false; } : button { key = "but2"; label = "GABARIT A3"; is_default = false; } : button { key = "but3"; label = "GABARIT A2"; is_default = false; } : button { key = "but4"; label = "GABARIT A1"; is_default = false; } : button { key = "but5"; label = "GABARIT A0"; is_default = false; } } : boxed_row { : button { key = "cancel"; label = "Close"; is_default = true; is_cancel = true; } } } } LISP GABARIT (defun doButton(a) (cond ((= a 1)(c:GA4)) ((= a 2)(c:GA3) ((= a 3)(c:GA2) ((= a 4)(c:GA1)) ((= a 5)(c:GA0)) ) ) (defun C:Gabarit() (setq dcl_id (load_dialog "GABARIT.dcl")) (if (not (new_dialog "GABARIT" dcl_id)) (progn (alert "GABARIT.DCL ne peut pas être chargé!") (exit) ) ) (action_tile "but1" "(doButton 1)") (action_tile "but2" "(doButton 2)") (action_tile "but3" "(doButton 3)") (action_tile "but4" "(doButton 4)") (action_tile "but5" "(doButton 5)") (action_tile "cancel" "(done_dialog)") (start_dialog) (unload_dialog dcl_id) (princ) ) merci du coup de pouce :P
bseb67 Posté(e) le 14 septembre 2009 Posté(e) le 14 septembre 2009 Salut Guigues, C'est bien de se lancer dans le lisp :) , maintenant il te faut acquérir l'expérienceet les astuces: - en premier, tu peux réduire les appels à (command ...) => cette fonction est lente, et parmisla liste de tes appels, les modifications de variables sont plus rapides et stables par un (setvar ..) - pour ton plantage, c'est normal => il faut fermer la dcl puis exécuter ta fonction (dobutton ...)et au pire à la fin rouvrir la dcl. a+ Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Guigues Posté(e) le 14 septembre 2009 Auteur Posté(e) le 14 septembre 2009 donc je rajoute donedialog en fin de commande action_tile ?
Patrick_35 Posté(e) le 14 septembre 2009 Posté(e) le 14 septembre 2009 Salut Tu fais plutôt comme ceci (defun C:Gabarit() (setq dcl_id (load_dialog "GABARIT.dcl")) (if (not (new_dialog "GABARIT" dcl_id)) (progn (alert "GABARIT.DCL ne peut pas être chargé!") (exit) ) ) (action_tile "but1" "(done_dialog 1)") (action_tile "but2" "(done_dialog 2)") (action_tile "but3" "(done_dialog 3)") (action_tile "but4" "(done_dialog 4)") (action_tile "but5" "(done_dialog 5)") (action_tile "cancel" "(done_dialog 0)") (doButton (start_dialog)) (unload_dialog dcl_id) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
usegomme Posté(e) le 14 septembre 2009 Posté(e) le 14 septembre 2009 Bonjour à tous, Salut Guigues , il manque 2 parenthèses fermantes ci dessous ((= a 2)(c:GA3) ((= a 3)(c:GA2) et aussi comment fait tu le chargement de Ga1 etc autrement tu peux éventuellement remplacer (command "-inserer" "Cotation" "0,0" "1" "1" "0") (command "_erase" "to" "") par (command "-inserer" "Cotation") (command) cela incorpore le bloc à ton dessin sans l'insérer à l'écran. et puis bon courage . Et pour Patrick_35 , j'aimerais savoir à quoi sert le numéro d'ordre à "(done_dialog 1)" , merci. [Edité le 14/9/2009 par usegomme] [Edité le 14/9/2009 par usegomme]
bseb67 Posté(e) le 14 septembre 2009 Posté(e) le 14 septembre 2009 Salut usegomme, la réponse est toute bête:aide de (start_dialog) Return Values => The start_dialog function returns the optional status passed to done_dialog. donc en faisant (done_dialog x), le (start_dialog) renvoie x. d'où le (doButton (start_dialog)) mais c'est vrai que pour ma part, je ne me sert pas du tout de ce principe Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Guigues Posté(e) le 14 septembre 2009 Auteur Posté(e) le 14 septembre 2009 merci à vous. Tout fonctionne parfaitement ! J'en avais marre de toujours éditer mes styles de cotes et faire les memes manip pour préparer un plan. Maintenant ca marche tout seul !!! Prochain projet : le verrouillage d'un plan dwg avec impossibilité d'éditer l'existant !
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