Aller au contenu

Messages recommandés

Posté(e)

Bonjour... et merci à (gile)

J'aimerais avoir une boite de dialogue lorsque je clique ma poly.

Exemple:

Je clique ma poly

Et a partir de la j'aimerais que le programme m'ouvre une boite de dialogue (ou je peu moi-meme ajouter des noms) ou je peu sélectionner des noms (ENTREE-SEJOUR-WC-BAINS....)

Car j'ai souvent les memes noms.

 

:P C'est juste pour éviter de les taper à chaque fois.... :P

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Tu as de la chance que j'ai du temps... :cool:

 

Voici une petite boite de dialogue pour choisir un nom dans une liste déroulante ou le rentrer au clavier.

Les nouveaux noms entrés sont ajoutés à la liste.

La liste est conservée dans le dessin.

 

Le fichier DCL à enregistrer sous GetName.dcl dans un dossier du chemin de recherche des fichiers de support.

 

getname:dialog{
 label="Choisir un nom";
 initial_focus="pop";
 :boxed_column{
   :row{
     :column{
       spacer;
       :text{
         label="Nom :";
         alignment=left;
       }
     }
   }
   :edit_box{
     key="tp";
     edit_width=25;
   }
   :popup_list{
     key="pop";
     edit_width=25;
   }
   spacer;
 }
 ok_cancel;
} 

 

Le LISP, la [surligneur]liste d'origine[/surligneur] peut être modifiée.

 

;;; GetName Retourne le nom spécifié ou choisi dans la liste.
;;; Les noms entrés sont ajoutés à la liste.
;;; La liste est conservée dans le dessin.

(defun getname	(/ lst what_next dcl_id nom)
 (if (not (vlax-ldata-get "Pline_block" "Name"))
   (vlax-ldata-put "Pline_block" "Name" '([surligneur]"Entrée" "Séjour" "WC" "Bain"[/surligneur]))
 )
 (setq dcl_id (load_dialog "GetName.dcl"))
 (setq what_next 2)
 (while (>= what_next 2)
   (if	(not (new_dialog "getname" dcl_id))
     (exit)
   )
   (setq lst (vlax-ldata-get "Pline_block" "Name"))
   (start_list "pop")
   (mapcar 'add_list lst)
   (end_list)
   (action_tile
     "tp"
     "(setq nom (get_tile \"tp\")) (done_dialog 3)"
   )
   (action_tile
     "accept"
     (strcat
"(progn"
"(setq nom (nth (atoi (get_tile \"pop\")) lst)))"
"(done_dialog 1))"
     )
   )
   (setq what_next (start_dialog))
   (cond
     ((= what_next 3)
      (vlax-ldata-put "Pline_block" "Name" (cons nom lst))
      (setq what_next 1)
     )
     ((= what_next 0)
(setq nom nil)
     )
   )
 )
 (unload_dialog dcl_id)
 nom
) 

 

Dans ta version de Pline_Block, remplace :

 

(initget 1)
  (setq nom (getstring T "\nNom de la pièce: ")) 

 

par :

 

(if (not (setq nom (getname)))
      (setq nom "")
    ) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Allez, je pousse le bouchon un peu plus loin ;)

Déjà, le vlax-data c'est très bien :) mais modifier la liste depuis la boite de dialogue, c'est encore mieux, surtout pour ceux qui ne maitrisent pas le lisp

 

Tu dois te dire que je commence à te faire ch..r, mais c'est juste une amélioration possible sans plus et comme tu as le temps :cool:

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut (Gile)...

D'abord merci de prendre un peu de temps pour résoudre mes problemes...

Vraiment super, maintenant je vais laisser mon clavier de coté...

:P :P :P :P Merci :) :) :)

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Voilà une nouvelle version, avec possibilité de modifier la liste de noms (ajouter/retirer) directement depuis la boite de dialogue.

Le DCL :

 

getname:dialog{
 label="Choisir un nom";
 initial_focus="tp";
 :boxed_column{
   label="Modifier la liste";
   :row{
     spacer;
     :edit_box{
       key="tp";
       edit_width=20;
       alignment=left;
     }
     spacer;
   }
   :row{
     :button{
       label="Ajouter";
       key="add";
     }
     :button{
       label="Retirer";
       key="del";
     }
   }
 }
 spacer_1;
 :row{
   spacer;
   :popup_list{
     key="pop";
     width=25;
   }
   spacer;
 }
 spacer_1;
 ok_cancel;
} 

 

Le LISP :

 

;;; GetName Retourne le nom spécifié ou choisi dans la liste.
;;; Les noms entrés sont ajoutés à la liste.
;;; La liste est conservée dans le dessin.

(defun getname	(/ lst what_next dcl_id nom)
 (if (not (vlax-ldata-get "Pline_block" "Name"))
   (vlax-ldata-put "Pline_block" "Name" '("Entrée" "Séjour" "WC" "Bain"))
 )
 (setq lst (vlax-ldata-get "Pline_block" "Name"))
 (setq dcl_id (load_dialog "GetName.dcl"))
 (setq what_next 2)
 (while (>= what_next 2)
   (if	(not (new_dialog "getname" dcl_id))
     (exit)
   )
   (start_list "pop")
   (mapcar 'add_list lst)
   (end_list)
   (action_tile
     "pop"
     (strcat
"(if (or (= $reason 1) (= $reason 4))"
"(set_tile \"tp\" (nth (atoi $value) lst)))"
     )
   )	
   (action_tile
     "add"
     (strcat
"(if (not (member (get_tile \"tp\") lst))"
"(setq lst (cons (get_tile \"tp\") lst)))"
"(done_dialog 2)"
     )
   )
   (action_tile
     "del"
     (strcat
"(setq lst (vl-remove (get_tile \"tp\") lst))"
"(done_dialog 5)"
     )
   )
   (action_tile
     "accept"
     (strcat
"(setq nom (nth (atoi (get_tile \"pop\")) lst))"
"(vlax-ldata-put \"Pline_block\" \"Name\" lst)"
"(done_dialog 1)"
     )
   )
   (setq what_next (start_dialog))
   (if (= what_next 0)
(setq nom nil)
   )
 )
 (unload_dialog dcl_id)
 nom
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Tres bien (gile) je n'en demandais pas autant...

Mais je dois dire que cette version est plutot sympa...

 

:P Bon week end

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut Gilles,

 

Là ça commence à faire compliqué

J'y arrive po .....:P

J'ai pas tout suivi mais pour résumer , dis-moi, il faut :

 

¨Pline_block.lsp," ....mais quelle version ?

Getmane.dcl

Getmane.lsp

Une petite dernière, un seul et même point à spécifier à l'intérieur de la polyligne pour sa sélection et l'insertion du bloc. Les routines SelPlineByPoint et SelByObj doivent être chargées.

 

:casstet: :P :casstet:

 

 

 

Posté(e)

Salut,

 

¨Pline_block.lsp," ....mais quelle version ?

Il y a eu en effet pas mal de versions pour répondre au désir des uns et des autres : qui veut deux attributs, qui n'en veut qu'un, qui veut des suffixes, qui n'en veut pas, qui veut une rotation ...

 

La "petite dernière" relève plus de l'effet de style, il faut en effet que les deux routines SelByObj et SelPlineByPoint soient chargées mais elle ne fonctionne qu'avec des polylignes fermées (tout ça pour gagner 1 clic). :casstet:

 

La boite de dialogue GetName peut être utilisée avec chacune des versions à condition de faire les modifications citées plus haut et que le fichier getname.lsp soit chargé et que getcnme.dcl soit dans le chemin de recherche, bien sûr.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Il y a eu en effet pas mal de versions pour répondre au désir des uns et des autres

Mais avoue que tu y prends du plaisir :cool:

Et comme tu te débrouilles très bien, on peux se permettre "certaines" remarques mais toujours constructives

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Mais avoue que tu y prends du plaisir

 

Bien sûr, sinon je ne le ferais pas, même si parfois je tiques un peu devant des demandes trop spécifiques.

 

on peux se permettre "certaines" remarques

 

Ça, c'est toujours avec plaisir ;)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

  • 3 ans après...
Posté(e)

heu sur version 2006

j'ai un peu de retard mais bon...

 

Voilà, je suis utilisateur et c'est TOUT.

 

Je dois avouer que vos indications sont un peu du chinois pour moi.

Si j'ai bien compris cette pline_block permet d'otenir un affichage de données liées à une polyligne

Super pour indiquer mes surfaces sur mes plans ! ...

 

Mais bon voilà que ça commence pas mal

J'ai bien charger l'application et le block est bien dans ma liste de block de dessin

 

a l'écran j'ai bien un tableau de choix de pièces qui s'affiche au lancement de la commande pline_block

 

mais je n'ai le choix que du nom ... dans le menu

 

bon passons c'est pas là l'urgence.

 

ensuite je justifie la polyligne l'emplacement du block et :

 

ex BAin #### m²

!!!!!

 

Patarac mais c'est nul ce machin !!!

 

pas de chant qui n'a rien de dynamique d'ailleur

 

je crois que j'ai dû louper une étape dans l'instal de l'application

Quelqu'un peut m'aider ?

 

Merci

  • 5 mois après...
Posté(e)

Bonjour

 

Superbe cette routine!!

Bizarre... tout marche à merveille sauf la conversion du résultat (cm2 >m2)

J'ai une version 2005 (intégrée avec la suite Inventor AIS9...)

 

Si quelqu'un a une idée d'ousque...

 

Merci

Posté(e)

Salut,

 

Tu trouveras, sur cette page, la dernière version qui contient un fichier PDF "mode d'emploi" qui explique ce qu'il faut modifier dans le code pour les conversions d'unités.

 

Tu trouveras aussi, sur la même page, TotalArea, qui à mon avis, est plus puissant et polyvalent.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é