← Inbox

C3D-0297 · 260612 C-Store H2O: thaw the water layers in the 22X17 viewport done

The 22X17 viewport still carries the sewer sheets VP-freeze list, which hides WATER_LINE, WATER_LINE_TEXT, WATER_VALVE, WATER_VAULT, FIRE_HYDRANT and FIRE_HYDRANT_VALVE - including every label just placed. Thaws those six in the sheet viewport only; 0, C-PROP-LINE-TEXT and all SEWER_* stay frozen as the user set them. Verifies the remaining frozen list on read-back.

Script file
C3D-0297.cs
Target
260612-C-Store Sewer As-Built 60 H2O.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
60s

C# payload

// 22X17 is now the WATER as-built sheet, but its viewport still carries the sewer sheet's
// VP-freeze list, which freezes every water layer - the new labels cannot be seen. Thaw the
// water layers in that viewport; leave 0, C-PROP-LINE-TEXT and all SEWER_* frozen as the user
// set them. Reversible (VP freeze only, no layer state touched globally).
string[] THAW = { "WATER_LINE", "WATER_LINE_TEXT", "WATER_VALVE", "WATER_VAULT",
                  "FIRE_HYDRANT", "FIRE_HYDRANT_VALVE" };
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
foreach (ObjectId btrId in bt) {
    var rec = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
    if (!rec.IsLayout) continue;
    var lay = (Layout)Tx.GetObject(rec.LayoutId, OpenMode.ForRead);
    if (lay.LayoutName != "22X17") continue;
    foreach (ObjectId id in rec) {
        var vp = Tx.GetObject(id, OpenMode.ForRead) as Viewport;
        if (vp == null || vp.Number == 1) continue;
        var w = (Viewport)Tx.GetObject(id, OpenMode.ForWrite);
        var ids = new ObjectIdCollection();
        foreach (var nm in THAW) if (lt.Has(nm)) ids.Add(lt[nm]);
        w.ThawLayersInViewport(ids.Cast<ObjectId>().GetEnumerator());
        // verify by re-reading the frozen set
        var back = (Viewport)Tx.GetObject(id, OpenMode.ForRead);
        var still = new List<string>();
        foreach (ObjectId lid in back.GetFrozenLayers()) {
            var ltr = (LayerTableRecord)Tx.GetObject(lid, OpenMode.ForRead);
            still.Add(ltr.Name);
        }
        still.Sort();
        Log("VP#" + back.Number + " frozen now (" + still.Count + "): " + string.Join(", ", still));
        bool anyWater = false;
        foreach (var nm in THAW) if (still.Contains(nm)) anyWater = true;
        Log("water layers visible in the sheet viewport: " + (anyWater ? "NO - STILL FROZEN" : "YES (verified)"));
    }
}
Ed.Regen();

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\260612-C-Store Sewer As-Built 60 H2O.dwg
Message
Executed C3D-0297 (0 entities touched).
Entities
Duration
344 ms
Civil 3D
25.0.0.0

Log

VP#2 frozen now (17): 0, C-PROP-LINE-TEXT, SEWER_EASEMENT 1 ORNAGE, SEWER_EASEMENT 1 YELLOW, SEWER_EASEMENT E2, SEWER_EASEMENT RED, SEWER_END_OF_LINE, SEWER_FORCE_MAIN_EXISTING_TEXT, SEWER_FORCE_MAIN_TEXT, SEWER_LINE E2, SEWER_LINE_TEXT, SEWER_LINE_TEXT E1, SEWER_LINE_TEXT E2, SEWER_MANHOLE E2, SEWER_MANHOLE_TEXT E1, SEWER_MANHOLE_TEXT E2, WATER_LINE_PTS
water layers visible in the sheet viewport: YES (verified)

Notes

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

No notes yet.