Aller au contenu

zone tampon ou buffer d'une polyligne


fabcad

Messages recommandés

Bonsoir à tous,

 

Ayant cherché de façon infructueuse sur G., je souhaiterais une sous-routine pour créer une zone tampon ou buffer d'une polyligne non fermée.

Et par la suite l'integrer à une une boucle pour traiter plusieurs polylignes non fermées.

 

(buffer_pline ename dist) ename étant le nom AutoCAD de la polyligne et dist la distance de décalage.

 

D'avance merci,

 

Fabcad le Rennais Métropolitain

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Il y a bien les zones tampon dans MAP!

 

http://docs.autodesk.com/MAP/2013/FRA/index.html?url=filesMAPUSE/GUID-2F9E4CD6-BDB4-4B5F-B091-272D61386EA9.htm,topicNumber=MAPUSEd30e218153

 

Et sans MAP il doit exister des LISP du moins je vois bien un mélange de ceux la :

http://www.lee-mac.com/advpolyoutline.html

et sur cette page pour faire une largeur constante.

http://www.lee-mac.com/polylineprograms.html

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Avec un AutoCAD MAP (ou CIVIL), on peut faire des Buffers sur du DWG avec de la Topologie DWG (Donc MAP ou CIVIL)

 

Et toujours un AutoCAD MAP (ou CIVIL), on peut faire des Buffers en FDO sur des couches FDO (Donc MAP ou CIVIL)

 

lecrabe

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Hello

Avec un AutoCAD MAP (ou CIVIL), on peut faire des Buffers sur du DWG avec de la Topologie DWG (Donc MAP ou CIVIL)

Et toujours un AutoCAD MAP (ou CIVIL), on peut faire des Buffers en FDO sur des couches FDO (Donc MAP ou CIVIL)

lecrabe

 

Merci lecrabe,

 

Mais je ne pense pas créer en lisp une topologie temporaire par linéaire juste pour créer un polygone qui reçoit les Données d'Objets et qui est supprimé ensuite après la copie de ces données dans le linéaire.

 

Fabcad le Rennais Métropolitain

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

En resume vous voulez une jolie routine Lisp qui construit une zone tampon sur des polylignes ...

Mais j'ai la routine en stock depuis longtemps !

 

Savez vous qui a ecrit cette magnifique Routine ??

Le 1er qui me donne l'auteur (UNE seule reponse autorisee), aura droit a la routine !?

 

lecrabe

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Toujours avec map tu peu faire une requete sur une zone buffer d'un objet (polyligne).

 

Maintenant tu peu également pense à faire l'inverse en lisp et calculer la longueur entre tes objet et ta polyligne et ne sélectionner que ceux qui sont donc une zone précise.

 

Tu peu également rendre ta polyligne épaise, récupérer une surface de cette polyligne éppaise et ensuite utiliser les outils de MAP pour générer des liens entre les objets dans ces zones et la zone.

De ces liens tu pourra ensuite copier les OD dans la polyligne d'origine.

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Lien vers le commentaire
Partager sur d’autres sites

Salut fabcad,

 

Une variante de ta routine, écrite simplement (pas fais de test approfondi avec des SCU particuliers)

 

(vl-load-com)
(defun l-coor2l-pt (lst flag / )
 (if lst
   (cons
     (list
       (car lst)
       (cadr lst)
       (if flag
         (+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst))
         (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0)
       )
     )
     (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag)
   )
 )
)
(defun c:buffer ( / js AcDoc Space ent vla_obj e_width ename l_pt)
 (princ "\nSélectionner la polyligne à bufferiser")
 (while
   (not
     (setq js
       (ssget "_+.:E:S" 
         (list
           (cons 0 "*POLYLINE")
           (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
           (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
           (cons -4 "<NOT")
            (cons -4 "&") (cons 70 113)
           (cons -4 "NOT>")
         )
       )
     )
   )
 )
 (setq
   AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
   Space
   (if (eq (getvar "CVPORT") 1)
     (vla-get-PaperSpace AcDoc)
     (vla-get-ModelSpace AcDoc)
   )
   ent (ssname js 0)
   vla_obj (vlax-ename->vla-object ent)
 )
 (initget 7)
 (setq e_width (getdist "\nLargeur de la zone tampon: "))
 (vla-Offset vla_obj (* 0.5 e_width))
 (setq
   ename (vlax-ename->vla-object (entlast))
   l_pt (l-coor2l-pt (vlax-get ename 'Coordinates) nil)
 )
 (entdel (entlast))
 (vla-Offset vla_obj (- (* 0.5 e_width)))
 (setq
   ename (vlax-ename->vla-object (entlast))
   l_pt (append (reverse (l-coor2l-pt (vlax-get ename 'Coordinates) nil)) l_pt)
 )
 (entdel (entlast))
 (setq nw_pl (vlax-invoke Space 'AddLightWeightPolyline (apply 'append (mapcar 'list (mapcar 'car l_pt) (mapcar 'cadr l_pt)))))
 (vla-put-Closed nw_pl 1)
 (prin1)
)

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

Hello Fabcad et Tous

 

Bravo Fab - Tout d'abord un GRAND Merci a Gilles !

qui avait developpe une fabuleuse routine depuis mon CDC/CCTP ...

 

Vous trouverez ci-joint la routine CorridorVeryNew.lsp

et un joli DWG exemple d'utilisation et surtout de resultats !

 

Numerotation des Boites Buffers, Coloriage des Boites Buffers, etc ...

 

Cette routine est valide sur AutoCAD 2009-2013

 

Pour Gilles : SVP serait il possible dans un moment de folle generosite

d'avoir un demi-cercle 180 degres sur la boite de depart et sur la boite d'arrivee

avec la question de parametrage correspondante ...

Valeur par defaut : Demi-Cercle et non pas trait droit !

 

Milles Mercis a Gilles pour sa contribution, lecrabe

CorridorVeryNew_par_GC.zip

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

 

Juste pour ma culture personnel (n’étant pas du tout de la partie), qu’appelez-vous un buffer ou une zone tampon, à quoi cela sert-il ou plutôt que cherche t’on a obtenir..

 

Voilà si une bonne âme voulait bien m’éclairer, je lui en serais gré, merci.

 

Cordialement,

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à toutes et tous,

 

Eh bé, je vois que Fabcad est en effet un vrai Breton,...!!

 

Je ne peux pas suivre "en direct" ce qui se passe mais tu sais que je suis également très intéressé par ce projet,..:) Me tarde de pouvoir m'y remettre et tester les propositions de Olivier également (Je fais bien entendu référence à ce post ),...

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

super Lisp ce CorridorVeryNew_par_GC.zip

 

Mais tout est créé dans le Calque 0.

 

ça peut se modifier facilement ?

Intel i7-4770 - 16Go Ram - NVIDIA Quadro K2000 - Double ecran en 1680x1050

Windows 7 64Bits. non administrateur !!

Autocad Map 3D 2019 + Covadis V17.0f

Lien vers le commentaire
Partager sur d’autres sites

Bravo Il y a bien des arrondis en bout de zones.

 

Quel coup d'œil et c'est bien ce que j voudrais ajouter dans la sous-routine de Buffer mais je ne vois pas comment faire.

 

Ça peut être aussi des angles droits avec la distance de décalage.

 

Merci

 

Fabcad le Rennais Métropolitain

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é