Aller au contenu

(gile)

Moderateurs
  • Compteur de contenus

    12 247
  • Inscription

  • Dernière visite

  • Jours gagnés

    208

Tout ce qui a été posté par (gile)

  1. (gile)

    lien

    C'est là
  2. Fais un copier/coller du LISP dans le message, si tu veux faire "joli" tu peux utiliser les bbcodes.
  3. Salut, À la première question, si le message apparaît deux fois, c'est peut-être que le (princ "message"), qui retourne le message sur la ligne de commande n'est pas suivi d'un (princ) tout court qui empèche que le dernier résultat (à savoir "message") ne soit retourné lui aussi. À la deuxième question, je t'avoue ne jamais m'être demandé comment expresstools sont chargés automatiquement à chaque démarrage, mais concernant le chargement automatique des fichiers LISP tu peux aller voir l'aide aux développeurs : Guide de personnalisation -> Introduction aux interfaces de programmation -> AutoLISP et Visual LISP -> Chargement et exécution automatiques des routines AutoLISP, tu y trouveras des renseignements sur AutoCAD.lsp, acaddoc.lsp, mais aussi sur les fichiers .MNL et la fonction S::STARTUP.
  4. (gile)

    Réseau hélicoïdal

    Le petit soucis est réparé, c'était bien un problème de variable globale non définie. Merci aux testeurs ;) [Edité le 3/1/2006 par (gile)]
  5. Désolé Patrick_35, çà ne marche pas mieux. Je pense que le test se faisant avec (70 . 2) renverra toujours les cotes de diamètres (70 . 3) 3=2+1, et les cotes ordonnées (70 . 6) 6=4+2
  6. (gile)

    Solides 3D en colimaçon

    :present: Comme pour le réseau hélicoïdal, il est désormais possible de saisir les données pour l'hélicoïde dans une boite de dialogue : http://img373.imageshack.us/img373/1224/helicoide8jx.png Le code .DCL à enregistrer sous Helicoide.dcl dans un dossier du chemin de recherche d'AutoCAD : //Helicoide.dcl -Gilles Chanteau- 08/11/04 //Boite de dialogue de la fonction Helicoide //Modifié le 03/01/06 helicoide:dialog{ label="Hélicoïde"; initial_focus="nb_sp"; :boxed_column{ label="Spires"; :row{ :edit_box{ label="Segments par spire :"; key="nb_seg"; edit_width=6; } :slider{ key="sldr_seg"; value="12"; min_value=2; max_value=24; big_increment=1; small_increment=1; width=16; is_tab_stop=false; } } spacer; :row{ :popup_list{ key="nbre"; width= 22; } :edit_box{ key="nb_sp"; edit_width=6; } spacer; } spacer; } :boxed_column{ label="Pas de l'hélicoïde"; :row{ :radio_button{ label="Pas à droite"; key="drte"; value="1"; } :radio_button{ label="Pas à gauche"; key="gche"; } } :row{ :popup_list{ key="typ_pas"; width= 22; } :edit_box{ key="val_pas"; edit_width=8; } spacer; :button{ label=">>"; key="pick_pas"; height=2; alignment=right; fixed_width=true; } } spacer; } :boxed_column{ label="Dimension"; :row{ :popup_list{ key="dim"; width= 22; } :edit_box{ key="ray_ext"; edit_width=8; } spacer; :button{ label=">>"; key="pick_ray"; height=2; alignment=right; fixed_width=true; } } spacer; } :boxed_column{ label="Base de l'axe"; :row{ :edit_box{ label="X:"; key="x_coord"; edit_width=8; } :edit_box{ label="Y:"; key="y_coord"; edit_width=8; } :edit_box{ label="Z:"; key="z_coord"; edit_width=8; } spacer; :button{ label=">>"; key="b_axe"; height=2; fixed_width=true; alignment=right; } } spacer; } spacer; ok_cancel; } Le LISP qui va avec : ;;; 04/12/04 Fonction Hélicoïde ;;; Crée une succession d'arcs elliptiques jointifs figurant une hélicoïde. ;;; Le nombre d'arcs décrivant la longueur d'une spire est défini par l'utilisateur. ;;; Le départ de l'hélicoïde se situe sur l'axe des X positifs par rapport au point de base. ;;; La fonction C:HELICOIDE commande la boite de dialogue "helicoide.dcl" pour la saisie des données. ;;; La fontion C:-HELICOIDE permet la saisie des données sur la ligne de commande. ;;; Ces deux fonctions appellent la sous-fonction CREAT_HELICOIDE qui crée le solide. ;;; Modifié le 03/01/06 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [color=#CC0000];;; HEL_ERR Redéfinition de *ERROR* (defun HEL_ERR (msg) (if (/= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (command) (command "_ucs" "_restore" "scu_init") (command "_ucs" "_del" "scu_init") (command "_undo" "_end") (setvar "cmdecho" v1) (setvar "osmode" v2) (setq *error* m:err m:err nil ) (princ) ) ;;; ADD_Z Ajoute "val" à la coordonnée Z du point "pt" (defun ADD_Z (pt val) (list (car pt) (cadr pt) (+ (caddr pt) val)) ) ;;; CREAT_HELICOIDE Création de l'hélicoïde (defun CREAT_HELICOIDE (sp seg ray pas sens axe / v1 v2 ang pt1 pt2 pt3 pointA point1 point2 point3 arc ) (setq m:err *error* *error* hel_err v1 (getvar "cmdecho") v2 (getvar "osmode") ) (command "_undo" "_begin") (setvar "cmdecho" 0) (command "_ucs" "_save" "scu_init") (if (equal sens "Gauche") (setq pas (- pas) seg (- seg) ) ) (setq pt2 (polar axe 0 ray) pt1 (polar axe (+ (angle axe pt2) (/ (* 2 pi) seg)) ray) ang (atan (distance pt2 pt1) (/ pas seg)) axe (ADD_Z axe (- (/ pas (* seg 2)))) ) (setvar "osmode" 0) (repeat sp (setq pt1 pt2 axe (ADD_Z axe (/ pas seg)) pt2 (polar axe (+ (angle axe pt1) (/ (* 2 pi) seg)) ray) pt2 (ADD_Z pt2 (/ pas (* seg 2))) pt3 (polar axe (+ (angle axe pt1) (/ pi seg)) ray) pointA (trans axe 1 0) point1 (trans pt1 1 0) point2 (trans pt2 1 0) point3 (trans pt3 1 0) ) (command "_ucs" "_new" "3" axe pt1 pt3) (command "_ellipse" "_arc" "c" (trans pointA 0 1) (trans point3 0 1) (/ ray (sin ang)) (trans point1 0 1) (trans point2 0 1) ) (command "_ucs" "_restore" "scu_init") ) (command "_ucs" "_delete" "scu_init") (command "_undo" "_end") (setvar "cmdecho" v1) (setvar "osmode" v2) (setq *error* m:err m:err nil ) )[/color] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; C:HELICOIDE Boite de dialogue (defun c:helicoide (/ dcl_id what_next ray sp pas) (if (not (member "geomcal.arx" (arx))) (arxload "geomcal") ) (setq dcl_id (load_dialog "helicoide.dcl")) (setq what_next 2) (while (>= what_next 2) (if (not (new_dialog "helicoide" dcl_id)) (exit) ) (start_list "nbre") (mapcar 'add_list '("Nombre de spires" "Nombre de segments") ) (end_list) (start_list "dim") (mapcar 'add_list '("Rayon" "Diamètre") ) (end_list) (start_list "typ_pas") (mapcar 'add_list '("Valeur du pas" "Avance par segment") ) (end_list) (if (null *seg_hel*) (setq *seg_hel* 12) ) (if (null *axe_hel*) (setq *axe_hel* '(0 0 0)) ) (if (not *dim_hel*) (setq *dim_hel* 0) ) (if (not *nbre_hel*) (setq *nbre_hel* 0) ) (if (not *typ_pas*) (setq *typ_pas* 0) ) (if (not *sens_hel*) (setq *sens_hel* "Droite") ) (if (not *sp_hel*) (setq sp 1) (setq sp *sp_hel*) ) (if (not *ray_hel*) (setq ray 1.0) (setq ray *ray_hel*) ) (if (not *pas_hel*) (setq pas 1.0) (setq pas *pas_hel*) ) (foreach n '("nb_seg" "sldr_seg") (set_tile n (itoa *seg_hel*)) ) (set_tile "dim" (itoa *dim_hel*)) (set_tile "nbre" (itoa *nbre_hel*)) (set_tile "typ_pas" (itoa *typ_pas*)) (set_tile "nb_sp" (itoa sp)) (set_tile "val_pas" (rtos pas)) (set_tile "ray_ext" (rtos ray)) (if (equal *sens_hel* "Droite") (set_tile "drte" "1") (set_tile "gche" "1") ) (set_tile "x_coord" (rtos (car *axe_hel*))) (set_tile "y_coord" (rtos (cadr *axe_hel*))) (set_tile "z_coord" (rtos (caddr *axe_hel*))) (action_tile "sldr_seg" (strcat "(if (or (= $reason 1) (= $reason 3))" "(progn (set_tile \"nb_seg\" $value)" "(setq *seg_hel* (atoi $value))))" ) ) (action_tile "nb_seg" (strcat "(if (or (= $reason 1) (= $reason 2))" "(progn (set_tile \"sldr_seg\" $value)" "(setq *seg_hel* (atoi $value))))" ) ) (action_tile "dim" (strcat "(if (= $value \"0\")" "(setq *dim_hel* 0)" "(setq *dim_hel* 1))" ) ) (action_tile "nbre" (strcat "(if (= $value \"0\")" "(setq *nbre_hel* 0)" "(setq *nbre_hel* 1))" ) ) (action_tile "typ_pas" (strcat "(if (= $value \"0\")" "(setq *typ_pas* 0)" "(setq *typ_pas* 1))" ) ) (action_tile "nb_sp" (strcat "(if (cal $value)" "(progn (setq sp (cal $value))" "(setq *sp_hel* sp)" "(set_tile \"nb_sp\" (itoa sp)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"nb_sp\" 2)))" ) ) (action_tile "val_pas" (strcat "(if (cal $value)" "(progn (setq pas (float (cal $value)))" "(setq *pas_hel* pas)" "(set_tile \"val_pas\" (rtos pas)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"val_pas\" 2)))" ) ) (action_tile "drte" "(if (= (atoi $value) 1) (setq *sens_hel* \"Droite\"))" ) (action_tile "gche" "(if (= (atoi $value) 1) (setq *sens_hel* \"Gauche\"))" ) (action_tile "ray_ext" (strcat "(if (cal $value)" "(progn (setq ray (float (cal $value)))" "(setq *ray_hel* ray)" "(set_tile \"ray_ext\" (rtos ray)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"ray_ext\" 2)))" ) ) (action_tile "x_coord" (strcat "(progn" "(setq *axe_hel* (subst (atof $value) (car *axe_hel*) *axe_hel*))" "(set_tile \"x_coord\" (rtos (car *axe_hel*))))" ) ) (action_tile "y_coord" (strcat "(progn" "(setq *axe_hel* (subst (atof $value) (cadr *axe_hel*) *axe_hel*))" "(set_tile \"y_coord\" (rtos (cadr *axe_hel*))))" ) ) (action_tile "z_coord" (strcat "(progn" "(setq *axe_hel* (subst (atof $value) (caddr *axe_hel*) *axe_hel*))" "(set_tile \"z_coord\" (rtos (caddr *axe_hel*))))" ) ) (action_tile "b_axe" "(done_dialog 3)") (action_tile "pick_pas" "(done_dialog 4)") (action_tile "pick_ray" "(done_dialog 5)") (action_tile "accept" (strcat "(cond" "(( "(alert \"Le nombre de segments ne peut être inférieur à 2.\")" "(mode_tile \"nb_seg\" 2))" "(( "(alert \"Le nombre de spires doit être positif et non nul.\")" "(mode_tile \"nb_sp\" 2))" "(( "(alert \"La valeur du pas doit être positive et non nulle.\")" "(mode_tile \"val_pas\" 2))" "(( "(alert \"Le rayon de l'hélicoïde doit être positif et non nul.\")" "(mode_tile \"ray_ext\" 2))" "(T (done_dialog 1)))" ) ) (setq what_next (start_dialog)) (cond ((= what_next 3) (setq *axe_hel* (getpoint "\nSélectionnez le point à la base de l'hélicoïde: " ) ) ) ((= what_next 4) (setq pas (getdist "\nSpécifiez la valeur du pas: ") *pas_hel* pas ) ) ((= what_next 5) (setq ray (getdist "\nSpécifiez le rayon de l'hélicoïde: ") *ray_hel* ray ) ) ((= what_next 1) (if (= *dim_hel* 1) (setq ray (/ ray 2)) ) (if (= *nbre_hel* 0) (setq sp (* sp *seg_hel*)) ) (if (= *typ_pas* 1) (setq pas (* pas *seg_hel*)) ) [color=#CC0000](CREAT_HELICOIDE sp *seg_hel* ray pas *sens_hel* *axe_hel*)[/color] ) ) ) (unload_dialog dcl_id) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; C:-HELICOIDE Ligne de commande (defun c:-helicoide (/ seg pas sens sp ray axe) (if (not (numberp *seg_hel*)) (setq *seg_hel* 12) ) (if (setq seg (getint (strcat "\nEntrez le nombre de segments par spire (itoa *seg_hel*) ">: " ) ) ) (setq *seg_hel* seg) (setq seg *seg_hel*) ) (while ( (alert "Le nombre de segments par spire ne peut être inférieur à 2." ) (setq seg (getint "\nEntrez le nombre de segments par spire: ") *seg_hel* seg ) ) (initget "Segments" 7) (if (= (setq sp (getint "\nEntrez le nombre de spires ou [segments]: ")) "Segments" ) (progn (initget 7) (setq sp (getint "\nEntrez le nombre de segments à tracer: ")) ) (setq sp (* sp seg)) ) (initget "Droite Gauche") (if (not (setq sens (getkword "\nIndiquez le sens du pas [Droite/Gauche] : " ) ) ) (setq sens "Droite") ) (initget 7 "Par_segment") (if (= (setq pas (getdist "\nSpécifiez la valeur du pas de l'hélice ou [Par_segment]: " ) ) "segment" ) (progn (initget 7) (setq pas (* (getdist "\nSpécifiez la valeur de l'avance par segment: " ) seg ) ) ) ) (initget "Diamètre" 7) (if (= (setq ray (getdist "\nSpécifiez le rayon de l'hélice ou [Diamètre]: ") ) "Diamètre" ) (progn (initget 7) (setq ray (/ (getdist "Spécifiez le diamètre de l'hélice: ") 2)) ) ) (if (not (and *axe_hel* (listp *axe_hel*))) (setq *axe_hel* '(0.0 0.0 0.0)) ) (if (setq axe (getpoint (strcat "\nSpécifiez le point à la base de l'axe (rtos (car *axe_hel*)) "," (rtos (cadr *axe_hel*)) "," (rtos (caddr *axe_hel*)) ">: " ) ) ) (setq *axe_hel* axe) (setq axe *axe_hel*) ) [color=#CC0000](CREAT_HELICOIDE sp seg ray pas sens axe)[/color] (princ) ) [Edité le 3/1/2006 par (gile)][Edité le 5/1/2006 par (gile)] [Edité le 5/1/2006 par (gile)]
  7. Salut, Je pense qu'on ne peut faire des tests booléens efficaces sur les codes 70 des cotes que sur les valeurs 32, 64 et 128, les valeurs de 0 à 6 n'étant pas des valeurs binaires. Je crains qu'il ne faille passer par des énumérations, pour sélectionner toutes les cotes angulaires, tu peux toujours faire : (ssget "_X" '((0 . "DIMENSION") (-4 . ""))) Mais çà tu sais ;) Oups, j'avais oublie les espaces... [Edité le 3/1/2006 par (gile)]
  8. (gile)

    Attention aux images WMF

    Merci !
  9. (gile)

    Réseau hélicoïdal

    :present: Voilà la version 2006 de RES_HEL, avec en plus, la possibilité de spécifier le décalage en hauteur entre les objets ou la hauteur totale. Taper -RES_HEL pour entrer les données sur la ligne de commande ou RES_HEL pour ouvrir la boite de dialogue : http://img526.imageshack.us/img526/9844/reshel5ow.png NOUVELLE VERSION Ajout de l'option "Référence" dans la spécification à l'écran de l'angle décrit ou entre les éléments. Le code .DCL à enregistrer sous Res_hel.dcl dans un dossier du chemin de recherche d'AutoCAD : /// Res_hel boite de dialogue pour réseau hélicoïdal res_hel:dialog{ label="Réseau hélicoïdal"; initial_focus="nbre"; spacer; :row{ :edit_box{ label="Nombre d'éléments"; key="nbre"; edit_width=8; } spacer; :button{ label="Choix des objets"; key="jeu_sel"; fixed_width=true; } } spacer; :boxed_row{ label="Centre du réseau"; :edit_box{ label="X :"; key="x_coord"; edit_width=12; } spacer; :edit_box{ label="Y :"; key="y_coord"; edit_width=12; } spacer; :button{ label=">>"; key="cen_sel"; fixed_width=true; height=2; } } spacer; :boxed_row{ label="Décalage en hauteur"; :popup_list{ key="dec_ht"; width=22; } :edit_box{ key="ht_clv"; edit_width=12; } spacer; :button{ label=">>"; key="ht_sel"; fixed_width=true; height=2; } } spacer; :boxed_column{ label="Rotation"; :radio_row{ :radio_button{ label="Sens trigonométrique"; key="tri"; } :radio_button{ label="Sens horaire"; key="hor"; } } :row{ :popup_list{ key="ang_typ"; width=22; } :edit_box{ key="ang_clv"; edit_width=12; } spacer; :button{ label=">>"; key="ang_sel"; fixed_width=true; height=2; } } } spacer; ok_cancel; } Le LISP : Nouvelle version posté le 07/02/06 Il est aussi possible de télécharger seulement Res_hel.vlx (un seul fichier compilé). ;;; C:RES_HEL et C:-RES_HEL Gilles Chanteau -04/07/06- ;;; ;;; Crée un réseau hélicoïdal avec les objets sélectionnés (un réseau polaire ;;; où chaque occurence est incrémentée sur Z). ;;; Accepte tous les types d'unités angulaires et des angles supérieurs à 360°. ;;; Taper res_hel ouvre une boite de dialogue. ;;; Taper -res_hel permet la saisie à la ligne de commande. ;;;************************* SOUS-ROUTINES **************************;;; ;;; STR2ANG Convertit une chaine de caractères représentant un angle ;;; en sa valeur en radians (nombre réel) ;;; Accepte les angles supérieurs à 360° ;;; Ne prend pas en compte la valeur des variables ANGDIR et ANGBASE (defun STR2ANG (str unt / ang) (if (not unt) (setq unt (getvar "AUNITS")) ) (cond ((numberp (read str)) (setq ang (float (read str))) (cond ((or (= unt 0) (= unt 1) (= unt 4)) (* (/ ang 180) pi) ) ((= unt 2) (* (/ ang 200) pi) ) ((= unt 3) ang ) ) ) ((= unt 4) (if (= (getvar "ANGDIR") 1) (- (getvar "angbase") (angtof str)) (- (angtof str) (getvar "angbase")) ) ) ((angtof str) (if (not (member "geomcal.arx" (arx))) (arxload "geomcal") ) (* (/ (cal str) 180) pi) ) ) ) ;;; ANG2STR Convertit une valeur d'angle en radians en chaine de caractère ;;; représentant l'angle dans l'unité spécifiée ;;; Accepte les angles supérieurs à 360° ;;; Ne prend pas en compte la valeur des variables ANGDIR et ANGBASE (defun ang2str (ang unt prec / d m s) (if (numberp ang) (progn (if (not unt) (setq unt (getvar "AUNITS")) ) (if (not prec) (setq prec (getvar "AUPREC")) ) (cond ((= unt 0) (rtos (* (/ ang pi) 180) 2 prec) ) ((= unt 1) (setq d (* (/ ang pi) 180) m (* 60 (- d (setq d (fix d)))) s (* 60 (- m (setq m (fix m)))) ) (if (equal (abs s) 60 1e-009) (progn (setq s 0.0) (if (minusp m) (setq m (1- m)) (setq m (1+ m)) ) ) ) (if (= (abs m) 60) (progn (setq m 0) (if (minusp m) (setq d (1- d)) (setq d (1+ d)) ) ) ) (strcat (itoa d) "d" (if ( (strcat (itoa m) "'") "" ) (if ( (if ( (strcat (itoa (fix s)) "\"") (strcat (rtos s 2 (- prec 4)) "\"") ) "" ) ) ) ((= unt 2) (strcat (rtos (* (/ ang pi) 200) 2 prec) "g") ) ((= unt 3) (strcat (rtos ang 2 prec) "r") ) ((= unt 4) (if (= (getvar "ANGDIR") 1) (setq ang (- ang)) ) (angtos (+ (getvar "ANGBASE") ang) 4 prec) ) ) ) ) ) ;;; Redéfinition de la fonction *error* (defun RES_HEL_ERR (msg) (if (or (= msg "Fonction annulée") (= msg "quitter / sortir abandon") ) (princ) (princ (strcat "\nErreur: " msg)) ) (command) (command "_undo" "_end") (setvar "cmdecho" v1) (setvar "osmode" v2) (setvar "aunits" v3) (setq *error* m:err m:err nil ) (princ) ) ;;; CREAT_RES_HEL Création du réseau (defun CREAT_RES_HEL (ss nb axe ang ht / v1 v2 v3) (setq m:err *error* *error* RES_HEL_ERR v1 (getvar "cmdecho") v2 (getvar "osmode") v3 (getvar "aunits") ) (command "_undo" "_begin") (setvar "cmdecho" 0) (setvar "osmode" 0) (setvar "aunits" 3) (repeat (1- nb) (command "_copy" ss "" axe axe) (command "_rotate" ss "" axe ang) (command "_move" ss "" '(0 0) (list 0 0 ht)) ) (command "_undo" "_end") (setvar "cmdecho" v1) (setvar "osmode" v2) (setvar "aunits" v3) (setq *error* m:err m:err nil ) ) ;;;******************** FONCTIONS PRINCIPALES **********************;;; ;;; C:-RES_HEL Entrées utilisateur à la ligne de commande (defun C:-RES_HEL (/ ss nb ang ht cen) (while (not (setq ss (ssget)))) (initget 7) (setq nb (getint "\nEntrez le nombre d'éléments du réseau: ")) (initget 1) (setq cen (getpoint "\nSpécifiez le centre du réseau: ")) (if (not (setq ht (getdist "\nSpécifiez le décalage en hauteur ou : " ) ) ) (progn (initget 1) (setq ht (/ (getdist "\nSpécifiez la hauteur totale: ") nb)) ) ) (initget "Décrit Elément") (if (= (getkword "\nPrécisez : angle décrit ou angle entre les éléments [Décrit/Elément] : " ) "Elément" ) (setq ang_t "angle entre les éléments") (setq ang_t "angle décrit") ) (while (not (numberp ang)) (if (= (setq ang (getstring (strcat "\nEntrez l'" ang_t " ou : ") ) ) "" ) (progn (initget "Référence") (if (= "Référence" (setq ang (getangle cen "\nSpécifiez l'angle ou [Référence]: ")) ) (setq ang (+ (- (getangle cen "\nSpécifiez l'angle de référence: ")) (getangle cen "\nSpécifiez le nouvel angle: ") ) ) ) (if (= 1 (getvar "ANGDIR")) (setq ang (- ang)) ) (if (minusp ang) (setq ang (+ (* 2 pi) ang)) ) ) (setq ang (STR2ANG ang nil)) ) ) (if (= ang_t "angle décrit") (setq ang (/ ang nb)) ) (initget "Horaire Trigonométrique") (if (= (getkword "\nSpécifiez le sens de rotation [Horaire/Trigonométrique] : " ) "Horaire" ) (setq ang (- ang)) ) (CREAT_RES_HEL ss nb cen ang ht) (princ) ) ;;; C:RES_HEL Entrées utilisateur dans une boite de dialogue (defun C:RES_HEL (/ ss ang pt ht) (setq dcl_id (load_dialog "res_hel.dcl")) (setq what_next 2) (while ( (if (not (new_dialog "res_hel" dcl_id)) (exit) ) (start_list "ang_typ") (mapcar 'add_list '("Angle décrit" "Angle entre les éléments") ) (end_list) (start_list "dec_ht") (mapcar 'add_list '("Entre les éléments" "Hauteur totale") ) (end_list) (if (not *nb_res_hel*) (setq *nb_res_hel* 4) ) (if (null *cen_res_hel*) (setq *cen_res_hel* '(0.0 0.0)) ) (if (not *dec_res_hel*) (setq *dec_res_hel* 0) ) (if (not *ht_res_hel*) (setq *ht_res_hel* 1.0) ) (setq ht *ht_res_hel*) (if (not *tot_res_hel*) (setq *tot_res_hel* 0) ) (if (not *sens_res_hel*) (setq *sens_res_hel* 1) ) (if (not *ang_res_hel*) (setq *ang_res_hel* (* 2 pi)) ) (setq ang *ang_res_hel*) (if ss (mode_tile "accept" 0) (mode_tile "accept" 1) ) (if (zerop *tot_res_hel*) (set_tile "ang_typ" "0") (set_tile "ang_typ" "1") ) (if (zerop *dec_res_hel*) (set_tile "dec_ht" "0") (set_tile "dec_ht" "1") ) (if (minusp *sens_res_hel*) (set_tile "hor" "1") (set_tile "tri" "1") ) (set_tile "nbre" (itoa *nb_res_hel*)) (set_tile "ang_clv" (ANG2STR ang nil nil)) (set_tile "ht_clv" (rtos ht)) (set_tile "x_coord" (rtos (car *cen_res_hel*))) (set_tile "y_coord" (rtos (cadr *cen_res_hel*))) (action_tile "nbre" (strcat "(if (and (numberp (read $value))" "( "(progn (setq *nb_res_hel* (atoi $value))" "(set_tile \"nbre\" (itoa *nb_res_hel*)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"nbre\" 2)))" ) ) (action_tile "x_coord" (strcat "(if (numberp (read $value))" "(setq *cen_res_hel* (list (atof $value) (cadr *cen_res_hel*)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"x_coord\" 2)))" ) ) (action_tile "y_coord" (strcat "(if (numberp (read $value))" "(setq *cen_res_hel* (list (car *cen_res_hel*) (atof $value)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"y_coord\" 2)))" ) ) (action_tile "ht_clv" (strcat "(if (numberp (read $value))" "(progn (setq ht (atof $value))" "(setq *ht_res_hel* ht)" "(set_tile \"ht_clv\" (rtos ht)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"ht_clv\" 2)))" ) ) (action_tile "dec_ht" (strcat "(if (= $value \"0\")" "(setq *dec_res_hel* 0)" "(setq *dec_res_hel* 1))" ) ) (action_tile "ang_typ" (strcat "(if (= $value \"0\")" "(setq *tot_res_hel* 0)" "(setq *tot_res_hel* 1))" ) ) (action_tile "hor" (strcat "(if (= $value \"0\")" "(setq *sens_res_hel* 1)" "(setq *sens_res_hel* -1))" ) ) (action_tile "tri" (strcat "(if (= $value \"1\")" "(setq *sens_res_hel* 1)" "(setq *sens_res_hel* -1))" ) ) (action_tile "ang_clv" (strcat "(if (angtof $value)" "(progn (setq ang (STR2ANG $value nil))" "(setq *ang_res_hel* ang)" "(set_tile \"ang_clv\" (ANG2STR ang nil nil)))" "(progn (alert \"Entrée non valide\")" "(mode_tile \"ang_clv\" 2)))" ) ) (action_tile "jeu_sel" "(done_dialog 3)") (action_tile "ht_sel" "(done_dialog 4)") (action_tile "cen_sel" "(done_dialog 5)") (action_tile "ang_sel" "(done_dialog 6)") (action_tile "accept" "(done_dialog 1)") (setq what_next (start_dialog)) (cond ((= what_next 3) (setq ss (ssget)) ) ((= what_next 4) (setq ht (getdist "\nSpécifiez le premier point: ")) (setq *ht_res_hel* ht) ) ((= what_next 5) (setq *cen_res_hel* (getpoint "\nSpécifiez le centre: ")) ) ((= what_next 6) (initget "Référence") (if (= "Référence" (setq ang (getangle *cen_res_hel* "\nSpécifiez l'angle ou [Référence]: " ) ) ) (setq ang (+ (- (getangle *cen_res_hel* "\nSpécifiez l'angle de référence: " ) ) (getangle *cen_res_hel* "\nSpécifiez le nouvel angle: " ) ) ) ) (if (= 1 (getvar "ANGDIR")) (setq ang (- ang)) ) (if (minusp ang) (setq ang (+ (* 2 pi) ang)) ) (setq *ang_res_hel* ang) ) ((= what_next 1) (setq ang (* ang *sens_res_hel*)) (if (zerop *tot_res_hel*) (setq ang (/ ang *nb_res_hel*)) ) (if (not (zerop *dec_res_hel*)) (setq ht (/ ht *nb_res_hel*)) ) (CREAT_RES_HEL ss *nb_res_hel* *cen_res_hel* ang ht) ) ) ) (unload_dialog dcl_id) (princ) ) [Edité le 7/2/2006 par (gile)] [Edité le 4/7/2006 par (gile)]
  10. (gile)

    Solides 3D en colimaçon

    Petits changements dans le premier message suite à des améliorations apportées au LISP Réseau hélicoïdal
  11. (gile)

    Réseau hélicoïdal

    J'ai apporté quelques petites améliorations à RES_HEL. Peut-être prochainement une boite de dialogue ?...
  12. (gile)

    texte en cercle

    Salut, La démarche a été moulte fois décrite sur le site. Les Express-Tools sont sur le CD d'installation d'AutoCAD. Il faut insérer le CD et quand l'installation est relancée, choisir d'installer les Express-Tools.
  13. Salut, Essaye avec eTransmit qui transmet aussi les polices de caractères utilisées dans le dessin.
  14. Salut, Je ne sais pas si cela peut t'aider, mais dans le menu contextuel de la commande MTEXT (clic droit), si tu choisis Symbole -> Autres... une fenêtre de caractères va te proposer, entre autre, des caractères arabes que tu peux sélectionner et copier dans ton texte.
  15. (gile)

    Entités en doublons

    Salut, Les express-tools ne doivent pas être installés sur ton poste. Il faut que tu inséres le CD d'installation d'AutoCAD 2004 puis choisir d'installer les express-tools. Pour la "version française", je ne me souviens plus où je l'avais trouvée, mais çà se trouve sur le net, c'est gratuit, c'est juste un fichier à remplacer dans le répertoire de support. [Edité le 29/12/2005 par (gile)]
  16. Une "version 2006" de STATVAR, mise à jour à l'aide de la liste complète des variables système AutoCAD (defun c:statvar (/ l_var l_rslt renvoi) (setq l_var '("_LINFO" "_PKSER" "_SERVER" "_TOOLPALETTEPATH" "_VERNUM" "ACADLSPASDOC" "ACADPREFIX" "ACADVER" "ACISOUTVER" "AFLAGS" "ANGBASE" "ANGDIR" "APBOX" "APERTURE" "AREA" "ASSISTSTATE" "ATTDIA" "ATTMODE" "ATTREQ" "AUDITCTL" "AUNITS" "AUPREC" "AUTOSNAP" "AUXSTAT" "AXISUNT" "BACKGROUNDPLOT" "BACKZ" "BACTIONCOLOR" "BDEPENDENCYHIGHLIGHT" "BGRIPOBJCOLOR" "BGRIPOBJSIZE" "BINDTYPE" "BLIPMODE" "BLOCKEDITLOCK" "BLOCKEDITOR" "BPARAMETERCOLOR" "BPARAMETERFONT" "BPARAMETERSIZE" "BTMARKDISPLAY" "BVMODE" "CALCINPUT" [surligneur]"CDATE"[/surligneur] "CECOLOR" "CELTSCALE" "CELTYPE" "CELWEIGHT" "CENTERMT" "CHAMFERA" "CHAMFERB" "CHAMFERC" "CHAMFERD" "CHAMMODE" "CIRCLERAD" "CLAYER" "CLEANSCREENSTATE" "CLISTATE" "CMDACTIVE" "CMDDIA" "CMDECHO" "CMDINPUTHISTORYMAX" "CMDNAMES" "CMLJUST" "CMLSCALE" "CMLSTYLE" "COMPASS" "COORDS" "CPLOTSTYLE" "CPROFILE" [surligneur]"CPUTICKS"[/surligneur] "CROSSINGAREACOLOR" "CTAB" "CTABLESTYLE" "CURSORSIZE" "CVPORT" [surligneur]"DATE"[/surligneur] "DBCSTATE" "DBMOD" "DCTCUST" "DCTMAIN" "DEFLPLSTYLE" "DEFPLSTYLE" "DELOBJ" "DEMANDLOAD" "DIASTAT" "DIMADEC" "DIMALT" "DIMALTD" "DIMALTF" "DIMALTRND" "DIMALTTD" "DIMALTTZ" "DIMALTU" "DIMALTZ" "DIMAPOST" "DIMASO" "DIMASSOC" "DIMASZ" "DIMATFIT" "DIMAUNIT" "DIMAZIN" "DIMBLK" "DIMBLK1" "DIMBLK2" "DIMCEN" "DIMCLRD" "DIMCLRE" "DIMCLRT" "DIMDEC" "DIMDLE" "DIMDLI" "DIMDSEP" "DIMEXE" "DIMEXO" "DIMFIT" "DIMFRAC" "DIMGAP" "DIMJUST" "DIMLDRBLK" "DIMLFAC" "DIMLIM" "DIMLUNIT" "DIMLWD" "DIMLWE" "DIMPOST" "DIMRND" "DIMSAH" "DIMSCALE" "DIMSD1" "DIMSD2" "DIMSE1" "DIMSE2" "DIMSHO" "DIMSOXD" "DIMSTYLE" "DIMTAD" "DIMTDEC" "DIMTFAC" "DIMTIH" "DIMTIX" "DIMTM" "DIMTMOVE" "DIMTOFL" "DIMTOH" "DIMTOL" "DIMTOLJ" "DIMTP" "DIMTSZ" "DIMTVP" "DIMTXSTY" "DIMTXT" "DIMTZIN" "DIMUNIT" "DIMUPT" "DIMZIN" "DISPSILH" "DISTANCE" "DONUTID" "DONUTOD" "DRAGMODE" "DRAGP1" "DRAGP2" "DRAWORDERCTL" "DRSTATE" "DTEXTED" "DWGCHECK" "DWGCODEPAGE" "DWGNAME" "DWGPREFIX" "DWGTITLED" "DYNDIGRIP" "DYNDIVIS" "DYNMODE" "DYNPICOORDS" "DYNPIFORMAT" "DYNPIVIS" "DYNPROMPT" "DYNTOOLTIPS" "EDGEMODE" "ELEVATION" "ENTERPRISEMENU" "ENTNEXTS" "ENTMODS" "ERRNO" "EXPERT" "EXPLMODE" "EXTMAX" "EXTMIN" "EXTNAMES" "FACETRATIO" "FACETRES" "FIELDDISPLAY" "FIELDEVAL" "FILEDIA" "FILLETRAD" "FILLMODE" "FLATLAND" "FONTALT" "FONTMAP" "FRONTZ" "FULLOPEN" "FULLPLOTPATH" "GFANG" "GFCLR1" "GFCLR2" "GFCLRLUM" "GFCLRSTATE" "GFNAME" "GFSHIFT" "GRIDMODE" "GRIDUNIT" "GRIPBLOCK" "GRIPCOLOR" "GRIPDYNCOLOR" "GRIPHOT" "GRIPHOVER" "GRIPOBJLIMIT" "GRIPS" "GRIPSIZE" "GRIPTIPS" "HALOGAP" "HANDLES" "HIDEPRECISION" "HIDETEXT" "HIGHLIGHT" "HPANG" "HPASSOC" "HPBOUND" "HPDOUBLE" "HPDRAWORDER" "HPGAPTOL" "HPINHERIT" "HPNAME" "HPOBJWARNING" "HPORIGIN" "HPORIGINMODE" "HPSCALE" "HPSEPARATE" "HPSPACE" "HYPERLINKBASE" "IMAGEHLT" "INDEXCTL" "INETLOCATION" "INPUTHISTORYMODE" "INSBASE" "INSNAME" "INSUNITS" "INSUNITSDEFSOURCE" "INSUNITSDEFTARGET" "INTELLIGENTUPDATE" "INTERSECTIONCOLOR" "INTERSECTIONDISPLAY" "ISAVEBAK" "ISAVEPERCENT" "ISOLINES" "LASTANGLE" "LASTPOINT" [surligneur]"LASTPROMPT"[/surligneur] "LAYERFILTERALERT" "LAYOUTREGENCTL" "LENSLENGTH" "LIMCHECK" "LIMMAX" "LIMMIN" "LISPINIT" "LOCALE" "LOCALROOTPREFIX" "LOCKUI" "LOGFILEMODE" "LOGFILENAME" "LOGFILEPATH" "LOGINNAME" "LTSCALE" "LUNITS" "LUPREC" "LWDEFAULT" "LWDISPLAY" "LWUNITS" "MACROTRACE" "MAXACTVP" "MAXOBJMEM" "MAXSORT" "MBUTTONPAN" "MEASUREINIT" "MEASUREMENT" "MENUCTL" "MENUECHO" "MENUNAME" [surligneur]"MILLISECS"[/surligneur] "MIRRTEXT" "MODEMACRO" "MSMSTATE" "MSOLESCALE" "MTEXTED" "MTJIGSTRING" "MYDOCUMENTSPREFIX" "NFWSTATE" "NODENAME" "NOMUTT" "OBSCUREDCOLOR" "OBSCUREDLTYPE" "OFFSETDIST" "OFFSETGAPTYPE" "OLEFRAME" "OLEHIDE" "OLEQUALITY" "OLESTARTUP" "ORTHOMODE" "OSMODE" "OSNAPCOORD" "OSNAPHATCH" "OSNAPZ" "PALETTEOPAQUE" "PAPERUPDATE" "PDMODE" "PDSIZE" "PEDITACCEPT" "PELLIPSE" "PERIMETER" "PFACEVMAX" "PHANDLE" "PICKADD" "PICKAUTO" "PICKBOX" "PICKDRAG" "PICKFIRST" "PICKSTYLE" "PLATFORM" "PLINEGEN" "PLINETYPE" "PLINEWID" "PLOTOFFSET" "PLOTROTMODE" "PLQUIET" "POLARADDANG" "POLARANG" "POLARDIST" "POLARMODE" "POLYSIDES" "POPUPS" "PREVIEWEFFECT" "PREVIEWFILTER" "PRODUCT" "PROGRAM" "PROJECTNAME" "PROJMODE" "PROXYGRAPHICS" "PROXYNOTICE" "PROXYSHOW" "PROXYWEBSEARCH" "PSLTSCALE" "PSPROLOG" "PSQUALITY" "PSTYLEMODE" "PSTYLEPOLICY" "PSVPSCALE" "PUCSBASE" "QAFLAGS" "QAUCSLOCK" "QCSTATE" "QTEXTMODE" "QUEUEDREGENMAX" "RASTERDPI" "RASTERPREVIEW" "RECOVERYMODE" "REFEDITNAME" "REGENMODE" "RE-INIT" "REMEMBERFOLDERS" "REPORTERROR" "ROAMABLEROOTPREFIX" "RTDISPLAY" "SAVEFILE" "SAVEFILEPATH" "SAVENAME" "SAVETIME" "SCREENBOXES" "SCREENMODE" "SCREENSIZE" "SDI" "SELECTIONAREA" "SELECTIONAREAOPACITY" "SELECTIONPREVIEW" "SHADEDGE" "SHADEDIF" "SHORTCUTMENU" "SHOWLAYERUSAGE" "SHPNAME" "SIGWARN" "SKETCHINC" "SKPOLY" "SNAPANG" "SNAPBASE" "SNAPISOPAIR" "SNAPMODE" "SNAPSTYL" "SNAPTYPE" "SNAPUNIT" "SOLIDCHECK" "SORTENTS" "SPLFRAME" "SPLINESEGS" "SPLINETYPE" "SSFOUND" "SSLOCATE" "SSMAUTOOPEN" "SSMPOLLTIME" "SSMSHEETSTATUS" "SSMSTATE" "STANDARDSVIOLATION" "STARTUP" "SURFTAB1" "SURFTAB2" "SURFTYPE" "SURFU" "SURFV" "SYSCODEPAGE" "TABLEINDICATOR" "TABMODE" "TARGET" "TBCUSTOMIZE" "TDCREATE" [surligneur]"TDINDWG"[/surligneur] "TDUCREATE" "TDUPDATE" [surligneur]"TDUSRTIMER"[/surligneur] "TDUUPDATE" "TEMPOVERRIDES" "TEMPPREFIX" "TEXTEVAL" "TEXTFILL" "TEXTQLTY" "TEXTSIZE" "TEXTSTYLE" "THICKNESS" "TILEMODE" "TOOLTIPMERGE" "TOOLTIPS" "TPSTATE" "TRACEWID" "TRACKPATH" "TRAYICONS" "TRAYNOTIFY" "TRAYTIMEOUT" "TREEDEPTH" "TREEMAX" "TRIMMODE" "TSPACEFAC" "TSPACETYPE" "TSTACKALIGN" "TSTACKSIZE" "UCSAXISANG" "UCSBASE" "UCSFOLLOW" "UCSICON" "UCSNAME" "UCSORG" "UCSORTHO" "UCSVIEW" "UCSVP" "UCSXDIR" "UCSYDIR" "UNDOCTL" "UNDOMARKS" "UNITMODE" "UPDATETHUMBNAIL" "USERI1" "USERI2" "USERI3" "USERI4" "USERI5" "USERR1" "USERR2" "USERR3" "USERR4" "USERR5" "USERS1" "USERS2" "USERS3" "USERS4" "USERS5" "VIEWCTR" "VIEWDIR" "VIEWMODE" "VIEWSIZE" "VIEWTWIST" "VISRETAIN" "VPMAXIMIZEDSTATE" "VSMAX" "VSMIN" "VTDURATION" "VTENABLE" "VTFPS" "WHIPARC" "WINDOWAREACOLOR" "WMFBKGND" "WMFFOREGND" "WORLDUCS" "WORLDVIEW" "WRITESTAT" "WSCURRENT" "XCLIPFRAME" "XEDIT" "XFADECTL" "XLOADCTL" "XLOADPATH" "XREFCTL" "XREFNOTIFY" "XREFTYPE" "ZOOMFACTOR" ) ) (initget 1 "Initial Comparaison") (cond ((eq (getkword "\n[initial/Comparaison] ?: ") "Initial") (setq var_ori (mapcar 'getvar l_var)) ) (T (if (null var_ori) (prompt "\nEtat Initial non mémorisé.\nExécutez l'option Initial" ) (progn (setq l_rslt (mapcar 'getvar l_var)) (setq renvoi (mapcar '(lambda (x y z) (if (not (equal x y)) (strcat "\n" z " a été modifié.") "" ) ) var_ori l_rslt l_var ) ) (if (apply '= renvoi) (prompt "\nAucune variable modifiée.") (progn (textscr) (foreach n renvoi (if (not (eq n "")) (prompt n) ) ) ) ) ) ) ) ) (prin1) ) Les variables CDATE, CPUTICKS, DATE, LASTPROMPT, MILLISECS, TDINDWG et TDUSRTIMER changent systématiquement entre un STATVAR Initial et un STATVAR Comparaison il peut être intéressant de les supprimer de la liste.
  17. Tu peux voir les variables systèmes et les variables environnement qui diffèrent entre deux profils utilisateur à l'aide des LISP de Bonuscad STATVAR et STATENV. Sous un profil, tu lances STATVAR et STATENV option Initial, tu changes de profil et relances les deux programmes option Comparaison.
  18. (gile)

    Entités en doublons

    Salut, Modify -> Delete Duplicate Objects, pour la version anglaise ou Modifier -> Effacer objets superposés, pour la version française (.mnu) ou Modifier -> Supprimer les doublons, pour la version française (.cui) Lancent la fonction overkill Je ne connais pas d'autre version.
  19. Je voulais dire qu'il me semblait que tu devais avoir un problème d'affichage sur ton poste, car sur le mien, les images que tu as postées au dessus s'affichent normalement.
  20. Salut Didier, Au vu de ce message et de celui là, il semble qu'il y ait un problème chez toi, parce que, presonnellement, je n'en ai vu aucun à la lecture des messages qui ont motivés ceux cités ci-dessus.
  21. Salut, Regarde aussi la variable INPUTHISTORYMODE
  22. (gile)

    Config souris et profil

    Salut, Si dans les "Préférences utilisateur" tu sélectionnes les deux "Répéter la dernière commande" et "ENTRÉE", il est normal que le bouton "Menu contextuel dans la zone du dessin" se décoche puisque tu as paramétré AutoCAD pour ne plus avoir de menu contextuel. Si tu crées un nouveau "Profil utilisateur", et que sous ce profil, tu paramètres AutoCAD, il conservera, dans ce profil, les paramètres courants à la fermeture du profil (changement de profil ou fermeture d'AutoCAD). À ceci près que le changement de certaines options affecte tous les profils, et que certaines autres ne sont pas conservées à la fermeture du dessin. Par exemple : - le "Lissage de l'objet rendu" (Variable Système FACETRES) affecte tous les profils. - la couleur de l'écran (Variable environnement BACKGROUND) est conservée dans le profil. - la signification du bouton droit (Variable Système SHORTCUTMENU) n'est pas conservée dans le profil. Par contre sont conservés dans le profil les menus courants et les barres d'outils.
  23. Une petite précision : Le drapeau (flag) de (getfiled) est à 33 (1 + 32), le flag 32 annule l'ouverture de la boite d'alerte : "Le fichier existe déjà, voulez vous le remplacer ?". Comme le mode pour (open) est "a" le texte s'ajoute à la suite des données sur le fichier existant. Regardez dans l'aide les explications pour les fonctions open, close et getfiled.
  24. Salut, Quelques lignes de code extraites de ce LISP : (textscr) (princ descr) (initget "Oui Non") (if (= (getkword "\nEnregistrer dans un fichier ? [Oui/Non] : " ) "Oui" ) (progn (setq file (open (getfiled "Créez ou sélectionnez un fichier" "" "xls" 33) "a" ) ) (princ descr file) (close file) ) ) (graphscr) Il s'agit, dans ce cas, de récupérer des lignes de textes créées, enregistrées dans la variable descr et affichées dans la fenêtre par le LISP.
  25. Salut, As-tu essayé la comande REINIT ?
×
×
  • 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é