fiesta13310 Posté(e) le 12 septembre 2019 Posté(e) le 12 septembre 2019 Bonjour! Je viens de récupérer un fichier autocad d'un architecte, la moitié des murs du bâtiment sont fait avec des objets "trace".D'après ce que j'ai pu lire sur le forum, ces objets là sont très vieux et sont en quelques sorte l'ancêtre de la polyligne. Je trouve que ces objets ressemblent aussi aux solides ou aux hachures.Du coup, existe-t-il un moyen de convertir ces "traces" en "hachures"? Merci d'avance pour votre aide. :D Citer
fiesta13310 Posté(e) le 12 septembre 2019 Auteur Posté(e) le 12 septembre 2019 Par la même occasion, dans le même style:J'ai aussi des polyligne avec une largeur globale épaisse. Après avoir choisit le mode "Inactif" de la fonction "Remplir", on peut voir que cette polyligne épaisse est matérialisée par un rectangle.Du coup, est-il possible de transformer cette polyligne épaisse en un rectangle? Citer
lecrabe Posté(e) le 12 septembre 2019 Posté(e) le 12 septembre 2019 Hello Et si tu utilisais cette routine "Trace2Poly" de Gilles !? Bye, lecrabe "triste" ;; ;; Transformer les TRACEs en POLYLIGNEs, voir la routine: ;; http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=9051#pid34308 ;; par GC - Commande au clavier : TR2PL ;; La routine precedente "tr2pl" transformait toutes les traces du dessin en autant de segments de lwpolyligne ;; ;; Nouvelle version (05/03/06) possibilité de choisir ;; entre générer une polyligne unique ou une polyligne par trace pour les traces jointives et de même largeur. ;; ;; Trace2poly Transforme les traces sélectionnées (ou Toutes) en lwpolylignes ;; L'utilsateur choisit si les traces jointives génèrent une seule polyligne ou des segments. ;; Les largeurs sont conservées. ;; (defun c:trace2poly (/ dxf mid dep_w end_w ss opt n cnt_t cnt_p tr_lst sub_lst pt_lst prec ) ;;; ************************ SOUS ROUTINES ************************ ;;; ;; DXF retourne la valeur dxf de l'entité pour le code spécifié (defun dxf (code ent) (cdr (assoc code (entget ent))) ) ;; MID Retourne le milieu de deux points (defun mid (pt1 pt2) (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2)) pt1 pt2) ) ;; DEP_W Largeur de départ d'une trace (defun dep_w (tr / ang) (setq ang (- (angle (dxf 10 tr) (dxf 12 tr)) (angle (dxf 10 tr) (dxf 11 tr)) ) ) (if (minusp ang) (setq ang (+ (* 2 pi) ang)) ) (abs (* (sin ang) (distance (dxf 10 tr) (dxf 11 tr)))) ) ;; END_W Largeur de fin d'une trace (defun end_w (tr / ang) (setq ang (- (angle (dxf 12 tr) (dxf 10 tr)) (angle (dxf 12 tr) (dxf 13 tr)) ) ) (if (minusp ang) (setq ang (+ (* 2 pi) ang)) ) (abs (* (sin ang) (distance (dxf 12 tr) (dxf 13 tr)))) ) ;;; ************************ FONCTION PRINCIPALE ************************ ;;; ;; Sélection des objets (prompt "\nSélectionnez les traces à transformer < Toutes >: " ) (if (not (setq ss (ssget '((0 . "TRACE"))))) (setq ss (ssget "_X" '((0 . "TRACE")))) ) ;; Si la sélection existe (if ss (progn ;; Choix du type d'objet à créer (initget "Oui Non") (setq opt (getkword "\nJoindre les segments ? [Oui/Non] < O >: " ) ) (if (not opt) (setq opt "Oui") ) ;; Création d'une liste (tr_lst) contenant toutes les traces du dessin (setq n (sslength ss) cnt_t n cnt_p 0 ) (repeat n (setq n (1- n) tr_lst (cons (ssname ss n) tr_lst) ) ) ;_ Fin de repeat ;; Tant que tr_lst n'est pas vide (while tr_lst ;; Si option "Oui" (if (= opt "Oui") (progn ;; Mise en tête de liste d'une trace non jointive à son extrémité (while (vl-member-if '(lambda (x) (and (equal (dxf 12 (car tr_lst)) (dxf 10 x) 1e-009) (equal (dxf 13 (car tr_lst)) (dxf 11 x) 1e-009) ) ) (cdr tr_lst) ) ;_ Fin de vl-member-if (setq tr_lst (reverse (cons (car tr_lst) (reverse (cdr tr_lst)))) ) ) ;_ Fin de while ;; Création d'une liste des traces jointives (sub_lst) (setq sub_lst (cons (car tr_lst) sub_lst) tr_lst (cdr tr_lst) ) ;; Tant qu'il existe une trace jointive à la première de sub_lst (while (setq prec (car (vl-member-if '(lambda (x) (and (equal (dxf 10 (car sub_lst)) (dxf 12 x) 1e-009 ) (equal (dxf 11 (car sub_lst)) (dxf 13 x) 1e-009 ) ) ) tr_lst ) ;_ Fin de vl-member-if ) ) ;_ Fin de setq ;; Cette trace est ajoutée à sub_lst et supprimée de tr_lst (setq sub_lst (cons prec sub_lst) tr_lst (vl-remove prec tr_lst) ) ) ;_ Fin de while ) ;_ Fin de progn ;; Si option "Non" (setq sub_lst (cons (car tr_lst) sub_lst) tr_lst (cdr tr_lst) ) ) ;_ Fin de if ;; Création de la liste des sommets de la polyligne et des ;; largeurs aux sommets (setq pt_lst (apply 'append (mapcar '(lambda (x) (list (cons 10 (mid (dxf 10 x) (dxf 11 x))) (cons 40 (dep_w x)) (cons 41 (end_w x)) ) ) sub_lst ) ;_ Fin de mapcar ) ;_ Fin de apply ) ;_ Fin de setq (setq pt_lst (append pt_lst (list (cons 10 (mid (dxf 12 (last sub_lst)) (dxf 13 (last sub_lst)) ) ) ) ) ;_ Fin de append ) ;_ Fin de setq ;; Création de la polyligne (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(70 . 0) (cons 90 (/ (+ 2 (length pt_lst)) 3)) (cons 8 (dxf 8 (car sub_lst))) (cons 210 (dxf 210 (car sub_lst))) (cons 39 (dxf 39 (car sub_lst))) ) pt_lst ) ) ;_ Fin de entmake ;; Suppresion des traces traitées (mapcar 'entdel sub_lst) (setq sub_lst nil cnt_p (1+ cnt_p) ) ) ;_ Fin de while (prompt (strcat "\n\t" (itoa cnt_t) " traces ont été transformées en " (itoa cnt_p) " polylignes." ) ) ) ;_ Fin de progn (prompt "\nLe dessin ne contient pas de trace.") ) ;_ Fin de if (princ) ) ;_ Fin de defun Citer Autodesk Expert Elite Team
fiesta13310 Posté(e) le 12 septembre 2019 Auteur Posté(e) le 12 septembre 2019 HelloEt si tu utilisais cette routine "Trace2Poly" de Gilles !?Bye, lecrabe "triste" Salut lecrabe!Merci, mais je l'ai déjà essayé et du coup on tombe sur ma 2ème problématique : transformer une polyligne épaisse en "rectangle".je ne peux toujours pas m'accrocher avec ça à par aux extrémités de la polyligne... :( Citer
fabcad Posté(e) le 12 septembre 2019 Posté(e) le 12 septembre 2019 Bonjour fiesta13310, Voici une réponse pour ta problématique numéro 2 : http://www.lee-mac.com/polyoutline.html d'autres pépites sont sur le site de Lee Mac. FabcadLe Rennais Métropolitain Citer
fiesta13310 Posté(e) le 12 septembre 2019 Auteur Posté(e) le 12 septembre 2019 Bonjour fiesta13310, Voici une réponse pour ta problématique numéro 2 : http://www.lee-mac.com/polyoutline.html d'autres pépites sont sur le site de Lee Mac. FabcadLe Rennais Métropolitain Bonjour fabcad, Merci beaucoup c'est exactement ce que je cherche! Merci à tous aussi! :D :D Bonne fin de journée et à bientôt B) Citer
lecrabe Posté(e) le 12 septembre 2019 Posté(e) le 12 septembre 2019 Hello Que ne ferait on pas pour la charmante Miss F... !? Bye, lecrabe "triste" Citer Autodesk Expert Elite Team
x_all Posté(e) le 13 septembre 2019 Posté(e) le 13 septembre 2019 comme quoi, les CV anonymes et sans photo, c'est pas toujours un avantage... Citer quelques trucs sur autocad
Messages recommandés