willy95 Posté(e) le 17 décembre 2019 Posté(e) le 17 décembre 2019 Bonjour à tous, Je cherche à récupérer les coordonnées xyz d'une selection de points et les mettre dans un fichier, la valeur X et la valeur Y sont récupérer par le point du bloc TCPOINT et la valeur Z qui est inscrite dans l'étiquette ALT, ainsi que le matricule du point qui se trouver dans l'etiquette MAT. Je sais que pour certain d'entre vous , c'est du réchauffer mais je cherche à intégré ce genre de code dans un autre pour me faire des transformation de coordonnées spécifique. Pouvez-vous m'aider ? Merci par avance (defun C:RECUP (/) (setq pnt (getpoint "\n Cliquez un point : ")) (setq X (car pnt)) (setq Y (cadr pnt)) (setq Z (caddr pnt)) )
(gile) Posté(e) le 17 décembre 2019 Posté(e) le 17 décembre 2019 Salut, Depuis AutoCAD MAC/Windows 2012 la fonction getpropertyvalue permet un accès facile au propriétés des objets ainsi qu'aux attributs de blocs. (setq bloc (car (entsel "\nSélectionnez le bloc: "))) (setq position (getpropertyvalue bloc "Position")) (setq alt (getpropertyvalue bloc "ALT")) (setq mat (getpropertyvalue bloc "MAT")) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 17 décembre 2019 Auteur Posté(e) le 17 décembre 2019 Merci beaucoup mais il y a surement une transformation à faire des xy car je récupère cela : (1.63655e+006 8.18931e+006 0.0)
willy95 Posté(e) le 17 décembre 2019 Auteur Posté(e) le 17 décembre 2019 Et si je peux oser : pour faire une boucle pour plusieurs points dans différentes variable, comment dois-je m'y prendre ?
(gile) Posté(e) le 17 décembre 2019 Posté(e) le 17 décembre 2019 Merci beaucoup mais il y a surement une transformation à faire des xy car je récupère cela : (1.63655e+006 8.18931e+006 0.0)Non c'est juste que tes points sont loin de l'origine, donc les coordonnées sont affichées en notation scientifique (puissance de 10).1.63655e+006 est environ égal à 1636550Tu peux utiliser la fonction rtos pour convertir le nombre en chaîne et ainsi l'afficher sous une forme décimale. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 17 décembre 2019 Auteur Posté(e) le 17 décembre 2019 J'avoue que j'ai beaucoup de mal pour récupérer juste dans une variable la valeur X et dans une autre la valeur Y, alors avec la possibilité de choisir autant de points que je veux, trop du pour moi. (setq x1 (getpropertyvalue bloc "Position X")) (setq y1 (getpropertyvalue bloc "Position Y"))
(gile) Posté(e) le 17 décembre 2019 Posté(e) le 17 décembre 2019 Pour un point :(setq p1 (getpropertyvalue bloc "Position")) (setq x1 (rtos (car p1))) (setq x2 (rtos (cadr p1)))Pour traiter plusieurs points il faut penser aux listes (LISP = LISt Processing)... 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
willy95 Posté(e) le 18 décembre 2019 Auteur Posté(e) le 18 décembre 2019 merci beaucoup Giles, je vais essayer tous ça.
willy95 Posté(e) le 18 décembre 2019 Auteur Posté(e) le 18 décembre 2019 Tous fonctionne comme je le souhaite, mais il me reste un petit problème : Comment supprimé les 4 premiers chiffres dans ma variable : j'ai 1636551.22 et je souhaite avoir 551.22 Merci
willy95 Posté(e) le 18 décembre 2019 Auteur Posté(e) le 18 décembre 2019 et comment faire un retour à la ligne à la fin de chacune des lignes inscrite dans mon fichier créer ? (a la fin de HT1"") (defun writeUTF-8 (text filename / stream) (if (setq stream (vlax-create-object "ADODB.Stream")) (vl-catch-all-apply '(lambda () (vlax-put stream 'Type 2) (vlax-put stream 'Charset "utf-8") (vlax-invoke stream 'Open) (vlax-invoke stream 'WriteText text 0) (vlax-invoke stream 'SaveToFile filename 2)))) (and stream (vlax-release-object stream))) (if (= HT1val 1) (setq HT1 ",1.427") (setq HT1 " ")) (if (= HT2val 1) (setq HT2 ",1.427") (setq HT2 " ")) (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (writeUTF-8 (strcat " "mat1","x1","y1","alt1""HT1"" " "mat2","x2","y2","alt2""HT2"" ) file)))
VDH-Bruno Posté(e) le 18 décembre 2019 Posté(e) le 18 décembre 2019 Tous fonctionne comme je le souhaite, mais il me reste un petit problème : Comment supprimé les 4 premiers chiffres dans ma variable : j'ai 1636551.22 et je souhaite avoir 551.22 Merci Bonjour, Regarde du coté de la fonction rem_$ (rem 1636551.22 1000) 551.22Cdt Bruno Apprendre => Prendre => Rendre
willy95 Posté(e) le 18 décembre 2019 Auteur Posté(e) le 18 décembre 2019 Mais pour une valeur dans une variable cela doit s’écrire différemment ? car cela me dit type d'argument incorrect (setq x1b (rem x1 1000))
VDH-Bruno Posté(e) le 18 décembre 2019 Posté(e) le 18 décembre 2019 Mais pour une valeur dans une variable cela doit s’écrire différemment ? car cela me dit type d'argument incorrect (setq x1b (rem x1 1000)) Certainement ton argument et du type str (string), applique la fonction rem avant la convertion de type via la fontion rtos (real to string), l'argument de la fonction rem doit être du type real/int._$ (rem "1636551.22" 1000) ; erreur: type d'argument incorrect: numberp: "1636551.22" _$ (rem 1636551.22 1000) 551.22 _$ (type "1636551.22") STR _$ (type 1636551.22) REAL Apprendre => Prendre => Rendre
willy95 Posté(e) le 18 décembre 2019 Auteur Posté(e) le 18 décembre 2019 Merci beaucoup effectivement en entrant dans le bon ordre les choses tous va beaucoup mieux. En revanche il me reste plus que le problème du retour à la ligne dans l’écriture de mon fichier. Merci encore
VDH-Bruno Posté(e) le 18 décembre 2019 Posté(e) le 18 décembre 2019 Merci beaucoup effectivement en entrant dans le bon ordre les choses tous va beaucoup mieux. En revanche il me reste plus que le problème du retour à la ligne dans l’écriture de mon fichier. Merci encore Introduit "\n" dans ton code pour avoir un retour à la ligne, comme tu le ferais dans une invite de commmande lisp. Exemple_$ (princ (strcat "Bonjour" "\n" "Ceci est un retour à la ligne" "\n")) Bonjour Ceci est un retour à la ligne "Bonjour\nceci est un retour à la ligne\n" _$ Apprendre => Prendre => Rendre
willy95 Posté(e) le 18 décembre 2019 Auteur Posté(e) le 18 décembre 2019 Merci beaucoup pour cette explication qui me sera bien utile pour la suite et qui fonctionne à merveille. Merci vraiment beaucoup, tous fonctionne comme je le souhaitais.
didier Posté(e) le 18 décembre 2019 Posté(e) le 18 décembre 2019 Coucou Tout ceci est expliqué en long en large en travers sur mon site, du moins je le croisQuand je dis que j'ai plus trop la moëlle pour aider je parle de ce genre de questions où la personne ne se donne pas la peine de chercher.Je sais pas je demande ... est tellement facile, sans penser que des gens passent un temps fou à tenter d'aider les autres (ces gens se demandant pourquoi ils font ça avec le temps).Perso : je sais pas, je cherche, je trouve pas je demande... Libre à vous de faire autrement, libre à moi de penser ainsi. Amicalement tout de même... 1 Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 18 décembre 2019 Posté(e) le 18 décembre 2019 Salut... Je ne peut que donner raison à Maître didier, mais il n'est pas évidant de trouver plus rapidement ce que l'on cherche sur internet comparativement à la pose de question envers des "pro" du langage et en plus, francophone... Après tout, nous sommes là pour aider, même ceux qui ne savent pas chercher sur le NET... Bien que le site de Maître didier est totalement francophone... Raison pour laquelle je le consulte régulièrement... Ça se voit avec la diminution incroyable de mes innombrables questions sur notre excellent site (cadxp.com)... Mais le site de didier ne va pas tarder à devenir un incontournable... Socialement... Denis... PS : didier, n'as-tu jamais poser une question sans, auparavant en chercher la réponse ailleurs ? ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
willy95 Posté(e) le 20 décembre 2019 Auteur Posté(e) le 20 décembre 2019 Cher Didier, Pour information j'ai chercher préalablement à trouver les réponses à mes questions qui me bloque.J'ai également cherché à comprendre mes problèmes et je suis resté sans résultat concluant. Je te rassure et je consulte, lis, relis, réfléchis et essai de comprendre plein de chose sur votre super site qui est très complet, mais n'étant pas un développeur j'ai quand même beaucoup de mal à faire fonctionner certaines lignes de code qui reste quand même très difficiles pour un novice comme moi.Je passe énormément de temps à chercher et comprendre pourquoi cela ne marche pas. Je pensais effectivement qu'avec le temps le super forum de cadxp qui avec certains "membres ++" peuvent m'aider sur des problématiques qui reste complexes pour moi et qui seraient compréhensifs. Dans mon domaine j'essaye toujours de répondre aux questions à mes semblables mêmes qui pour moi me semble simpliste car je sais bien que la tâche n'est jamais simple pour un novice. Je vous remercie tous beaucoup pour le temps passé à me répondre ou me mettre sur la bonne voie quand je lutte.Et je vous en suis de plus très reconnaissant et je cherche même à participé financièrement mais je ne sais pas comment faire, bien que l'ayant déjà fait dans le passé. Je suis peu être intrusif dans un domaine que je maîtrise pas, mais l'utilité des codes me sont vraiment utile.De plus mes codes ne sont sûrement pas écrit de façon très AutoCADémique et me font parfois défaut, mais j'en tire une satisfaction énorme après avoir passé parfois des semaines à obtenir un résultat positif. J'essaie d'évoluer, de progressé dans ce domaine parfois même de complexifié mon problème en incluant d'autre langage comme l'intégration des boîtes de dialogues avec des dcl et la tâche n'est pas si simple. Merci, merci beaucoup et encore merci pour le dérangement. Au plaisir
didier Posté(e) le 20 décembre 2019 Posté(e) le 20 décembre 2019 Coucou Il est fort possible, je ne mets pas ta parole en doute, que tu aies fait des recherches en amont de tes questionsMais alors, sans te manquer de respect, ces recherches devaient être mal formulées car le cas exposé est assez simple et il me semblait fort improbable que tu aies fait ces recherches. Je ne comprends pas l'utilisation du mot "intrusif" car ce n'est pas le cas, je ne vois pas en quoi tu ne serais pas à ta place dans ce forum, tout le monde est à sa place pas question d'ostracisme ici. Pour ce qui est du langage DCL prépare l'aspirine, mais j'ai fait des exemples que j'espère utiles et je peux en faire d'autres le cas échéant. Pour ce qui est de la participation financière, il faut oublier, déjà parce que c'est une société anonyme qi gère le site et qu'en plus ils le laissent dépérir tout doucement sans vraiment tenir compte des alertes ni même de la quasi impossibilité des nouveaux venus à s'inscrire.J'ai participé financièrement moi aussi du temps de Patrick (Emin), qui a vendu le site plus tard ce qui est limite au sens éthique, alors je ne me ferai plus avoir. Éternel débutant... Mon site perso : Programmer dans AutoCAD
willy95 Posté(e) le 20 décembre 2019 Auteur Posté(e) le 20 décembre 2019 Merci encore pour ta réponse et pour essayer te montrer ma bonne foi d'un grand manque d'expérience dans le domaine mais que je suis très à l'écoute et à la recherche d'information pour obtenir un résultat satisfaisant, veuillez trouver ci dessous mon code au complet qui n'est pas du tout propre mais qui à le mérite de fonctionner malgré mon manque de savoir en matière de recherche. Bien amicalement. (defun C:recup (/ HT1val HT2val HT3val HT4val HT5val bloc1 bloc2 position1 position2 mat1 mat2 mat3 mat4 mat5 alt1 alt2 alt3 alt4 alt5 x1 x2 x3 x4 x5 y1 y2 y3 y4 y5 NB HT1 HT2 HT3 HT4 HT5) (setq tmpQ1 (vl-filename-mktemp "tmpQ1.dcl") file (open tmpQ1 "w")) (write-line "tmpQ1 : dialog { label = \"Transformation de Coordonnees Grand Systeme en Local\"; spacer; : spacer { width = 1; height = 1;} : text { key = \"\"; label = \"Choisir le Nombre de Points a Tranformer :\" ;} : row { : radio_button { key = \"1PT\"; label = \"1 Point\"; width = true; alignment = true;} : radio_button { key = \"2PT\"; label = \"2 Points\"; width = true; alignment = true;} : radio_button { key = \"3PT\"; label = \"3 Points\"; width = true; alignment = true;} : radio_button { key = \"4PT\"; label = \"4 Points\"; width = true; alignment = true;} : radio_button { key = \"5PT\"; label = \"5 Points\"; width = true; alignment = true;}} : spacer { width = 1; height = 1;} ok_cancel; : spacer { width = 1; height = 1;} edit_width = 10;} " file) (close file) (setq Dcl_Id1 (load_dialog tmpQ1)) (new_dialog "tmpQ1" Dcl_Id1) (action_tile "1PT" (vl-prin1-to-string '(if (= $value "1") (setq NB 1) ))) (action_tile "2PT" (vl-prin1-to-string '(if (= $value "1") (setq NB 2) ))) (action_tile "3PT" (vl-prin1-to-string '(if (= $value "1") (setq NB 3) ))) (action_tile "4PT" (vl-prin1-to-string '(if (= $value "1") (setq NB 4) ))) (action_tile "5PT" (vl-prin1-to-string '(if (= $value "1") (setq NB 5) ))) (start_dialog) (unload_dialog Dcl_Id1) (vl-file-delete tmpQ1) (if (= NB 1) (progn (setq bloc1 (car (entsel "\nSelectionnez le bloc: "))) (setq position1 (getpropertyvalue bloc1 "Position")) (setq alt1 (getpropertyvalue bloc1 "ALT")) (setq mat1 (getpropertyvalue bloc1 "MAT")) (setq x1R (car position1)) (setq x1S (rem x1R 1000)) (setq x1B (rtos x1S 2 3)) (setq y1R (cadr position1)) (setq y1S (rem y1R 1000)) (setq y1B (rtos y1S 2 3)) (setq x1 (rtos (car position1))) (setq y1 (rtos (cadr position1))) (setq tmpoint (vl-filename-mktemp "tmpoint.dcl") file (open tmpoint "w")) (write-line "tmpoint : dialog { key = \"Titre\"; label = \"\"; spacer; : spacer { width = 1; height = 1;} : row { : text { label = \"Matricule 1 :\";} : text { key = \"mat1\"; width = 10; } : text { key = \"x1\"; width = 10; } : text { key = \"y1\"; width = 10; } : text { key = \"alt1\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C1\"; width = 2;} : spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT1\"; }} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmpoint)) (new_dialog "tmpoint" Dcl_Id) (set_tile "Titre" "Transformation de Coordonnees Grand Systeme en Local") (set_tile "HT1" "0") (action_tile "HT1" (vl-prin1-to-string '(if (= $value "1") (setq HT1val 1) (setq HT1val 0) ))) (set_tile "mat1" mat1) (set_tile "x1" x1) (set_tile "y1" y1) (set_tile "alt1" alt1) (action_tile "C1" "(setq mat1 $value)") (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmpoint) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun writeUTF-8 (text filename / stream) (if (setq stream (vlax-create-object "ADODB.Stream")) (vl-catch-all-apply '(lambda () (vlax-put stream 'Type 2) (vlax-put stream 'Charset "iso-8859-1") (vlax-invoke stream 'Open) (vlax-invoke stream 'WriteText text 0) (vlax-invoke stream 'SaveToFile filename 2)))) (and stream (vlax-release-object stream))) (if (= HT1val 1) (setq HT1 ",1.427") (setq HT1 " ")) (if (= HT1val 1) (progn (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (writeUTF-8 (strcat ""mat1","x1B","y1B","alt1""HT1"" ) file) ) (progn (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (writeUTF-8 (strcat ""mat1","x1B","y1B","alt1" " ) file) )))) (if (= NB 2) (progn (setq bloc1 (car (entsel "\nSelectionnez le bloc: "))) (setq position1 (getpropertyvalue bloc1 "Position")) (setq alt1 (getpropertyvalue bloc1 "ALT")) (setq mat1 (getpropertyvalue bloc1 "MAT")) (setq x1R (car position1)) (setq x1S (rem x1R 1000)) (setq x1B (rtos x1S 2 3)) (setq y1R (cadr position1)) (setq y1S (rem y1R 1000)) (setq y1B (rtos y1S 2 3)) (setq x1 (rtos (car position1))) (setq y1 (rtos (cadr position1))) (setq bloc2 (car (entsel "\nSelectionnez le bloc: "))) (setq position2 (getpropertyvalue bloc2 "Position")) (setq alt2 (getpropertyvalue bloc2 "ALT")) (setq mat2 (getpropertyvalue bloc2 "MAT")) (setq x2R (car position1)) (setq x2S (rem x2R 1000)) (setq x2B (rtos x2S 2 3)) (setq y2R (cadr position1)) (setq y2S (rem y2R 1000)) (setq y2B (rtos y2S 2 3)) (setq x2 (rtos (car position2))) (setq y2 (rtos (cadr position2))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq tmpoint (vl-filename-mktemp "tmpoint.dcl") file (open tmpoint "w")) (write-line "tmpoint : dialog { key = \"Titre\"; label = \"\"; spacer; : spacer { width = 1; height = 1;} : row { : text { label = \"Matricule 1 :\";} : text { key = \"mat1\"; width = 10;} : text { key = \"x1\"; width = 10; } : text { key = \"y1\"; width = 10; } : text { key = \"alt1\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C1\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT1\"; }} : row { : text { label = \"Matricule 2 :\";} : text { key = \"mat2\"; width = 10;} : text { key = \"x2\"; width = 10; } : text { key = \"y2\"; width = 10; } : text { key = \"alt2\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C2\"; width = 2;} : spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT2\"; }} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmpoint)) (new_dialog "tmpoint" Dcl_Id) (set_tile "Titre" "Transformation de Coordonnees Grand Systeme en Local") (set_tile "HT1" "0") (action_tile "HT1" (vl-prin1-to-string '(if (= $value "1") (setq HT1val 1) (setq HT1val 0) ))) (set_tile "HT2" "0") (action_tile "HT2" (vl-prin1-to-string '(if (= $value "1") (setq HT2val 1) (setq HT2val 0) ))) (set_tile "mat1" mat1) (set_tile "x1" x1) (set_tile "y1" y1) (set_tile "alt1" alt1) (set_tile "mat2" mat2) (set_tile "x2" x2) (set_tile "y2" y2) (set_tile "alt2" alt2) (action_tile "C1" "(setq mat1 $value)") (action_tile "C2" "(setq mat2 $value)") (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmpoint) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun writeUTF-8 (text filename / stream) (if (setq stream (vlax-create-object "ADODB.Stream")) (vl-catch-all-apply '(lambda () (vlax-put stream 'Type 2) (vlax-put stream 'Charset "iso-8859-1") (vlax-invoke stream 'Open) (vlax-invoke stream 'WriteText text 0) (vlax-invoke stream 'SaveToFile filename 2)))) (and stream (vlax-release-object stream))) (if (= HT1val 1) (setq HT1 ",1.427") (setq HT1 " ")) (if (= HT2val 1) (setq HT2 ",1.427") (setq HT2 " ")) (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (writeUTF-8 (strcat ""mat1","x1B","y1B","alt1""HT1"\n" ""mat2","x2B","y2B","alt2""HT2"" ) file) )) (if (= NB 3) (progn (setq bloc1 (car (entsel "\nSelectionnez le bloc: "))) (setq position1 (getpropertyvalue bloc1 "Position")) (setq alt1 (getpropertyvalue bloc1 "ALT")) (setq mat1 (getpropertyvalue bloc1 "MAT")) (setq x1R (car position1)) (setq x1S (rem x1R 1000)) (setq x1B (rtos x1S 2 3)) (setq y1R (cadr position1)) (setq y1S (rem y1R 1000)) (setq y1B (rtos y1S 2 3)) (setq x1 (rtos (car position1))) (setq y1 (rtos (cadr position1))) (setq bloc2 (car (entsel "\nSelectionnez le bloc: "))) (setq position2 (getpropertyvalue bloc2 "Position")) (setq alt2 (getpropertyvalue bloc2 "ALT")) (setq mat2 (getpropertyvalue bloc2 "MAT")) (setq x2R (car position1)) (setq x2S (rem x2R 1000)) (setq x2B (rtos x2S 2 3)) (setq y2R (cadr position1)) (setq y2S (rem y2R 1000)) (setq y2B (rtos y2S 2 3)) (setq x2 (rtos (car position2))) (setq y2 (rtos (cadr position2))) (setq bloc3 (car (entsel "\nSelectionnez le bloc: "))) (setq position3 (getpropertyvalue bloc3 "Position")) (setq alt3 (getpropertyvalue bloc3 "ALT")) (setq mat3 (getpropertyvalue bloc3 "MAT")) (setq x3R (car position1)) (setq x3S (rem x3R 1000)) (setq x3B (rtos x3S 2 3)) (setq y3R (cadr position1)) (setq y3S (rem y3R 1000)) (setq y3B (rtos y3S 2 3)) (setq x3 (rtos (car position3))) (setq y3 (rtos (cadr position3))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq tmpoint (vl-filename-mktemp "tmpoint.dcl") file (open tmpoint "w")) (write-line "tmpoint : dialog { key = \"Titre\"; label = \"\"; spacer; : spacer { width = 1; height = 1;} : row { : text { label = \"Matricule 1 :\";} : text { key = \"mat1\"; width = 10;} : text { key = \"x1\"; width = 10; } : text { key = \"y1\"; width = 10; } : text { key = \"alt1\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C1\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT1\"; }} : row { : text { label = \"Matricule 2 :\";} : text { key = \"mat2\"; width = 10;} : text { key = \"x2\"; width = 10; } : text { key = \"y2\"; width = 10; } : text { key = \"alt2\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C2\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT2\"; }} : row { : text { label = \"Matricule 3 :\";} : text { key = \"mat3\"; width = 10;} : text { key = \"x3\"; width = 10; } : text { key = \"y3\"; width = 10; } : text { key = \"alt3\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C3\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT3\"; }} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmpoint)) (new_dialog "tmpoint" Dcl_Id) (set_tile "Titre" "Transformation de Coordonnees Grand Systeme en Local") (set_tile "HT1" "0") (action_tile "HT1" (vl-prin1-to-string '(if (= $value "1") (setq HT1val 1) (setq HT1val 0) ))) (set_tile "HT2" "0") (action_tile "HT2" (vl-prin1-to-string '(if (= $value "1") (setq HT2val 1) (setq HT2val 0) ))) (set_tile "HT3" "0") (action_tile "HT3" (vl-prin1-to-string '(if (= $value "1") (setq HT3val 1) (setq HT3val 0) ))) (set_tile "mat1" mat1) (set_tile "x1" x1) (set_tile "y1" y1) (set_tile "alt1" alt1) (set_tile "mat2" mat2) (set_tile "x2" x2) (set_tile "y2" y2) (set_tile "alt2" alt2) (set_tile "mat3" mat3) (set_tile "x3" x3) (set_tile "y3" y3) (set_tile "alt3" alt3) (action_tile "C1" "(setq mat1 $value)") (action_tile "C2" "(setq mat2 $value)") (action_tile "C3" "(setq mat3 $value)") (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmpoint) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun writeUTF-8 (text filename / stream) (if (setq stream (vlax-create-object "ADODB.Stream")) (vl-catch-all-apply '(lambda () (vlax-put stream 'Type 2) (vlax-put stream 'Charset "iso-8859-1") (vlax-invoke stream 'Open) (vlax-invoke stream 'WriteText text 0) (vlax-invoke stream 'SaveToFile filename 2)))) (and stream (vlax-release-object stream))) (if (= HT1val 1) (setq HT1 ",1.427") (setq HT1 " ")) (if (= HT2val 1) (setq HT2 ",1.427") (setq HT2 " ")) (if (= HT3val 1) (setq HT3 ",1.427") (setq HT3 " ")) (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (writeUTF-8 (strcat ""mat1","x1B","y1B","alt1""HT1"\n" ""mat2","x2B","y2B","alt2""HT2"\n" ""mat3","x3B","y3B","alt3""HT3"" ) file) )) (if (= NB 4) (progn (setq bloc1 (car (entsel "\nSelectionnez le bloc: "))) (setq position1 (getpropertyvalue bloc1 "Position")) (setq alt1 (getpropertyvalue bloc1 "ALT")) (setq mat1 (getpropertyvalue bloc1 "MAT")) (setq x1R (car position1)) (setq x1S (rem x1R 1000)) (setq x1B (rtos x1S 2 3)) (setq y1R (cadr position1)) (setq y1S (rem y1R 1000)) (setq y1B (rtos y1S 2 3)) (setq x1 (rtos (car position1))) (setq y1 (rtos (cadr position1))) (setq bloc2 (car (entsel "\nSelectionnez le bloc: "))) (setq position2 (getpropertyvalue bloc2 "Position")) (setq alt2 (getpropertyvalue bloc2 "ALT")) (setq mat2 (getpropertyvalue bloc2 "MAT")) (setq x2R (car position1)) (setq x2S (rem x2R 1000)) (setq x2B (rtos x2S 2 3)) (setq y2R (cadr position1)) (setq y2S (rem y2R 1000)) (setq y2B (rtos y2S 2 3)) (setq x2 (rtos (car position2))) (setq y2 (rtos (cadr position2))) (setq bloc3 (car (entsel "\nSelectionnez le bloc: "))) (setq position3 (getpropertyvalue bloc3 "Position")) (setq alt3 (getpropertyvalue bloc3 "ALT")) (setq mat3 (getpropertyvalue bloc3 "MAT")) (setq x3R (car position1)) (setq x3S (rem x3R 1000)) (setq x3B (rtos x3S 2 3)) (setq y3R (cadr position1)) (setq y3S (rem y3R 1000)) (setq y3B (rtos y3S 2 3)) (setq x3 (rtos (car position3))) (setq y3 (rtos (cadr position3))) (setq bloc4 (car (entsel "\nSelectionnez le bloc: "))) (setq position4 (getpropertyvalue bloc4 "Position")) (setq alt4 (getpropertyvalue bloc4 "ALT")) (setq mat4 (getpropertyvalue bloc4 "MAT")) (setq x4R (car position1)) (setq x4S (rem x4R 1000)) (setq x4B (rtos x4S 2 3)) (setq y4R (cadr position1)) (setq y4S (rem y4R 1000)) (setq y4B (rtos y4S 2 3)) (setq x4 (rtos (car position4))) (setq y4 (rtos (cadr position4))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq tmpoint (vl-filename-mktemp "tmpoint.dcl") file (open tmpoint "w")) (write-line "tmpoint : dialog { key = \"Titre\"; label = \"\"; spacer; : spacer { width = 1; height = 1;} : row { : text { label = \"Matricule 1 :\";} : text { key = \"mat1\"; width = 10;} : text { key = \"x1\"; width = 10; } : text { key = \"y1\"; width = 10; } : text { key = \"alt1\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C1\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT1\"; }} : row { : text { label = \"Matricule 2 :\";} : text { key = \"mat2\"; width = 10;} : text { key = \"x2\"; width = 10; } : text { key = \"y2\"; width = 10; } : text { key = \"alt2\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C2\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT2\"; }} : row { : text { label = \"Matricule 3 :\";} : text { key = \"mat3\"; width = 10;} : text { key = \"x3\"; width = 10; } : text { key = \"y3\"; width = 10; } : text { key = \"alt3\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C3\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT3\"; }} : row { : text { label = \"Matricule 4 :\";} : text { key = \"mat4\"; width = 10;} : text { key = \"x4\"; width = 10; } : text { key = \"y4\"; width = 10; } : text { key = \"alt4\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C4\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT4\"; }} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmpoint)) (new_dialog "tmpoint" Dcl_Id) (set_tile "Titre" "Transformation de Coordonnees Grand Systeme en Local") (set_tile "HT1" "0") (action_tile "HT1" (vl-prin1-to-string '(if (= $value "1") (setq HT1val 1) (setq HT1val 0) ))) (set_tile "HT2" "0") (action_tile "HT2" (vl-prin1-to-string '(if (= $value "1") (setq HT2val 1) (setq HT2val 0) ))) (set_tile "HT3" "0") (action_tile "HT3" (vl-prin1-to-string '(if (= $value "1") (setq HT3val 1) (setq HT3val 0) ))) (set_tile "HT4" "0") (action_tile "HT4" (vl-prin1-to-string '(if (= $value "1") (setq HT4val 1) (setq HT4val 0) ))) (set_tile "mat1" mat1) (set_tile "x1" x1) (set_tile "y1" y1) (set_tile "alt1" alt1) (set_tile "mat2" mat2) (set_tile "x2" x2) (set_tile "y2" y2) (set_tile "alt2" alt2) (set_tile "mat3" mat3) (set_tile "x3" x3) (set_tile "y3" y3) (set_tile "alt3" alt3) (set_tile "mat4" mat4) (set_tile "x4" x4) (set_tile "y4" y4) (set_tile "alt4" alt4) (action_tile "C1" "(setq mat1 $value)") (action_tile "C2" "(setq mat2 $value)") (action_tile "C3" "(setq mat3 $value)") (action_tile "C4" "(setq mat4 $value)") (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmpoint) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun writeUTF-8 (text filename / stream) (if (setq stream (vlax-create-object "ADODB.Stream")) (vl-catch-all-apply '(lambda () (vlax-put stream 'Type 2) (vlax-put stream 'Charset "iso-8859-1") (vlax-invoke stream 'Open) (vlax-invoke stream 'WriteText text 0) (vlax-invoke stream 'SaveToFile filename 2)))) (and stream (vlax-release-object stream))) (if (= HT1val 1) (setq HT1 ",1.427") (setq HT1 " ")) (if (= HT2val 1) (setq HT2 ",1.427") (setq HT2 " ")) (if (= HT3val 1) (setq HT3 ",1.427") (setq HT3 " ")) (if (= HT4val 1) (setq HT4 ",1.427") (setq HT4 " ")) (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (writeUTF-8 (strcat ""mat1","x1B","y1B","alt1""HT1"\n" ""mat2","x2B","y2B","alt2""HT2"\n" ""mat3","x3B","y3B","alt3""HT3"\n" ""mat4","x4B","y4B","alt4""HT4"" ) file) )) (if (= NB 5) (progn (setq bloc1 (car (entsel "\nSelectionnez le bloc: "))) (setq position1 (getpropertyvalue bloc1 "Position")) (setq alt1 (getpropertyvalue bloc1 "ALT")) (setq mat1 (getpropertyvalue bloc1 "MAT")) (setq x1R (car position1)) (setq x1S (rem x1R 1000)) (setq x1B (rtos x1S 2 3)) (setq y1R (cadr position1)) (setq y1S (rem y1R 1000)) (setq y1B (rtos y1S 2 3)) (setq x1 (rtos (car position1))) (setq y1 (rtos (cadr position1))) (setq bloc2 (car (entsel "\nSelectionnez le bloc: "))) (setq position2 (getpropertyvalue bloc2 "Position")) (setq alt2 (getpropertyvalue bloc2 "ALT")) (setq mat2 (getpropertyvalue bloc2 "MAT")) (setq x2R (car position1)) (setq x2S (rem x2R 1000)) (setq x2B (rtos x2S 2 3)) (setq y2R (cadr position1)) (setq y2S (rem y2R 1000)) (setq y2B (rtos y2S 2 3)) (setq x2 (rtos (car position2))) (setq y2 (rtos (cadr position2))) (setq bloc3 (car (entsel "\nSelectionnez le bloc: "))) (setq position3 (getpropertyvalue bloc3 "Position")) (setq alt3 (getpropertyvalue bloc3 "ALT")) (setq mat3 (getpropertyvalue bloc3 "MAT")) (setq x3R (car position1)) (setq x3S (rem x3R 1000)) (setq x3B (rtos x3S 2 3)) (setq y3R (cadr position1)) (setq y3S (rem y3R 1000)) (setq y3B (rtos y3S 2 3)) (setq x3 (rtos (car position3))) (setq y3 (rtos (cadr position3))) (setq bloc4 (car (entsel "\nSelectionnez le bloc: "))) (setq position4 (getpropertyvalue bloc4 "Position")) (setq alt4 (getpropertyvalue bloc4 "ALT")) (setq mat4 (getpropertyvalue bloc4 "MAT")) (setq x4R (car position1)) (setq x4S (rem x4R 1000)) (setq x4B (rtos x4S 2 3)) (setq y4R (cadr position1)) (setq y4S (rem y4R 1000)) (setq y4B (rtos y4S 2 3)) (setq x4 (rtos (car position4))) (setq y4 (rtos (cadr position4))) (setq bloc5 (car (entsel "\nSelectionnez le bloc: "))) (setq position5 (getpropertyvalue bloc5 "Position")) (setq alt5 (getpropertyvalue bloc5 "ALT")) (setq mat5 (getpropertyvalue bloc5 "MAT")) (setq x5R (car position1)) (setq x5S (rem x5R 1000)) (setq x5B (rtos x5S 2 3)) (setq y5R (cadr position1)) (setq y5S (rem y5R 1000)) (setq y5B (rtos y5S 2 3)) (setq x5 (rtos (car position5))) (setq y5 (rtos (cadr position5))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq tmpoint (vl-filename-mktemp "tmpoint.dcl") file (open tmpoint "w")) (write-line "tmpoint : dialog { key = \"Titre\"; label = \"\"; spacer; : spacer { width = 1; height = 1;} : row { : text { label = \"Matricule 1 :\";} : text { key = \"mat1\"; width = 10;} : text { key = \"x1\"; width = 10; } : text { key = \"y1\"; width = 10; } : text { key = \"alt1\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C1\"; width = 2;} : spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT1\"; }} : row { : text { label = \"Matricule 2 :\";} : text { key = \"mat2\"; width = 10;} : text { key = \"x2\"; width = 10; } : text { key = \"y2\"; width = 10; } : text { key = \"alt2\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C2\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT2\"; }} : row { : text { label = \"Matricule 3 :\";} : text { key = \"mat3\"; width = 10;} : text { key = \"x3\"; width = 10; } : text { key = \"y3\"; width = 10; } : text { key = \"alt3\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C3\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT3\"; }} : row { : text { label = \"Matricule 4 :\";} : text { key = \"mat4\"; width = 10;} : text { key = \"x4\"; width = 10; } : text { key = \"y4\"; width = 10; } : text { key = \"alt4\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C4\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT4\"; }} : row { : text { label = \"Matricule 5 :\";} : text { key = \"mat5\"; width = 10;} : text { key = \"x5\"; width = 10; } : text { key = \"y5\"; width = 10; } : text { key = \"alt5\"; width = 10; } : edit_box { label = \"Nom de la Cible :\"; key = \"C5\"; width = 2;}: spacer { width = 1; height = 1;} : toggle { label = \"HC:1,427\"; key = \"HT5\"; }} : spacer { width = 1; height = 1;} ok_cancel; edit_width = 10;} " file) (close file) (setq Dcl_Id (load_dialog tmpoint)) (new_dialog "tmpoint" Dcl_Id) (set_tile "Titre" "Transformation de Coordonnees Grand Systeme en Local") (set_tile "HT1" "0") (action_tile "HT1" (vl-prin1-to-string '(if (= $value "1") (setq HT1val 1) (setq HT1val 0) ))) (set_tile "HT2" "0") (action_tile "HT2" (vl-prin1-to-string '(if (= $value "1") (setq HT2val 1) (setq HT2val 0) ))) (set_tile "HT3" "0") (action_tile "HT3" (vl-prin1-to-string '(if (= $value "1") (setq HT3val 1) (setq HT3val 0) ))) (set_tile "HT4" "0") (action_tile "HT4" (vl-prin1-to-string '(if (= $value "1") (setq HT4val 1) (setq HT4val 0) ))) (set_tile "HT5" "0") (action_tile "HT5" (vl-prin1-to-string '(if (= $value "1") (setq HT5val 1) (setq HT5val 0) ))) (set_tile "mat1" mat1) (set_tile "x1" x1) (set_tile "y1" y1) (set_tile "alt1" alt1) (set_tile "mat2" mat2) (set_tile "x2" x2) (set_tile "y2" y2) (set_tile "alt2" alt2) (set_tile "mat3" mat3) (set_tile "x3" x3) (set_tile "y3" y3) (set_tile "alt3" alt3) (set_tile "mat4" mat4) (set_tile "x4" x4) (set_tile "y4" y4) (set_tile "alt4" alt4) (set_tile "mat5" mat5) (set_tile "x5" x5) (set_tile "y5" y5) (set_tile "alt5" alt5) (action_tile "C1" "(setq mat1 $value)") (action_tile "C2" "(setq mat2 $value)") (action_tile "C3" "(setq mat3 $value)") (action_tile "C4" "(setq mat4 $value)") (action_tile "C5" "(setq mat5 $value)") (start_dialog) (unload_dialog Dcl_Id) (vl-file-delete tmpoint) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun writeUTF-8 (text filename / stream) (if (setq stream (vlax-create-object "ADODB.Stream")) (vl-catch-all-apply '(lambda () (vlax-put stream 'Type 2) (vlax-put stream 'Charset "iso-8859-1") (vlax-invoke stream 'Open) (vlax-invoke stream 'WriteText text 0) (vlax-invoke stream 'SaveToFile filename 2)))) (and stream (vlax-release-object stream))) (if (= HT1val 1) (setq HT1 ",1.427") (setq HT1 " ")) (if (= HT2val 1) (setq HT2 ",1.427") (setq HT2 " ")) (if (= HT3val 1) (setq HT3 ",1.427") (setq HT3 " ")) (if (= HT4val 1) (setq HT4 ",1.427") (setq HT4 " ")) (if (= HT5val 1) (setq HT5 ",1.427") (setq HT5 " ")) (setq file (getfiled "Créer un fichier" "" "txt" 1) ) (writeUTF-8 (strcat ""mat1","x1B","y1B","alt1""HT1"\n" ""mat2","x2B","y2B","alt2""HT2"\n" ""mat3","x3B","y3B","alt3""HT3"\n" ""mat4","x4B","y4B","alt4""HT4"\n" ""mat5","x5B","y5B","alt5""HT5"" ) file) )) )
DenisHen Posté(e) le 20 décembre 2019 Posté(e) le 20 décembre 2019 Salut. didier avait raison, mais l'aspirine est pour moi... ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 20 décembre 2019 Posté(e) le 20 décembre 2019 Coucou Qu'est ce que cette routine (quelque peu obèse par ses 801 lignes) est censée faire ?Il semble qu'il faille diviser par mille les coordonnées de certains points ? sans rotation ni mise à l'échelle ?Merci d'expliquer pour ceux qui feront des recherches en posant un problème identiqueNe prends pas la mouche, y'a pas de malice pour les "recherches", je sais bien que les susceptibilités sont épidermiques sur ce site (et ailleurs) et ça leur passera bien avant que ça ne me reprenne. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
willy95 Posté(e) le 23 décembre 2019 Auteur Posté(e) le 23 décembre 2019 Bonjour, Ce code me permet de récupérer des points de calage dans un système précis xyz relevé et de les intégrer dans "Cyclone" pour permettre un calcul des cibles d'un scanner dans ce même système sans rencontrer les problématiques lié au trop grande coordonnées mal gérer par Autocad pour les Nuages de points. De ce fait aucune erreur de saisie ou d'écriture, une simple selection de point et hop. J'avais un besoin très spécifique et donc un code plutôt simpliste pour les pro et atypique pour les novices comme moi. ;) Peu importe les bonnes ou mauvaises critiques sur ce type de code, mais mon utilité est réelle et personne ne pouvait m'aider auparavant, j'ai chercher, j'ai fini par demander de l'aide que l'on m'a apporté, et mon code fonctionne à merveille, la prochaine fois, je chercherai peut-être mieux tous simplement. Merci encore.
didier Posté(e) le 23 décembre 2019 Posté(e) le 23 décembre 2019 Coucou Je dois vraiment être imprécis dans mes propos, je ne le pensais pas mais vais finir par le croire.Je me suis permis de demander pour t'aider, arrête avec les "peu importe les critiques", on ne joue pas à "qui a la plus grosse". Donc tu dois choisir des points, OK, tu les choisis comment ? par leur valeur d’attribut numéro ? par le nom du bloc ?par un clic à l'écran ? du fait de la présence sur un calque précis ?Et ensuite une fois qu'ils sont dans un jeu de sélection, quelle opération doit être opérée sur les coordonnées ?Le fait de dire "les intégrer dans "Cyclone" pour permettre un calcul des cibles d'un scanner dans ce même système" n'explique rien pour celui qui voudrait éventuellement t'aider. Je m'intéresse à ce message pour créer des exemples pour mon site et que tout le monde en profite pour appréhender la puissance de la "programmation" dans AutoCAD ou un de ses clones. Inspire-toi des demandes de "LeCrabe" quand il pose une question ou une demande de Lisp, il est pour le moins explicite. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant