1+ #Many thanks Cyril-Pop
2+ import clr
3+ import sys
4+ import System
5+ pf_path = System .Environment .GetFolderPath (System .Environment .SpecialFolder .ProgramFilesX86 )
6+ sys .path .append (pf_path + '\\ IronPython 2.7\\ Lib' )
7+ import os
8+ import math
9+ clr .AddReference ('acmgd' )
10+ clr .AddReference ('acdbmgd' )
11+ clr .AddReference ('accoremgd' )
12+ # Import references from AutoCAD
13+ from Autodesk .AutoCAD .Runtime import *
14+ from Autodesk .AutoCAD .ApplicationServices import *
15+ from Autodesk .AutoCAD .EditorInput import *
16+ from Autodesk .AutoCAD .DatabaseServices import *
17+ from Autodesk .AutoCAD .Geometry import *
18+ doc = Application .DocumentManager .MdiActiveDocument
19+ ed = doc .Editor
20+ db = doc .Database
21+ # Write Code Below
22+ all_blkName = []
23+ with doc .LockDocument ():
24+ with doc .Database as db :
25+ with db .TransactionManager .StartTransaction () as t :
26+ bt = t .GetObject (db .BlockTableId ,OpenMode .ForRead )
27+ btr = t .GetObject (bt [BlockTableRecord .ModelSpace ],OpenMode .ForRead )
28+ for objectid in btr :
29+ blkRef = t .GetObject (objectid , OpenMode .ForRead )
30+ if isinstance (blkRef , BlockReference ):
31+ if blkRef .IsDynamicBlock :
32+ block = t .GetObject (blkRef .DynamicBlockTableRecord , OpenMode .ForRead )
33+ all_blkName .append (block .Name )
34+ else :
35+ all_blkName .append (blkRef .Name )
36+ resultcount = ["{} - total:{}" .format (x , all_blkName .count (x )) for x in set (all_blkName )]
37+ print ("\n " .join (resultcount ))
38+ t .Commit ()
0 commit comments