PHILPHIL Posté(e) le 25 octobre 2019 Posté(e) le 25 octobre 2019 HELLO est il possible de comparer deux blocs de noms différents pour savoir s'ils sont identique j'ai utilisé "DWG COMPARE" puis importé des entités d'un fichier a l'autre et je me retrouve avec des blocs dont le nom commence par "$0$" ou "$1$" hors je sais que j'ai de blocs identiques dans se fichier qui on des noms sans "$0$" ou "$1$" je voudrais les comparer et s'ils sont identique remplacer les "$0$ ... " par l'autre ce qui pourrait etre utile pour les fichiers issus de ARCHICAD bon week end Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
GEGEMATIC Posté(e) le 28 octobre 2019 Posté(e) le 28 octobre 2019 Salut,ci dessous un code qui extrait la définition (dxf) d'un bloc.le pb c'est que tu ne peux pas directement comparer, car certains codes changent, alors que la représentation est la même (pare exemple les entity name, les handle, etc ...donc il te faudrait décortiquer les codes dxf de chaque entité pour savoir quels codes prendre en compte ou pas. ; **************************************************************************** ;;§/dxf/extrait la definition d'un block sous forme de liste/nombl ;;retourne une liste de listes : ;;;(((0 . "BLOCK");_entete par tblsearch ;;; (2 . "NUM") ;;; (70 . 2) ;;; (10 0.0 0.0 0.0) ;;; (-2 . <Nom d 'entité: 7fffa2f06f0>);_ename de la 1ère entité du bloc ;;; );_fin retourné par tblsearch ;;; ;;première entité (retournée par entnext) ;;; ((-1 . <Nom d 'entité: 7fffa2f06f0>) ;;; (0 . "LWPOLYLINE") ;;; (330 . <Nom d 'entité: 7fffa2f06e0>) ;;; (5 . "25717") ;;; (100 . "AcDbEntity") ;;; (67 . 0) ;;; (8 . ;;; "0" ;;; ) ;;; (62 . 255) ;;; (100 . "AcDbPolyline") ;;; ... ;;; (210 0.0 0.0 1.0) ;;; ) ;;; ;;deuxième entité (retournée par entnext) ;;; ((-1 ;;; . <Nom d 'entité: 7fffa2f0700>) ;;; (0 . "ATTDEF") ;;; (330 . <Nom d 'entité: 7fffa2f06e0>) ;;; (5 . "25718") ;;; (100 . "AcDbEntity") ;;; ... ;;; (280 . 0) ;;; ) ;;;);;fin de définition de bloc, la prochaine entité retournée par entnext sera un endblock (defun pw_block_def ( nombl / debut res extrait ent lent ) (setq nombl (strcase nombl)) (setq debut 't) (defun extrait ( / ) (while (setq ent (entnext ent)) (setq res (cons (entget ent) res)) ) ) (while (setq lent (tblnext "block" debut)) (setq debut nil) (if (= nombl (strcase (cdr (assoc 2 lent))));;si c'est la definition qu'on cherche (progn (setq res (cons lent res));; le debut de la def (setq res (cons (entget (setq ent (cdr (assoc -2 lent)))) res));;l'entget du 1er -2 (extrait) ) ) ) (reverse res) ) ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
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