Aller au contenu

Conversion d\'unités


(gile)

Messages recommandés

Pour ceux qui n'ont pas la calculatrice d'AutoCAD 2006 et son convertisseur d'unités.

 

Boite de dialogue, fichier à enregistrer sous convert.dcl dans un dossier du chemin de recherche des fichiers de support :

conv_unit:dialog{
 label="Convertisseur";
 initial_focus="nombre";
 :popup_list{
   label="Type d'unités";
   key="typ_unit";
   edit_width=15;
 }
 :row{
   :boxed_column{
     label="Convertir";
     :popup_list{
       label="de: ";
       key="de_unit";
       edit_width=16;
     }
     :popup_list{
       label="en: ";
       key="en_unit";
       edit_width=16;
     }
   }
   :boxed_column{
     label="Valeur";
     :edit_box{
       key="nombre";
       value="";
       edit_width=12;
     }
     :edit_box{
       key="result";
       edit_width=12;
       is_tab_stop=false;
     }
   }
 }
 spacer_1;
 ok_only;
} 

 

Fichier LISP :

;;; Convertisseur

(defun c:conv_unit (/	       typ_lst	  ang_lst    long_lst
	    mas_lst    surf_lst	  tps_lst    vol_lst
	    dcl_id     what_next  rslt	     lst
	   )
 ;; Mise à jour des listes
 (defun maj_lst ()
   (cond
     ((= (get_tile "typ_unit") "0")
      (setq lst ang_lst)
     )
     ((= (get_tile "typ_unit") "1")
      (setq lst long_lst)
     )
     ((= (get_tile "typ_unit") "2")
      (setq lst surf_lst)
     )
     ((= (get_tile "typ_unit") "3")
      (setq lst vol_lst)
     )
   )
   (start_list "de_unit")
   (mapcar 'add_list lst)
   (end_list)
   (start_list "en_unit")
   (mapcar 'add_list lst)
   (end_list)
 )
 ;; Mise à jour du champ du résultat
 (defun maj_rslt (/ mode)
   (setq rslt (cvunit (atof (get_tile "nombre"))
	       (nth (atoi (get_tile "de_unit")) lst)
	       (nth (atoi (get_tile "en_unit")) lst)
       )
   )
   (if	(or
  (	  (	)
     (setq mode 1)
     (setq mode 2)
   )
   (if	(zerop rslt)
     (set_tile "result" "")
     (set_tile "result" (rtos rslt mode))
   )
 )
 ;; Fonction principale
 (setq	typ_lst	 '("angle" "distance" "aire" "volume")
ang_lst	 '("degré" "grade" "radian" "cercle" "quadrant")
long_lst '("millimètre"	 "centimètre"  "mètre"
	   "kilomètre"	 "pouce"       "pied"
	   "yard"	 "mile"
	  )
surf_lst '("millimètre_carré"	"centimètre_carré"
	   "mètre_carré"	"kilomètre_carré"
	   "pouce_carré"	"pied_carré"
	   "yard_carré"		"acre"
	  )
vol_lst	 '("millimètre_cube"	"centimètre_cube"
	   "mètre_cube"		"kilomètre_cube"
	   "pouce_cube"		"pied_cube"
	   "yard_cube"
	  )
 )
 (setq dcl_id (load_dialog "convert.dcl"))
 (if (not (new_dialog "conv_unit" dcl_id))
   (exit)
 )
 (start_list "typ_unit")
 (mapcar 'add_list typ_lst)
 (end_list)
 (maj_lst)
 (action_tile
   "typ_unit"
   "(maj_lst) (set_tile \"result\" \"\"))"
 )
 (foreach cle '("de_unit" "en_unit" "nombre")
   (action_tile cle "(maj_rslt)")
 )
 (action_tile "accept" "(done_dialog 1)")
 (start_dialog)
 (unload_dialog dcl_id)
 rslt
)

 

Pour lancer la commande taper : conv_unit, il est possible d'appeler la commande de manière transparente pour répondre à une invite en tapant 'conv_unit

 

[Edité le 1/11/2005 par (gile)]

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

Lien vers le commentaire
Partager sur d’autres sites

j'avoue ne pas avoir testé ton lisp qui doit être plus complet et simple à utiliser que ma méthode, mais je voulais aussi rapeller cette technique :

 

http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=7117#pid

Lien vers le commentaire
Partager sur d’autres sites

vous trouverez un convertisseur d'unités gratuit sur ce site http://www.esbconsult.com.au/ , il ne vous restera qu"a créer un bouton et/ou l'intégré a votre menu de la façon

suivante :[Convertisseur d'unités](Startapp "G:/Esbpcs/utils/ESBUnitConv.exe")

 

Bien déterminer le chemin de recherche en fonction de votre répertoire d'installation.

:cool:

Lien vers le commentaire
Partager sur d’autres sites

j'avoue ne pas avoir testé ton lisp qui doit être plus complet et simple à utiliser que ma méthode

Ce LISP n'est qu'un "enrobage" de ta méthode (cvunit) et il est moins complet, je n'ai retenu que certains types d'unités et que les unités courantes métriques et anglo-saxones pour une utlisation plus pratique.

 

Pour ceux qui travaillent en lieue, angström ou années lumières, qui rêvent de gallons, de tonneaux, de miles nautiques... une version plus complète :present: :

;;; Convertisseur

(defun c:conv_unit (/	       typ_lst	  ang_lst    long_lst
	    mas_lst    surf_lst	  tps_lst    vol_lst
	    dcl_id     what_next  rslt	     lst
	   )
 ;; Mise à jour des listes
 (defun maj_lst ()
   (cond
     ((= (get_tile "typ_unit") "0")
      (setq lst ang_lst)
     )
     ((= (get_tile "typ_unit") "1")
      (setq lst long_lst)
     )
     ((= (get_tile "typ_unit") "2")
      (setq lst mas_lst)
     )
     ((= (get_tile "typ_unit") "3")
      (setq lst surf_lst)
     )
     ((= (get_tile "typ_unit") "4")
      (setq lst tps_lst)
     )
     ((= (get_tile "typ_unit") "5")
      (setq lst vol_lst)
     )
   )
   (start_list "de_unit")
   (mapcar 'add_list lst)
   (end_list)
   (start_list "en_unit")
   (mapcar 'add_list lst)
   (end_list)
 )
 ;; Mise à jour du champ du résultat
 (defun maj_rslt (/ mode)
   (setq rslt (cvunit (atof (get_tile "nombre"))
	       (nth (atoi (get_tile "de_unit")) lst)
	       (nth (atoi (get_tile "en_unit")) lst)
       )
   )
   (if	(or
  (	  (	)
     (setq mode 1)
     (setq mode 2)
   )
   (if	(zerop rslt)
     (set_tile "result" "")
     (set_tile "result" (rtos rslt mode))
   )
 )
 ;; Fonction principale
 (setq	typ_lst	 '("angle" "distance" "masse" "aire" "temps" "volume")
ang_lst	 '("cercle" "degré" "grade" "quadrant" "radian")
long_lst '("angström"	 "année_lumière"
	   "bolt"	 "cable"       "caliber"
	   "centimètre"	 "chain"       "cubit"
	   "décimètre"	 "décamètre"   "fathom"
	   "furlong"	 "gigamètre"   "hectomètre"
	   "kilomètre"	 "lieue"       "link"
	   "main"	 "mètre"       "micropouce"
	   "micron"	 "mile_nautique"
	   "mille"	 "millimètre"  "nanomètre"
	   "pas"	 "paume"       "parsec"
	   "perche"	 "pica"	       "pied"
	   "point"	 "pouce"       "rod"
	   "rope"	 "span"	       "survey_foot"
	   "yard"
	  )
mas_lst	 '("dalton"	 "dyne"	       "grain"
	   "gramme"	 "hundredweight"
	   "kilogramme"	 "livre"       "long_ton"
	   "once"	 "ounce_troy"  "pennyweight"
	   "poundal"	 "quintal"     "scruple"
	   "slug"	 "stone"       "ton"
	   "tonne"
	  )
surf_lst '(" acre"	     "are"
	   "barn"	     "centare"
	   "centimètre_carré"
	   "hectare"	     "kilomètre_carré"
	   "mètre_carré"     "millimètre_carré"
	   "pouce_carré"     "pied_carré"
	   "rood"	     "section"
	   "township"	     "yard_carré"
	  )
tps_lst	 '("seconde"	 "minute"      "heure"
	   "jour"	 "semaine"     "quinzaine"
	   "année"	 "décade"      "siècle"
	   "millénaire"
	  )
vol_lst	 '("baril"	   "board_foot"	   "boisseau"
	   "centilitre"	   "cord"	   "centimètre_cube"
	   "décalitre"	   "décastère"	   "drachme"
	   "dry_pint"	   "dry_quart"	   "firkin"
	   "fluid_ounce"   "gallon"	   "gill"
	   "hectolitre"	   "hogshead"	   "kilderkin"
	   "kilolitre"	   "kilomètre_cube"
	   "litre"	   "mètre_cube"	   "millilitre"
	   "millimètre_cube"		   "minim"
	   "peck"	   "pint"	   "pottle"
	   "pouce_cube"	   "pied_cube"	   "puncheon"
	   "quart"	   "tonneau"	   "seam"
	   "stère"	   "tun"	   "yard_cube"
	  )
 )
 (setq dcl_id (load_dialog "convert.dcl"))
 (if (not (new_dialog "conv_unit" dcl_id))
   (exit)
 )
 (start_list "typ_unit")
 (mapcar 'add_list typ_lst)
 (end_list)
 (maj_lst)
 (action_tile
   "typ_unit"
   "(maj_lst) (set_tile \"result\" \"\"))"
 )
 (foreach cle '("de_unit" "en_unit" "nombre")
   (action_tile cle "(maj_rslt)")
 )
 (action_tile "accept" "(done_dialog 1)")
 (start_dialog)
 (unload_dialog dcl_id)
 rslt
)

 

[Edité le 1/11/2005 par (gile)]

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

Lien vers le commentaire
Partager sur d’autres sites

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é