Raph_38 Posté(e) le 30 janvier 2009 Posté(e) le 30 janvier 2009 Bonjour à tous, je parcours le forum depuis pas mal de temps sans avoir eu trop besoin de poster. Aujourd'hui j'en profite pour me présenter un peu. J'ai 37 ans et j'utilise AutoCAD depuis 15 ans, de la version 12 windows à la 2009 aujourd'hui. Je travail en bureau d'étude clim. Voilà, ça c'est fait ! :) Ma demande : Brève présentation de mon projet : J'ai réalisé il y a pas mal de temps, un programme Lisp me permettant de créer, via une boite de dialogue, tous mes calques suivant une charte établie (par moi-même et quelques collègues). Mes calques sont sous la forme suivante (exemple donné pour un calque "SOUFFLAGE") 1- SOU (calque maître)1- SOU-CAC (calque esclave traits en cache)1- SOU-AXE (calque esclave traits d'axe)1- SOU-FIN (calque esclave traits fin)etc... Au calque maître, j'affecte une couleur définie et les calques esclave ont une couleur dérivée de celle-ci. Dans cet exemple, le calque 1- SOU est en 140 et les autres, en couleur 142, 144, etc...Bon, pour info, je ne crée pas forcément tous les calques esclaves (je me suis gardé la possibilité de choisir) Bref, ce Lisp n'a pas évolué depuis 2000 et je souhaite le perfectionner. :casstet: Mon problème : Je souhaiterais avoir sur ma boite DCL, une case affichant la couleur du calque maître (par défaut la couleur du calque courant) et à coté, un bouton me permettant d'ouvrir la palette de couleur Autocad afin de sélectionner et/ou changer la couleur à affecter au calque maître que je vais créer. (pour les calques esclaves, c'est bon) J'ai vu que (gile) à utilisé ce type de "routine" dans son lisp EDIT_BLOC (que j'adore et utilise d'ailleurs) et je souhaiterais la récupérer ou avoir l'équivalent. (j'ai regardé dans le lisp et la DCL de Edit_bloc mais je m'y perds un peu) Si une âme charitable pouvais me donner le code pour la DCL ainsi que pour le lisp, ce serais super gentil. ;) [Edité le 30/1/2009 par neptune38] Raph. Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !
(gile) Posté(e) le 30 janvier 2009 Posté(e) le 30 janvier 2009 Salut, Pour choisir une couleur de l'index, il y a la fonction acad_colordlg, pour les "couleur vraies", c'est acad_truecolordlg mais son utilisation est moins simple. Dans un boite de dialogue, pour faire une case de couleur, il faut utiliser le tile image, définir sa taille et le remplir de la couleur voulue avec la fonction fill_image. Les boites de dialogue DCL sont de type modal, il faut fermer la boite pour permettre à l'utilisateur de choisir une couleur.Une boucle sur la valeur retournée par start_dialog stockée dans une variable (what_next dans l'exemple), cette valeur correspond à l'argument passé à done_dialog.Ceci permet de fermer la boite de dialogue pour permettre à l'utilisateur de choisir une couleur. la couleur choisie (variable color dans l'exemple) servira à remplir l'image à la ré-ouverture de la boite. Le DCLcolordialog : dialog{ label = "ColorDialog"; :row{ :image{ key="col"; height=3; width=4; } :button{ label = "Sélectionner"; key = "sel"; } } ok_cancel; } Le LISP(defun test (/ dcl_id what_next color) (setq dcl_id (load_dialog "ColorDialog.dcl") what_next 2 color (cdr (assoc 62 (tblsearch "LAYER" (getvar "CLAYER")))) ) (while (>= what_next 2) (if (not (new_dialog "colordialog" dcl_id)) (exit) ) (setq w (dimx_tile "col") h (dimy_tile "col") ) (start_image "col") (fill_image 0 0 w h color) (end_image) (action_tile "sel" "(done_dialog 3)") (action_tile "cancel" "(setq color nil) (done_dialog 0)") (action_tile "accept" "(done_dialog 1)") (setq what_next (start_dialog)) (if (= 3 what_next) (or (setq color (acad_colordlg color nil)) (done_dialog 0) ) ) ) (unload_dialog dcl_id) color ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Raph_38 Posté(e) le 31 janvier 2009 Auteur Posté(e) le 31 janvier 2009 Merci pour la réponse et les explications, c'est super ! dès que j'ai 5 min, je m'y mets. Raph. Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !
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