C3D-0104 · READ-ONLY: which blocks hold the V-NODE geometry and where they are inserted [VNODE-HOLDERS] done
Lists every block definition containing entities on a V-NODE layer, how many times that block is inserted, and the layer and owner of each insert, to explain why V-NODE layers show zero model-space entities while the symbols are visible. No changes.
C# payload
// READ-ONLY. Which block definitions hold the V-NODE-* geometry, and where are those blocks
// actually inserted? Nothing is modified.
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
Log("drawing: " + Db.Filename);
// btr name -> layer -> count, for V-NODE layers only
var holders = new Dictionary<string, Dictionary<string,int>>();
foreach (ObjectId btrId in bt) {
var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
if (btr.IsLayout) continue;
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; }
if (!lay.ToUpper().StartsWith("V-NODE")) continue;
if (!holders.ContainsKey(btr.Name)) holders[btr.Name] = new Dictionary<string,int>();
if (!holders[btr.Name].ContainsKey(lay)) holders[btr.Name][lay] = 0;
holders[btr.Name][lay]++;
}
}
Log("=== block definitions containing V-NODE-* geometry ===");
foreach (var kv in holders) {
var parts = new List<string>();
foreach (var l in kv.Value) parts.Add(l.Key + ":" + l.Value);
var btr = (BlockTableRecord)Tx.GetObject(bt[kv.Key], OpenMode.ForRead);
var refs = btr.GetBlockReferenceIds(true, true);
Log(String.Format(" {0,-16} [{1}] inserted {2} time(s)", kv.Key, String.Join(" ", parts), refs.Count));
int shown = 0;
foreach (ObjectId rid in refs) {
if (shown++ >= 4) break;
var br = Tx.GetObject(rid, OpenMode.ForRead) as BlockReference;
if (br == null) continue;
string owner = "?";
try {
var ownerBtr = (BlockTableRecord)Tx.GetObject(br.OwnerId, OpenMode.ForRead);
owner = ownerBtr.Name;
} catch { }
Log(String.Format(" ref [{0}] on layer {1} in {2}", br.Handle, br.Layer, owner));
}
}
Log("");
Log("block defs holding V-NODE geometry: " + holders.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
=== block definitions containing V-NODE-* geometry ===
*U16 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [180A] on layer 0 in *Model_Space
*U17 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [181B] on layer 0 in *Model_Space
*U18 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1829] on layer 0 in *Model_Space
*U19 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [182F] on layer 0 in *Model_Space
*U20 [V-NODE-STRM:1] inserted 1 time(s)
ref [1835] on layer SEWER_MANHOLE in *Model_Space
*U21 [V-NODE-TEXT:2] inserted 0 time(s)
*U22 [V-NODE-STRM:1] inserted 1 time(s)
ref [184D] on layer SEWER_MANHOLE in *Model_Space
*U23 [V-NODE-STRM:1] inserted 1 time(s)
ref [1852] on layer SEWER_MANHOLE in *Model_Space
*U24 [V-NODE-TEXT:2] inserted 0 time(s)
*U25 [V-NODE-STRM:1] inserted 1 time(s)
ref [185F] on layer SEWER_MANHOLE in *Model_Space
*U26 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1864] on layer 0 in *Model_Space
*U27 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [186A] on layer 0 in *Model_Space
*U28 [V-NODE-WATR:1 V-NODE-TEXT:2] inserted 1 time(s)
ref [1870] on layer 0 in *Model_Space
*U29 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1877] on layer 0 in *Model_Space
*U30 [V-NODE-STRM:1] inserted 1 time(s)
ref [187D] on layer SEWER_MANHOLE in *Model_Space
*U31 [V-NODE-STRM:1] inserted 1 time(s)
ref [1882] on layer SEWER_MANHOLE in *Model_Space
*U32 [V-NODE-STRM:1] inserted 1 time(s)
ref [1887] on layer SEWER_MANHOLE in *Model_Space
*U33 [V-NODE-STRM:1] inserted 1 time(s)
ref [188C] on layer SEWER_MANHOLE in *Model_Space
*U34 [V-NODE-STRM:1] inserted 1 time(s)
ref [1891] on layer SEWER_MANHOLE in *Model_Space
*U35 [V-NODE-STRM:1] inserted 1 time(s)
ref [1896] on layer SEWER_MANHOLE in *Model_Space
*U36 [V-NODE-STRM:1] inserted 1 time(s)
ref [189B] on layer SEWER_MANHOLE in *Model_Space
*U37 [V-NODE-STRM:1] inserted 1 time(s)
ref [18A0] on layer SEWER_MANHOLE_EXISTING in *Model_Space
*U38 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [18A6] on layer 0 in *Model_Space
*U39 [V-NODE-TEXT:3] inserted 0 time(s)
*U40 [V-NODE-WATR:1] inserted 1 time(s)
ref [18B5] on layer FIRE_HYDRANT in *Model_Space
*U41 [V-NODE-WATR:1] inserted 1 time(s)
ref [18C8] on layer FIRE_HYDRANT_VALVE in *Model_Space
*U42 [V-NODE-POLE:1] inserted 1 time(s)
ref [18D7] on layer 0 in *Model_Space
*U43 [V-NODE-STRM:1] inserted 1 time(s)
ref [18E7] on layer SEWER_MANHOLE in *Model_Space
*U44 [V-NODE-TEXT:2] inserted 0 time(s)
*U45 [V-NODE-POLE:1] inserted 1 time(s)
ref [18F4] on layer 0 in *Model_Space
*U46 [V-NODE-WATR:1] inserted 1 time(s)
ref [18F9] on layer WATER_VALVE in *Model_Space
*U47 [V-NODE-STRM:1] inserted 1 time(s)
ref [18FF] on layer SEWER_MANHOLE in *Model_Space
*U48 [V-NODE-TEXT:2] inserted 0 time(s)
*U49 [V-NODE-TEXT:2] inserted 0 time(s)
*U50 [V-NODE-TEXT:2] inserted 0 time(s)
*U51 [V-NODE-TEXT:2] inserted 0 time(s)
*U52 [V-NODE-TEXT:3] inserted 0 time(s)
*U53 [V-NODE-TEXT:3] inserted 0 time(s)
*U54 [V-NODE-TEXT:2] inserted 0 time(s)
*U55 [V-NODE-TEXT:3] inserted 0 time(s)
*U56 [V-NODE-WATR:1] inserted 1 time(s)
ref [1947] on layer WATER_VALVE in *Model_Space
*U57 [V-NODE-WATR:1] inserted 1 time(s)
ref [194C] on layer FIRE_HYDRANT in *Model_Space
*U58 [V-NODE-TEXT:2] inserted 0 time(s)
*U59 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1959] on layer 0 in *Model_Space
*U60 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 0 time(s)
*U61 [V-NODE-WATR:1] inserted 1 time(s)
ref [1965] on layer WATER_VALVE in *Model_Space
*U62 [V-NODE-WATR:1] inserted 1 time(s)
ref [196A] on layer WATER_VALVE in *Model_Space
*U63 [V-NODE-TEXT:2] inserted 0 time(s)
*U64 [V-NODE-TEXT:2] inserted 0 time(s)
*U65 [V-NODE-TEXT:2] inserted 0 time(s)
*U66 [V-NODE-TEXT:2] inserted 0 time(s)
*U67 [V-NODE-TEXT:2] inserted 0 time(s)
*U68 [V-NODE-TEXT:2] inserted 0 time(s)
*U69 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 0 time(s)
*U70 [V-NODE-TREE:1 V-NODE-TEXT:3] inserted 0 time(s)
*U71 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1A43] on layer 0 in *Model_Space
*U72 [V-NODE-WATR:1] inserted 1 time(s)
ref [1A49] on layer FIRE_HYDRANT in *Model_Space
*U73 [V-NODE-TEXT:2] inserted 0 time(s)
*U74 [V-NODE-WATR:1] inserted 1 time(s)
ref [1A56] on layer FIRE_HYDRANT_VALVE in *Model_Space
*U75 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 0 time(s)
*U76 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 0 time(s)
*U77 [V-NODE-TREE:1 V-NODE-TEXT:3] inserted 0 time(s)
*U78 [V-NODE-WATR:1 V-NODE-TEXT:1] inserted 0 time(s)
*U79 [V-NODE-TEXT:2] inserted 0 time(s)
*U80 [V-NODE-WATR:1] inserted 1 time(s)
ref [1A7D] on layer FIRE_HYDRANT in *Model_Space
*U81 [V-NODE-WATR:1] inserted 1 time(s)
ref [1A82] on layer FIRE_HYDRANT_VALVE in *Model_Space
*U82 [V-NODE-WATR:1] inserted 1 time(s)
ref [1A87] on layer WATER_VALVE in *Model_Space
*U83 [V-NODE-TEXT:3] inserted 0 time(s)
*U84 [V-NODE-TEXT:3] inserted 0 time(s)
*U85 [V-NODE-WATR:1 V-NODE-TEXT:2] inserted 1 time(s)
ref [1A9E] on layer SEWER_EASEMENT_TEXT in *Model_Space
*U86 [V-NODE-TEXT:3] inserted 0 time(s)
*U87 [V-NODE-TEXT:3] inserted 0 time(s)
*U88 [V-NODE-TEXT:3] inserted 0 time(s)
*U89 [V-NODE-TEXT:2] inserted 0 time(s)
*U90 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1AC8] on layer 0 in *Model_Space
*U91 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1ACE] on layer 0 in *Model_Space
*U92 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1AD4] on layer 0 in *Model_Space
*U93 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1ADA] on layer 0 in *Model_Space
*U94 [V-NODE-BNDY:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1AE0] on layer 0 in *Model_Space
*U95 [V-NODE-BORE:1 V-NODE-TEXT:1] inserted 1 time(s)
ref [1AE6] on layer HORIZONTAL_AND_VERTICAL_CONTROL_POINT in *Model_Space
block defs holding V-NODE geometry: 80Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.