Aller au contenu

NOMBRE D'ENTITE DANS UN BLOC


PHILPHIL

Messages recommandés

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 ARCHICAD

on se retrouve avec des blocs par milliers qui sont UNIQUES

et possedant tres peu d’entités ( ligne, polyligne, cercle, arc ... ) dedans

je 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

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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)
)

 

amicalement

Vincent

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)

Lien vers le commentaire
Partager sur d’autres sites

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

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité