litelsousa Posté(e) le 13 mai 2016 Posté(e) le 13 mai 2016 Bonjour à tous, Après recherches, je ne trouve pas moyen de coter la longueur total d'une polyligne contenant des segment droits et en arc. J'aimerais que la ligne de cote soit aligner à la polyligne. Merci pour votre aide. Citer
didier Posté(e) le 13 mai 2016 Posté(e) le 13 mai 2016 Coucou En natif : utiliser les champs en choisissant Objet puis LongueurQuant à aligner le texte sur la polyligne, le texte obtenu est facile à manipuler. Si tu veux du lisp, ça existe sur le site, fais une recherche. Amicalement Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
bonuscad Posté(e) le 13 mai 2016 Posté(e) le 13 mai 2016 Comme dit didier fait une recherche. Pour t'orienter vers mes réponses, recherche avec dim_perimeter sur le site. Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
litelsousa Posté(e) le 13 mai 2016 Auteur Posté(e) le 13 mai 2016 Re, Je vous remercie pour votre aide, les recherches que j'ai faite ne fonctionnent pas: Cotation de polylignes: C'est presque ce que je veux, mais j'aimerais que ça me fasse une seule cote de toute la longueur de la polyligne. Je l'avais trouvé, mais je n'ai pas réussi. J'ai aussi trouvé aide sur un progs,mais ça m'indique "pas de périmètre dans ce calque". Je dois dire que je ne comprends papsp trop Citer
bonuscad Posté(e) le 13 mai 2016 Posté(e) le 13 mai 2016 Bon je reposte le code (que je n'ai jamais retravaillé), c'est plus sur. (defun c:dim_perimeter ( / ent name_lay js n v_sd1 v_sd2 v_se1 v_se2 vlaobj pt_org pt_end param_start param_end perim_obj js_grp pt1_org pt1_end xname newdict) (vl-load-com) (if (not (tblsearch "BLOCK" "DIM_PERIMETER")) (progn (entmake '((0 . "BLOCK") (8 . "0") (2 . "DIM_PERIMETER") (70 . 2) (4 . "") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (10 0.0 0.0 0.0)) ) (entmake '( (0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPolyline") (90 . 2) (70 . 1) (43 . 0.5) (38 . 0.0) (39 . 0.0) (10 -0.25 0.0) (40 . 0.5) (41 . 0.5) (42 . 1.0) (10 0.25 0.0) (40 . 0.5) (41 . 0.5) (42 . 1.0) (210 0.0 0.0 1.0) ) ) (entmake '((0 . "ENDBLK") (8 . "0") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2))) ) ) (while (not (setq ent (entsel "\nChoix d'une entité sur le calque à coter: ")))) (setq name_lay (cdr (assoc 8 (entget (car ent))))) (setq js (ssget (append '((0 . "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE,SPLINE")(-4 . "<NOT")(-4 . "&") (70 . 112)(-4 . "NOT>")) (list (cons 8 name_lay)))) n 0) (cond (js (command "_.undo" "_group") (setq v_sd1 (getvar "dimsd1") v_sd2 (getvar "dimsd2") v_se1 (getvar "dimse1") v_se2 (getvar "dimse2")) (setvar "dimsd1" 1)(setvar "dimsd2" 1) (setvar "dimse1" 1)(setvar "dimse2" 1) (repeat (sslength js) (setq ent (ssname js n) vlaobj (vlax-ename->vla-object ent) pt_org (vlax-curve-getStartPoint vlaobj) pt_end (vlax-curve-getEndPoint vlaobj) param_start (vlax-curve-getStartParam vlaobj) param_end (vlax-curve-getEndParam vlaobj) ; perim_obj (vlax-curve-getDistAtParam vlaobj (+ param_start param_end)) perim_obj (vlax-curve-getDistAtParam vlaobj param_end) ) (redraw ent 3) (command "_.dimaligned" pt_org pt_end "_text" (rtos perim_obj) pause) (redraw ent 4) (setq js_grp (list (entlast))) (command "_.offset" "_through" ent (getvar "lastpoint") "") (command "_.change" (entlast) "" "_property" "_layer" (getvar "clayer") "") (setq js_grp (cons (entlast) js_grp)) (setq vlaobj (vlax-ename->vla-object (entlast)) pt1_org (vlax-curve-getStartPoint vlaobj) pt1_end (vlax-curve-getEndPoint vlaobj) ) (command "_.-insert" "DIM_PERIMETER" pt1_org (/ (getvar "dimtxt") 2.0) (/ (getvar "dimtxt") 2.0) "0.0") (setq js_grp (cons (entlast) js_grp)) (command "_.-insert" "DIM_PERIMETER" pt1_end (/ (getvar "dimtxt") 2.0) (/ (getvar "dimtxt") 2.0) "0.0") (setq js_grp (cons (entlast) js_grp)) (command "_.line" pt_org pt1_org "") (setq js_grp (cons (entlast) js_grp)) (command "_.line" pt_end pt1_end "") (setq js_grp (cons (entlast) js_grp)) (if (null (dictsearch (namedobjdict) "BONUSCAD_DIM-PERIMETER")) (setq xname (entmakex '((0 . "DICTIONARY") (100 . "AcDbDictionary"))) newdict (dictadd (namedobjdict) "BONUSCAD_DIM-PERIMETER" xname) ) (setq newdict (cdar (dictsearch (namedobjdict) "BONUSCAD_DIM-PERIMETER"))) ) (setq xname (entmakex (append '( (0 . "GROUP") (100 . "AcDbGroup") (300 . "Cote perimetre") (70 . 0) (71 . 1) ) (mapcar '(lambda (x) (cons 340 x)) js_grp) ) ) ) (if (not (assoc 3 (dictsearch (namedobjdict) "BONUSCAD_DIM-PERIMETER"))) (dictadd newdict "DIM-PERIMETER_1" xname) (dictadd newdict (strcat "DIM-PERIMETER_" (itoa (1+ (atoi (substr (cdr (assoc 3 (dictsearch (namedobjdict) "BONUSCAD_DIM-PERIMETER"))) 8))))) xname) ) (setq n (1+ n)) ) (setvar "dimsd1" v_sd1) (setvar "dimsd2" v_sd2) (setvar "dimse1" v_se1) (setvar "dimse2" v_se2) (command "_.undo" "_end") ) (T (princ "\nPas d'objet à mesurer sur ce calque.")) ) (prin1) ) J'espère que ça pourra faire l'affaire! Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
litelsousa Posté(e) le 13 mai 2016 Auteur Posté(e) le 13 mai 2016 Ah ben oui, ça marche... désolé. Le seul petit truc qui m'embête, c'est le non alignement du texte sur la ligne (le faire suivre les courbes) car c'est un texte du style "Tous les tubes de l'éclairage public sont posés".Mais je vais utilisé le lisp trouvé ici. mais je te remercie quand même Citer
Messages recommandés