Aller au contenu

NOMBRE D'ENTITE DANS UN BLOC


PHILPHIL
 Partager

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 2019 sous windows 10 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 2019 sous windows 10 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
 Partager

×
×
  • Créer...