Nicokarmann Posté(e) le 3 septembre Partager Posté(e) le 3 septembre Salut à tous. Nouveau utilisateur de Covadis (v17 actuellement, bientôt mis à jour) auparavant j'ai utilisé DesignCad (Cogistem) pendant 20 ans et, encore plus lointain, Catia V4 & V5 pendant 6 ans. Je voudrais numéroter les sommets d'une polyligne en incrémentant tous les 2 chiffres pour avoir que des nombres pairs ou impairs en fonction du premier numéro. J'utilise "Numéroter les entités" qui me numérote bien tous les sommets mais ensuite je sèche pour la numérotation tous les 2 chiffres. Quelqu'un a une solution ? Merci d'avance ... Sinon, je passerais par un Lisp. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 5 septembre Partager Posté(e) le 5 septembre Hello @Nicokarmann Pas tout compris donc qq questions ? 1) On parle de Polylignes 2D ou 3D ou les Deux ? 2) Veux tu simplement un texte chiffre "a cote" de chaque sommet / vertex ? 3) Veux tu "numeroter" tous les sommets ou 1 sommet sur 2 ? 4) Veux tu une numerotation du genre : 1/2/3/etc ou 1/3/5/etc ou autre ? Donc Choix de la valeur de depart (Par defaut=1) ? ET choix de la valeur d incrementation (Par Defaut=1) ? Merci de tes precisions !? Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nicokarmann Posté(e) le 8 septembre Auteur Partager Posté(e) le 8 septembre Salut, Merci de ta réponse. Je n'avais pas reçu de notification. Voilà ce que j'ai besoin sur une polyligne 2D. J'ai besoin de nommer tous les sommets avec un bloc et son attribut pour, par la suite, extraire ces numéros de sommets ainsi que ses coordonnées associées. Par exemple: 1001, 1003, 1005, 1007, ... Ou 1000, 1002, 1004, 1006, .... Je ne sais pas si je me suis fait comprendre. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Minocia Posté(e) le 9 septembre Partager Posté(e) le 9 septembre Bonjour, je ne pense pas que Covadis a cette fonction, mais tu peux faire 2 calques "gauche" et "droit" dans les lesquels tu répartis tes points : -"paire" numérotés 1,2,3,4... -"impaire" numérotés 1000,1001,1002,1003... (ce sera plus simple pour les retrouver dans le point suivant) (renumérotation des points = REIMMPTOPO). -ensuite lances la commande ATTOUT, ouvres le fichier texte dans excel, et changes les numéros : 1,2,3,4 en 1000,1002,1004,1006 et 1000,1001,1002,1003 en 1001,1003,1005,1007. -et enfin lances la commande ATTIN, et choisis ce fichier texte modifié. cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 9 septembre Partager Posté(e) le 9 septembre Salut, Est ce que ceci pourrait faire l'affaire? Tu peux geler les calques "T_PT_ALT" et "T_PT_COD" pour avoir que la numérotation. (defun c:BlockTC_POINTAtt2Vtx ( / js lst_posatt n nb_e ent dxf_ent dxf_210 lst_pt lst_num scl_blk vlaobj pr n_ini n_next old_dmz pt nbs num ang pos_att) (cond ((eq (getvar "cvport") 1) (princ "\n** Commande autorisée uniquement dans l'espace objet.") ) (T (if (not (tblsearch "BLOCK" "TCPOINT")) (progn (entmake '((0 . "BLOCK") (100 . "AcDbEntity") (100 . "AcDbBlockBegin") (2 . "TCPOINT") (70 . 2) (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2) (10 0.0 0.0 0.0)) ) (entmake '( (0 . "POINT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (100 . "AcDbPoint") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (50 . 0.0) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_MAT") (100 . "AcDbText") (10 0.25 0.25 0.0) (40 . 0.75) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Matricule") (2 . "MAT") (70 . 0) (73 . 0) (74 . 0) (280 . 1) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_ALT") (100 . "AcDbText") (10 0.25 -0.75 0.0) (40 . 0.75) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Altitude") (2 . "ALT") (70 . 0) (73 . 0) (74 . 0) (280 . 1) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_COD") (100 . "AcDbText") (10 -0.25 -1.75 0.0) (40 . 0.75) (1 . "code") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "CodeSymbole") (2 . "COD") (70 . 0) (73 . 0) (74 . 0) (280 . 1) ) ) (entmake '((0 . "ENDBLK") (100 . "AcDbBlockEnd") (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2))) ) ) (princ "\nSélectionner les Polylignes où placer à leurs sommets le bloc \"TC_POINT\" avec attributs") (setq js (ssget '((0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 112) (-4 . "NOT>")))) (cond (js (setq lst_posatt '((0.25 0.25 0.0) (0.25 -0.75 0.0) (0.25 -1.75 0.0)) old_dmz (getvar "DIMZIN") ) (setvar "DIMZIN" 0) (repeat (setq n (sslength js)) (setq dxf_ent (entget (setq ent (ssname js (setq n (1- n))))) dxf_210 (cdr (assoc 210 dxf_ent)) lst_pt nil lst_num nil) (setq vlaobj (vlax-ename->vla-object ent) pr -1 ) (if (not n_next) (progn (initget 1) (setq n_ini (getint "\nIncrementer en débutant à: ") n_next n_ini) ) (progn (initget "Oui Non _Yes No") (if (eq (getkword "\nRéinitialiser l'incrémentation [Oui/Non] <Non>: ") "Yes") (progn (initget 1) (setq n_ini (getint "\nIncrementer en débutant à: ") n_next n_ini) ) (setq n_ini n_next) ) ) ) (repeat (setq nb_e (if (zerop (vlax-get vlaobj 'Closed)) (1+ (fix (vlax-curve-getEndParam vlaobj))) (fix (vlax-curve-getEndParam vlaobj)))) (setq pt (vlax-curve-GetPointAtParam vlaobj (setq pr (1+ pr))) lst_pt (cons pt lst_pt) lst_num (cons n_next lst_num) ) (if (not scl_blk) (progn (initget 7) (setq scl_blk (getdist (trans pt 0 1) "\nEchelle du bloc?: ")))) (setq n_next (+ 2 n_ini) n_ini n_next) ) (setq nbs (1- (length lst_pt))) (foreach pto lst_pt (setq num (car lst_num) ang (if (and (not (zerop nbs)) (not (eq (1+ nbs) (length lst_pt)))) (- (* 0.5 (+ (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj (1- nbs))) (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj nbs)) ) ) (* 0.5 pi) ) (+ (* 0.5 pi) (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj nbs))) ) ang (if (and (> ang (* 0.5 pi)) (<= ang (* pi 1.5))) (+ pi ang) ang) pos_att (mapcar '(lambda (x) (polar (trans '(0.0 0.0 0.0) dxf_210 0) (+ (angle (trans '(0.0 0.0 0.0) dxf_210 0) (trans x dxf_210 0)) ang) (distance (trans '(0.0 0.0 0.0) dxf_210 0) (trans x dxf_210 0)))) (mapcar '(lambda (y) (mapcar '(lambda (x) (* scl_blk x)) y)) lst_posatt)) nbs (1- nbs) ) (entmake (append '( (0 . "INSERT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (100 . "AcDbBlockReference") (66 . 1) (2 . "TCPOINT") ) (list (cons 41 scl_blk) (cons 42 scl_blk) (cons 43 scl_blk) ) '( (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) ) (list (cons 50 ang) (cons 10 (trans pto 0 dxf_210)) (cons 210 dxf_210)) ) ) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_MAT") (100 . "AcDbText") ) (list (cons 50 ang) (cons 10 (trans (list (+ (car pto) (caar pos_att)) (+ (cadr pto) (cadar pos_att)) (+ (caddr pto) (caddar pos_att))) 0 dxf_210)) (cons 1 (itoa num)) (cons 40 scl_blk) ) '( (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) ) (list (cons 210 dxf_210) ) '( (100 . "AcDbAttribute") (2 . "MAT") (70 . 0) (73 . 0) (74 . 0) ) ) ) (setq pos_att (cdr pos_att)) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_ALT") (100 . "AcDbText") ) (list (cons 50 ang) (cons 10 (trans (list (+ (car pto) (caar pos_att)) (+ (cadr pto) (cadar pos_att)) (+ (caddr pto) (caddar pos_att))) 0 dxf_210)) (cons 1 (rtos (caddr pto) 2 2)) (cons 40 scl_blk) ) '( (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) ) (list (cons 210 dxf_210) ) '( (100 . "AcDbAttribute") (2 . "ALT") (70 . 0) (73 . 0) (74 . 0) ) ) ) (setq pos_att (cdr pos_att)) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_COD") (100 . "AcDbText") ) (list (cons 50 ang) (cons 10 (trans (list (+ (car pto) (caar pos_att)) (+ (cadr pto) (cadar pos_att)) (+ (caddr pto) (caddar pos_att))) 0 dxf_210)) (cons 1 (strcat "\"" (cdr (assoc 5 dxf_ent)) "\"")) (cons 40 scl_blk) ) '( (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) ) (list (cons 210 dxf_210) ) '( (100 . "AcDbAttribute") (2 . "COD") (70 . 0) (73 . 0) (74 . 0) ) ) ) (entmake '((0 . "SEQEND") (62 . 256) (6 . "ByLayer") (370 . -2))) (setq lst_num (cdr lst_num)) ) (princ (strcat "\n" (itoa nb_e) " blocs \"TC_POINT\" placés et renseignés.")) ) (setvar "DIMZIN" old_dmz) ) (T (princ "\nSélection non valide ou vide.")) ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nicokarmann Posté(e) le 10 septembre Auteur Partager Posté(e) le 10 septembre Parfait @bonuscad 👍 un grand merci. J'ai modifié ton lsp pour coller plus à mes besoins, mais j'ai besoin de laisser les matricules horizontaux peut importe le SCU. Je n'ai pas trouver qu'est ce qu'il faut modifier. 😢 (Je suis plus à l'aise avec le langage Basic ) (defun c:BORNES ( / js lst_posatt n nb_e ent dxf_ent dxf_210 lst_pt lst_num scl_blk vlaobj pr n_ini n_next old_dmz pt nbs num ang pos_att) (cond ((eq (getvar "cvport") 1) (princ "\n** Commande autorisée uniquement dans l'espace objet.") ) (T (if (not (tblsearch "BLOCK" "BORNE")) (progn (entmake '( (0 . "BLOCK") (100 . "AcDbEntity") (100 . "AcDbBlockBegin") (2 . "BORNE") (70 . 2) (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2) (10 0.0 0.0 0.0) ) ) (entmake '( (0 . "CIRCLE") (100 . "AcDbCircle") (39 . 0) (10 0.0 0.0 0.0) (40 1) (210 0.0 0.0 1.0) ) ) (entmake '( (0 . "CIRCLE") (100 . "AcDbCircle") (39 . 0) (10 0.0 0.0 0.0) (40 1.1) (210 0.0 0.0 1.0) ) ) (entmake '( (0 . "CIRCLE") (100 . "AcDbCircle") (39 . 0) (10 0.0 0.0 0.0) (40 1.2) (210 0.0 0.0 1.0) ) ) (entmake '( (0 . "CIRCLE") (100 . "AcDbCircle") (39 . 0) (10 0.0 0.0 0.0) (40 1.3) (210 0.0 0.0 1.0) ) ) (entmake '( (0 . "CIRCLE") (100 . "AcDbCircle") (39 . 0) (10 0.0 0.0 0.0) (40 1.4) (210 0.0 0.0 1.0) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (100 . "AcDbText") (10 0.25 0.25 0.0) (40 . 1) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Matricule") (2 . "NUMEROS") (70 . 0) (73 . 0) (74 . 0) (280 . 1) ) ) (entmake '( (0 . "ENDBLK") (100 . "AcDbBlockEnd") (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2) ) ) ) ) (princ "\nSélectionner la ou les Polylignes où placer les matricules") (setq js (ssget '((0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 112) (-4 . "NOT>")))) (cond (js (setq lst_posatt '((0.25 0.25 0.0) (0.25 -0.75 0.0) (0.25 -1.75 0.0)) old_dmz (getvar "DIMZIN") ) (setvar "DIMZIN" 0) (repeat (setq n (sslength js)) (setq dxf_ent (entget (setq ent (ssname js (setq n (1- n))))) dxf_210 (cdr (assoc 210 dxf_ent)) lst_pt nil lst_num nil) (setq vlaobj (vlax-ename->vla-object ent) pr -1 ) (if (not n_next) (progn (initget 1) (setq n_ini (getint "\nIncrementer en débutant à: ") n_next n_ini) ) (progn (initget "Oui Non _Yes No") (if (eq (getkword "\nRéinitialiser l'incrémentation [Oui/Non] <Non>: ") "Yes") (progn (initget 1) (setq n_ini (getint "\nIncrementer en débutant à: ") n_next n_ini) ) (setq n_ini n_next) ) ) ) (repeat (setq nb_e (if (zerop (vlax-get vlaobj 'Closed)) (1+ (fix (vlax-curve-getEndParam vlaobj))) (fix (vlax-curve-getEndParam vlaobj)))) (setq pt (vlax-curve-GetPointAtParam vlaobj (setq pr (1+ pr))) lst_pt (cons pt lst_pt) lst_num (cons n_next lst_num) ) (if (not scl_blk) (progn (initget 7) (setq scl_blk (getdist (trans pt 0 1) "\nEchelle du bloc?: ")))) (setq n_next (+ 2 n_ini) n_ini n_next) ) (setq nbs (1- (length lst_pt))) (foreach pto lst_pt (setq num (car lst_num) ang (if (and (not (zerop nbs)) (not (eq (1+ nbs) (length lst_pt)))) (- (* 0.5 (+ (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj (1- nbs))) (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj nbs)) ) ) (* 0.5 pi) ) (+ (* 0.5 pi) (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj nbs))) ) ang (if (and (> ang (* 0.5 pi)) (<= ang (* pi 1.5))) (+ pi ang) ang) pos_att (mapcar '(lambda (x) (polar (trans '(0.0 0.0 0.0) dxf_210 0) (+ (angle (trans '(0.0 0.0 0.0) dxf_210 0) (trans x dxf_210 0)) ang) (distance (trans '(0.0 0.0 0.0) dxf_210 0) (trans x dxf_210 0)))) (mapcar '(lambda (y) (mapcar '(lambda (x) (* scl_blk x)) y)) lst_posatt)) nbs (1- nbs) ) (entmake (append '( (0 . "INSERT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (100 . "AcDbBlockReference") (66 . 1) (2 . "BORNE") ) (list (cons 41 scl_blk) (cons 42 scl_blk) (cons 43 scl_blk) ) '( (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) ) (list (cons 50 ang) (cons 10 (trans pto 0 dxf_210)) (cons 210 dxf_210)) ) ) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (100 . "AcDbText") ) (list (cons 50 ang) (cons 10 (trans (list (+ (car pto) (caar pos_att)) (+ (cadr pto) (cadar pos_att)) (+ (caddr pto) (caddar pos_att))) 0 dxf_210)) (cons 1 (itoa num)) (cons 40 scl_blk) ) '( (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) ) (list (cons 210 dxf_210) ) '( (100 . "AcDbAttribute") (2 . "NUMEROS") (70 . 0) (73 . 0) (74 . 0) ) ) ) (entmake '( (0 . "SEQEND") (62 . 256) (6 . "ByLayer") (370 . -2) ) ) (setq lst_num (cdr lst_num)) ) (princ (strcat "\n" (itoa nb_e) " blocs \"BORNE\" placés et renseignés.")) ) (setvar "DIMZIN" old_dmz) ) (T (princ "\nSélection non valide ou vide.")) ) ) ) (prin1) ) et aussi grosse question: pas possible d'incrémenter à partir de plus que 32767 ? merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 10 septembre Partager Posté(e) le 10 septembre Bonjour @Nicokarmann Puisque vous êtes débutant, faisons simple en dix lignes de code. En considérant que le bloc BORNE avec un attribut existe dans le dessin, ce simple code sera fonctionnel : (defun c:bornes ( / coords ent inc num) (setq ent (car (entsel"\npolyligne\n"))) (setq coords (mapcar 'cdr (vl-remove-if-not '(lambda(x)(= (car x) 10))(entget ent)))) (setq inc 2 num (getint "\nNuméro de départ : \n") ) (foreach som coords (command "_insert" "borne" som "" "" "" (itoa num)) (setq num (+ inc num)) ) ) Bien sûr, on peut l'améliorer, mais pour commencer c'est un bon exemple pas possible d'incrémenter à partir de plus que 32767 ? La question est sérieuse ? PS: Quand le code est simple, OK pour le mettre dans le code du message, Quand il fait des pages… merci de le mettre en pièce jointe. Ça évitera aux lecteurs d'avoir des pages et des pages à scroller. Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 10 septembre Partager Posté(e) le 10 septembre Il y a 1 heure, Nicokarmann a dit : Parfait @bonuscad 👍 un grand merci. J'ai modifié ton lsp pour coller plus à mes besoins, mais j'ai besoin de laisser les matricules horizontaux peut importe le SCU. Je n'ai pas trouver qu'est ce qu'il faut modifier. 😢 (Je suis plus à l'aise avec le langage Basic ) et aussi grosse question: pas possible d'incrémenter à partir de plus que 32767 ? merci d'avance. J'ai forcé l'angle à 0.0 et les insertions dans le SCG dans les (entmake): (50 . 0.0) (210 0.0 0.0 1.0) j'ai changé (getint), car les entier sont en effet limité en grandeur; en (getreal) Nouvel version: (defun c:BlockTC_POINTAtt2Vtx ( / js lst_posatt n nb_e ent dxf_ent dxf_210 lst_pt lst_num scl_blk vlaobj pr n_ini n_next old_dmz pt nbs num ang pos_att) (cond ((eq (getvar "cvport") 1) (princ "\n** Commande autorisée uniquement dans l'espace objet.") ) (T (if (not (tblsearch "BLOCK" "TCPOINT")) (progn (entmake '((0 . "BLOCK") (100 . "AcDbEntity") (100 . "AcDbBlockBegin") (2 . "TCPOINT") (70 . 2) (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2) (10 0.0 0.0 0.0)) ) (entmake '( (0 . "POINT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (100 . "AcDbPoint") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (50 . 0.0) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_MAT") (100 . "AcDbText") (10 0.25 0.25 0.0) (40 . 0.75) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Matricule") (2 . "MAT") (70 . 0) (73 . 0) (74 . 0) (280 . 1) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_ALT") (100 . "AcDbText") (10 0.25 -0.75 0.0) (40 . 0.75) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Altitude") (2 . "ALT") (70 . 0) (73 . 0) (74 . 0) (280 . 1) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_COD") (100 . "AcDbText") (10 -0.25 -1.75 0.0) (40 . 0.75) (1 . "code") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "CodeSymbole") (2 . "COD") (70 . 0) (73 . 0) (74 . 0) (280 . 1) ) ) (entmake '((0 . "ENDBLK") (100 . "AcDbBlockEnd") (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2))) ) ) (princ "\nSélectionner les Polylignes où placer à leurs sommets le bloc \"TC_POINT\" avec attributs") (setq js (ssget '((0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 112) (-4 . "NOT>")))) (cond (js (setq lst_posatt '((0.25 0.25 0.0) (0.25 -0.75 0.0) (0.25 -1.75 0.0)) old_dmz (getvar "DIMZIN") ) (setvar "DIMZIN" 0) (repeat (setq n (sslength js)) (setq dxf_ent (entget (setq ent (ssname js (setq n (1- n))))) dxf_210 '(0.0 0.0 1.0) lst_pt nil lst_num nil) (setq vlaobj (vlax-ename->vla-object ent) pr -1 ) (if (not n_next) (progn (initget 5) (setq n_ini (getreal "\nIncrementer en débutant à: ") n_next n_ini) ) (progn (initget "Oui Non _Yes No") (if (eq (getkword "\nRéinitialiser l'incrémentation [Oui/Non] <Non>: ") "Yes") (progn (initget 5) (setq n_ini (getreal "\nIncrementer en débutant à: ") n_next n_ini) ) (setq n_ini n_next) ) ) ) (repeat (setq nb_e (if (zerop (vlax-get vlaobj 'Closed)) (1+ (fix (vlax-curve-getEndParam vlaobj))) (fix (vlax-curve-getEndParam vlaobj)))) (setq pt (vlax-curve-GetPointAtParam vlaobj (setq pr (1+ pr))) lst_pt (cons pt lst_pt) lst_num (cons n_next lst_num) ) (if (not scl_blk) (progn (initget 7) (setq scl_blk (getdist (trans pt 0 1) "\nEchelle du bloc?: ")))) (setq n_next (+ 2.0 n_ini) n_ini n_next) ) (setq nbs (1- (length lst_pt))) (foreach pto lst_pt (setq num (car lst_num) ang 0.0 pos_att (mapcar '(lambda (x) (polar (trans '(0.0 0.0 0.0) dxf_210 0) (+ (angle (trans '(0.0 0.0 0.0) dxf_210 0) (trans x dxf_210 0)) ang) (distance (trans '(0.0 0.0 0.0) dxf_210 0) (trans x dxf_210 0)))) (mapcar '(lambda (y) (mapcar '(lambda (x) (* scl_blk x)) y)) lst_posatt)) nbs (1- nbs) ) (entmake (append '( (0 . "INSERT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (100 . "AcDbBlockReference") (66 . 1) (2 . "TCPOINT") ) (list (cons 41 scl_blk) (cons 42 scl_blk) (cons 43 scl_blk) ) '( (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (50 . 0.0) ) (list (cons 10 pto) (cons 210 '(0.0 0.0 1.0))) ) ) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_MAT") (100 . "AcDbText") (50 . 0.0) ) (list (cons 10 (trans (list (+ (car pto) (caar pos_att)) (+ (cadr pto) (cadar pos_att)) (+ (caddr pto) (caddar pos_att))) 0 dxf_210)) (cons 1 (rtos num 2 0)) (cons 40 scl_blk) ) '( (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) ) (list (cons 210 dxf_210) ) '( (100 . "AcDbAttribute") (2 . "MAT") (70 . 0) (73 . 0) (74 . 0) ) ) ) (setq pos_att (cdr pos_att)) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_ALT") (100 . "AcDbText") (50 . 0.0) ) (list (cons 10 (trans (list (+ (car pto) (caar pos_att)) (+ (cadr pto) (cadar pos_att)) (+ (caddr pto) (caddar pos_att))) 0 dxf_210)) (cons 1 (rtos (caddr pto) 2 2)) (cons 40 scl_blk) ) '( (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) ) (list (cons 210 dxf_210) ) '( (100 . "AcDbAttribute") (2 . "ALT") (70 . 0) (73 . 0) (74 . 0) ) ) ) (setq pos_att (cdr pos_att)) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_COD") (100 . "AcDbText") (50 . 0.0) ) (list (cons 10 (trans (list (+ (car pto) (caar pos_att)) (+ (cadr pto) (cadar pos_att)) (+ (caddr pto) (caddar pos_att))) 0 dxf_210)) (cons 1 (strcat "\"" (cdr (assoc 5 dxf_ent)) "\"")) (cons 40 scl_blk) ) '( (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) ) (list (cons 210 dxf_210) ) '( (100 . "AcDbAttribute") (2 . "COD") (70 . 0) (73 . 0) (74 . 0) ) ) ) (entmake '((0 . "SEQEND") (62 . 256) (6 . "ByLayer") (370 . -2))) (setq lst_num (cdr lst_num)) ) (princ (strcat "\n" (itoa nb_e) " blocs \"TC_POINT\" placés et renseignés.")) ) (setvar "DIMZIN" old_dmz) ) (T (princ "\nSélection non valide ou vide.")) ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 10 septembre Partager Posté(e) le 10 septembre Il y a 5 heures, didier a dit : PS: Quand le code est simple, OK pour le mettre dans le code du message, Quand il fait des pages… merci de le mettre en pièce jointe. Ça évitera aux lecteurs d'avoir des pages et des pages à scroller. @didier Je suis d'accord avec toi que c'est pénible à lire. Mais si je fais comme cela, et que cela permet à ceux qui ne ne sont pas inscrits d'avoir accès au code. Mon but étant le partage, et que n'importe qui peut s'approprier le code et s'en inspirer pour l'améliorer pour répondre à son besoin. Je considère que je ne suis pas un gourou et que je peut faire des erreurs et que des personne puisse les corriger. Merci de m'excuser! Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nicokarmann Posté(e) le 13 septembre Auteur Partager Posté(e) le 13 septembre Merci @bonuscad, c'est parfait. 👍 Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 13 septembre Partager Posté(e) le 13 septembre Bonjour @Nicokarmann Avez-vous testé mon code tout simple idéal pour les apprenants ? Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
rebcao Posté(e) le 14 septembre Partager Posté(e) le 14 septembre Bonjour, Pour garder le TEXTE ou/et le BLOC HORIZONTAL, on peut activer l'option pour les STYLES DE TEXTE et les BLOCS Faire correspondre l'orientation à la fenêtre... Cette option permet de garder l'affichage des TEXTES et BLOCS horizontal dans les fenêtres de présentation. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nicokarmann Posté(e) le 16 septembre Auteur Partager Posté(e) le 16 septembre Le 13/09/2024 à 14:07, didier a dit : Bonjour @Nicokarmann Avez-vous testé mon code tout simple idéal pour les apprenants ? oui, je l'ai tester et il ne fonctionne pas Le 14/09/2024 à 11:53, rebcao a dit : Bonjour, Pour garder le TEXTE ou/et le BLOC HORIZONTAL, on peut activer l'option pour les STYLES DE TEXTE et les BLOCS Faire correspondre l'orientation à la fenêtre... Cette option permet de garder l'affichage des TEXTES et BLOCS horizontal dans les fenêtres de présentation. Christian Merci, je vais y regarder. Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 16 septembre Partager Posté(e) le 16 septembre Bonjour @Nicokarmann oui, je l'ai testé et il ne fonctionne pas Je suis surpris, que vous est-il dit comme message d'erreur ? NB : le bloc BORNE avec un attribut doit exister dans le dessin avant le lancement, c'est du simplissime. Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
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