-
Compteur de contenus
4 029 -
Inscription
-
Dernière visite
-
Jours gagnés
21
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par DenisHen
-
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
Re, Je présente mes plus humbles excuses au forum, mais effectivement, j'aurais dû préciser qu'il n'y avait que des textes. Aucun MText ni bloc contenant des attributs. En fait, pour expliquer un peu, je travaille sur des levés topo que l'on fait dans ma boite avec du matériel d'après guerre... Et le post-traitement va avec. On passe par un logiciel, DecaTop, qui traite les données terrain et en fait un DGN que l'on sauvegarde en DWG depuis MicroStation. Les noms de calques ne sont que des numéros, rien d'explicite. Je refais donc un traitement du DWG entier pour tout bien ranger et corriger certains bugs... Merci Patrick_35, je m'en doutais un peu... Je joint mon LiSP pour la communauté, au cas ou... Denis... -
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
C'est pas faute d'essayer ! ! ;-) Une petite question subsidiaire, dans "(ssget "_X" '((0 . "TEXT,MTEXT") (1 . "RUE*...."))), le 0 et le 1, c'est du code DXF ? Où trouver cette liste, car j'aimerais, maintenant que je commence à comprendre, compléter mon LiSP... Comme la taile des textes, leurs style... Merci encore à tous, Denis... -
Re, Une question bête, mais on ne sait jamais : Y-at'il des présentations dans ton DWG qui déconne ? Car si wbloc est aussi efficace, c'est peut-être une réponse... Autre question, après la purge, reste-t'il des calques ? Des blocs ? Des styles (textes ou lignes) ? Denis...
-
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour à tous, et merci, VDH-Bruno, ça fonctionne nikel, j'ai juste rajouté un T après le "(getstring" pour autoriser les espaces dans la réponse (astuce que je connais depuis deux jours grâce à ce forum), merci, Vincent, c'était bien là mon problème, je ne l'avais pas vu comme ça, merci... Denis... -
Boite dialogue gestionnaire calque
DenisHen a répondu à un(e) sujet de baba0000000000 dans AutoCAD 2014
Bonjour, Je n'ai pas trouvé le Jpeg lié à ton post, Autre chose, as-tu des applications diverses qui pourraient remettre tes variables à une autre valeur ? Si FILEDIAL (ou d'autres variables dans le style) est à 0 au début d'AutoCAD, est-elle toujours à 0 quand ça commence à déconner ? Denis... -
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
Bonjour Patrick_35, Effectivement, ton explication du "(cond" est limpide, je ne le voyais pas du tout comme ça... C'est nettement plus clair pour moi maintenant... Mais pour le "(vlax-for" et le "(and", c'est encore un peu complex pour moi à mettre en oeuvre dans un LiSP que j'aurais écris entièrement. Merci encore... Denis... -
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
Bonjour Gégé et merci de m'aider, Pour mon cas, il n'y a que du texte, rien n'est dans les blocs, cotations, lignes de repères... Et il était plus "facile" pour moi d'adapter le code de Patrick_35. Maintenant, grace à cette astuce, j'ai écris ça qui fonctionne très bien : (ssget "_X" '((0 . "TEXT,MTEXT") (1 . "RUE*,PLACE*,ALLEE*,BVD*,BOULEVARD*,IMPASSE*,QUAI*,RUELLE*,AVENUE*"))) (command "-calque" "n" "TOPO_NOM_RUE" "") (command "chprop" "_P" "" "ca" "TOPO_NOM_RUE" "") Mais je n'ai qu'un piètre niveau en LiSP... Merci encore, Denis... -
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
Bonjour à tous, N'arrivant pas à dormir hier, ça me travail ce truc, je pense avoir trouvé. A mon avis, je devrai faire un truc comme ça : (setq doc (vla-get-activedocument (vlax-get-acad-object))) (and (ssget "_X" '((0 . "TEXT,MTEXT"))) (setq tx1 "0000" tx2 "" ) ;_ Fin de setq (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (or (progn (wcmatch (setq txt (vla-get-textstring ent)) (strcat "RUE" "*")) (wcmatch (setq txt (vla-get-textstring ent)) (strcat "ALLEE" "*")) (wcmatch (setq txt (vla-get-textstring ent)) (strcat "PLACE" "*")) ) ;_ Fin de progn (setq LstTxt (ssadd ent)) ) ;_ Fin de vlax-for (and (wcmatch (setq txt (vla-get-textstring ent)) (strcat "*" tx1 "*")) (cond ((wcmatch txt (strcat tx1 "*")) (setq txt (strcat tx2 (substr txt (1+ (strlen tx1))))) ) ((wcmatch txt (strcat "*" tx1)) (setq txt (strcat (substr txt 1 (- (strlen txt) (strlen tx1))) tx2)) ) (T (setq txt (strcat (substr txt 1 (vl-string-search tx1 txt)) tx2 (substr txt (+ (vl-string-search tx1 txt) (strlen tx1) 1)) ) ;_ Fin de strcat ) ;_ Fin de setq ) ) ;_ Fin de cond (vla-put-textstring ent txt) ) ;_ Fin de and ) ;_ Fin de vlax-for (vla-delete sel) ) ;_ Fin de progn ) ;_ Fin de and Mais AutoCAD me répond : Je ne sais pas trop quoi faire avec ça... Denis... -
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
Je viens de trouvé dans l'exellent "Introduction_a_AutoLISP.pdf" de (gile) de l'aide sur "(and" et "(or"... J'y apprend qu'il réagissent un peu comme un "(if" en renvoyant nil ou T selon ???... Je suis dubitatif... Denis... -
+1 avec La Lozère, RadicalPurge m'a souvent sauvé de ce genre de problème... Denis...
-
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
Bonjour Patrick_35 et merci de m'apporter ton aide, Pour ne pas aller dans la mauvaise direction, dois-je faire un "setq LstTxt (ssadd...." par exemple ? En LiSP, on peut dire que j'ai le niveau bidouille / débutant. Car j'ai plutôt eu de la "chance" en adaptant le code, je l'ai commenté, j'aimerai savoir si je me trompe avant de partir dans l'inconnu : ;Sélection de tous les objets du dwg (setq doc (vla-get-activedocument (vlax-get-acad-object))) ;j'avoue ne pas savoir ce que fait ce (and ;sélection de tous les Text et Mtext (and (ssget "_X" '((0 . "TEXT,MTEXT"))) (setq tx1 "0000" ;attribution de la valeur "0000" à txt1 tx2 "" ;attribution de la valeur "" à txt2 ) ;_ Fin de setq (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc));fouille le dessin ? ; pareil que le (and précédent... ; je ne sais pas utiliser les (and (or... en dehors d'un (if ou d'un (cond ; et je ne connais rien sur (vlax-for, mais je pense que ce doit être le début d'une boucle ;(wcmatch : comparaison de variables avec des caractères génériques ;txt contient tous les textes contenant "*0000*" (and (wcmatch (setq txt (vla-get-textstring ent)) (strcat "*" tx1 "*")) ; compare les textes contenant "0000" au début de chaine (cond ((wcmatch txt (strcat tx1 "*")) ;remplace les 4 premier caractères au début de txt par rien (setq txt (strcat tx2 (substr txt (1+ (strlen tx1))))) ) ; compare les textes contenant "0000" en fin de chaine ((wcmatch txt (strcat "*" tx1)) ;remplace les 4 derniers caractères à la fin de txt par rien (setq txt (strcat (substr txt 1 (- (strlen txt) (strlen tx1))) tx2)) ) (T ;si vrai, là, j'ai pas compris ;c'est compliqué, mais j'ai compris qu'il remplace "0000" par rien en milieu de chaine txt (setq txt (strcat (substr txt 1 (vl-string-search tx1 txt)) tx2 (substr txt (+ (vl-string-search tx1 txt) (strlen tx1) 1)) ) ;_ Fin de strcat ) ;_ Fin de setq ) ) ;_ Fin de cond ; effectu le remplacement "physique" dans l'objet Texte (vla-put-textstring ent txt) ) ;_ Fin de and ) ;_ Fin de vlax-for , vide la séléction sel (vla-delete sel) ) ;_ Fin de progn ) ;_ Fin de and Je ne sais pas si je dois intégrer mon "setq LstTxt (ssadd...." dans la boucle (vlax-for ou si je dois refaire la recherche "(setq doc (vla-get-activedocument (vlax-get-acad-object)))" ailleurs. Ce qui sera, je pense, plus de mon pauvre niveau. En tous cas, merci encore de m'avoir répondu, je testerais demain ces options Denis... -
Merci à tous, Mais il n'y avait en jeu que notre "fierté"... Avec le recul, j'aurais du parier un resto... Denis...
-
Salut à tous, J'ai parié avec un collègue que les tables traçantes HP 1050C dataient d'avant 2000. Il me certifie que non... Je n'ai rien trouvé sur le NET... Si quelqu'un a une réponse... Je suis preneur... Denis...
-
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans LISP et Visual LISP
Bonjour à vous et merci... J'ai pu intégrer un bout de routine dans mon LiSP : ;;Remplace les "0000" par rien dans les numéros de matricules...... (setq doc (vla-get-activedocument (vlax-get-acad-object))) (and (ssget "_X" '((0 . "TEXT,MTEXT"))) (setq tx1 "0000" tx2 "" ) ;_ Fin de setq (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (wcmatch (setq txt (vla-get-textstring ent)) (strcat "*" tx1 "*")) (cond ((wcmatch txt (strcat tx1 "*")) (setq txt (strcat tx2 (substr txt (1+ (strlen tx1))))) ) ((wcmatch txt (strcat "*" tx1)) (setq txt (strcat (substr txt 1 (- (strlen txt) (strlen tx1))) tx2)) ) (T (setq txt (strcat (substr txt 1 (vl-string-search tx1 txt)) tx2 (substr txt (+ (vl-string-search tx1 txt) (strlen tx1) 1)) ) ;_ Fin de strcat ) ;_ Fin de setq ) ) ;_ Fin de cond (vla-put-textstring ent txt) ) ;_ Fin de and ) ;_ Fin de vlax-for (vla-delete sel) ) ;_ Fin de progn ) ;_ Fin de and Merci encore... Mais maintenant, j'aimerais faire le même genre de recherche pour sélectionner, parmis les textes de mon DWG tout ceux commençant par "RUE", "ALLEE" ou "PLACE" afin de les placer dans le calque "TOPO_NOM_RUE"... Je pense que ça doit se situer dans le "(ssget" mais je ne sais pas comment faire le tri... Si quelqu'un a un conseil... Je fais fouiller les code de vos post. Merci encore... Denis... -
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci VDH-Bruno de m'aider. Voilà, pour un certain client, je lance la commande comme ça : ^C^C(c:Rens_PTRL "") et pour les autres : ^C^C(c:Rens_PTRL "DET_RES_CHA") Car mon "(defun" est : (defun c:Rens_PTRL (Calq / Txt_Alti.......) En fait, dans le premier cas, j'aurais le nom du calque "" + EtiqCalq ("R-AS-coord") qui donne le calque "R-AS-coord". Dans les autres cas, j'aurais le nom du calque "DET_RES_CHA" + EtiqCalq ("_ETIQ") qui donne "DET_RES_CHA_ETIQ" J'ai fais une palette de commande avec : De cette façon, j'enregistre la Config dans le dessin et je n'ai plus à y retoucher... Voilà pourquoi j'ai un : (setq CalqCourant (strcat Calq (vlax-ldata-get "DenisH" "EtiqPTRL_Calq"))) J'espère être clair. J'ai déjà commencé à changer mon LiSP mais je n'ose pas le poster, de crainte que nos posts se croisent et que l'on n'y comprenne plus rien... Denis... -
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Je viens de faire ça : (defun c:TestEtiq (/ question) (defun questionON (msg rep) (initget "Oui Non") (getkword (strcat msg " [Oui/Non] <" rep ">: "))) (defun questionStr (msg rep) (getstring T (strcat msg "<" rep ">: "))) (alert (strcat "Configuration modifiée : " (if (= "Oui" (questionON "Voulez-vous indiquer l'X et l'Y dans l'étiquette ? " (vlax-ldata-get "DenisH" "EtiqPTRL_XY" "Oui") ) ;_ Fin de questionON ) ;_ Fin de = "\n -> Écrire les X et Y" "\n -> Ne pas écrire les X et Y," ) ;_ Fin de if (if (= "Oui" (questionON "Voulez-vous indiquer le Z dans l'étiquette ? " (vlax-ldata-get "DenisH" "EtiqPTRL_Z" "Oui") ) ;_ Fin de questionON ) ;_ Fin de = "\n -> Écrire le Z," "\n -> Ne pas écrire le Z," ) ;_ Fin de if (if (= "Oui" (questionStr "Dans quel calque voulez-vous placer l'étiquette ? " (vlax-ldata-get "DenisH" "EtiqPTRL_Calq" "_ETIQ") ) ;_ Fin de questionStr ) ;_ Fin de = (progn "\n -> Écrire l'étiquette dans le calque " (vlax-ldata-get "DenisH" "EtiqPTRL_Calq" "_ETIQ") ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de strcat ) ;_ Fin de alert ) ;_ Fin de defun Mais forcément, le "(defun questionStr" ne fonctionne pas. Normal, "Oui" n'a rien a voir dans l'histoire... Je pense y mettre plustôt un "(cond". Ou alors jongler avec (setq Temp (getstring (strcat "Quelle 'extention' du calque utiliser <" EtiqCalq "> ? ") ) ;_ Fin de getstring ) ;_ Fin de setq (if (/= Temp "") (setq EtiqCalq Temp) ) ;_ Fin de if Je ne sais pas encore quelle solution choisir... Pour l'instant, j'ai décidé de me noyer dans un verre d'eau... Denis... -
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour VDH-Bruno, Et merci de me répondre... J'ai bien suivi ton raccourci vers la discution, mais j'avoue ne pas trop comprendre le "(defun question" à l'intérieur de "(defun c:cscc". J'ai créé un LiSP avec les prog trouvés sur cette page... Je "m'amuse" à faire des tests... (defun c:cscc (/ question) (defun question (msg rep) (initget "Oui Non") (getkword (strcat msg " [Oui/Non] <" rep ">: "))) (alert (strcat "Configuration modifiée: " (if (= "Oui" (question "Voulez-vous rapprocher les calques ?" "Oui")) (progn (command "_-LAYER" "_RECONCILE" "*" "") "\n -> Calques rapprochés") "\n -> Calques non rapprochés" ) ;_ Fin de if (if (= "Oui" (question "Voulez-vous purger votre dessin ?" "Oui")) (progn (command "_-PURGE" "_A" "*" "_N") "\n -> Dessin purgé") "\n -> Dessin non purgé" ) ;_ Fin de if (if (= "Oui" (question "Voulez-vous sauvegarder votre dessin ?" "Oui")) (progn (command "_QSAVE") "\n -> Dessin sauvegardé") "\n -> Dessin non sauvegardé" ) ;_ Fin de if ) ;_ Fin de strcat ) ;_ Fin de alert ) ;_ Fin de defun Intéressant, c'est hyper condensé et pas facile à lire à mon niveau... Mais j'ai inclu un "(getstring" dans mon LiSP, je ne sais pas me dépatouiller pour l'intégrer dans le "(defun question"... Je pense que ce n'est pas possible. En tous cas à mon niveau... A moins de faire un "(defun questionON" pour l'"(initget "Oui" "Non" et un "(defun questionStr" sans "(initget" pour le "(getstring". Et merci encore, Denis... -
Comment utiliser la commande "Filtrer" en ligne de commande
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour Olivier, Merci, ça fonctionne nikel... J'ai donc : ;;Sélectiondes Points pour les changer de calque (command "-calque" "n" "TOPO_PT_XY" "co" "1" "TOPO_PT_XY" "") (ssget "_X" '((0 . "point"))) (command "chprop" "_p" "" "ca" "TOPO_PT_XY" "") Merci encore, Denis... -
Comment utiliser la commande "Filtrer" en ligne de commande
DenisHen a posté un sujet dans Débuter en LISP
Bonjour à tous, Voilà, j'aimerai, via un LiSP, ne sélectionner QUE les points du DWG pour les changer de calque. J'ai essayé de taper la commande "-filtrer" mais elle ne semble pas fonctionner en ligne de commande seule. Comment faire ? Si quelqu'un a une information la-dessus, je suis preneur. Denis... -
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci Vincent de prendre le temps d'une explication claire... Je comprend mieux maintenant. Merci encore, Denis... -
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour Vincent, merci pour cette réponse, 1. je n'ai pas saisi, tu veut dire que je peut supprimer la ligne du (wcmatch ? 2. j'ai donc maintenant : (setq EtiqCalq (getstring T (strcat "Quelle 'extention' du calque utiliser <" EtiqCalq "> ? ") ) ;_ Fin de getstring ) ;_ Fin de setq (if (= EtiqCalq "") (setq EtiqCalq "_ETIQ") ) ;_ Fin de if Merci pour tes réponses... Denis... -
Comment utiliser la commande "Rechercher" en ligne de commande
DenisHen a posté un sujet dans LISP et Visual LISP
Bonjour à tous, Voilà, je cherche à faire un LiSP en utilisant la commance "rechercher", mais j'ai l'impression qu'elle n'existe pas en ligne de commande. J'aimerais remplacer "0000" par "" (rien) pour la totalité du dwg... Merci d'avance, Denis... -
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Re, Voici je que j'ai fais ce matin pour le LiSP de "Configuration" : (defun c:DHConfEtiqPTRL (/) (if (not (setq EtiqXY (vlax-ldata-get "DenisH" "EtiqPTRL_XY"))) (setq EtiqXY "Oui") ) ;_ Fin de if (if (not (setq EtiqZ (vlax-ldata-get "DenisH" "EtiqPTRL_Z"))) (setq EtiqZ "Oui") ) ;_ Fin de if (if (not (setq EtiqCalq (vlax-ldata-get "DenisH" "EtiqPTRL_Calq"))) (setq EtiqCalq "_ETIQ") ) ;_ Fin de if ; (initget 1 "Oui Non") (setq EtiqXY (cond ((getkword (strcat "\nÉcrire l'X et l'Y [Oui/Non] ? <" EtiqXY ">") ) ;_ Fin de getkword ) (EtiqXY) ) ;_ Fin de cond ) ;_ Fin de setq (initget 1 "Oui Non") (setq EtiqZ (cond ((getkword (strcat "\nÉcrire le Z [Oui/Non] ? <" EtiqZ ">")) ) (EtiqZ) ) ;_ Fin de cond ) ; (setq EtiqCalq (getstring (strcat "Quelle 'extention' du calque utiliser <" EtiqCalq "> ? ") ) ;_ Fin de getstring ) ;_ Fin de setq (if (= EtiqCalq "") (setq EtiqCalq "_ETIQ") ) ;_ Fin de if (vlax-ldata-put "DenisH" "EtiqPTRL_XY" EtiqXY) (vlax-ldata-put "DenisH" "EtiqPTRL_Z" EtiqZ) (vlax-ldata-put "DenisH" "EtiqPTRL_Calq" EtiqCalq) (princ (strcat "Configuration actuelle : Étiquette XY = " (vlax-ldata-get "DenisH" "EtiqPTRL_XY") " Étiquette Z = " (vlax-ldata-get "DenisH" "EtiqPTRL_Z") ) ;_ Fin de strcat ) ;_ Fin de princ (princ) ) Et pour le LiSP de création du Mtext : (defun c:Rens_PTRL (Calq / Txt_Alti Alti TxtProf Prof Zgs pt_ins Text ClaqCourant X Y pt_ins_Txt angl_Txt) (princ "\nInsertion d'étiquette X,Y,Z,Pf,Zgs depuis Alti et Prof") (setq old_osmd (getvar "osmode") old_abase (getvar "angbase") old_adir (getvar "angdir") old_aunits (getvar "aunits") old_osmode (getvar "osmode") ) ;_ Fin de setq (setvar "osmode" 1) (setvar "angbase" 0) (setvar "angdir" 0) (setvar "cmdecho" 0) (setvar "aunits" 0) (setvar "osmode" 1) ; (if (not (setq EtiqXY (vlax-ldata-get "DenisH" "EtiqPTRL_XY"))) (setq EtiqXY "Oui") ) ;_ Fin de if (if (not (setq EtiqZ (vlax-ldata-get "DenisH" "EtiqPTRL_Z"))) (setq EtiqZ "Oui") ) ;_ Fin de if (if (not (setq EtiqCalq (vlax-ldata-get "DenisH" "EtiqPTRL_Calq"))) (setq EtiqCalq "_ETIQ") ) ;_ Fin de if (setq Txt_Alti (entsel "\nSélectionner l'altitude")) ;) (setq Txt_Alti (car Txt_Alti)) (wcmatch (cdr (assoc 0 (setq elst (entget Txt_Alti)))) "*ALTI") (setq Alti (cdr (assoc 1 elst))) (setq Txt_Prof (car (entsel "\nSélectionnez la profondeur :"))) (wcmatch (cdr (assoc 0 (setq elst (entget Txt_Prof)))) "*PROF") (setq Prof (cdr (assoc 1 elst))) (setq Zgs (rtos (- (atof Alti) (atof Prof)) 2 2)) (princ (strcat "\nZgs=" Zgs)) (setvar "osmode" 1) (setq pt_ins (getpoint "\nPoint du PTRL : ")) (setvar "osmode" 0) (setq CalqCourant (strcat Calq (vlax-ldata-get "DenisH" "EtiqPTRL_Calq"))) (princ "\nCalque courant : ") (princ CalqCourant) (command "-calque" "e" CalqCourant "") (setq X (rtos (car pt_ins) 2 2)) (setq Y (rtos (cadr pt_ins) 2 2)) (setq pt_ins_Txt (getpoint "\nPoint d'insertion du texte : ")) (command "_.line" pt_ins pt_ins_Txt "") (setq angl_Txt (getangle pt_ins_Txt "\nOrientation du texte : ")) (setq angl_Txt (/ (* angl_Txt 180) pi)) (setq Ins (getstring "\nChoix de la justification du texte (HG, HD, BG, BD...) : ") ;_ Fin de getstring ) ;_ Fin de setq ;(princ "\Choix du point d'insertion : ") (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_XY") "Oui") (setq Text (strcat "X=" X "\\PY=" Y "\\P")) (setq Text "") ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Z") "Oui") (setq Text (strcat Text "Z=" Alti "\\P")) ) ;_ Fin de if (setq Text (strcat Text "Pf=" Prof "\\PZgs=" Zgs) ;_ Fin de strcat ) ;_ Fin de setq (command "textstyle" "Etiquette") (command "_.-MTEXT" pt_ins_Txt "R" angl_Txt "J" Ins pt_ins_Txt Text "") ;_ Fin de command ;_ Fin de command ;_ Fin de command ;(princ "\nEtiquette Ok") ;Réaffectation des variables AutoCAD (setvar "osmode" old_osmd) (setvar "angbase" old_abase) (setvar "angdir" old_adir) (setvar "aunits" old_aunits) (setvar "osmode" old_osmode) (princ) ) Par contre, dans le (setq EtiqCalq (getstring (strcat "Quelle 'extention' du calque utiliser <" EtiqCalq "> ? ") ) ;_ Fin de getstring ) ;_ Fin de setq A quoi est égal EtiqCalq si on ne répond rien à la question ? Et merci à tous pour tous ces conseils... Denis... -
Bonjour, Je ne sais pas si Revit supporte le LiSP, mais à chaque démarrage d'un dwg (AutoCAD) j'ai l'idée d'un petit LiSP qui pourrait mettre à jour un fichier TXT bien placé dans le réseau pour retrouver la trace des différents opérants d'un fichier. Je le fais déjà pour un fichier Excel que j'ai créé qui gère tous nos dossiers, tous le monde l'utilise. J'y ai glissé un petit espion pour savoir qui ouvre le fichier XLSM, quand et quand il le ferme... Par contre, je ne me suis pas penché sur la question du "qui fait quoi"... Denis...
-
Comment demander deux choses à l'utilisateur ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bon, les enfants, ça suffit les bagarres ;-) ,alors on dit quoi, que veut dire exactement "(vlax-ldata-get "DenisH" "EtiqPTRL_XY" "Oui")" ? On le place dans un (setq ? Que s’il n’y a rien dans "(vlax-ldata-get "DenisH" "EtiqPTRL_XY")" on lui affecte par défaut la valeur « Oui » ? Il n'y a pourtant pas de -put ? Cette valeur sera dans un (setq ? comme dans (setq EtiqXY (vlax-ldata-get "DenisH" "EtiqPTRL_XY" "Oui")) où EtiqXY sera "Oui" si le vlax-ldata est vide ? Et quid de "(setq EtiqXY (vlax-ldata-get "DenisH" "EtiqPTRL_XY" "Oui"))" si elle est vide… Un nil ? Un "" ? Un "Oui" ? Et si on part pour des "Oui" et "Non", Quelle est la vrai valeur de EtiqXY dans (initget "Oui Non") (setq EtiqXY (cond ((getkword (strcat "\nÉcrire l'X et l'Y [Oui/Non] ? <" EtiqXY ">"))) (EtiqXY) ) ) Je pense, d'après mes pauvres tests que c'est "Oui" ou "Non"... Je verais tous ça demain gentlemen, vous m'avez perdu avec toutes vos remarques ! ! ! ;-) Demain j'aurais quelques minutes de libre pour essayer tous ça... En tout cas, merci à tous... Et bonne soirée... Denis...
