lecrabe Posté(e) le 28 mai 2008 Auteur Posté(e) le 28 mai 2008 Hello Ah exact Fab, j'aimerais bien aussi une routine qui dessine un point graphique sur non seulement TOUS les sommets des polylignes (2D ou 3D) mais AUSSI sur TOUS les Vertex des MPOLYGONs (Contours intérieurs et extérieurs) de MAP ou CIVIL ! Il faut avoir un MAP ou un CIVIL (me semble t-il) pour faire cette routine !? Le Decapode Autodesk Expert Elite Team
(gile) Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Salut, Voilà une routine qui devrait répondre à ton souhait.Pour les MPOLYGONs, n'ayant pas MAP, j'ai fait avec les exemples que tu m'avais envoyé, je ne peux donc assurer que ça fonctionne dans tous les cas. ;;; PT-VTX ;;; Crée un objet point sur tous les sommets des polylignes ou mpolygones sélectionnés. (defun c:pt-vtx (/ *error* ss lst) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (defun *error* (msg) (princ (strcat "\nErreur: " msg)) (vla-EndUndoMark *acdoc*) (princ) ) (setq space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace *acdoc*) (vla-get-ModelSpace *acdoc*) ) ) (if (ssget '((0 . "*POLYLINE,MPOLYGON"))) (progn (vla-StartUndoMark *acdoc*) (vlax-for obj (setq ss (vla-get-activeselectionSet *acdoc*)) (cond ((= (vla-get-objectName obj) "AcDbPolyline") (setq lst (PlinePoints obj)) ) ((= (vla-get-objectName obj) "AcDbMPolygon") (setq lst (mpoly-pts obj)) ) ((= (vla-get-objectName obj) "AcDb2dPolyline") (setq lst (mapcar (function (lambda (p) (trans p (vlax-get obj 'Normal) 0) ) ) (3d-coord->pt-lst (vlax-get obj 'Coordinates)) ) ) ) ((= (vla-get-objectName obj) "AcDb3dPolyline") (setq lst (3d-coord->pt-lst (vlax-get obj 'Coordinates))) ) (T nil) ) (and lst (mapcar (function (lambda (p) (vla-addPoint space (vlax-3d-point p)) ) ) lst ) ) ) (vla-EndUndoMark *acdoc*) ) ) (princ) ) ;;; MPoly-pts ;;; retourne la liste des sommets (coordonnées SCG) d'un mpolygon (defun mpoly-pts (ent / elst norm base elv) (and (= (type ent) 'VLA-OBJECT) (setq ent (vlax-vla-object->ename ent)) ) (setq elst (entget ent) norm (cdr (assoc 210 elst)) base (cdr (assoc 11 elst)) elv (cdr (assoc 10 elst)) ) (mapcar (function (lambda (p) (trans (mapcar '+ (cdr p) base elv) norm 0)) ) (cdr (vl-remove-if-not (function (lambda (p) (= (car p) 10))) elst ) ) ) ) ;;; 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)) ) ) ) ;;; PlinePoints ;;; Retourne la liste des sommets (coordonnées SCG) de la polyligne (ename ou vla-object) (defun PlinePoints (pl / sub) (vl-load-com) (or (= (type pl) 'VLA-OBJECT) (setq pl (vlax-ename->vla-object pl)) ) (defun sub (l e n) (if l (cons (trans (list (car l) (cadr l) e) n 0) (sub (cddr l) e n) ) ) ) (sub (vlax-get pl 'Coordinates) (vla-get-Elevation pl) (vlax-get pl 'Normal) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabcad Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Merci Gile, Encore une routine qui va me permettre de gagner du temps pour la création de mes filaires de voies, car avec ces points, j'utilise l'accroche objet Milieu entre deux points avec seulement ces sommets. Bonne journée, Fabcad
lili2006 Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Bonjour à toutes et tous, Sur AutoCAD, [surligneur] "nod-pl"[/surligneur] de Bred fonctionne très bien aussi sur les polygones,... http://images0.hiboox.com/images/2208/85fc84e6c2b90b905310ec6a1271f497.jpg Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Salut,Sur AutoCAD, "nod-pl" de Bred fonctionne très bien aussi sur les polygones,...pour la simple raison que les polygones sur AutoCAD sont des "LWPOLYLIGNE". sur Map, je ne connais pas, mais il y a l'air d'y avoir une autre entitée nommé "MPOLYGON".En imaginant la différence, j'imagine que cet entité doit garder sa forme si on l'étire avec une poignée (à la différence des polygones d'autocad) Mais je ne serais pas étonné que l'entité existe sur autocad normal...(gile), n'aurais tu pas récupérer un "MPOLYGON" pour voir si on peux l'avoir sur Autocad ? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lili2006 Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Re, Merci pour l'info Bred. J'ai une version d'évaluation de MAP 3D 2008, je vais regarder en début d'après-midi. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Re, En effet Bred, "nod-pl" ne semble pas reconnaître les mpolygon ! Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Salut, De ce que j'en connais, les MPOLYGONs sont des entités complexes : genre polyligne(s) + hachure (avec possibilités d'ilots) + données attachées.On peut les "lire" avec AutoCAD simple (sauf les données attachées) et récupérer les données DXF qui sont semblables à celles des hachures. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabcad Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Les Mpolygones sont propres à AutoCAD MAP 3D car ils constituent le moyen correct de créer par exemple un bâtiment et sa cour intérieure en un seul et unique objet. De plus ce sont des surfaciques, cela veut dire qu'ils ont la propriété d'^être remplis ou non. Ce Mpolygone a été créé pour une compatibilité lors de l'import d'autres formats de système d'informations Géographiques (SHP pour Arcview d'ESRI). Pour comparer "un petit peu" ce sont les régions 2D. A+
lili2006 Posté(e) le 29 mai 2008 Posté(e) le 29 mai 2008 Re, Merci pour ces compléments d'information fabcad.Je profite également de ce post, pour "ressortir" celui-là.. Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lecrabe Posté(e) le 29 mai 2008 Auteur Posté(e) le 29 mai 2008 Hello Gilles & Fab La nouvelle routine PT-VTX.lsp de Gilles est super ! :) Je l'ai testé avec MAP 2008 sur de multiples MPolygons sans aucun souci particulier ! :D Si un MPolygon contient un cercle alors 2 points graphiques sont dessinés :un à l'Ouest et l'autre à l'EstC amusant & cela ne me gène pas du tout car on voit bien que c'est un Cercle Encore un très grand MERCI à Gilles, Le Decapode Autodesk Expert Elite Team
lecrabe Posté(e) le 24 juin 2008 Auteur Posté(e) le 24 juin 2008 Hello Pour ceux qui ne connaissent pas les MPOLYGOns de MAP je peux leur envoyer qq exemples qui s'ouvrent parfaitement avec un simple AutoCAD cadxp at hotmail fr Le Decapode Autodesk Expert Elite Team
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