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
Page 1 sur 1
NOMBRE D'ENTITE DANS UN BLOC
#1
Posté 27 novembre 2020 - 10:58
Autodesk Architecture 2019 sous windows 10 64
24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
#2
Posté 27 novembre 2020 - 11:46
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.autod...on/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 !
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.autod...on/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
#3
Posté 27 novembre 2020 - 19:53
Bonjour
amicalement
Vincent
(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)
#4
Posté 30 novembre 2020 - 20:38
bonjour
merci a vous
si besoin j'en ai fait ca
(correction j=0 )
a+
Phil
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
24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
#5
Posté 30 novembre 2020 - 21:20
Bonjour
Tu peux commencer à compter J à 0, ça t'évite de faire un 1- à la fin.
Amicalement
Vincent
Tu peux commencer à compter J à 0, ça t'évite de faire un 1- à la fin.
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)
Partager ce sujet :
Page 1 sur 1