passi54 Posté(e) le 9 février Posté(e) le 9 février Bonjour à tous Je reçois de plus en plus de dwg de clients (AutoCAD, Revit, Allplan,...) où tout est décomposé Hachures y compris. Bien entendu pas dans des calques séparés, ça serait trop facile ! Je me suis déja créé un raccourcis pour dégrouper et purger tout ce qu'y était possible de faire. Mais je cherche de l'aide pour pouvoir sélectionner toutes les polylignes, lignes, arcs du dwg et de les trier en fonction de leurs longueurs dans les calques identiques avec en extension par exemple "Long. de 0 a 1", "Long. de 1 a 2",.... Cela me permettrai de pouvoir nettoyer rapidement toutes les hachures décomposées. A moins que vous avez déja une solution pour un cas similaire. Vous remerciant par avance pour votre aiguillage. Bonne journée
didier Posté(e) le 9 février Posté(e) le 9 février Bonjour @passi54 Tel que c'est expliqué, on ne peut pas trop se prononcer. Merci de déposer un dessin à traiter sur le forum, on pourra travailler avec les vraies données pour trouver une piste de recherche. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
passi54 Posté(e) le 9 février Auteur Posté(e) le 9 février Bonjour Didier Merci pour ton suivi. Je te joint un fichier deja un peu nettoyé car la plupart font 7 à 8 mo. Dans les murs il y a des hachures décomposées ainsi dans les isolants. A l'origine il y a différents groupes que j'ai dissociés. Merci à toi DSK_A5_ETG02_AR_ALL_102_Temp.dwg
lecrabe Posté(e) le 9 février Posté(e) le 9 février Hello Ton DWG est une HORREUR ! As tu le meme AVANT un quelconque traitement ? Bye, lecrabe Autodesk Expert Elite Team
lecrabe Posté(e) le 9 février Posté(e) le 9 février Hello Juste pour Info, j utilise souvent 2 superbes Routines Lisp pour trier / preparer des DWGs "bordeliques" provenant de l exterieur quand le DWG a de multiples types d objets sur le MEME Calque et/ou de Multiples Objets avec la Couleur FORCEE ! Bye, lecrabe Voici la Routine "TRI" de notre regrette Patrick_35 qui "eclate" le DWG sur de multiples calques en fonction du Type d Entite ! ;; ;; Tri des entites par calque et transfert dans des sous-calques ;; ;; Si Calque nomme A alors : A__TEXT, A__LINE, A___CIRCLE, A__HATCH, A__POLYLINE, etc ;; ;; Par Patrick_35 le 23/03/2009 pour Patrice B. ;; ;; Nouvelle version 1.1 qui separe XREF & BLOC et fonctionne sur AutoCAD >= 2000 ;; ;; Par VDH-Bruno : Nouvelle version 1.1A ;; qui traite SEULEMENT la Selection et NON PAS TOUT le DWG ... ;; (defun c:TRI (/ doc ent lay lck nom ori pro sel tot txt) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (if (ssget) ;; Selection partiel ;; (ssget "X") ;; Selection total (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (cond ((and (eq (vla-get-objectname ent) "AcDbBlockReference") (vlax-property-available-p ent 'path) ) (setq nom "Xref") ) (T (setq txt (substr (vla-get-objectname ent) 5) tot 2 ) (while (and (> (vl-string-elt txt tot) 90) (< tot (1- (strlen txt))) ) (setq tot (1+ tot)) ) (and (eq (1- (strlen txt)) tot) (setq tot (1+ tot)) ) (setq nom (substr txt 1 tot)) ) ) (setq ori (vla-item (vla-get-layers doc) (vla-get-layer ent)) lck (vla-get-lock ori) ) ;; (or (wcmatch (vla-get-layer ent) (strcat "* - " nom)) ;; (and (vl-catch-all-error-p (setq lay (vl-catch-all-apply 'vla-item (list ;; (vla-get-layers doc) (setq txt (strcat (vla-get-layer ent) " - " nom)))))) (or (wcmatch (vla-get-layer ent) (strcat "*__" nom)) (and (vl-catch-all-error-p (setq lay (vl-catch-all-apply 'vla-item (list (vla-get-layers doc) (setq txt (strcat (vla-get-layer ent) "__" nom)))))) (setq lay (vla-add (vla-get-layers doc) txt)) (foreach pro '('color 'freeze 'layeron 'linetype 'lineweight 'material 'plottable 'viewportdefault) (and (vlax-property-available-p lay (eval pro)) (vlax-put lay (eval pro) (vlax-get ori (eval pro))) ) ) ) (vla-put-lock lay :vlax-false) (vla-put-lock ori :vlax-false) (vla-put-layer ent txt) (vla-put-lock lay lck) (vla-put-lock ori lck) ) ) (princ (strcat "\nTravail sur " (itoa (vla-get-count sel)) " objet(s). ")) (vla-delete sel) ) (princ "\nDessin vide! ") ) (vla-endundomark doc) (princ) ) Autodesk Expert Elite Team
lecrabe Posté(e) le 9 février Posté(e) le 9 février Hello Et voici la routine "E2LBC" qui "eclate" le DWG sur de Multiples Calques en fonction de la Couleur (Support des Couleurs ACI, RGB, RAL, Pantone, etc) des Entites Bye, lecrabe ;; ;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/separate-hatches-on-multiple-layers-depending-on-color-or-name/td-p/9402333 ;; ;; Routine: E2LBC__Entities_to_Layer_By_Color__dlanorh by dlanorh for Patrice B. ;; ;; Move selected Entities on separate layers depending on Color ;; ;; --- Interrogation Entite/Objet en Lisp --- ;; (entget (car (entsel)) '("*")) ;; (vl-load-com) (defun LM:True->RGB ( c ) (mapcar '(lambda ( x ) (lsh (lsh (fix c) x) -24)) '(8 16 24))) (defun rh:lst2str ( lst del / str ) (setq str "") (mapcar '(lambda (x) (setq str (strcat str x del))) lst) (vl-string-right-trim del str)) (defun rh:layer_props ( lyr lst / v ) (setq v (mapcar '(lambda (x) (vlax-get-property lyr x)) lst))) (defun rh:strlen3 ( str ) (if (< (strlen str) 3) (while (< (strlen str) 3) (setq str (strcat "0" str))) str) str) ;; Entities to layer by color (defun c:E2LBC ( / c_doc c_lyrs l_props ss cnt ent elst lyr l_vals cstr clst clr nlyr lobj) (setq c_doc (vla-get-activedocument (vlax-get-acad-object)) c_lyrs (vla-get-layers c_doc) l_props (list 'truecolor 'linetype 'lineweight);Layer properties list );end_setq (prompt "\nSelect Entities : ") (setq ss (ssget)) (cond (ss (repeat (setq cnt (sslength ss)) (setq ent (ssname ss (setq cnt (1- cnt))) elst (entget ent) lyr (cdr (assoc 8 elst));Layer l_vals (rh:layer_props (vla-item c_lyrs lyr) l_props);Layer properties cstr "" clst nil );end_setq (foreach x '(62 420 430) (setq clst (cons (cdr (assoc x elst)) clst))) (setq clr (vl-some '(lambda (x) x) clst)) (cond ( (not clr) (setq cstr "256")) ;No Color set (bylayer) ( (and (= (type clr) 'INT) (<= clr 256)) ;ACI (0-256) (setq cstr (rh:strlen3 (itoa clr))) ) ( (= (type clr) 'STR) (setq cstr clr)) ;Color Book (t (setq clr (mapcar 'itoa (LM:True->RGB clr));RGB cstr (rh:lst2str (mapcar 'rh:strlen3 clr) "_") );end_setq ) );end_cond (setq nlyr (strcat lyr "__" cstr)) (cond ( (not (tblsearch "layer" nlyr)) (setq lobj (vla-add c_lyrs nlyr)) (mapcar '(lambda (x y) (vlax-put-property lobj x y)) l_props l_vals))) (vlax-put-property (vlax-ename->vla-object ent) 'layer nlyr) );end_repeat ) (t (alert "NO Entities Selected ! ")) );end_cond (princ) );end_defun Autodesk Expert Elite Team
passi54 Posté(e) le 9 février Auteur Posté(e) le 9 février Alors pour le dwg avant un pré-nettoyage il fait plus 3 mo. Je ne sais pas si le site permet le partage de fichier volumineux (et c'est le plus petit car le RDC avec Am-Ext. 8mo !). Merci pour tes Lisp, je vais les essayer de ce pas !👍
lecrabe Posté(e) le 9 février Posté(e) le 9 février Hello Malheureusement je pense que ces 2 Lisp ne vont pas t aider beaucoup sur le DWG "nettoye" que tu nous as envoyé !? A voir sur d autres DWGs !? Je vais transférer ton Sujet sur le forum AutoCAD MAP ... Bye, lecrabe Autodesk Expert Elite Team
passi54 Posté(e) le 9 février Auteur Posté(e) le 9 février Merci beaucoup lecrabe. Bon week-end A bientôt
didier Posté(e) le 9 février Posté(e) le 9 février Bonjour @passi54 Il est vrai que celui qui a sauvegardé ce fichier avant de le livrer est un pervers. Pour les hachures décomposées on pourrait utiliser quelque chose dans ce style : C'est un petit LSP que je viens d'écrire basé sur le choix d'une ligne "exemple" et qui va supprimer de ce calque toutes les lignes ayant la même direction. C'est un début, mais pas satisfaisant, car certaines hachures sont passées en "polyligne", on peut continuer à filtrer si ça t'intéresse comme principe. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
rebcao Posté(e) le 9 février Posté(e) le 9 février Bonjour, Il faudrait simplement se tourner vers le Fournisseur de ce .DWG CATASTROPHIQUE et avoir quelques explications sur l'origine du PLAN ! Après il peut arriver, que c'est simplement lié aux OPTIONS D'EXPORTATION vers un .DWG pour ceux qui utilisent un logiciel autre qu'AutoCAD ! Et bien souvent, la personne qui a généré les EXPORTS DWG ne soupçonne même pas ces options et leur intérêt ! C'est évident que ce .DWG ne provient pas d'AutoCAD, il n'y a qu'à voir le NOM des CALQUES et la DESCRIPTION des calques qui n'est que rarement renseigné sur AutoCAD. Je dirais que c'est de l'ARCHICAD ! Ils ont le chic de coter une valeur EXPOSANT pour la précision des textes de COTATION !!!!!! Mais, j'ai bien connu un "FRAPADINGUE" qui s'amusait à DECOMPOSER les BLOCS sous prétexte que : C'EST MOI QUI L'AI FAIT, je veux pas qu'on me "pirate" ma BIBLIOTHEQUE Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
passi54 Posté(e) le 9 février Auteur Posté(e) le 9 février Je viens d'essayer les 2 Lisps sur mon fichier RDC, et ça marche très bien ! Ca me permet deja de très bien trier ! Un plus serait de pouvoir aussi trier par la longueur ... Mais c'est déja pas mal comme ça ! Merci beaucoup !
lecrabe Posté(e) le 9 février Posté(e) le 9 février Hello RAPPEL : je suis VENAL, ce sera comme d habitude un excellent Whisky Single Malt ! Bye, lecrabe 1 Autodesk Expert Elite Team
passi54 Posté(e) le 9 février Auteur Posté(e) le 9 février Didier merci pour ton retour. Oui pour ce fichier là on pourrait utiliser ce moyen, c'est pas mal mais au RDC j'ai des murs dans tout les sens et les hachures aussi et là ça va etre compliqué ! Hormis par un filtre de longueur je vois que ça... Christian je suis déja rentré en contacte avec l'Archi mais rien à faire c'est leur protocole ! Il ne fournisse même pas la maquette 3D (IFC).
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