Aller au contenu

Réptition le long d\'une ligne ou courbe


Ladinde

Messages recommandés

Bonjour à tous

 

J'aimerai savoir s'il existe une fonction lisp capable de réaliser une répétition d'un bloc le long d'une polyligne composée de ligne ou de courbes. C'est fait pour placer automatique des GBA le long d'une voie. j'ai essayé la fonction réseau d'autocad mais ça ne marche pas dans tous les cas certaines fois le bloc se trouve décalé par rapport à la polyligne.

 

merci d'avance de votre aide.

Bonne journée.

Lien vers le commentaire
Partager sur d’autres sites

salut, voici un lisp récuper sur le forum, d'ailleur remercie à lauteur de m'avoir dépanner ce jour là.


(defun c:pmp(/ Cmd Co Coo Compt ep Lg os Pt1 Pt2 Pts Pas s)

(defun *errmp* (msg)
(if (/= msg "Function cancelled")
(if (= msg "quit / exit abort")
(princ)
(princ (strcat "\nErreur : " msg))
)
(princ)
)
(if os
(setvar "osmode" os)
)
(setvar "cecolor" coo)
(command "_.undo" "_end")
(setvar "cmdecho" Cmd)
(setq *error* s)
(princ)
)

(defun cg_co()
(setvar "cecolor" (itoa Co))
(if (= Co 1)
(setq Co 7)
(setq Co 1)
)
)

(setq s *error*)
(setq *error* *errmp*)
(setq Cmd (getvar "cmdecho") Coo (getvar "cecolor"))
(setvar "cmdecho" 0)
(setq Ep (getstring (strcat "\nEpaisseur des polylignes <" (rtos (getvar "plinewid")) "> : ")))
(if Ep
(setvar "plinewid" (atof Ep))
)
(setq Pt1 (getpoint "\nPremier point : ") Pt2 '(0.0 0.0 0.0) Co 7 Compt 0)
(if Pt1
(progn
(setq Pts (list (cons 0 Pt1)))
(while Pt2
(initget "Undo")
(setq Pt2 (getpoint Pt1 "\nPoint suivant / Undo : "))
(if Pt2
(progn
(if (= Pt2 "Undo")
(progn
(if (/= Compt 0)
(progn
(command "_.undo" "1")
(setq Pts (vl-remove (assoc Compt Pts) Pts) Compt (1- Compt) Pt1 (cdr (assoc Compt Pts)))
)
(princ "\nRien à annuler")
)
)
(progn
(command "_.undo" "_group")
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq Pas 0 Lg (* (getvar "ltscale") 20))
(while (< Pas (- (distance Pt1 Pt2) Lg))
(cg_co)
(command "_.pline" (if (= Pas 0)
Pt1
"@"
)
(strcat "@" (rtos Lg) "<" (angtos (angle Pt1 Pt2) 0 16))
"")
(setq Pas (+ Pas Lg))
)
(cg_co)
(command "_.pline" "@" Pt2 "")
(setvar "osmode" os)
(setvar "cecolor" coo)
(command "_.undo" "_end")
(setq Pt1 Pt2 Compt (1+ Compt) Pts (append Pts (list (cons Compt Pt2))))
)
)
)
)
)
)
)
(setvar "cmdecho" Cmd)
(setq *error* s)
(princ)
) 

 

Sa te créra des segment de couleur noir et rouge

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

C'est fait pour placer automatique des GBA le long d'une voie

 

Une GBA est un élément linéaire. De ce fait, je ne vois pas où il est nécessaire d'insérer des blocs le long d'un axe ? Il suffit de décaler l'axe de part et d'autre d'une demi-largeur de GBA.

Si on parle de glissières métalliques, avec des montants tous les 2m ou 4m, c'est différent et la solutions de bseb67 est à utiliser.

 

Salutations

Vincent

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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é