DenisHen Posté(e) le 19 janvier 2007 Posté(e) le 19 janvier 2007 Bonjour à tous... Oui, je suis de retour ! ! J'aimerai créer des points indentifiables... pour leur donner des matricules et d'autres valeurs... (n° de lot...) Je sais que certains seront tenté de me répondre : "Ben, fais des blocs ! !" Et je leur répondrai : "J'y ai pensé et j'ai déjà essayé, mais je n'arrive ABSOLUMENT PAS à gérer les attributs dans les blocs..." Donc, si quelqu'un a des trucs ou astuces pour les attributs de bloc... Je les aimerais... Merci à tous... PS: PhalèneCAD commence à prendre forme... Je dois encore régler quelques petits trucs... Mais c'est sur, ce sera sur mon site... 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 19 janvier 2007 Posté(e) le 19 janvier 2007 hello, Comment ça, tu ne sais pas GERER ?allez on fait un effort pour 2007, on s'explique clairement.tu ne sais pas faire quoi ?créer un attribut ?retrouver le point d'insertion du bloc qui a tel attribut ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Patrick_35 Posté(e) le 19 janvier 2007 Posté(e) le 19 janvier 2007 SalutJe suis comme didierTa question me laisse perplexe. Dis nous ce que tu souhaites faire réellement @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 19 janvier 2007 Auteur Posté(e) le 19 janvier 2007 Bon, premièrement, merci de vous intéresser à mon problème, secondo, pardon Didier et Patrick_35, j'aurai du faire l'effort de moi-même, je le fais donc, maintenant : Je n'arrive pas à cliquer sur un block J'au un bloc qui comprend 3 attributs "Matri", "X" et "Y". Je n'arrive pas à attribuer un numéro incrémenté dans "Matri" et je n'arrive pas à placer dans les attributs "X" et "Y" les coordonnées du point d'insertion du block. Car mon but étais d'inserer ce bloc "PointPoly" à chaque sommet de plusieur polylignes, tout en évitant d'insérer plusieurs fois ce bloc si plusieurs polylignes ont un ou des sommets communs... Bref, je clique UNE polyligne de 5 sommets, le bloc s'insert 5 fois avec "Matri" de 1 à 5. Je clique une autre polyligne qui a un sommet (le 2 par exemple) en commun avec le sommet n°3 de la polyligne précédente, On aurra "Matri" pour la nouvelle dernière polyligne 6, 7, 2, 8, 9, .... Je peux faire un .dwg au cas ou mon explication serait encore floue... Sachant que j'avais essayé de faire çà il y a au moins 8 mois et que j'ai tout oublié... Petite serise sur le gateau, je dois faire autant de tableau (dans le dessin) que de polyligne avec (les données sont fausses, c'est juste pour exemple) : Matri..|....X....|....Y....|....Dist. 1........|.12.5..|.53.1.|..........|..........|.........|..3.25m 2........|.19.2..|.56.4.|..........|..........|.........|..7.15m 3........|....... Voilà... merci à tous pour vos efforts de lecture et pardon pour la migraine... Denis... 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 19 janvier 2007 Posté(e) le 19 janvier 2007 je me suis amusé à taper ce qui suitmais en me relisant, je suis conscient des améliorationsje pense que ça fonctionne, mais c'est loin, très loin d'une BONNE routine pour ma défense, c'est vendredi soir, et je n'ai plus l'imagination très claire.c'est à étudier et à simplifierd'autant que ça ne marchera que s'il y a un bloc "pointpoly"inséré dans un coin avec le matricule 0 (zéro)allez je rentre dans ma maison... :exclam: (setq jeu1 (ssget "x" (list (cons 0 "INSERT") (cons 2 "pointpoly")))) (setq n 0) (setq listenum '()) (repeat (sslength jeu1) (setq tempo (ssname jeu1 n)) (setq numtempo (cdr (assoc 1 (entget (entnext tempo))))) (setq listenum (append listenum (list numtempo))) (setq n (+ 1 n)) ) (setq n 0) (setq matricule (atoi(nth n listenum))) (repeat (length listenum) (setq n ( + 1 n)) (setq matricule (max matricule (setq matricule (atoi (nth 1 listenum ))))) ) (setq matricule ( + 1 matricule)) (setq n 0) ;++++++++++++++++++++++++++++++++ (setq jeu2 (ssget "x" (list (cons 0 "INSERT") (cons 2 "pointpoly")))) (setq n 0) (repeat (sslength jeu2) (setq point (cdr (assoc 10 (entget (ssname jeu2 n))))) (setq point (list (car point) (cadr point))) (setq listepoints (append listepoints (list point))) (setq n (+ 1 n)) ) ;++++++++++++++++++++++++++++++++ (setq ent (car (entsel "\nPolyligne à immatriculer ?\n"))) (setq listesommets (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent) ) ) ) (setq n 0) (repeat (length listesommets) (setq sommet (nth n listesommets)) ;++++++++++++++++++++++++++++++++++++++ (if (and (= (car (car (member sommet listepoints))) (car sommet)) (= (cadr (car (member sommet listepoints))) (cadr sommet)) ) (progn (setq n (+ 1 n) sommet (nth n listesommets) ;matricule ( + 1 matricule) ) ) ) (command "_insert" "pointpoly" (nth n listesommets) "" "" "" (itoa matricule) (rtos (car sommet) 2 2) (rtos (cadr sommet) 2 2) ) (setq matricule (+ 1 matricule) n (+ 1 n) ) ) amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 19 janvier 2007 Auteur Posté(e) le 19 janvier 2007 Merci des millions de fois, Didier. Rentre dans ta maison et emporte avec toi "une bonne fin de semaine"... Denis... 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)
bonuscad Posté(e) le 19 janvier 2007 Posté(e) le 19 janvier 2007 Un voilà un qui fait un bloc qui s'incrémente , en plaçant l'attribut dans un calque inactif et verrouillé. En mixant avec la proposition de Didier tu vas pouvoir avancer. ;) (defun c:borne (/ pto x y z) (cond ((eq (getvar "cvport") 1) (princ "\n** Commande autorisée uniquement dans l'espace objet." ) ) (T (if (not (tblsearch "LAYER" "borne_attributs")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "borne_attributs") (70 . 4) (62 . -3) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if (not (tblsearch "LAYER" "borne")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "borne") (70 . 4) (62 . 4) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if (not (tblsearch "STYLE" "$borne")) (entmake '((0 . "STYLE") (5 . "40") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "$borne") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (3 . "monotxt.shx") (4 . "") ) ) ) (setvar "textstyle" "$borne") (if (not (tblsearch "BLOCK" "$borne")) (progn (entmake '((0 . "BLOCK") (2 . "$borne") (70 . 2) (10 0.0 0.0 0.0)) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (62 . 1) (10 1.0 0.0 0.0) (40 . 1.0) (1 . "0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Numéro de la borne: ") (2 . "NO") (70 . 0) ) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (10 1.0 -1.66667 0.0) (40 . 1.0) (1 . "X=0.0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Entrer le X du point: ") (2 . "ID-X") (70 . 0) ) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (10 1.0 -3.33333 0.0) (40 . 1.0) (1 . "Y=0.0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Entrer le Y du point: ") (2 . "ID-Y") (70 . 0) ) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (10 1.0 -5.0 0.0) (40 . 1.0) (1 . "Z=0.0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Entrer le Z du point: ") (2 . "ID-Z") (70 . 0) ) ) (entmake '((0 . "CIRCLE") (67 . 0) (8 . "borne") (10 0.0 0.0 0.0) (40 . 0.25) (210 0.0 0.0 1.0) ) ) (entmake '((0 . "CIRCLE") (67 . 0) (8 . "borne") (10 0.0 0.0 0.0) (40 . 0.40) (210 0.0 0.0 1.0) ) ) (entmake '((0 . "ENDBLK"))) ) ) (if (not nob) (setq nob 1) ) (initget 8) (while (setq pto (getpoint "\nPoint de la borne: ")) (initget 6) (setq nb (getint (strcat "\nNo de la borne<" (itoa nob) ">: "))) (if (not nb) (setq nb nob) ) (setq pto (trans pto 1 0) x (car pto) y (cadr pto) z (caddr pto) ) (entmake (append '((0 . "INSERT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne") (100 . "AcDbBlockReference") (66 . 1) (2 . "$borne") (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0) ) (list (cons 10 pto)) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (62 . 1) (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "NO") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "Borne N°:" (itoa nb)))) (list (cons 10 (list (+ (car pto) 1.0) (cadr pto)))) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "ID-X") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "X=" (rtos x 2 4)))) (list (cons 10 (list (+ (car pto) 1.0) (+ (cadr pto) -1.66667))) ) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "ID-Y") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "Y=" (rtos y 2 4)))) (list (cons 10 (list (+ (car pto) 1.0) (+ (cadr pto) -3.33333))) ) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "ID-Z") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "Z=" (rtos z 2 4)))) (list (cons 10 (list (+ (car pto) 1.0) (+ (cadr pto) -5.0))) ) ) ) (entmake '((0 . "SEQEND"))) (setq nob (1+ nob)) (initget 8) ) ) ) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
DenisHen Posté(e) le 19 janvier 2007 Auteur Posté(e) le 19 janvier 2007 Eh, les mecs ! ! Je suis déjà insomniaque ! ! Comme "Maxwell, qualité filtre" ! ! Donc, pas la peine d'en rajouter ! ! ... Merci, Oh toi BonusCAD ! ! Petite apparté, "Talus.lsp" plantait TOUJOURS à la première utilisation d'une cession AutoCAD... J'ai découvert, il y a deux jours, que je pouvais pallier cet inconvéniant, en cliquant sur "Choix dans Liste des calques"... puis "Ok" car j'avais déjà créer le calque de "destination" dans mon MNS. Je dois te dire que je créais le calque "Talus" avant de lancer la commande "talus" C'est le premier et le seul moyen que j'ai trouvé pour faire de ton EXCELLENTE routine une routine PARFAITE ! ! ! Bon, faut que j'aille bossé... Merci les amis ! ! Bon... ......... J'y.........Vais.........Denis... ( qui y vas ... Fatigué... Mais entousiasmé ! ! ) 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 janvier 2007 Posté(e) le 20 janvier 2007 hello, et bien, tu vois,quand tu t'expliques clairement,tu as la réponse souhaitée.tu n'es pas le seul concerné par cette remarque... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 23 janvier 2007 Auteur Posté(e) le 23 janvier 2007 Des milliards de merci à vous ! ! ! Je vais pouvoir progresser avec ça ! ! Merci didier, je vais faire le tri dans ton post, qui reste confu pour moi, tu sais, tant qu'il n'y a pas de "(defun ", je ne peu pas formuler ton post... J'ai donc un peu de mal à le comprendre... Mais ça devrai venir ! ! Et pour bonuscad, merci pour la création de calques et de style de texte, je ne savais le faire que par "command" ! ! Maintenant, je vais pouvoir jouer comme un petit fou ! ! Un seul et dernier problème, comment faire pour ne pas créer deux fois le même point. Car c'est depuis une routine qui analyse la polyligne cliquée qui créra ces blocs et fera un tableau... Je me sers déjà de cette routine que voici : (defun c:TabDA (/ p1 p2 rot Num Num1 VOrtho Surf Texte) ;(setq Haut (atof Haut)) (if (= (setq Ech (vlax-ldata-get "Phalene" "Ech1")) nil ) ;_ Fin de = (c:PhEch) ) ;_ Fin de if (if (= (setq Num (vlax-ldata-get "Phalene" "NumPtDA")) nil ) ;_ Fin de = (setq Num 1) ) ;_ Fin de if (setvar "dimzin" 3) (setq Haut 2.5) (if (not (tblsearch "STYLE" "TableauDA")) (command "_style" "TableauDA" "simplex" 0 1 0 "N" "N" "N" "") ) ;_ Fin de if (command "-calque" "e" "Tableau DA" "co" 7 "" "") (setq rot (- (vlax-ldata-get "Phalene" "AngSCU") 100)) (setq ename (car (entsel "\nSelectionnez la polyligne: "))) (command "aire" "e" ename) ; Saisi du point d'insertion du tableau (setq pins (getpoint "\nPosition du texte : ")) (if (null pins) (setq pins (getvar "lastpoint")) ) ;_ Fin de if (setq VOrtho (getvar "orthomode")) (if (= (setq rot (getorient pins (strcat "\nOrientation du texte :") ) ;_ Fin de getorient ) ;_ Fin de setq nil ) ;_ Fin de = (progn (princ "\n * * * * * * * Orientation horizontale\n" ) ;_ Fin de princ (setq rot (- (vlax-ldata-get "Phalene" "AngSCU") 100)) ) ;_ Fin de progn (progn (princ "\n * * * * * * * Orientation alignée :") (setq rot (- 400 (* 200 (/ rot pi)))) (if (<= rot 400) (- rot 400) ) ;_ Fin de if ) ;_ Fin de progn ) ;_ Fin de if (setq Surf (strcat "\nSuperficie = " (rtos (getvar "area") 2 1) " m²")) (getVertices ename) (setq pp (car return) Num1 "1" Num 1 Texte "Pt X Y\n Distances\n" ) ;_ Fin de setq (princ (- rot 300)) ;(command "_.line" pins (polar pins rot 5) "") ;(command "_.line" pins (polar pins (rtos rot 2 3) (/ (* Haut Ech) 10.0)) "") (setq p1 (car return)) (command "point" p1 "") (command "_-mtext" "_none" p1 "j" "bg" "h" (/ (* Haut Ech) 1000.0) "_r" rot "_w" "0.00" Num "") ;(setvar "orthomode" VOrtho) (setq x (rtos (car p1)) y (rtos (cadr p1)) ) ;_ Fin de setq (princ (strcat "\nx=" x " y=" y)) (while (< (strlen x) 9) (setq x (strcat " " x))) (while (< (strlen y) 9) (setq y (strcat " " y))) (setq Texte (strcat Texte (rtos Num 2 0) " " x " " y "\n")) (setq return (cdr return)) (setq Num (+ Num 1)) (while (not (equal (car return) nil)) (setq p2 (car return)) ;(if (/= p1 p2) ; (progn (setq x (rtos (car p2)) y (rtos (cadr p2)) ) ;_ Fin de setq (princ (strcat "\nx=" x " y=" y)) (while (< (strlen x) 9) (setq x (strcat " " x))) (while (< (strlen y) 9) (setq y (strcat " " y))) ;(vlax-ldata-put (command "point" p2 "") (command "_-mtext" "_none" p2 "j" "bg" "h" (/ (* Haut Ech) 1000.0) "_r" rot "_w" "0.00" Num "") ; ) ;_ Fin de progn ;) ;_ Fin de if (setq Texte (strcat Texte " " (rtos (Distance p1 p2) 2 2) "m\n")) (setq Texte (strcat Texte (rtos Num 2 0) " " x " " y "\n")) (setq Num (+ Num 1)) (setq return (cdr return)) (setq p1 p2) ) ;_ Fin de while (setq Texte (strcat Texte " " (rtos (Distance p1 pp) 2 2) "m\n")) (setq Texte (strcat Texte "1 \n")) ;(command "_.erase" "d" "") (setq Texte (strcat Texte Surf)) (command "_-mtext" "_none" pins "j" "hg" "e" "e" "0.6x" "h" (/ (* Haut Ech) 1000.0) "_r" rot "_w" "0.00" Texte "" ) ;_ Fin de command (vlax-ldata-put "Phalene" "NumPtDA" (- Num 1)) (princ) ) ;_ Fin de defun Chercher dans tous les blocs "$borne" du dessin et comparer leurs coordonnées d'insertion ? ? (et au fait, pourquoi le "$" avant "borne" ?) Merci encore à tous, j'ai imprimé tout ça et j'en ai fais ma lecture de chevet ! ! Denis... 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)
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