PHILPHIL Posté(e) le 27 novembre 2020 Posté(e) le 27 novembre 2020 bonjour je rencontre un souci, je n'arrive plus a mettre en XREF ou bloc des fichiers *.dwg issus de fichier REVIT ou ARCHICAD ... AVEZ VOUS LE MEME SOUCI ? soit trop de blocs internes, ou noms trop longs ? avec des fichiers *.dwg récupérés a base de fichier REVIT ou ARCHICADon se retrouve avec des blocs par milliers qui sont UNIQUES et possedant tres peu d’entités ( ligne, polyligne, cercle, arc ... ) dedansje cherche un bout de Lisp me permettant de calculer combien il y a d’entités dans un bloc.et si suivant un nombre que j'aurais decide si je l'explose ou le deplace a x unites pour vérifier. comment calculer le nombre d'entites dans un bloc.chercher tous les cercles, puis les arcs, puis les lignes ... et additionner ? merci, a+, Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
lecrabe Posté(e) le 27 novembre 2020 Posté(e) le 27 novembre 2020 Hello Voici une routine VLisp "Cnt_Into_Blk" (06/2016) du REGRETTE Patrick_35 qui te donne TOUTES les Entites dans TOUS les Blocs du DWG ... SVP si qq'un pouvait la modifier pour avoir une selection classique AutoCAD et non pas TOUT le DWG, cela serait pratique !? D'ailleurs j ai demande sur le forums US Lisp/VLisp Autodesk : https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/please-update-a-vlisp-routine-with-a-classic-acad-selection/td-p/9899151 Extraction de mon stock de 3001 routines ... LA SANTE, Bye, lecrabe ... Deja 58 jours de retraite ... PS: Le Ventrachoux du 42 aide le Nantais du 44 ! ;; ;; Routine: Cnt_Into_Blk by Patrick_35 ;; ;; Count entities inside ALL blocks of the DWG ;; (defun c:Cnt_Into_Blk (/ blo doc js lst n tbl) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for blo (vla-get-blocks doc) (or (wcmatch (vla-get-name blo) "`**,*|*") (eq (vla-get-isxref blo) :vlax-true) (progn (setq lst nil) (vlax-for ent blo (setq tbl (cons (vla-get-objectname ent) tbl)) ) (while tbl (setq n (length tbl) js (car tbl) tbl (vl-remove js tbl) lst (cons (cons (itoa (- n (length tbl))) js) lst) ) ) (princ (strcat "\nWe have into the block : " (vla-get-name blo))) (foreach n (vl-sort lst '(lambda (a B) (< (cdr a) (cdr B)))) (princ (strcat "\n" (substr " " 1 (- 5 (strlen (car n)))) (car n) " " (substr (cdr n) 5) ) ) ) ) ) ) (princ) ) Autodesk Expert Elite Team
zebulon_ Posté(e) le 27 novembre 2020 Posté(e) le 27 novembre 2020 Bonjour(defun c:ccbloc () (setq js (ssget '((0 . "INSERT")))) (if js (progn (setq I 0) (repeat (sslength js) (setq e (ssname js I)) (setq I (1+ I)) (setq a (entget e)) (setq NBLOC (cdr (assoc 2 a))) (setq BL (tblobjname "BLOCK" NBLOC)) (setq J 1) (princ (strcat "\nBloc : " NBLOC)) (while (setq BL (entnext BL)) (princ (strcat "\n" (itoa J) " : " (cdr (assoc 0 (entget BL))))) (setq J (1+ J)) ) ) ) (alert "rien sélectionné") ) (princ) ) amicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
PHILPHIL Posté(e) le 30 novembre 2020 Auteur Posté(e) le 30 novembre 2020 bonjour merci a vous si besoin j'en ai fait ca(correction j=0 ) ;;;------------------------------ ;;;COMPTE LES ENTITES DANS UN BLOC ;;;------------------------------ (defun c:COMPTE_ENTITE_DANS_BLOC () (setq js (ssget '((0 . "INSERT")))) (if js (progn (setq I 0) (repeat (sslength js) (setq e (ssname js I)) (setq I (1+ I)) (setq a (entget e)) (setq NBLOC (cdr (assoc 2 a))) (setq BL (tblobjname "BLOCK" NBLOC)) (setq J 0) (while (setq BL (entnext BL)) (setq J (1+ J)) ) (princ (strcat "\nLE BLOC : " nbloc " CONTIENT : " (itoa j) " ENTITE(S) ")) ) ) (alert "rien sélectionné") ) (princ) ) ;;;---------------------------------------------------- ;;;DECOMPOSE UN BLOC SUIVANT NOMBRE ENTITE DANS UN BLOC ;;;---------------------------------------------------- (defun c:decompose_bloc_suivant_nombre_entite_dans_bloc () (setq nbentiteblocmini (atoi (getcfg "APPDATA/nbENTITEBLOCmini"))) (initget 4) (setq tmp (getint (strcat "\nENTRER LE NOMBRE D'ENTITE(S) MINIUM DANS LES BLOCS A DECOMPOSER <" (rtos nbentiteblocmini 2 0) ">: " ) ) ) (if tmp (setq nbentiteblocmini tmp) ) (setcfg "APPDATA/nbENTITEBLOCmini" (rtos nbentiteblocmini 2 0)) (prompt "\nSELECTIONNER LES BLOCS POUVANT ETRE DECOMPOSES :") (setq js (ssget '((0 . "INSERT")))) (if js (progn (setq i 0) (setq nbexp 0) (repeat (sslength js) (setq e (ssname js i)) (setq i (1+ i)) (setq a (entget e)) (setq nbloc (cdr (assoc 2 a))) (setq bl (tblobjname "BLOCK" nbloc)) (setq j 0) (while (setq bl (entnext bl)) (setq j (1+ j))) (if (<= j nbentiteblocmini) (progn (princ (strcat "\nLE BLOC : " nbloc " CONTIENT : " (itoa j) " ENTITE(S) [ DECOMPOSE ]")) (command "_explode" e) (setq nbexp (1+ nbexp))) (princ (strcat "\nLE BLOC : " nbloc " CONTIENT : " (itoa j) " ENTITE(S) [ NON DECOMPOSE ]")) ) ) (alert (strcat "\n" (itoa nbexp) " BLOCS ON ETE DECOMPOSE(S) SUR " (itoa (sslength js)) " SELECTIONNE(S) " ) ) ) (alert "rien sélectionné") ) (princ) ) a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
zebulon_ Posté(e) le 30 novembre 2020 Posté(e) le 30 novembre 2020 BonjourTu peux commencer à compter J à 0, ça t'évite de faire un 1- à la fin.AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
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