Bonjour à tous, Débutant en Lisp et nouveau sur le forum, j'ai donc besoin de vos conseil concernant la liaison entre une boite de dialogue et une programmation lisp. J'ai adapté une fonction de tracé d'un escalier pour que celle-ci me trace un parking. J'ai voulu introduire un boite de dialogue DCL à ce programme pour entré les dimensions, le nombre et l'angle du tracé des places de parking. Cependant quand je lance ma commande la boite de dialogue s'affiche mais ne lance pas le tracé du parking. D'ou ma question comment joindre le dcl et le lisp ? Le fichier DCL: parkingbis:dialog {label="parking"; :row { /*:image {width=20;aspect_ratio=1;color=1;fixed_height=true;key=img;}*/ :boxed_column {label="Choix"; /*:radio_row { :radio_button {label="Avec Poly";key=avec;} :radio_button {label="Sans Poly";key=sans;} }*/ :edit_box {label="&Nombre de place:";/*edit_width=6;fixed_width=true;*/key=nbplace;} :edit_box {label="&Longueur de place:";/*edit_width=6;fixed_width=true;*/key=long;} :edit_box {label="L&argeur de place:";/*edit_width=6;fixed_width=true;*/key=larg;} :edit_box {label="&Angle/ox des places : ";/*edit_width=6;fixed_width=true;*/key=ang0;} spacer_1; } } :row {ok_cancel;} :row {errtile;} } Le LISP: (defun c:parking () (setq dcl_id (load_dialog "parkingbis.DCL")) ;charge la boite de dialogue (if (not (new_dialog "parkingbis" dcl_id) ;si il ne la trouve pas il sort "exit" ) (exit)) (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq ok (start_dialog)) ;test pour savoir si tout a ete entré (unload_dialog dcl_id) (if (and (= ok 1) (/= nbplace1 nil) (/= larg1 nil) ) ; si toutes les données sont rentrées (c:stationnement); on lance la fonction parking ) ;(princ) ) (defun c:stationnement(/ pt0 pt1 larg long ang0 nbplace) ;recup donné initial ;(c:initial) ;création calque (command "-calque" "E" "Stationnement" "co" "1" "stationnement" "tl" "continuous" "stationnement" "") ; Ne pas afficher dans le barre de commande toutes les étapes de calcul (setvar "cmdecho" 0) ;permet de se mettre dans le repère général (command "scu" "") ; enleve les accrochages objets (setvar "osmode" 0) ;pt0 : point de départ du stationnement dans le SCG (setq pt0 (getpoint "\nPoint de départ des places de stationnement ( pour tracer en haut de la polyligne,aller de droite à gauche ; pour tracer en bas de gauche à droite):")) ;larg : largeur des places de parking ;(setq larg (getdist "\nlargeur des places (ou 2 points) :")) ;long : longueur des places ;(setq long (getdist "\nlongueur des places (ou 2 points) :")) ;nbmarch : nombre de places ;(setq nplace (getint "\nNombre de places de stationnement :")) ;ang0 : orientation angulaire / axe des x ;(setq ang0 (getangle pt0 "\nAngle d'orientation des places /Ox :")) ;tracé de la 1ère place (command "polylign" pt0 "la" 0 0 (polar pt0 ang0 long ) (polar (getvar "lastpoint") (+ ang0 (/ pi 2)) larg) (polar (getvar "lastpoint") (+ ang0 pi) long) "cl";permet de clore les polyligne ) ;plaçons nous dans le scu de cette place pour pouvoir la dupliquer (command "scu" "3" pt0 (polar pt0 ang0 1)(polar pt0 (+ ang0 (/ pi 2)) 1) "reseau" "d" "" "r" nplace 1 larg ) (command "scu" "general" ) (command "texte" "") )