← Inbox

C3D-0067 · READ-ONLY: current KEEP and C- filter membership [RESCAN-KEEP-C] done

Same re-derivation, printing the KEEP (used, non-PDF, non-C-) and C- lists in full; the PDF list was already captured. No changes.

Script file
C3D-0067.cs
Target
260612 · model space
Author
claude
Approved
yes · reviewer
Timeout
240s

C# payload

// READ-ONLY. Re-read the drawing so the three filters can be rebuilt from CURRENT state.
// Layers have changed since C3D-0045 (water/CL moves, user edits), so membership must be
// re-derived, not reused.
//
// Emits three lists:
//   KEEP : used, not PDF*, not C-*      -> "USED - NO PDF/C-"
//   CDASH: used, name starts C-         -> "USED C-"
//   PDF  : used, name starts PDF        -> the PDF filter
// Nothing is modified.
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);

var counts = new Dictionary<string,int>();
foreach (ObjectId btrId in bt) {
    var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
    if (!btr.IsLayout) continue;                       // model space + layouts only
    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 (!counts.ContainsKey(lay)) counts[lay] = 0;
        counts[lay]++;
    }
}

var keep = new List<string>(); var cdash = new List<string>(); var pdf = new List<string>();
foreach (ObjectId lid in lt) {
    var l = (LayerTableRecord)Tx.GetObject(lid, OpenMode.ForRead);
    string nm = l.Name;
    if (!counts.ContainsKey(nm) || counts[nm] == 0) continue;   // unused
    string u = nm.ToUpper();
    if (u.StartsWith("PDF")) pdf.Add(nm);
    else if (u.StartsWith("C-")) cdash.Add(nm);
    else keep.Add(nm);
}
keep.Sort(); cdash.Sort(); pdf.Sort();

Log("=== KEEP (used, no PDF/C-) : " + keep.Count + " ===");
foreach (var n in keep) Log("  " + n + "  n=" + counts[n]);
Log("");
Log("=== C- (used) : " + cdash.Count + " ===");
foreach (var n in cdash) Log("  " + n + "  n=" + counts[n]);
Log("");
Log("=== PDF (used) : " + pdf.Count + " ===  (list already captured in C3D-0066)");
Log("");
Log("totals: keep=" + keep.Count + " cdash=" + cdash.Count + " pdf=" + pdf.Count);

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\260612 - CSTORE WATER ABS 30.dwg
Message
Executed C3D-0067 (0 entities touched).
Entities
Duration
602 ms
Civil 3D
25.0.0.0

Log

=== KEEP (used, no PDF/C-) : 33 ===
  0  n=499
  BLOCK_CERT  n=17
  BLOCK_CLOSURE  n=35
  BLOCK_LEGEND  n=1
  BLOCK_NORTH_ARROW  n=101
  FIRE_HYDRANT  n=4
  PROPERTY_LINE  n=2
  ROAD_EDGE_OF_PAVEMENT  n=13
  ROAD_RIGHT-OF-WAY  n=5
  SEWER_EASEMENT  n=3
  SEWER_EASEMENT POLY  n=2
  SEWER_EASEMENT_20  n=1
  SEWER_EASEMENT_TEXT  n=29
  SEWER_LINE  n=14
  SEWER_LINE_TEXT  n=28
  SEWER_MANHOLE  n=13
  SEWER_MANHOLE_EXISTING  n=2
  SEWER_MANHOLE_TEXT  n=26
  SS-0-FRAME  n=18
  SS-BOUNDARY  n=5
  SS-ROAD-BUILDING  n=1
  SS-ROAD-CANOPY  n=1
  SS-ROAD-CL  n=4
  SS-ROAD-DUMPSTER  n=1
  SS-ROAD-GUARDRAIL  n=1
  SS-ROAD-SIDEWALK  n=2
  SS-ROAD-STRIPE  n=46
  SS-ROAD-TBC  n=77
  V-CTRL-LINE-SHOT  n=2
  V-CTRL-TEXT  n=2
  WATER_LINE  n=30
  WATER_VALVE  n=8
  WATER_VAULT  n=2

=== C- (used) : 6 ===
  C-ANNO  n=3
  C-ANNO-TABL-TTBL  n=5
  C-PROP  n=3
  C-PROP-LINE  n=1
  C-PROP-LINE-TEXT  n=8
  C-PROP-TABL  n=2

=== PDF (used) : 76 ===  (list already captured in C3D-0066)

totals: keep=33 cdash=6 pdf=76

Notes

What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.

No notes yet.