DenisHen Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Bonjour à tous. Voilà, je viens de voir que les fichiers du Cadastre comporte des bâtiments formés avec des Faces 3D et non des polylignes fermées... Donc, est-ce que quelqu'un aurait un lisp qui transformerait ces faces 3D en polyligne ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
lecrabe Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Hello Denis Requete sur mes 2000 noms de routines LSP: *3DF* Tu vas essayer la routine ci-dessous ... Non testee ...Tu nous diras si c OK et avec quelle version d'AutoCAD tu as travaille ?? Bon WE, Bye, lecrabe ;; ;; Creation de Polylignes 3D depuis Toutes les 3DFaces d'UN calque precis ... ;; Les 3DPOLYs sont creees sur le Calque "xxxxxx_POLY3D" ;; (defun c:3DF_P3D () (if (setq c (getstring nil "\nNom du calque des Faces 3D : ")) (if (setq j (ssget "X" (list (cons 8 c)(cons 0 "3DFACE")))) (progn (command "CMDECHO" 0) (command "OSMODE" 0) (setq nc (strcat c "_POLY3D")) (command "_-LAYER" "_M" nc "") (setq l (sslength j)) (while (>= (setq l (1- l)) 0) (setq d (entget (ssname j l))) (setq p1 (cdr (assoc 10 d))) (setq p2 (cdr (assoc 11 d))) (setq p3 (cdr (assoc 12 d))) ;; (command "POLY3D" p1 p2 p3 "C") (command "_3DPOLY" p1 p2 p3 "C") ) (command "CMDECHO" 1) ) ) ) (princ) ) (alert "Taper 3DF_P3D pour lancer la commande ! ") Autodesk Expert Elite Team
bonuscad Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Bonjour, Il y aussi celle ci qui fait le distinguo entre 3 et 4 côtés (defun C:3dfto3dpo ( / js ind e_name ent dxf_10 dxf_11 dxf_12 dxf_13) (setvar "cmdecho" 0) (princ "\nChoix des 3Dfaces.") (setq js (ssget '((0 . "3DFACE"))) ind 0) (cond (js (setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384))) (while (setq e_name (ssname js ind)) (setq ind (1+ ind) ent (entget e_name) dxf_10 (trans (cdr (assoc 10 ent)) 0 1) dxf_11 (trans (cdr (assoc 11 ent)) 0 1) dxf_12 (trans (cdr (assoc 12 ent)) 0 1) dxf_13 (trans (cdr (assoc 13 ent)) 0 1) ) (if (not (equal dxf_12 dxf_13 1E-012)) (command "_.3dpoly" dxf_10 dxf_11 dxf_12 dxf_13 "_close") (command "_.3dpoly" dxf_10 dxf_11 dxf_12 "_close") ) ) (princ (strcat "\n" (itoa ind) " 3Dpoly crées à partir de 3Dface.")) (setvar "osmode" (rem (getvar "osmode") 16384)) ) (T (prompt "\nAucune sélection valide.")) ) (setvar "cmdecho" 1) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Hello Bruno YES ta routine est arrivee en 2eme position dans mes recherches locales ! Elle date de Decembre 2010 ... Par contre toutes les routines dont je dispose, creent des 3DPolys Ce qui est LOGIQUE !!Et non pas des LWPolyligne comme semble le demander Denis !? Bon WE, Bye, lecrabe Autodesk Expert Elite Team
DenisHen Posté(e) le 15 septembre 2017 Auteur Posté(e) le 15 septembre 2017 Bonjour à vous, et merci pour votre aide... Je suis sous AutoCAD Map 2018. @LeCrabe : La routine ne me fait que des polylignes à trois sommets. Et elle me créé des sommets qui n'existent pas. @BonusCAD : la routine me créé des sommets qui correspondent à d'autres sommets d'autres Faces 3D et ne sont donc pas superposés aux Faces 3D, et je n'ai pas d'accroche objet d'activés... En tout cas, je regarderais vos lisp ce week-end, si je trouve le temps... Merci encore à vous... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Créer des polylignes (LWPOLYLINE), entités 2D par excellence, à partir de faces 3D, entités 3d qui, de plus, peuvent ne pas être plane n'est pas si simple. Il faudrait plus de précisions sur la nature de ces Faces 3D et la manière de les convertir.Doit on les considérer comme toutes planes (même si elles ont 4 sommets distincts) et parallèles au plan XY ? Autrement dit, les polylignes seraient la project des faces sur le plan XY. Si c'est le cas, les codes ci-dessus peuvent assez facilement modifiés. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Hello Bien sur que "ma" routine (je la suppose de Bruno ou Gilles) ne fait que 3 sommets ! Par contre je ne suis pas sur de bien te suivre !?SVP peux tu nous fournir ton DWG ou plutot un extrait significatif par un WBLOC ?Par un lien Download Free, WETransfert, etc ... Bye, lecrabe PS: j'ai supprime mon message suivant qui donnait une routine ne correspondant pas a la demande ! ... ( PLines to Surfaces with SURFPATCH ) Autodesk Expert Elite Team
didier Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Coucou Je viens faire l'oiseau de mauvaise augure pour certains mais je dis ce que je pense :Extraire les sommets des faces par entget et code dxf par un assoc 10, 11, 12 et 13 si 4 côtésFaire une liste de ces valeurs sans les éventuelles altitudes et créer une polyligne avecFranchement DenisHen, avec le niveau que tu as en lisp je suis certain que tu sais faire ça.non ?Sans vouloir te refuser de l'aide bien sûr mais des fois on a l'impression que tu cries au loup et tu connais la fable :Le jour où il y aura vraiment un loup personne ne répondra. Amicalement comme toujours Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 S'il s'agit, comme je le suggérais, de "projeter les faces en polylignes sur le plan XY, la routine ci-dessous devrait le faire. (defun c:3dFace2Polyline (/ distinct ss i face pts) (defun distinct (l) (if l (cons (car l) (distinct (vl-remove (car l) l))) ) ) (if (setq ss (ssget "_X" '((0 . "3DFACE")))) (repeat (setq i (sslength ss)) (setq face (ssname ss (setq i (1- i))) pts (distinct (mapcar '(lambda (p) (list (cadr p) (caddr p)) ) (vl-remove-if-not '(lambda (x) (member (car x) '(10 11 12 13))) (entget face) ) ) ) ) (command "_.pline") (foreach p pts (command p)) (command "_close") (command "_.erase" face "") ) ) (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Oupss!... J'ai donné ce que didier suggérait à denis de faire... Il y a quand même peut-être moyen d'apprendre un peu en décortiquant le code... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 15 septembre 2017 Auteur Posté(e) le 15 septembre 2017 Bonsoir à tous, et merci pour votre aide... @LeCrabe : si j'en ai le temps, je ferais ça ce week-end. @Didier : toujours friand de tes remarques, je te remercie pour mon "avec le niveau que tu as en lisp je suis certain que tu sais faire ça". malgré tout, tu me flatte... ;) Mais il est vrai que j'ai souvent peur de ce que je ne connais pas, comme les faces 3D, mais n'est-ce pas dans nos réflexes comportementaux d'avoir peur de l'inconnu ? @(gile) : Merci pour ce code que je vais effectivement "décortiquer", mais dès que je vois des mapcar et des lambda... Je souris, et je pleure... :P Dans tous les cas, un grand merci à vous tous... C'est vrai que ce serait malheureux, et j'en serais inconsolable, que ce site disparaisse, comme on peut le redouter dans "la fuite des cerveaux"... Bon week-end à vous... Amicalement... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 15 septembre 2017 Posté(e) le 15 septembre 2017 Coucou Tu le sais depuis le temps je te taquine pour te forcer... TOUT ce que j'ai appris je l'ai appris en faisant des erreursFaire des erreurs c'est APPRENDREQuand j'ai appris à marcher (il y a longtemps) je suis tombé... et pourtant on m'a soufflé la façon de faire : mets un pied devant l'autre et recommence... les croutes sur les genoux sont plus efficaces que la méthode.Que va t'il se passer si tu fais un (enget) sur une face, tu vas pas mettre le feu à la machine !!!Tu vois la liste et y'a plus qu'à se servir des (assoc...)Gagné !!!!!Tu aurais été salement malheureux aux débuts d'AutoCAD, le net était encore à inventer et les erreurs il fallait s'y coltiner pour avancerAujourd'hui dès qu'un copier-coller ne marche plus on ouvre un message sur un forum, je dis non . Amicalement tout de même Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 16 septembre 2017 Auteur Posté(e) le 16 septembre 2017 Coucou aussi... Didier, j'ai toujours été d'accord avec toi, et je ne formalise jamais de tes remarques, qui m'ont très souvent servies à me sortir les doigts du c*l. Et pour cela, je t'en remercie et en profite pour remercier aussi tous les membres de ce site unique et doté de formidables membres. Si je connais un peu le lisp, c'est uniquement grâce à ce site et à toutes ces personnes bien intentionnées qui y sont, il faut le dire, très actives... Encore une fois, Didier, je te remercie, car même si tu ne me donnes pas le code que je cherche, tu me donne les clefs pour le faire. Et c'est, je le sais, pour toi, le meilleur apprentissage... Enfin bref (et je ne suis pas un enfin "enfinbrefiste") j'ai appris énormément sur ce site, j'en apprend encore beaucoup et, j'en suis sur, en apprendrais encore beaucoup... J’appréhende toujours de faire un nouveau code, l'écriture est, pour un novice comme moi, une grosse étape du code. Peut-être est-ce la raison de mes nombreux appels à l'aide... Mais rassure-toi, je suis loin d'être susceptible et ai un grand sens de l'humour... En gros, tu peut me vanner comme tu le souhaite, je n'en prendrais jamais ombrage... Encore une fois, merci à tous... Amicalement aussi... ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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