Aller au contenu

Messages recommandés

Posté(e)

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 !

Posté(e)

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 DCL

colordialog : 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

Posté(e)

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 !

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é