thierry.garré Posté(e) le 12 avril 2008 Posté(e) le 12 avril 2008 Bonjour à tous, Voila j'ai AutoCAD Map2008 mon sujet j'ai deux séries de polylignes 3d plus ou moins parallèles représentant des bordes de routes. ces polylignes sont parfaitement jointives . n'existe-il pas une fonction pour joindre les polylignes 3D, de telle façon qu'en sélectionnant les deux polylignes extrêmes des deux séries le logiciel reconnaissent toutes les autres polylignes en contact et réalise directement de proche en proche la jonction jusqu'au deux autres extrémités de mes bords de routes? Si d'aventure quelqu'un a une solution. Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
(gile) Posté(e) le 12 avril 2008 Posté(e) le 12 avril 2008 Salut, As-tu essayé Join3dPoly, sur cette page ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
thierry.garré Posté(e) le 12 avril 2008 Auteur Posté(e) le 12 avril 2008 Merci de ta réponse Gilles, je vais essayer et je te tiens au courant Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
(gile) Posté(e) le 12 avril 2008 Posté(e) le 12 avril 2008 Oupss !!! J'avais lu un peu vite, Join3dPoly nécessite de sélectionner toutes les polylignes. Je vais essayer de faire quelque chose qui corresponde mieux à ta demande. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 12 avril 2008 Posté(e) le 12 avril 2008 Voilà, Il suffit de sélectionner une polyligne 3d (pas forcément à une extrémité) et toutes celles qui sont en contact par leur extrémité sont jointes.La poly finale prend les propriétés de celle qui a été sélectionnée. Le sens de la poly peut changer (mais on peut l'inverser avec R_Pline) PS : ce LISP risque de ne pas fonctionner avec les version antérieures à 2007 :; erreur: une exception s'est produite: 0xC0000005 (Violation d'accès); avertissement: fonction unwind ignorée erreur inconnueCette erreur semble due au fait que ces versions ne supportent pas l'ajout ou la suppression simultanée de plusieurs sommets. ;; AUTOJOIN (gile) ;; Unit toutes les polylignes 3d jointives à la polyligne 3d sélectionnée (defun c:autojoin (/ ent pl1 lst1 pt ss pl2 lst2) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (if (and (setq ent (car (entsel "\nSélectionnez une polyligne 3d: ") ) ) (setq pl1 (vlax-ename->vla-object ent)) (= (vla-get-ObjectName pl1) "AcDb3dPolyline") (= (vla-get-Closed pl1) :vlax-false) (setq lst1 (3d-coord->pt-lst (vlax-get pl1 'Coordinates))) (setq pt (last lst1)) ) (progn (vla-StartUndoMark *acdoc*) (vla-ZoomExtents *acad*) (while (and (or (and (setq ss (ssget "_C" (trans pt 0 1) (trans pt 0 1) '((0 . "POLYLINE") (70 . 8)) ) ) (setq ss (ssdel ent ss)) (= 1 (sslength ss)) ) (and (not (vlax-put pl1 'Coordinates (apply 'append (setq lst1 (reverse lst1))) ) ) (setq pt (last lst1)) (setq ss (ssget "_C" (trans pt 0 1) (trans pt 0 1) '((0 . "POLYLINE") (70 . 8)) ) ) (setq ss (ssdel ent ss)) (= 1 (sslength ss)) ) ) (setq pl2 (vlax-ename->vla-object (ssname ss 0))) (setq lst2 (3d-coord->pt-lst (vlax-get pl2 'Coordinates))) (or (equal pt (car lst2) 1e-9) (and (setq lst2 (reverse lst2)) (equal pt (car lst2) 1e-9)) ) ) (vlax-put pl1 'Coordinates (apply 'append (setq lst1 (append lst1 (cdr lst2)))) ) (entupd ent) (vla-delete pl2) (setq pt (last lst2)) ) (vla-ZoomPrevious *acad*) (vla-EndUndoMark *acdoc*) ) ) (princ) ) ;;; 3d-coord->pt-lst Convertit une liste de coordonnées 3D en liste de points ;;; (3d-coord->pt-lst '(1.0 2.0 3.0 4.0 5.0 6.0)) -> ((1.0 2.0 3.0) (4.0 5.0 6.0)) (defun 3d-coord->pt-lst (lst) (if lst (cons (list (car lst) (cadr lst) (caddr lst)) (3d-coord->pt-lst (cdddr lst)) ) ) ) [Edité le 13/4/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
thierry.garré Posté(e) le 13 avril 2008 Auteur Posté(e) le 13 avril 2008 Merci Gile c'est exactement ce que je souhaitai. [Edité le 13/4/2008 par thierry.garré] Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
philsogood Posté(e) le 14 mars 2014 Posté(e) le 14 mars 2014 hellodamned! je ne peux aps joindre mes polylignes... pour une raison assez simple les PL 3D ne sont aps jointives... bon en même temps il faut aller la chercher loin la différence : huit chiffres après la virgulesavez comment je peux faire en sorte que le lisp tourne (en sachant que l'arrondi qui se fait n' aucune importance - qui travaille avec 8 chiffres après la virgule?)...en cherchant un peu j'ai trouve un lisp de bonuscad pour arrondir les valuers et pouvoir faire mes belles poly3Dhttp://cadxp.com/topic/7280-arrondir-les-coordonnees/page__view__findpost__p__35829Phil Projeteur Revit Indépendant - traitement des eaux/CVC
(gile) Posté(e) le 14 mars 2014 Posté(e) le 14 mars 2014 Salut, non, ce n'était vraiment pas loin. Dans l'expression : (or (equal pt (car lst2) 1e-9) (and (setq lst2 (reverse lst2)) (equal pt (car lst2) 1e-9)) )remplace 1e-9 par 1e-7 ou 1e-7. c'est la tolérance dans la comparision (9, 7 ou 6 chiffres après la virgule). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Olivier Eckmann Posté(e) le 14 mars 2014 Posté(e) le 14 mars 2014 Bonjour, Personnellement, quand j'ai des soucis d'arrondi infime de coordonnées, je fait un wbloc des objets à arrondir, puis un export (enregistrer sous) DXF et dans les options je spécifie X décimales (par ex 6) ainsi toutes les coordonnées sont arrondies à 6 décimales. On ferme le DXF, puis on le ré-ouvre et je ré-importe dans mon dessin. Et hop tout fonctionne. Olivier
x_all Posté(e) le 14 mars 2014 Posté(e) le 14 mars 2014 ^^encore un lisp qui sera plus qu'utile... merci (gile) :) quelques trucs sur autocad
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