← Inbox

C3D-0058 · READ-ONLY: all water items and their layers [WATER-AUDIT] done

Lists every water-related CogoPoint (WATER/WV/FH/VALVE/METER/VAULT/BFP/RPZ/HYDRANT/BOL/TAP in the description) with point number, description and layer, plus a per-layer tally, and every entity sitting on a WATER* layer by type. No changes.

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

C# payload

// READ-ONLY. Every water-related item and the layer it is on.
//
// Two passes:
//   1) CogoPoints whose description mentions WATER / WV / FH / VALVE / METER / VAULT / BFP / RPZ
//      / HYDRANT / BOL, listed individually with point number, description and layer.
//   2) Every entity (any type) sitting on a layer whose name contains WATER, so linework and text
//      already on water layers is covered too.
// Nothing is modified.
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForRead);
Func<Func<string>, string> safe = f => { try { return f(); } catch (System.Exception ex) { return "<" + ex.GetType().Name + ">"; } };

string[] KEYS = new string[] { "WATER", "WV", "FH", "VALVE", "VAVLE", "METER", "VAULT",
                               "BFP", "RPZ", "HYDRANT", "BOL", "TAP" };

var ptRows = new List<string>();
var ptByLayer = new Dictionary<string,int>();
foreach (ObjectId id in ms) {
    CogoPoint cp = null;
    try { cp = Tx.GetObject(id, OpenMode.ForRead) as CogoPoint; } catch { continue; }
    if (cp == null) continue;

    string d = safe(() => (cp.RawDescription ?? "")).Trim();
    string u = " " + d.ToUpper() + " ";
    bool hit = false;
    foreach (string k in KEYS) {
        // word-ish match so "SW" does not catch on "WV" etc.
        if (u.IndexOf(" " + k + " ") >= 0 || u.IndexOf(k) >= 0 && k.Length > 2) { hit = true; break; }
    }
    if (!hit) continue;

    string lay = safe(() => cp.Layer);
    if (!ptByLayer.ContainsKey(lay)) ptByLayer[lay] = 0;
    ptByLayer[lay]++;
    ptRows.Add(String.Format("  pt {0,-6} {1,-42} {2}", safe(() => cp.PointNumber.ToString()), d, lay));
}
ptRows.Sort();
Log("=== WATER-RELATED POINTS (" + ptRows.Count + ") ===");
foreach (var r in ptRows) Log(r);
Log("");
Log("  -- by layer --");
foreach (var kv in ptByLayer) Log("     " + kv.Key + " : " + kv.Value);

// pass 2: anything on a WATER* layer
Log("");
Log("=== ENTITIES ON WATER* LAYERS ===");
var byLay = new Dictionary<string, Dictionary<string,int>>();
foreach (ObjectId id in ms) {
    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 = safe(() => ent.Layer);
    if (lay.ToUpper().IndexOf("WATER") < 0) continue;
    string tn = o.GetType().Name;
    if (!byLay.ContainsKey(lay)) byLay[lay] = new Dictionary<string,int>();
    if (!byLay[lay].ContainsKey(tn)) byLay[lay][tn] = 0;
    byLay[lay][tn]++;
}
var lays = new List<string>(byLay.Keys); lays.Sort();
foreach (var l in lays) {
    var parts = new List<string>();
    foreach (var kv in byLay[l]) parts.Add(kv.Key + ":" + kv.Value);
    Log("  " + l + "   [" + String.Join(" ", parts) + "]");
}

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-0058 (0 entities touched).
Entities
Duration
487 ms
Civil 3D
25.0.0.0

Log

=== WATER-RELATED POINTS (76) ===
  pt 1085   WATER                                      0
  pt 1115   FH                                         WATER_VALVE
  pt 1116   WV                                         WATER_VALVE
  pt 1117   WV                                         WATER_VALVE
  pt 1118   VAULT COR                                  0
  pt 1119   WATER VAULT                                0
  pt 1120   VAULT COR                                  0
  pt 1121   VAULT COR                                  0
  pt 1122   2 IN RPZ BFP  COR                          0
  pt 1123   2 IN RPZ BFP  COR                          0
  pt 1124   2 IN RPZ BFP  COR                          0
  pt 1125   2 IN RPZ BFP  COR                          0
  pt 1126   VAULT COR                                  0
  pt 1127   VAULT COR                                  0
  pt 1128   VAULT COR                                  0
  pt 1129   WATER VAULT                                0
  pt 1134   1 IN BLUE WATER LINE STUB                  0
  pt 1136   1 IN WATER LINE                            0
  pt 1137   WATER LINE TO BLDG                         0
  pt 1138   WATER LINE  MARK FOR NEW LINE TO BLDG      0
  pt 224    6 IN BOL                                   0
  pt 225    6 IN BOL                                   0
  pt 226    6 IN BOL                                   0
  pt 233    6 IN BOL                                   0
  pt 234    6 IN BOL                                   0
  pt 244    6 IN BOL                                   0
  pt 245    6 IN BOL                                   0
  pt 246    6 IN BOL                                   0
  pt 247    6 IN BOL                                   0
  pt 249    6 IN BOL                                   0
  pt 254    6 IN BOL                                   0
  pt 256    6 IN BOL                                   0
  pt 257    6 IN BOL                                   0
  pt 258    6 IN BOL                                   0
  pt 259    6 IN BOL                                   0
  pt 260    6 IN BOL                                   0
  pt 261    6 IN BOL                                   0
  pt 262    6 IN BOL                                   0
  pt 263    6 IN BOL                                   0
  pt 345    WATER LINE STUB                            0
  pt 356    TBC SW WATER TO BLDG                       0
  pt 393    ELEC POWERBMETER AND STUT OFF              0
  pt 406    WATER STUB                                 0
  pt 408    FH                                         WATER_VALVE
  pt 409    WV                                         WATER_VALVE
  pt 432    WATER LINE STUB                            0
  pt 440    MAIN VAVLE                                 0
  pt 441    CON PAD VAULT                              0
  pt 447    VAULT                                      0
  pt 448    VAULT                                      0
  pt 449    VAULT                                      0
  pt 450    VAULT                                      0
  pt 465    WV                                         WATER_VALVE
  pt 477    WATER LINE                                 0
  pt 481    WATER LINE                                 0
  pt 484    WATER LINE                                 0
  pt 487    WATER LINE                                 0
  pt 490    WATER LINE                                 0
  pt 493    WATER LINE                                 0
  pt 496    WATER LINE                                 0
  pt 499    WATER LINE                                 0
  pt 501    WV                                         WATER_VALVE
  pt 502    FH                                         WATER_VALVE
  pt 503    WATER LINE                                 0
  pt 507    WV                                         WATER_VALVE
  pt 508    WV STUB                                    0
  pt 509    WV                                         WATER_VALVE
  pt 511    WATER LINE                                 0
  pt 512    WATER LINE  AT CROSS WALK                  0
  pt 518    WATER LINE                                 0
  pt 528    WATER LINE                                 0
  pt 531    WATER LINE                                 0
  pt 533    WATER LINE   AT CROSS WALK                 0
  pt 537    FH                                         WATER_VALVE
  pt 538    WATER V STUB                               0
  pt 539    WV                                         WATER_VALVE

  -- by layer --
     0 : 64
     WATER_VALVE : 12

=== ENTITIES ON WATER* LAYERS ===
  WATER_VALVE   [CogoPoint:12]
  WATER_VAULT   [Polyline:2]

Notes

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

No notes yet.