Fraid Posté(e) le 16 décembre 2005 Auteur Posté(e) le 16 décembre 2005 sa marche pas : ; erreur: argument point incorrect :exclam: https://github.com/Fraiddd
bonuscad Posté(e) le 16 décembre 2005 Posté(e) le 16 décembre 2005 Cela voudrait-il dire que les points sousmis à ssget sont incorrects? Tu as peut être modifié C1 ou C2 incorrectement? Si tu n'y arrives pas poste le code. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Fraid Posté(e) le 16 décembre 2005 Auteur Posté(e) le 16 décembre 2005 (defun C:Tript ( / )(setq j_sel (ssget "_x" ' ((0 . "POINT"))))(setq n 0)(repeat (sslength j_sel)(setq ent (ssname j_sel n))(setq pt_ins (cdr (assoc 10 (entget ent))))(setq c1 (list (+ (car pt_ins) 0.05) (+ (cadr pt_ins) 0.1) (caddr pt_ins)))(setq c2 (list (+ (car pt_ins) 0.05) (+ (cadr pt_ins) 0.1) (caddr pt_ins)))(setq js (ssget '(c1 c2) '((0 . "TEXT"))))(cond(js(setq cod (read (cdr (assoc 1 (entget (ssname js 0))))))(command "_.-layer" "_new" (itoa cod) "" "")(command "_.change" (ssget "_c" c1 (list (car pt_ins) (cadr pt_ins) (caddr pt_ins))) "" "_properties" "_layer" (itoa cod) "")))(setq n (+ 1 n)))) https://github.com/Fraiddd
lecrabe Posté(e) le 16 décembre 2005 Posté(e) le 16 décembre 2005 Bonsoir Une petite question "stupide" ... Tu as reçu un DWG AutoCAD avec des milliers de points et des textes proches ?(Le tout sur de multiples calques en fonction du code ?) Ou bien tu as UN ou PLUSIEURS fichiers Ascii/Textes avec des coordonnées XYZ (plus éventuellement) des codes ? Le Decapode "interloqué" Autodesk Expert Elite Team
Fraid Posté(e) le 16 décembre 2005 Auteur Posté(e) le 16 décembre 2005 un dxf avec des milliers de points et des textes proches le tout sur un calqued'ou le probleme https://github.com/Fraiddd
lecrabe Posté(e) le 16 décembre 2005 Posté(e) le 16 décembre 2005 Bonsoir Je comprend beaucoup MIEUX ton problème :o Je te propose de prende ta Kalachnikov ou ton M16 ou ton Clairon et de "hacher menu" le fournisseur du dessin en question ... :) :D :cool: Ca défoule NON ! Le decapode "karchérizant" Autodesk Expert Elite Team
Fraid Posté(e) le 19 décembre 2005 Auteur Posté(e) le 19 décembre 2005 je me permet de continuer se sujet meme si je devrai le continuer dans le forum destiné au lisp je suis toujours en train de me depatouiller avec le prog de bonuscad en faisant un (princ pt_ins) a l'interieur de la boucle j'ai pu m'apercevoir qu'il n'y avait pas de chiffre apres la virgule alors qu'il devrais en avoir(dimzin=0)cela vient il de cette expression?(setq pt_ins (cdr (assoc 10 (entget ent)))) je ne vois pas a quoi correspond le nombre 10 apres assoc (qui est vraiment mal documenter dans l'aide) https://github.com/Fraiddd
(gile) Posté(e) le 19 décembre 2005 Posté(e) le 19 décembre 2005 Salut, Le nombre 10 correspond au code dxf 10 de la liste renvoyée par entget (10 est en général le code du point de départ des entités : point d'insertion d'un bloc, centre d'un cercle, premier point d'uneligne ...) La fonction (assoc ...) permet de récupérer un membre d'une "liste associative" (de dotted pairs (paires pointées) dans les listes renvoyées par (entget)). Le premier terme de chaque membre de cette liste agit comme un index pour la fonction (assoc). exemple : (setq lst '((0 . "circle") (10 20.0 30.0 0.0) (40 . 50.0))) ensuite : (assoc 0 lst) retourne (0 . "circle")(cdr (assoc 10 lst)) retourne (20.0 30.0 0.0) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fraid Posté(e) le 19 décembre 2005 Auteur Posté(e) le 19 décembre 2005 merci gile pour ton eclaicissement mais pourquoi je me retrouve avec des valeurs arrondies???? j'ai besoin de garder mes position de points exacte sinon j'ai chercher la liste des codes dxf des listes renvoyée par entgetje n'ai trouvé que quelques exemples mais pas une liste exaustive :exclam: https://github.com/Fraiddd
didier Posté(e) le 19 décembre 2005 Posté(e) le 19 décembre 2005 Bonsoir, Effectivement, le mec qui t'as refilé le fichier abuse.sauf si tu lui as vendu des haricots qui veulent pas cuire,je ne vois pas la raison de faire une telle crasse.les géomètres ne sortent pas grandis de ce genre de situation. Donc récapitulons,la valeur du code est connuela situation du point est connue par rapport au point d'insertion du texte "code" tu fais un calque du nom de code que tu veux scannertu le rends COURANTsi le point d'insertion des codes est "bas gauche" : c'est simple mais ça fonctionne :(setq jeu (ssget "x" '((0 . "TEXT"))))(setq lon (sslength jeu) valcode (getstring "\nValeur du code ?\n") consx -0.5 consy -0.1 n 0)(repeat lon (setq ent (ssname jeu n)) (if (= (cdr(assoc 1 (entget ent))) valcode) (progn (setq pt1 (cdr(assoc 10 (entget ent)))) (setq pt2 (list ( + consx (car pt1))(+ consy (cadr pt1)))) (command "point" pt2) ) ) (setq n ( + 1 n)) ) NB: tu peux changer les constantes que la peste soit sur les barbares qui pourrissent leurs fichierspour que le soleil ne brille que chez eux amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 19 décembre 2005 Posté(e) le 19 décembre 2005 sinon j'ai chercher la liste des codes dxf des listes renvoyée par entgetje n'ai trouvé que quelques exemples mais pas une liste exaustive C'est dans l'Aide aux développeurs -> Référence DXF et c'est en français ! Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 20 décembre 2005 Posté(e) le 20 décembre 2005 Une nouvelle proposition, (celle ci ne tiens plus compte de ton histoire d'erreur d'altidude sur une fourchette de code inférieur à 1000)Lors de l'utilisation un paramètrage va avoir lieu sur la 1ere boucle pour définir la position de ton code puis numéro et enfin l'altidude par rapport à ton point. Ceci fait, chaque point sera (normalement) transferé dans le calque portant le nom du code (nombre entier) avec son code et son altitude. Les chevauchements des écritures ne devraient pas poser de problème.J'espère qu'elle va t'apporter la réponse attendue sans avoir besoin d'être remanié ou ajusté. (defun tri_sel (sel l en p_o / n tri_sel e_text dxf_txt pins val) (setq n 0 tri_sel (ssadd) tri_sel (ssadd en tri_sel) ) (repeat (sslength sel) (setq e_text (ssname sel n) dxf_txt (entget e_text) pins (cdr (assoc 10 dxf_txt)) pins (list (car pins) (cadr pins) 0.0) val (cdr (assoc 1 dxf_txt)) ) (cond ((equal (mapcar '- pins p_o) (car l) 0.0001) (setq tri_sel (ssadd e_text tri_sel)) ) ((equal (mapcar '- pins p_o) (cadr l) 0.0001) (setq tri_sel (ssadd e_text tri_sel)) ) ((equal (mapcar '- pins p_o) (caddr l) 0.0001) (setq tri_sel (ssadd e_text tri_sel)) (command "_.-layer" "_new" (itoa (read val)) "") (setvar "CLAYER" (itoa (read val))) ) ) (setq n (1+ n)) ) (command "_.change" tri_sel "" "_properties" "_layer" (getvar "CLAYER") "") (setvar "CLAYER" "0") ) (defun C:Tri_pt ( / j_sel lst_ins lst_box n ent pt_ins e_text txt_box pt c1 c2 js) (setvar "cmdecho" 0) (setvar "osmode" 0) (command "_.zoom" "_extent") (setq j_sel (ssget "_x" ' ((0 . "POINT")))) (setq lst_ins '() lst_box '()) (cond (j_sel (setq n 0) (repeat (sslength j_sel) (setq ent (ssname j_sel n) pt_ins (cdr (assoc 10 (entget ent))) pt_ins (list (car pt_ins) (cadr pt_ins) 0.0) ) (if (zerop n) (progn (command "_.zoom" "_ce" pt_ins "10.0") (princ "\nEtalonnage de position des textes pour code/numéro/texte-z.") (foreach msg '("code" "altitude");'("code" "numero" "altitude") (initget 1) (setq e_text (entget (car (nentselp (getpoint pt_ins (strcat "\nChoix tu texte pour la valeur " msg ": "))))) txt_box (textbox e_text) pt (cdr (assoc 10 e_text)) pt (list (car pt) (cadr pt) 0.0) lst_ins (cons (mapcar '- pt pt_ins) lst_ins) lst_box (append (mapcar '(lambda (x) (mapcar '+ (car lst_ins) x)) txt_box) lst_box) ) ) (command "_.zoom" "_previous") ) ) (setq c1 (list (+ (car pt_ins) (eval (cons 'min (mapcar 'car lst_box)))) (+ (cadr pt_ins) (eval (cons 'min (mapcar 'cadr lst_box)))) 0.0 ) ) (setq c2 (list (+ (car pt_ins) (eval (cons 'max (mapcar 'car lst_box)))) (+ (cadr pt_ins) (eval (cons 'max (mapcar 'cadr lst_box)))) 0.0 ) ) (setq js (ssget "_c" c1 c2 '((0 . "TEXT")))) (if js (tri_sel js lst_ins ent pt_ins)) (setq n (+ 1 n)) ) ) ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Fraid Posté(e) le 21 décembre 2005 Auteur Posté(e) le 21 décembre 2005 merci a tous pour votre aide je dispose maintenant de sufisement de piste pour y arriver du coup je pense que vais les arracher ses relevé https://github.com/Fraiddd
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