Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

Je ne suis pas certain de bien comprendre le terme "Chaînage", mais s'il s'agit d'implanter régulièrement des objets le long d'une polyligne il y a les commandes "mesurer" et "diviser"

A plus

Posté(e)

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

Posté(e)

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"

Posté(e)

Alors, la commande mesurer option Bloc avec attribut pour le texte. Suivie d'une des commandes des outils Express pour les textes, (je ne me souviens plus du nom et j'ai pas totocad sous la main).

Désolé pour l'imprécision de ce commentaire

a plus

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)
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

Posté(e)

Salut,

 

Je n'ai pas eu ce type d'erreur avec aucune des versions postées.

 

Est tu sûr d'avoir bien copié/collé tout le code ?

 

Je viens de refaire un essai, ça fonctionne.

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

Posté(e)
Bonjour,

je pense qu'il te manque une parenthèse, d'où le fait que ça marche pas chez toi...

Sur 2008 ca marche.

Bonjour j'ai recopié tout et miracle ça marche, chapeau c'est exactement ce que je cherchais, je ne sais pas comment te remercier.

Tu m'épate

Sincèrement

Acadnadien

Posté(e)

Mon cher Gile

Petite compication,

Supposons que à la commande, on demande de dessiner les côtes principales au P.k. 0+100 c.a.d. tous les 100 mètes et que dans dans les intervales intermédiaires on dessine seulement les petites barres tous les 20 mètres.

Est-ce possible?

Acadnadien

Posté(e)

J'ai modifié le LISP en conséquence :

 

Commande: CHAINAGE

 

Entrez la cote de départ : 5+600

 

Intervalle des annotations: 100

 

Intervalle des graduations : 20

 

Hauteur de texte: : 5

 

Choix des objets:

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

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é