C3D-0102 · READ-ONLY: numbered list of every layer [ALL-LAYERS-NUM] done
Numbered list of every layer in the active drawing with entity counts split by model space, paper space and block definition, plus off/frozen/locked state. No changes.
C# payload
// READ-ONLY. Numbered list of EVERY layer with where its entities live: model space, paper space,
// or inside a block definition. No changes.
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
Log("drawing: " + Db.Filename);
var model = new Dictionary<string,int>();
var paper = new Dictionary<string,int>();
var blockd = new Dictionary<string,int>();
foreach (ObjectId btrId in bt) {
var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
bool isModel = btr.Name.ToUpper() == "*MODEL_SPACE";
bool isLayout = btr.IsLayout;
foreach (ObjectId id in btr) {
Autodesk.AutoCAD.DatabaseServices.DBObject o;
try { o = Tx.GetObject(id, OpenMode.ForRead); } catch { continue; }
var ent = o as Autodesk.AutoCAD.DatabaseServices.Entity;
if (ent == null) continue;
string lay; try { lay = ent.Layer; } catch { continue; }
Dictionary<string,int> tgt = isModel ? model : (isLayout ? paper : blockd);
if (!tgt.ContainsKey(lay)) tgt[lay] = 0;
tgt[lay]++;
}
}
var names = new List<string>();
foreach (ObjectId lid in lt) {
var l = (LayerTableRecord)Tx.GetObject(lid, OpenMode.ForRead);
names.Add(l.Name);
}
names.Sort();
int i = 0;
foreach (var nm in names) {
i++;
var l = (LayerTableRecord)Tx.GetObject(lt[nm], OpenMode.ForRead);
int m = model.ContainsKey(nm) ? model[nm] : 0;
int p = paper.ContainsKey(nm) ? paper[nm] : 0;
int b = blockd.ContainsKey(nm) ? blockd[nm] : 0;
string state = (l.IsOff ? "OFF " : "") + (l.IsFrozen ? "FROZEN " : "") + (l.IsLocked ? "LOCKED " : "");
Log(String.Format("{0,3}. {1,-34} model={2,-5} paper={3,-4} blockdef={4,-4} {5}",
i, nm, m, p, b, state));
}
Log("");
Log("total layers: " + names.Count);
Result
Log
drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\ACAD-260612 - CSTORE WATER ABS 30.dwg 1. 0 model=19 paper=4 blockdef=195 2. ADDRESS_TEXT model=0 paper=0 blockdef=0 3. BLOCK_CERT model=0 paper=3 blockdef=0 4. BLOCK_CLOSURE model=0 paper=35 blockdef=0 5. BLOCK_LEGEND model=0 paper=1 blockdef=23 6. BLOCK_NORTH_ARROW model=0 paper=101 blockdef=0 7. BLOCK_SCALE model=0 paper=0 blockdef=37 8. BLOCK_TB2 model=0 paper=0 blockdef=46 9. BOUNDARY model=0 paper=4 blockdef=0 10. C-ANNO model=6 paper=0 blockdef=0 11. C-ANNO-TABL model=35 paper=0 blockdef=0 12. C-ANNO-TABL-TEXT model=87 paper=0 blockdef=0 13. C-ANNO-TABL-TITL model=8 paper=0 blockdef=0 14. C-ANNO-TABL-TTBL model=8 paper=0 blockdef=0 15. C-PROP-BNDY model=1 paper=0 blockdef=0 16. C-PROP-BRNG model=16 paper=0 blockdef=0 17. C-PROP-TEXT model=1 paper=0 blockdef=0 18. FIRE_HYDRANT model=4 paper=0 blockdef=0 19. FIRE_HYDRANT_VALVE model=3 paper=0 blockdef=0 20. HORIZONTAL_AND_VERTICAL_CONTROL_POINT model=1 paper=0 blockdef=0 21. HORIZONTAL_AND_VERTICAL_CONTROL_TEXT model=4 paper=0 blockdef=0 22. PROPERTY_LINE model=1 paper=0 blockdef=0 23. ROAD_EDGE_OF_PAVEMENT model=26 paper=0 blockdef=0 24. ROAD_RIGHT-OF-WAY model=4 paper=1 blockdef=0 25. SEWER_EASEMENT model=3 paper=0 blockdef=0 26. SEWER_EASEMENT POLY model=2 paper=0 blockdef=0 27. SEWER_EASEMENT_20 model=1 paper=0 blockdef=0 28. SEWER_EASEMENT_TEXT model=37 paper=0 blockdef=0 29. SEWER_LINE model=14 paper=0 blockdef=0 30. SEWER_LINE_TEXT model=28 paper=0 blockdef=0 31. SEWER_MANHOLE model=13 paper=0 blockdef=0 32. SEWER_MANHOLE_EXISTING model=1 paper=0 blockdef=0 33. SEWER_MANHOLE_TEXT model=26 paper=0 blockdef=0 34. SS-0-FRAME model=21 paper=0 blockdef=4 35. SS-BOUNDARY model=2 paper=0 blockdef=0 36. SS-ROAD-BUILDING model=1 paper=0 blockdef=0 37. SS-ROAD-CANOPY model=1 paper=0 blockdef=0 38. SS-ROAD-CL model=4 paper=0 blockdef=0 39. SS-ROAD-DUMPSTER model=1 paper=0 blockdef=0 40. SS-ROAD-SIDEWALK model=2 paper=0 blockdef=0 41. SS-ROAD-STRIPE model=40 paper=0 blockdef=0 42. SS-ROAD-TBC model=75 paper=0 blockdef=0 43. V-CTRL-LINE-SHOT model=0 paper=0 blockdef=0 44. V-CTRL-TEXT model=0 paper=0 blockdef=0 45. V-NODE-BNDY model=0 paper=0 blockdef=8 46. V-NODE-BORE model=0 paper=0 blockdef=1 47. V-NODE-POLE model=0 paper=0 blockdef=2 48. V-NODE-STRM model=0 paper=0 blockdef=14 49. V-NODE-TEXT model=0 paper=0 blockdef=94 50. V-NODE-TREE model=0 paper=0 blockdef=2 51. V-NODE-WATR model=0 paper=0 blockdef=26 52. WATER_LINE model=2 paper=0 blockdef=0 53. WATER_LINE_PTS model=25 paper=0 blockdef=50 54. WATER_LINE_TEXT model=6 paper=0 blockdef=0 55. WATER_VALVE model=5 paper=0 blockdef=0 56. WATER_VAULT model=4 paper=0 blockdef=0 total layers: 56
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.