Ladinde Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 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.
bseb67 Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 Salut avec la commande mesurer tout simplement :) Tu sélectionnes la ligne ou polyligne, donne le nom du bloc que tu veuxet un pas. Et hop le tour est joué. Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
dilack Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 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
Ladinde Posté(e) le 4 mars 2010 Auteur Posté(e) le 4 mars 2010 Merci puor votre aide.J'utilise éffectivement cette commande (mesurer) mais parfois les objets ne se trouvent pas vraiment alignés à la ligne. Je vais creuser encore un peu. Encore merciBonne soirée
zebulon_ Posté(e) le 4 mars 2010 Posté(e) le 4 mars 2010 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. SalutationsVincent 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)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant