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.
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
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.