Aller au contenu

coter longueur total de polylignes


Messages recommandés

Posté(e)

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.

Posté(e)

Comme dit didier fait une recherche.

 

Pour t'orienter vers mes réponses, recherche avec dim_perimeter sur le site.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

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

Posté(e)

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!

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

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

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité