Aller au contenu

Chaînages à insérer sur un polyline


pierrevigneux

Messages recommandés

Bonjour pierrevigneux

 

Par chainage, tu veux dire quoi car chez moi, un chainage c'est l'action de chainer sur le terrain une distance d'un point A vers un point B.

Si par chainage, tu veux dire coter une polyligne avec indiquer sur les côtés de la polylignes les longueurs des segments, oui il y aun lisp mais un peu de précision please ......

 

john

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

CHAÏNAGE : armature métallique destinée à empécher l'écartement des murs d'une contruction. (petit larousse)

Le chaînage fait le tour des murs de la construction normalement à la hauteur des lintaux (pas très sûr, n'étant pas du métier)

Mais comme l'a dit MarcoTic les commandes MESURER et DIVISER devraient convenir.

Si le chaînage est compliqué chacune de ces commandes a une option [bloc]

@+

Studio Gfilm - Agence de communication par l'image

 

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Un truc comme ça ?

 

Edité suite aux remarques de bonuscad

 

EDIT 2 : graduations intermédiaires

 

(defun c:chainage (/       *error* dist    acdoc   space   incGrad incTxt
                  mult    cnt     label   height  ss      ins     text
                  ang     dz
                 )
 (vl-load-com)

 (defun *error* (msg)
   (or (= msg "Fonction annulée")
       (princ (strcat "\nErreur: " msg))
   )
   (vla-EndUndoMark acdoc)
   (princ)
 )

 (setq dist  0
       acdoc (vla-get-ActiveDocument (vlax-get-acad-object))
       space (if (= 1 (getvar 'cvport))
               (vla-get-PaperSpace acdoc)
               (vla-get-ModelSpace acdoc)
             )
 )
 (while
   (not
     (or
       (and
         (setq label (getstring "\nEntrez la cote de départ : "))
         (wcmatch label "*+*")
         (distof (vl-string-subst "." "+" label))
       )
       (and (= label "") (setq label "0+000"))
     )
   )
    (princ "\nLe format n'est pas valide.")
 )
 (initget 7)
 (setq incTxt (getint "\nIntervalle des annotations: "))
 (while
   (not
     (or
       (not (setq incGrad (getint (strcat "\nIntervalle des graduations                                            (itoa incTxt)
                                          ">: "
                                  )
                          )
            )
       )
       (and incGrad (zerop (rem incTxt incGrad)))
     )
   )
    (princ (strcat "\nLa valeur doit être un diviseur de " (itoa incTxt)))
 )
 (or incGrad (setq incGrad incTxt))
 (setq mult (/ incTxt incGrad)
       cnt  mult
 )
 (initget 6)
 (setq height
        (cond
          ((getdist
             (strcat "\nHauteur de texte: : ")
           )
          )
          ((getvar 'textsize))
        )
 )
 (if (ssget "_:S"
            '((0 . "*POLYLINE")
              (-4 . "               (-4 . "&")
              (70 . 120)
              (-4 . "NOT>")
             )
     )
   (progn
     (vla-StartUndoMark acdoc)
     (vlax-for curve (setq ss (vla-get-ActiveSelectionSet acdoc))
       (while (setq ins (vlax-curve-getPointAtDist curve dist))
         (setq ang  (angle '(0. 0. 0.)
                               (vlax-curve-getfirstDeriv
                                 curve
                                 (vlax-curve-getParamAtPoint curve ins)
                               )
                        )
               )
         (vla-AddLine
           space
           (vlax-3d-point (polar ins (+ ang (/ pi 2)) (/ height 2.)))
           (vlax-3d-point (polar ins (- ang (/ pi 2)) (/ height 2.)))
         )
         (if (= cnt mult)
           (progn
             (setq text
                        (vla-addText
                          space
                          label
                          (vlax-3d-point '(0. 0. 0.))
                          height
                        )
                   dz (getvar 'dimzin)
             )
             (vla-put-Alignment text acAlignmentBottomCenter)
             (if (minusp (cos ang))
               (setq ang (+ ang pi))
             )
             (vla-put-Rotation text ang)
             (vla-put-TextAlignmentPoint
               text
               (vlax-3d-point (polar ins (+ ang (/ pi 2)) height))
             )
             (setvar 'dimzin 1)
             (setq label
                    (vl-string-subst "+"
                                     "."
                                     (rtos
                                       (+ (/ incTxt 1000.)
                                          (atof (vl-string-subst "." "+" label))
                                       )
                                       2
                                       3
                                     )
                    )
                   cnt 0
             )
             (setvar 'dimzin dz)
           )
         )
         (setq dist (+ dist incGrad)
               cnt  (1+ cnt)
         )
       )
     )
     (vla-delete ss)
     (vla-EndUndoMark acdoc)
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Le chaînage, ce sont les côtes cumulatives :

ex. tous les 20 mètres soit 0+000 @ 0+020 etc... le long de la ligne d'opération (polyligne) de ton axe routier

 

La notation de pierrevigneux qu'il tente d'expliquer, me fait penser à la notation des PR (Points Routiers) autrefois nommés PK (Point Kilomètrique).

Je pense que cela a été changé à cause du mot Kilomètrique qui fait référence à une mesure.

Hors il se révèle dans le temps que ces inter-distances entres PR n'ont plus rien à voir avec le Kilomètre: déviation, rectifications de tracé.

 

Les points routiers d'extrémités de projet ne bougent pas, donc normalement la longueur de l'axe ne sert à rien pour la distribution de ceux-ci.

 

Donc moi, j'aurais plutôt utilisé divisé....

 

D'autres part 12+253 représente 12 Kilomètres + 253 mètres (gile) n'a pas interprété comme il faut cette notation dans son code, (normalement l'unité de référence utilisé dans AutoCad est le mètre pour le domaine routier).

 

J'espère avoir apporté des précisions à la questions.

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

Merci Bonuscad!

Oui effectivement ta définition du chainage cumulatif, que tu as décrite est exacte.

Auparavant j'utilisait la commande measure ,pour y introduire un block et par la suite l'exploser et le chager un par un à chaque chainage ex: 100 mètres manuellement, C'est pourquoi j'aurais aimé pouvoir le faire automatiquement.

Acadnadien

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Tu peux regarder la Réponse 9

 

Bien que cela concerne les Xdata, cette réponse montrait une utilisation pour mettre en place des PR.

Tu n'as pas besoin d'une telle application, mais je te laisse juge.

Je pense que (giles) peut corriger son code assez facilement pour ton besoin, au pire je pourrais aussi essayer de faire les modifs de son code.

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

Salut,

 

J'ai corrigé le code le format est maintenant 1+050 pour 1.050 km (avec 1 unité de dessin = 1 m)

Avec cette correction crois-tu que ça pourrais marcher

J'ai toujours un erreur sur la commande

; error: bad argument type: numberp: #

si cela porrais t'aider à résoudre le problème?

 

[Edité le 17/1/2010 par pierrevigneux]

Acadnadien

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é