-
Compteur de contenus
1 489 -
Inscription
-
Dernière visite
-
Jours gagnés
19
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par zebulon_
-
Pourquoi Cela ne marche t\'il pas ???
zebulon_ a répondu à un(e) sujet de cadpolo dans Personnalisation, macros, DIESEL
alors que tu voulais faire une maconnerie... où il y a l'air d'avoir un espace en trop ? Mais bon, c'est dur de tester puisque on n'a pas le style de multiligne maconneries amicalement Zebulon_ -
fmult avec boite de dialogue (suite)
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
pas encore... les fichiers texte, je connais. Les registres, je sais les lire. Ecrire dedans j'ai pas encore osé. C'est vrai qu'avec les registres, on n'aurait pas ce problème de nom de variable inconnue. Mais comme dans mon cas, la longueur de la liste est variable. Quand je lis un fichier texte, je m'arrête quand j'arrive à la fin du fichier. Avec des registres, je ne sais pas quand je dois m'arrêter de lire ? en début de lisp, il te suffirait donc de faire un (setq ROAMABLEROOTPREFIX "c:etc ...") en pointant vers un répertoire existant. Ou de remplacer par TEMPPREFIX (si c'est connu sur l'A2000) ?? Amicalement Zebulon_ -
salut comme je suis une bille en vlisp, je me soigne. Pour la pharmacie, je suis allé voir le docteur Kenny Ramage. Sa pharmacopée est intéressante. http://www.afralisp.co.za/index.htm En plus les consultations sont gratuites, on ne creuse même pas le trou abyssal de la sécu. Amicalement Zebulon_
-
fmult avec boite de dialogue (suite)
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Bonjour, bien vu pour la commande cal. Je me suis dit qu'en utilisant la calculatrice, après avoir fait un get_tile, ça permet à l'utilisateur d'entrer soit un chiffre, soit une expression arithmétique dans la boîte de dialogue. Un bémol, quand l'utilisateur met n'importe quoi dans la boîte de dialogue, la fonction cal affiche un message sur la ligne de commande (ça fait tache...), mais renvoie nil (ce qui est bien). Pour ce qui est du dcl, j'ai une fois oublié de mettre les guillements et ça a marché quand même. Alors, tantôt je les mets, tantôt pas... c'est pas bien... je devrais toujours les mettre... Amicalement Zebulon_ [Edité le 26/10/2005 par zebulon_] -
j'ai un peu bossé depuis l'ote jour et je vous soumet la nouvelle mouture le fichier fmmo.dcl dcl_settings : default_dcl_settings { audit_level = 0 ;} Fmmo : dialog { label = "FENETRE FMULT"; initial_focus = "pick_pt"; : boxed_radio_column { label = "Type de FMULT"; key = "pick_fm"; : radio_button { label = "Saisir 2 points"; key = "pick_pt"; } : radio_button { label = "Saisir Polyligne"; mnemonic = "P"; key = "pick_po"; } : radio_button { label = "Saisir Objet"; mnemonic = "O"; key = "pick_ob"; } } : list_box { label = "Vues : "; key = "List_view"; } : popup_list { label = "Echelle : "; key = "ECH"; } : text { key = Factech; } : edit_box { label = "Facteur d'echelle global"; key = "Echltp"; } : toggle { label = "PSLTSCALE"; key = "Psltscale"; } spacer_1; ok_cancel; : button { label = "Paramétrer"; key = "Param"; } } FmmoDef : dialog { label = "Valeurs par défaut"; initial_focus = "DefEchltp"; : edit_box { label = "Facteur d'échelle globale"; key = "DefEchltp"; } : toggle { label = "PSLTSCALE par défaut"; key = "DefPsltscale"; } : row { : list_box { label = "Echelles et zoom : "; tabs = "15"; width = 35; key = "DefListEch"; } : column { : button { label = "Créer"; key = "DefCreer"; } : button { label = "Modifier"; key = "DefModifier"; } : button { label = "Supprimer"; key = "DefSupprimer"; } : button { label = "Monter"; key = "DefMonter"; } : button { label = "Descendre"; key = "DefDescendre"; } spacer_1; : button { label = "Importer"; key = "DefImporter"; } : button { label = "Exporter"; key = "DefExporter"; } } } : edit_box { label = "Position échelle par défaut"; key = "DefEch"; } spacer_1; ok_cancel; } FmmoCreer : dialog { label = "Echelle"; initial_focus = "TextEch"; : edit_box { label = "Composant de la liste"; key = "TextEch"; } : edit_box { label = "Facteur d'échelle associé"; key = "FactEch"; } spacer_1; ok_cancel; } le fichier fmmo.lsp ;;; ;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO) (setq ETL (entlast)) (setq OLDCMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 1) (foreach CMD LCMD (command CMD) ) (while (not (zerop (getvar "cmdactive"))) (command pause) ) (setvar "CMDECHO" OLDCMDECHO) (setq LELEM nil) (if (not ETL) (setq ETL (entnext)) (setq ETL (entnext ETL)) ) (while ETL (setq LELEM (cons ETL LELEM)) (setq ETL (entnext ETL)) ) (setq RES LELEM) ) (defun lremove (POS LISTE / TEMP I L) (setq TEMP nil) (setq I 0) (while LISTE (setq L (car LISTE)) (setq LISTE (cdr LISTE)) (If (/= I (atoi POS)) (setq TEMP (append TEMP (list L))) ) (setq I (+ I 1)) ) TEMP ) (defun lmodif (POS LISTE ELEM / TEMP I L) (setq TEMP nil) (setq I 0) (while LISTE (setq L (car LISTE)) (setq LISTE (cdr LISTE)) (If (/= I (atoi POS)) (setq TEMP (append TEMP (list L))) (setq TEMP (append TEMP (list ELEM))) ) (setq I (+ I 1)) ) TEMP ) (defun lmonte (POS LISTE / TEMP I L E1 E2) (setq TEMP nil) (setq E1 (nth (atoi POS) LISTE)) (setq E2 (nth (- (atoi POS) 1) LISTE)) (setq I 0) (while LISTE (setq L (car LISTE)) (setq LISTE (cdr LISTE)) (If (= I (- (atoi POS) 1)) (setq TEMP (append TEMP (list E1))) (If (= I (atoi POS)) (setq TEMP (append TEMP (list E2))) (setq TEMP (append TEMP (list L))) ) ) (setq I (+ I 1)) ) TEMP ) (defun ldescend (POS LISTE / TEMP I L E1 E2) (setq TEMP nil) (setq E1 (nth (atoi POS) LISTE)) (setq E2 (nth (+ (atoi POS) 1) LISTE)) (setq I 0) (while LISTE (setq L (car LISTE)) (setq LISTE (cdr LISTE)) (If (= I (+ (atoi POS) 1)) (setq TEMP (append TEMP (list E1))) (If (= I (atoi POS)) (setq TEMP (append TEMP (list E2))) (setq TEMP (append TEMP (list L))) ) ) (setq I (+ I 1)) ) TEMP ) (defun ecrire_fichier_fmmo (FNAME L1 L2 L3 LISTE / F FNAME) (if (setq F (open FNAME "w")) (progn (write-line L1 F) (write-line L2 F) (write-line L3 F) (While LISTE (write-line (car (car LISTE)) F) (write-line (cadr (car LISTE)) F) (setq LISTE (cdr LISTE)) ) (close F) ) (alert (strcat "La céation de \n" FNAME "\na échouée")) ) ) (defun construire_liste (/ VLIST VNAME What_Space What_Pers) ;; ;; Revoie VNLISTO qui contient la liste des vues de l'espace objet. ;; La vue est rappelée dans la FMULT + zoom 1/ECHxp ;; La vue *GENERALE* permet de faire un zoom étendu + zoom centré + zoom 1/ECHxp ;; ;construire la liste des vues (setq VNLISTO nil) (setq VLIST (tblnext "VIEW" T)) (while vlist (setq VNAME (cdr (assoc 2 VLIST))) (setq What_Space (cdr (assoc 70 VLIST))) (setq What_Pers (cdr (assoc 71 VLIST))) (if (= What_Space 0) ;; que les vues de l'espace objet (setq VNLISTO (cons VNAME VNLISTO)) ) (setq VLIST (tblnext "VIEW")) ) ;trier les noms des vues (if VNLISTO (If (>= (getvar "maxsort") (length VNLISTO)) (setq VNLISTO (acad_strlsort VNLISTO)) ) ) ;rajouter au début une vue *GENERALE* (setq VNLISTO (cons "*GENERALE*" VNLISTO)) ) (defun do_accept () (setq VIEW (get_tile "List_view")) (setq ECH (get_tile "ECH")) (setq PICK_FM (get_tile "pick_fm")) (setq ECHLTP (get_tile "Echltp")) (setq PSLTSCALE (get_tile "Psltscale")) (if (> (distof ECHLTP 2) 0) (done_dialog 2) (alert "Echltp doit être\nsupérieur à zéro") ) ) (defun zoom_general () (if (zerop (logand 1 (getvar "viewmode"))) ;; ne faire le zoom que si ce n'est pas une vue perspective (progn (command "_ZOOM" "_e") (initget 1) (setq pick_ptg (getpoint "\nCentre de la fenêtre : ")) (command "_ZOOM" "_c" pick_ptg "") (command "_ZOOM" val_ECH) ) ) ) (defun do_list_view () (setq VIEW $value) (if (= VIEW "0") ;; vue générale (mode_tile "ECH" 0) (if (= (cdr (assoc 71 (tblsearch "view" (nth (atoi VIEW) VNLISTO)))) 0) ; activer echelle que si ce n'est pas une vue perspective (mode_tile "ECH" 0) (mode_tile "ECH" 1) ) ) ) (defun do_ech () (setq ECH $value) (set_tile "Factech" (strcat "Facteur d'échelle : " (cadr (nth (atoi ECH) LECH)) "XP")) ) (defun do_test_param_button (/ POS) (setq POS (get_tile "DefListEch")) (if LTEXTFACTECH (progn (mode_tile "DefSupprimer" 0) (mode_tile "DefModifier" 0) (if (= (get_tile "DefEch") "Liste vide") (progn (mode_tile "DefEch" 0) (set_tile "DefEch" "0") ) ) (if (<= (length LTEXTFACTECH) (atoi (get_tile "DefEch"))) (set_tile "DefEch" (itoa (- (atoi (get_tile "DefEch")) 1))) ) (if (= POS "0") (mode_tile "DefMonter" 1) (mode_tile "DefMonter" 0) ) (if (= POS (itoa (- (length LTEXTFACTECH) 1))) (mode_tile "DefDescendre" 1) (mode_tile "DefDescendre" 0) ) ) (progn (set_tile "DefEch" "Liste vide") (mode_tile "DefEch" 1) (mode_tile "DefSupprimer" 1) (mode_tile "DefModifier" 1) ) ) ) (defun do_DefSupprimer () (setq DEFLISTECH (get_tile "DefListEch")) (setq LTEXTFACTECH (lremove DEFLISTECH LTEXTFACTECH)) (setq LECHPARAM (lremove DEFLISTECH LECHPARAM)) (start_list "DefListEch") (mapcar 'add_list LTEXTFACTECH) (end_list) (set_tile "DefListEch" "0") (do_test_param_button) ) (defun do_DefCreerAccept () (setq TEXTECH (get_tile "TextEch")) (setq FACTECH (get_tile "FactEch")) (if (/= TEXTECH "") (if (> (cal FACTECH) 0) (progn (setq LECHPARAM (append LECHPARAM (list (list TEXTECH FACTECH)))) (setq LTEXTFACTECH (append LTEXTFACTECH (list (strcat TEXTECH "\t" FACTECH)))) (done_dialog 2) ) (alert "Facteur d'échelle supérieur à 0") ) (alert "Elément vide") ) ) (defun do_DefCreer () (if (not (new_dialog "FmmoCreer" dcl_id)) (exit)) (action_tile "accept" "(do_DefCreerAccept)") (action_tile "cancel" "(done_dialog 0)") (setq what_next_creer (start_dialog)) (if (= What_next_creer 2) (progn (start_list "DefListEch") (mapcar 'add_list LTEXTFACTECH) (end_list) (set_tile "DefListEch" "0") (do_test_param_button) ) ) ) (defun do_DefModifierAccept () (setq TEXTECH (get_tile "TextEch")) (setq FACTECH (get_tile "FactEch")) (if (/= TEXTECH "") (if (> (cal FACTECH) 0) (progn (setq LECHPARAM (lmodif LIGNEMOD LECHPARAM (list TEXTECH FACTECH))) (setq LTEXTFACTECH (lmodif LIGNEMOD LTEXTFACTECH (strcat TEXTECH "\t" FACTECH))) (done_dialog 2) ) (alert "Facteur d'échelle supérieur à 0") ) (alert "Elément vide") ) ) (defun do_DefModifier () (setq LIGNEMOD (get_tile "DefListEch")) (if (not (new_dialog "FmmoCreer" dcl_id)) (exit)) (action_tile "accept" "(do_DefModifierAccept)") (action_tile "cancel" "(done_dialog 0)") (set_tile "TextEch" (car (nth (atoi LIGNEMOD) LECHPARAM))) (set_tile "FactEch" (cadr (nth (atoi LIGNEMOD) LECHPARAM))) (setq what_next_modifier (start_dialog)) (if (= What_next_modifier 2) (progn (start_list "DefListEch") (mapcar 'add_list LTEXTFACTECH) (end_list) (set_tile "DefListEch" LIGNEMOD) ) ) ) (defun do_DefMonter () (setq LIGNEDEP (get_tile "DefListEch")) (setq LECHPARAM (lmonte LIGNEDEP LECHPARAM)) (setq LTEXTFACTECH (lmonte LIGNEDEP LTEXTFACTECH)) (start_list "DefListEch") (mapcar 'add_list LTEXTFACTECH) (end_list) (set_tile "DefListEch" (itoa (- (atoi LIGNEDEP) 1))) (do_test_param_button) ) (defun do_DefDescendre () (setq LIGNEDEP (get_tile "DefListEch")) (setq LECHPARAM (ldescend LIGNEDEP LECHPARAM)) (setq LTEXTFACTECH (ldescend LIGNEDEP LTEXTFACTECH)) (start_list "DefListEch") (mapcar 'add_list LTEXTFACTECH) (end_list) (set_tile "DefListEch" (itoa (+ (atoi LIGNEDEP) 1))) (do_test_param_button) ) (defun do_DefExporter (/ EXPECHLTP EXPPSLTSCALE EXPECH FNAME) (setq EXPECHLTP (get_tile "DefEchltp")) (setq EXPPSLTSCALE (get_tile "DefPsltscale")) (setq EXPECH (get_tile "DefEch")) (if (not LECHPARAM) (alert "Liste vide") (if (not (> (distof EXPECHLTP 2) 0)) (alert "ECHLTP supérieur à 0") (if (not (distof EXPECH 2)) (alert "Valeur numérique incorrecte") (if (< (- (length LECHPARAM) 1) (atoi EXPECH)) (alert "Position hors liste") (if (setq FNAME (getfiled "Exporter" "" "fmo" 1)) (ecrire_fichier_fmmo FNAME EXPECHLTP EXPPSLTSCALE EXPECH LECHPARAM) ) ) ) ) ) ) (defun do_DefImporter (/ FNAME FLAG TEXTECH I) (if (setq FNAME (getfiled "Importer" "" "fmo" 16)) (if (setq F (open FNAME "r")) (progn (setq LECHPARAM nil) (setq FLAG T) (set_tile "DefEchltp" (read-line F)) (set_tile "DefPsltscale" (read-line F)) (set_tile "DefEch" (read-line F)) (While (setq L (read-line F)) (if FLAG (progn (setq TEXTECH L) (setq FLAG nil) ) (progn (setq LECHPARAM (append LECHPARAM (list (list TEXTECH L)))) (setq FLAG T) ) ) ) (close F) (setq I 0) (setq LTEXTFACTECH nil) (repeat (length LECHPARAM) (setq LTEXTFACTECH (append LTEXTFACTECH (list (strcat (car (nth I LECHPARAM)) "\t" (cadr (nth I LECHPARAM)))))) (setq I (+ I 1)) ) (start_list "DefListEch") (mapcar 'add_list LTEXTFACTECH) (end_list) (set_tile "DefListEch" "0") ) (alert (strcat "Ouverture du fichier\n" FNAME "\néchouée")) ) ) ) (defun do_accept_param () (setq ECHLTP (get_tile "DefEchltp")) (setq PSLTSCALE (get_tile "DefPsltscale")) (setq ECH (get_tile "DefEch")) (if (not LECHPARAM) (alert "Liste vide") (if (not (> (distof ECHLTP 2) 0)) (alert "ECHLTP supérieur à 0") (if (not (distof ECH 2)) (alert "Valeur numérique incorrecte") (if (< (- (length LECHPARAM) 1) (atoi ECH)) (alert "Position hors liste") (done_dialog 2) ) ) ) ) ) (defun do_param () (setq ECHLTP (get_tile "Echltp")) (setq PSLTSCALE (get_tile "Psltscale")) (setq ECH (get_tile "ECH")) (setq LECHPARAM LECH) (if (not (new_dialog "FmmoDef" dcl_id)) (exit)) (setq I 0) (setq LTEXTFACTECH nil) (repeat (length LECHPARAM) (setq LTEXTFACTECH (append LTEXTFACTECH (list (strcat (car (nth I LECHPARAM)) "\t" (cadr (nth I LECHPARAM)))))) (setq I (+ I 1)) ) (start_list "DefListEch") (mapcar 'add_list LTEXTFACTECH) (end_list) (set_tile "DefListEch" "0") (set_tile "DefEchltp" ECHLTP) (set_tile "DefPsltscale" PSLTSCALE) (set_tile "DefEch" ECH) (do_test_param_button) (action_tile "DefSupprimer" "(do_DefSupprimer)") (action_tile "DefCreer" "(do_DefCreer)") (action_tile "DefModifier" "(do_DefModifier)") (action_tile "DefMonter" "(do_DefMonter)") (action_tile "DefDescendre" "(do_DefDescendre)") (action_tile "DefExporter" "(do_DefExporter)") (action_tile "DefImporter" "(do_DefImporter)") (action_tile "DefListEch" "(do_test_param_button)") (action_tile "accept" "(do_accept_param)") (action_tile "cancel" "(done_dialog 0)") (setq what_next_def (start_dialog)) (if (= what_next_def 2) (progn (setq LECH LECHPARAM) (start_list "ECH") (mapcar 'add_list (mapcar 'car LECH)) (end_list) (set_tile "ECH" ECH) (set_tile "Factech" (strcat "Facteur d'échelle : " (cadr (nth (atoi ECH) LECH)) "XP")) (set_tile "Echltp" ECHLTP) (set_tile "Psltscale" PSLTSCALE) (ecrire_fichier_fmmo (strcat (getvar "ROAMABLEROOTPREFIX") "fmmo.fmo") ECHLTP PSLTSCALE ECH LECH) ) ) ) (defun main_FM () (command "_PSPACE") ;initalisation des variables (setq VIEW "0") (if (setq F (open (strcat (getvar "ROAMABLEROOTPREFIX") "fmmo.fmo") "r")) (progn (setq LECH nil) (setq FLAG T) (setq ECHLTP (read-line F)) (setq PSLTSCALE (read-line F)) (setq ECH (read-line F)) (While (setq L (read-line F)) (if FLAG (progn (setq TEXTECH L) (setq FLAG nil) ) (progn (setq LECH (append LECH (list (list TEXTECH L)))) (setq FLAG T) ) ) ) (close F) ) (progn (setq ECHLTP "0.02") (setq PSLTSCALE "1") (setq ECH "5") (setq LECH '(("1:1" "1000/1") ("1:2" "1000/2") ("1:5" "1000/5") ("1:10" "1000/10") ("1:20" "1000/20") ("1:25" "1000/25") ("1:50" "1000/50") ("1:75" "1000/75") ("1:100" "1000/100") ("1:200" "1000/200") ("1:250" "1000/250") ("1:500" "1000/500"))) ) ) ;construction de la liste des vues (construire_liste) ;ouverture de la boîte de dialogue (setq dcl_id (load_dialog "fmmo.dcl")) (if (not (new_dialog "Fmmo" dcl_id)) (exit)) (start_list "List_view") (mapcar 'add_list VNLISTO) (end_list) (start_list "ECH") (mapcar 'add_list (mapcar 'car LECH)) (end_list) (set_tile "ECH" ECH) (set_tile "List_view" VIEW) (set_tile "Factech" (strcat "Facteur d'échelle : " (cadr (nth (atoi ECH) LECH)) "XP")) (set_tile "Echltp" ECHLTP) (set_tile "Psltscale" PSLTSCALE) (action_tile "List_view" "(do_list_view)") (action_tile "ECH" "(do_ech)") (action_tile "Param" "(do_param)") (action_tile "accept" "(do_accept)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) (unload_dialog dcl_id) ;Création du FMULT en fonction des paramètres de la boîte de dialogue (if (= What_next 2) (progn (setq VNAME (nth (atoi VIEW) VNLISTO)) (setq val_ECH (strcat (cadr (nth (atoi ECH) LECH)) "XP")) (setq CLAY (getvar "CLAYER")) (if (not (tblsearch "LAYER" "FMULT")) (command "_layer" "_M" "FMULT" "_P" "_N" "FMULT" "") (command "_LAYER" "L" "FMULT" "AC" "FMULT" "_S" "FMULT" "") ) (setq oldFILL (getvar "FILLMODE")) (setvar "FILLMODE" 0) (setvar "LTSCALE" (distof ECHLTP 2)) (setvar "PSLTSCALE" (atoi PSLTSCALE)) (cond ((= PICK_FM "pick_pt") (mycmd '("_.mview"))) ((= PICK_FM "pick_po") (mycmd '("_.mview" "_p"))) ((= PICK_FM "pick_ob") (mycmd '("_.mview" "_ob"))) ) (command "_MSPACE") (if (= VNAME "*GENERALE*") (zoom_general) (progn (command "_view" "_r" VNAME) (if (zerop (logand 1 (getvar "viewmode"))) (command "_ZOOM" val_ECH) ) ) ) (command "_PSPACE") (setvar "FILLMODE" oldFILL) (command "_regenall") (command "_LAYER" "_S" CLAY "") ) ) ) (defun C:FMMO () (setq OLD_CMD (getvar "cmdecho")) (setvar "cmdecho" 0) (setq TM (getvar "tilemode")) (if (= (getvar "tilemode") 1) (setvar "tilemode" 0) ) (main_FM) (setvar "cmdecho" OLD_CMD) (princ) ) c'est un peu long, il faudra m'expliquer comment déposer un fichier quelque part où vous pourrez le télécharger amicalement Zebulon_
-
avec les popups, ça pourrait donner ça (defun c:modmenu () (setq MENUNAME "MOSAI") ;; par exemple (vl-load-com) (setq acadObject (vlax-get-acad-object)) (setq thisDoc (vla-get-activeDocument acadobject)) (setq menus (vla-get-menuGroups acadobject)) (princ "\nLes menus chargés : ") (setq FLAG nil) (vlax-for n menus (if (= (vla-get-name n) MENUNAME) (setq FLAG T) ) (print (vla-get-name n)) ;; la liste des menus chargés ) (if FLAG (alert "le menu est déjà chargé") (progn (vla-load menus (strcat MENUNAME ".mns")) (setq currMenuGroup (vla-item menus MENUNAME)) (setq popup (vla-get-menus currMenugroup)) (princ "\nLa liste des popups : ") (vlax-for n popup (print (vla-get-name n)) (vla-insertinmenubar ;; ajouter le menu dans la barre de menus n (- (vla-get-count (vla-get-menuBar acadObject)) 1) ;; à l'avant dernière place ) ) ) ) (princ) ) Amicalement Zebulon_
-
pour charger des menus (defun c:modmenu () (setq MENUNAME "MOSAI") ;; par exemple (vl-load-com) (setq acadObject (vlax-get-acad-object)) (setq thisDoc (vla-get-activeDocument acadobject)) (setq menus (vla-get-menuGroups acadobject)) (princ "\nLes menus chargés : ") (setq FLAG nil) (vlax-for n menus (if (= (vla-get-name n) MENUNAME) (setq FLAG T) ) (print (vla-get-name n)) ;; la liste des menus chargés ) (if FLAG (alert "le menu est déjà chargé") (vla-load menus (strcat MENUNAME ".mns")) ) (princ) ) ça charge le menu d'icônes. S'il y a des menus popup, il faut encore rajouter une couche pour les charger. Y-a-t'il des menus popup à charger ? Amicalement Zebulon_
-
bonjour, pour ce qui est des chemins de recherche et des menus personnalisés, une solution simple serait de configurer un poste, puis exporter le profil, en le nommant nomdelentreprise.arg et en le sauvegardant sur un lecteur réseau où tout le monde a accès. Il sera facile à chacun de l'importer sur son poste. Il faudra juste changer dans les propriétés de l'icône autocad, dans la ligne cible, ce qui vient après /p et qui correspond au profil par défaut au lancement d'autocad, pour y mettre "nomdelentreprise" à la place de "Architectural Desktop" (ou autre suivant la version). Mias bon, si chacun a ses petites habitudes, tu auras du mal a imposer un profil unique pour toute ta boîte. Ce serait la meilleure solution, mais bon courage... Pour ce qui est du chargement des lisp, je rajoute le répertoire où ils se trouvent dans les chemins de fichiers de support et je fais faire le load par le bouton du menu. dans le genre ^C^C(load "monlisp");monlisp Ok, ça fait charger le lisp à chaque fois qu'on en a besoin, mais c'est pas la mort... et au moins on est sûr que c'est fait. Sinon pour modifier les chemins de recherche de fichier support par lisp (defun c:modsupport () (vl-load-com) (setq acadObject (vlax-get-acad-object)) (setq prefsObject (vlax-get-property acadObject 'Preferences)) (setq tabnameObject (vlax-get-property prefsObject 'Files)) ;; la liste des chemins existants (setq thePath (vlax-get-property tabnameObject 'SupportPath)) ;; on y rajoute le chemin qu'on veut avec la commande strcat (setq thePath (strcat thePath ";" "C:\\TEMP")) ;; on met a jour la liste des chemins (vlax-put-property tabnameObject 'SupportPath thePath) ;; et le tour est joué ) Pour faire charger des menus par le lisp, je ne sais pas mais ça doit marcher. Amicalement Zebulon_
-
fmult avec boite de dialogue
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Merci les gars, j'ai un peu de grain à moudre... Je vous tiens au courant le problème, c'est que je suis une bille en matière de registres... Amicalement Zebulon_ [Edité le 24/10/2005 par zebulon_] -
fmult avec boite de dialogue
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
re, au début de mon code, je peux très bien déjà être dans l'espace papier, auquel cas ça ne marchera pas. Et puis, il faudrait encore vérifier si le nom "courant" existe déjà, avant de faire le save ... :calim: -
fmult avec boite de dialogue
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
Merci, maintenant s'il y a quelqu'un qui saurait comment on peut déterminer si la vue de l'espace objet est une vue perspective, alors qu'on est dans l'espace papier ? Après, ce qui serait encore bien, ce serait de rajouter un bouton "paramétrer" pour pouvoir changer la liste des échelles et le facteur de zoom correspondant et éventuellement la valeur de l'ECHLTP et du PSLTSCALE voulu. Ces données, il faudrait les stocker dans un fichier qu'il serait judicieux de ranger où ? A priori, je vais mettre ça dans le répertoire ROAMABLEROOTPREFIX ? amicalement Zebulon_ [Edité le 21/10/2005 par zebulon_] -
encore mieux merci
-
fmult avec boite de dialogue
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
c'est le < br/ >, chais pas d'où il sort et il faut le supprimer. [Edité le 21/10/2005 par zebulon_] -
fmult avec boite de dialogue
zebulon_ a répondu à un(e) sujet de zebulon_ dans Pour aller plus loin en LISP
si sur la ligne 34 tu as juste list= et sur la ligne en dessous "1:1\1:2 etc ...", il faut en faire une seule ligne. -
bonjour, nous avons parlé il y a peu de temps au sujet du couple initget et getkword http://www.cadxp.com/sujetXForum-7032.htm Maintenant, ce que je voudrais obtenir, c'est de pouvoir saisir soit un point, soit un mot clé. Un peu comme quand on utilise la commande _PLINE qui permet de cliquer des points ou de modifier des paramètres (Arc, Longueur, LArgeur ...). Exemple : je voudrais saisir les deux point d'extrémité d'une semelle de fondation et faire tracer le béton de propreté dessous et je voudrais en même temps pouvoir paramétrer l'épaisseur du béton de propreté. J'ai associé un (initget 128) avec getpoint. Comme ça getpoint peut aussi saisir autre chose que des points. ; entrée données (defun lire_BP (/ TEMP) (if (not EP) (setq EP 100.00) ) (setq DEP nil FIN nil ) (prompt (strcat "\nEpaisseur : " (rtos EP 2 3))) (while (/= (type DEP) 'LIST) (initget 128) (setq DEP (getpoint "\nPoint gauche semelle ou [Epaisseur] ")) (if (= (type DEP) 'STR) (if (= (strcase (substr DEP 1 1)) "E") (setq EP (getdist "\nEpaisseur : ")) ) ) ) (setq FIN (getpoint DEP "\nPoint droit semelle : ")) (if (> (car DEP) (car FIN)) (progn (setq TEMP DEP) (setq DEP FIN) (setq FIN TEMP) ) ) ) ; dessiner polyligne béton de propreté (defun dess_BP () (setq X1 (- (car DEP) EP)) (setq Y1 (cadr DEP)) (setq X2 (+ (car FIN) EP)) (setq Y2 (- (cadr FIN) EP)) (setq OldOS (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_PLINE" DEP (list X1 Y1) (list X1 Y2) (list X2 Y2) (list X2 Y1) FIN "" ) (setvar "OSMODE" OldOS) ) (defun C:BP () (lire_BP) (dess_BP) )
-
bonjour, la mise en page dans l'espace papier est souvent quelque chose de fastidieux si on a plusieurs fmult à faire à différentes échelles. il faut d'abord faire la fmult, puis éventuellement rappeler une vue de l'espace objet, puis enfin règler le facteur d'échelle avec un zoom 1/XP. Je vous propose de tester le lisp suivant qui affiche la liste des vues de l'espace objet, ainsi qu'une vue nommée *générale* Si on choisit la vue *générale*, le lisp crée une fmult, fait un zoom étendu, demande un point à l'utilisateur représentant le centre de la vue, puis fait un zoom 1/xp avec l'échelle choisie. Si on choisit un autre vue, le lisp rappelle cette vue et fait un zoom 1/xp avec l'echelle choisie. Les échelles sont adaptées à une utilisation du mètre en espace objet et du mm en espace papier. Là où ça plante, c'est quand la vue de l'espace objet est une vue perspective. le fichier fmmo.dcl dcl_settings : default_dcl_settings { audit_level = 0 ;} Fmmo : dialog { label = "FENETRE FMULT"; initial_focus = "pick_pt"; : boxed_radio_column { label = "Type de FMULT"; key = "pick_fm"; : radio_button { label = "Saisir 2 points"; key = "pick_pt"; } : radio_button { label = "Saisir Polyligne"; mnemonic = "P"; key = "pick_po"; } : radio_button { label = "Saisir Objet"; mnemonic = "O"; key = "pick_ob"; } } : list_box { label = "Vues : "; key = "List_view"; } : popup_list { label = "Echelle : "; Alignment = left; fixed_width = true; edit_width = 10; key = "ECH"; list = "1:1\n1:2\n1:5\n1:10\n1:20\n1:25\n1:50\n1:75\n1:100\n1:200\n1:250\n1:500"; } spacer_1; ok_cancel_err; } le fichier fmmo.lsp ;;; ;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO) (setq ETL (entlast)) (setq OLDCMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 1) (foreach CMD LCMD (command CMD) ) (while (not (zerop (getvar "cmdactive"))) (command pause) ) (setvar "CMDECHO" OLDCMDECHO) (setq LELEM nil) (if (not ETL) (setq ETL (entnext)) (setq ETL (entnext ETL)) ) (while ETL (setq LELEM (cons ETL LELEM)) (setq ETL (entnext ETL)) ) (setq RES LELEM) ) (defun construire_liste (/ VLIST VNAME What_Space What_Pers) ;; ;; Revoie VNLISTO qui contient la liste des vues de l'espace objet. ;; La vue est rappelée dans la FMULT + zoom 1/ECHxp ;; La vue *GENERALE* permet de faire un zoom étendu + zoom centré + zoom 1/ECHxp ;; ;construire la liste des vues (setq VNLISTO nil) (setq VLIST (tblnext "VIEW" T)) (while vlist (setq VNAME (cdr (assoc 2 VLIST))) (setq What_Space (cdr (assoc 70 VLIST))) (setq What_Pers (cdr (assoc 71 VLIST))) (if (= What_Space 0) ;; que les vues de l'espace objet (setq VNLISTO (cons VNAME VNLISTO)) ) (setq VLIST (tblnext "VIEW")) ) ;trier les noms des vues (If (>= (getvar "maxsort") (length VNLISTO)) (setq VNLISTO (acad_strlsort VNLISTO)) ) ;rajouter au début une vue *GENERALE* (setq VNLISTO (cons "*GENERALE*" VNLISTO)) ) (defun do_accept () (setq VIEW (get_tile "List_view")) (setq ECH (get_tile "ECH")) (setq PICK_FM (get_tile "pick_fm")) (done_dialog 2) ) (defun zoom_general () (command "_ZOOM" "_e") (initget 1) (setq pick_ptg (getpoint "\nCentre de la fenêtre : ")) (command "_ZOOM" "_c" pick_ptg "") ) (defun do_list_view () (setq VIEW $value) (if (= VIEW "0") ;; vue générale (mode_tile "ECH" 0) (if (= (cdr (assoc 71 (tblsearch "view" (nth (atoi VIEW) VNLISTO)))) 0) ; activer echelle que si c'est n'est pas une vue perspective (mode_tile "ECH" 0) (mode_tile "ECH" 1) ) ) ) (defun main_FM () ;initalisation des variables (command "_PSPACE") (setq VIEW "0") (setq ECH "5") ; par défaut au 1:100 ;construction de la liste des vues (construire_liste) ;ouverture de la boîte de dialogue (setq dcl_id (load_dialog "fmmo.dcl")) (if (not (new_dialog "Fmmo" dcl_id)) (exit)) (start_list "List_view") (mapcar 'add_list VNLISTO) (end_list) (set_tile "ECH" ECH) (set_tile "List_view" VIEW) (action_tile "List_view" "(do_list_view)") (action_tile "accept" "(do_accept)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) (unload_dialog dcl_id) ;Création du FMULT en fonction des paramètres de la boîte de dialogue (if (= What_next 2) (progn (setq VNAME (nth (atoi VIEW) VNLISTO)) (setq val_ECH (cond ((= ECH "0") "1000/1XP") ((= ECH "1") "1000/2XP") ((= ECH "2") "1000/5XP") ((= ECH "3") "1000/10XP") ((= ECH "4") "1000/20XP") ((= ECH "5") "1000/25XP") ((= ECH "6") "1000/50XP") ((= ECH "7") "1000/75XP") ((= ECH "8") "1000/100XP") ((= ECH "9") "1000/200XP") ((= ECH "10") "1000/250XP") ((= ECH "11") "1000/500XP") ) ) (setq CLAY (getvar "CLAYER")) (if (not (tblsearch "LAYER" "FMULT")) (command "_layer" "_M" "FMULT" "_P" "_N" "FMULT" "") (command "_LAYER" "L" "FMULT" "AC" "FMULT" "_S" "FMULT" "") ) (setq oldFILL (getvar "FILLMODE")) (setvar "FILLMODE" 0) (cond ((= PICK_FM "pick_pt") (mycmd '("_.mview"))) ((= PICK_FM "pick_po") (mycmd '("_.mview" "_p"))) ((= PICK_FM "pick_ob") (mycmd '("_.mview" "_ob"))) ) (command "_MSPACE") (if (= VNAME "*GENERALE*") (zoom_general) (command "_view" "_r" VNAME) ) ;;; ne faire que si ce n'est pas une vue perspective (if (= (cdr (assoc 71 (tblsearch "view" VNAME))) 0) (command "_ZOOM" val_ECH) ) (command "_PSPACE") (setvar "FILLMODE" oldFILL) (command "_regenall") (command "_LAYER" "_S" CLAY "") ) ) ) (defun C:FMMO () (setq OLD_CMD (getvar "cmdecho")) (setvar "cmdecho" 0) (setq TM (getvar "tilemode")) (if (= TM 1) (progn (command "PSLTSCALE" "1") (command "REGNAUTO" "IN") (command "ECHLTP" "0.20") (setvar "TILEMODE" 0) (command "REGNAUTO" "AC") ) ) (main_FM) (setvar "cmdecho" OLD_CMD) (princ) )
-
Bonjour, Il faut mettre un caractère * devant le nom du bloc pour que la commande _insert décompose le bloc. S'il s'agit d'un bloc externe, il est décomposée et il n'est pas rajouté dans la table des blocs, contrairement à la solution proposée par Didier. A l'époque où Autocad n'avait pas encore de fonction copier / coller, j'utilisais (j'utilise toujours d'ailleurs) deux petites fonctions qui permettaient de 1 °) faire un WBLOC dans un fichier temporaire (l'équivalent du copier) 2 °) faire un INSERT à partir du fichier temporaire (l'équivalent du Coller vers les coordonnées d'origine). Et justement ce INSERT devait, d'une part, décomposer le bloc et , d'autre part, ne pas encombrer ma table de blocs. La fonction copier : (defun C:WW (/ OLDOS OBJETS NOMFIC) ; Copie (WBLOC) d'une sélection dans un fichier temporaire (setvar "cmdecho" 0) (setq OLDOS (getvar"osmode")) (setvar "osmode" 0) (if (not (setq OBJETS (cadr (ssgetfirst)))) (setq OBJETS (ssget)) ) (setq NOMFIC (strcat (getvar "TEMPPREFIX") "temp.dwg")) (command "_ucs" "_w") (if (findfile NOMFIC) (command "_wblock" NOMFIC "_y" "" '(0 0 0) OBJETS "") (command "_wblock" NOMFIC "" '(0 0 0) OBJETS "") ) (command "_oops") (command "_ucs" "_p") (setvar "osmode" OLDOS) (princ) ) ; WW La fonction Coller vers les coordonnées d'origine (defun C:II (/ OLDOS NOMFIC) (setq NOMFIC (strcat (getvar "TEMPPREFIX") "temp.dwg")) (if (findfile NOMFIC) (progn ; Coller de la sélection dans un autre dessin (setvar "cmdecho" 0) (command "_ucs" "_w") (setq OLDOS (getvar"osmode")) (setvar "osmode" 0) ;; insérer le bloc temporaire en le décomposant [surligneur] (command "_insert" (strcat "*" NOMFIC) '(0 0 0) "1" "0")[/surligneur] (command "_ucs" "_p") (setvar "osmode" OLDOS) ) (alert (strcat "Fichier temporaire\n" NOMFIC "\nnon trouvé")) ) (princ) ) ; II Amicalement Zebulon_
-
Le temps d'enlever les cartouches ... du plan, pas du pistolet.. Comme ça, on ne sait pas de quelle enseigne il s'agit ni dans quelle ville. En plus, c'est une banque sans argent, ce serait couillon de venir la braquer. Amicalement Zebulon_
-
J'ai ce qu'il te faut. Des agences bancaires , j'en ai fait quelques unes. Maintenant, la tendance c'est la banque sans argent. Il n'y a plus d'argent au guichet, tout est dans des automates, dans le LSB (Libre Service Bancaire) a quelle adresse on peut envoyer ? amicalement Zebulon_
-
Salut Man, ça doit être la même chose, sauf que j'ai gardé les sources fournies avec la version 12 ou 13, je sais plus, pour que jedeash puisse s'en inspiré faire pour compter autre chose que des blocs. Amicalement Zebulon_
-
Bonjour, La commande _qselect permet de définir des critères de recherche, notamment sur les types d'objets (lignes, arcs, cercles, blocs ...). Sinon, il y le lisp, mais il faut connaitre un peu les codes dxf (sslength (ssget "_x" '((0 . "line")))) pour avoir le nombre de lignes (sslength (ssget "_x" '((0 . "circle")))) pour les cercles (sslength (ssget "_x" '((0 . "lwpolyline")))) pour les polylignes (sslength (ssget "_x" '((0 . "insert")))) pour les blocs Bien entendu, si ssget ne trouve rien, sslength renvoie une erreur. Ci joint un exemple de lisp qui compte les blocs et les affiche sous forme de tableau. ;;COUNT.LSP Copyright 1991 Tony Tanzillo All Rights Reserved. ;;----------------------------------------------------------------- ;; Author: Tony Tanzillo, ;; Design Automation Consulting ;; http://ourworld.compuserve.com/homepages/tonyt ;; Permission to use, copy, modify, and distribute this software ;; for any purpose and without fee is hereby granted, provided ;; that the above copyright notice appears in all copies and ;; that both that copyright notice and the limited warranty and ;; restricted rights notice below appear in all copies and all ;; supporting documentation, and that there is no charge or fee ;; charged in return for distribution or duplication. ;; ;; This SOFTWARE and documentation are provided with RESTRICTED ;; RIGHTS. ;; ;; Use, duplication, or disclosure by the Government is subject ;; to restrictions as set forth in subparagraph (c)(1)(ii) of ;; the Rights in Technical Data and Computer Software clause at ;; DFARS 252.227-7013 or subparagraphs (c)(1) and (2) of the ;; Commercial Computer Software Restricted Rights at 48 CFR ;; 52.227-19, as applicable. The manufacturer of this SOFTWARE ;; is Tony Tanzillo, Design Automation Consulting. ;; ;; NO WARRANTY ;; ;; ANY USE OF THIS SOFTWARE IS AT YOUR OWN RISK. THE SOFTWARE ;; IS PROVIDED FOR USE "AS IS" AND WITHOUT WARRANTY OF ANY KIND. ;; TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE AUTHOR ;; DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT ;; NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND ;; FITNESS FOR A PARTICULAR PURPOSE, WITH REGARD TO THE SOFTWARE. ;; ;; NO LIABILITY FOR CONSEQUENTIAL DAMAGES. TO THE MAXIMUM ;; EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL ;; THE AUTHOR OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, ;; INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER ;; (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF ;; BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS ;; INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF ;; THE USE OF OR INABILITY TO USE THE SOFTWARE PRODUCT, EVEN ;; IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH ;; DAMAGES. BECAUSE SOME JURISDICTIONS DO NOT ALLOW EXCLUSION ;; OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL ;; DAMAGES, THE ABOVE LIMITATION MAY NOT APPLY TO YOU. ; Adds the COUNT command to AutoCAD, which counts, itemizes, and displays ; in tabular form, the number of insertions of each block in the selected ; objects, or the entire drawing. ; ; Add to AutoCAD.LSP, or load with (load"count") ; ; First implemented in May of 1990. ; ; Revision history: ; ; 10/13/1991: General revisions for R11: ; ; 1. Now ignores anonymous blocks and Xrefs. ; ; 2. Added console/screen paging, pauses listing ; at each screen-full and waits for a keypress. ; ; Notes on console paging: ; ; 1. To disable console paging, add the following to COUNT.LSP: ; ; (setq *cpage-disable* t) ; ; 2. The number of physical console lines defaults to 25. This ; can be overridden by adding the following to COUNT.LSP ; ; (setq *console-lines* ) ; ; Where is the integer number of physical screen lines. ; ; 3. The screen-clear function defaults to (textpage) under R11, ; and (textscr) under R10 (no screen-clearing is performed), ; but it can be redefined by assigning a function that is to ; be called to do a screen-clear to the symbol *clear-screen*. ; ; The following example can be used with R10 if ANSI.SYS or ; any compatible console-driver is installed, to clear the ; display on each screen-page: ; ; (defun *clear-screen* () ; (textscr) ; (princ "\e[2J") ; nil ; ) ; ; Program listing: (defun C:COUNT ( / blocks ss) (princ "\nPress to select entire drawing or,") (cond ( (not (setq ss (cond ((ssget)) (t (ssget "_x" '((0 . "INSERT"))))))) (princ "\nNo objects selected.")) (t (princ "\nCounting block insertions...") ( (lambda (i) (repeat i (count_block (ssname ss (setq i (1- i)))))) (sslength ss)) (cond ( (not blocks) (princ "\nNo block insertions found.")) (t (table-print blocks "Block" "Count" "-" 8 "." nil 'itoa))))) (princ) ) (defun table-print (alist title1 title2 headsub coltab padchr car-form cdr-form / maxlen maxline padstr ) (setq car-form (cond (car-form) (t '(lambda (x) x))) cdr-form (cond (cdr-form) (t '(lambda (x) x)))) (setq maxlen (mapcar '(lambda (pair) (cons (strlen (car pair)) (strlen (cdr pair)))) (setq alist (mapcar '(lambda (pair) (cons (apply car-form (list (car pair))) (apply cdr-form (list (cdr pair))))) alist )))) (setq maxlen (+ -2 (apply 'max (mapcar 'car maxlen)) (apply 'max (mapcar 'cdr maxlen))) maxline (+ maxlen coltab) padstr (count_repl padchr 70)) (cprinc-init) (cprinc (strcat title1 " " (ctab (cons title1 title2) maxline (count_repl " " 70)) " " title2)) (cprinc (count_repl headsub (+ maxline 2))) (mapcar '(lambda (pair) (cprinc (strcat (car pair) " " (ctab pair maxline padstr) " " (cdr pair)))) alist ) ) (defun count_repl (chr len / res) (apply 'strcat (repeat len (setq res (cons chr res)))) ) (defun ctab (pair max padstr) (substr padstr 1 (- max (strlen (car pair) (cdr pair)))) ) (defun cdr++ (key alist) ( (lambda (x) (cond (x (subst (cons (car x) (1+ (cdr x))) x alist)) (t (cons (cons key 1) alist)))) (assoc key alist)) ) (defun get (k l) (cdr (assoc k l))) (defun entgetf (k e) ( (lambda (l) (mapcar '(lambda (x) (cdr (assoc x l))) k)) (entget e)) ) (defun count_block (ename) (apply '(lambda (etype name) (cond ( (and (eq "INSERT" etype) (or (assoc name blocks) (zerop (logand 45 (get 70 (tblsearch "block" name))))) (setq blocks (cdr++ name blocks))))) nil) (entgetf '(0 2) ename)) ) (defun cprinc-init () (setq *console-lines* (cond (*console-lines*) (t 25)) *cprinc-msg* (cond (*cprinc-msg*) (t "--- Press any key ---")) *cprinc-rubout* (cond ( (or textpage *clear-screen*) "") (t (strcat "\r" (count_repl " " (strlen *cprinc-msg*)) "\r"))) *cprinc-line* -1) (cond (textpage (textpage)) (*clear-screen* (*clear-screen*)) (t (textscr) (terpri))) ) (defun cprinc-page () (princ *cprinc-msg*) (grread) (cond (textpage (textpage)) (*clear-screen* (*clear-screen*)) (t (textscr))) (princ *cprinc-rubout*) (setq *cprinc-line* 0) ) (defun cprinc (s) (cond ( *cpage-disable*) ( (not *cprinc-line*) (cprinc-init)) ( (eq (setq *cprinc-line* (1+ *cprinc-line*)) (1- *console-lines*)) (cprinc-page))) (write-line s) ) ; ############################ eof COUNT.LSP ################################ (princ "\nC:COUNT loaded. Start command with COUNT. ") (princ) Amicalement Zebulon_
-
Bonjour, Cela fait quelques temps que j'utilise la commande PUBLIER pour créer des dwf multi-pages et cela sans aucun soucis. Depuis quelques jours, quand je lance la commande PUBLIER, autocad essaie de fabriquer la 1ère page, puis j'ai droit à un plantage violent avec une fermeture du logiciel. Je n'ai même pas droit au message "erreur fatale" et au ptit mot d'excuse pour le désagrément que cela pourrait m'apporter... Quelqu'un a une idée de ce qu'il faut purger, modifier, réinstaller ... pour que ça remarche ? Merci d'avance Amicalement Zebulon_
-
Bonjour, L'éditeur de texte utilisé par CADXP n'aime pas les signes < suivis immédiatement par un texte (sans espace entre le < et le texte). Ce dernier n'est pas affiché. Amicalement Zebulon_
-
HELP - Nomenclature autmoatique
zebulon_ a répondu à un(e) sujet de grosseel dans Pour aller plus loin en LISP
ça m'a l'air vachement compliqué... et douteux. On aurait envie de remplacer par quelque chose comme : (setq SEL (ssget "_X" '( (0 . "INSERT") (-4 . " c'est censé être un (-4 . " suivi d'un signe inférieur, suivi d'un or, suivi d'un guillement et d'une parenthèse, mais ça ne s'affiche pas (2 . "REC_FOL") (2 . "GR_FOL") (-4 . "or>") ) ) ) (if SEL (progn (repeat (sslength SEL) (entdel (ssname SEL i1)) (setq i1 (1+ i1)) Bon moi j'aurais mis une simple commande _erase, plutôt que entdel dans une boucle while, mais ça ne fait pas très LISP et je vais me faire taper sur les doigts par les puristes. Plus loin,c'est pareil pourrait donner (setq SEL (ssget "_X" '((0 . "INSERT") (2 . "CARTO")) ) etc ... Commence déjà par simplifier le code pour y voir plus clair. Amicalement Zebulon_ -
Constituer un filtre dynamique avec les codes DXF
zebulon_ a répondu à un(e) sujet de bonuscad dans Pour aller plus loin en LISP
on avait déjà parlé de sssetfirst il y a un petit moment http://www.cadxp.com/sujetXForum-1355.htm Essaie de changer ton code en mettant (sssetfirst ss ss) au lieu de (sssetfirst nil ss) Pour ce qui est de la commande filter, je suis tout à fait d'accord qu'elle est lourdingue et c'est pour ça que la sélection rapide me plait beaucoup plus. Mais ce qui me plait dans filter, c'est la présentation de la liste des filtres dans un liste d'une boîte de dialogue. Ce qui serait top, ce serait d'avoir la même chose que _qselect, mais avec un petit bouton, à côté de la case valeur, qui permettrait de piquer cette valeur sur un objet existant. Pour ce qui est de l'emploi de grread et grtext, ça n'a, à mon avis, de sens que dans des routines où l'on est sûr de ne pas avoir besoin d'accroche objet. On en avait déjà causé aussi http://www.cadxp.com/sujetXForum-5461.htm Amicalement Zebulon_
