← Inbox

C3D-PDFFREEZE · Freeze unneeded PDF layers (reversible) done

Freezes contours, grading, gravel, power, title block and hatch-pattern PDF layers. Same keep/drop split as the strip, but REVERSIBLE - thaw to bring anything back. Nothing is erased.

Script file
C3D-PDFFREEZE.cs
Target
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\CSTORE WATER ABS-260612_SHEET.dwg · model space
Author
claude
Approved
yes · sanjay (batch-approved: HCWA migration)
Timeout
60s

C# payload

// FREEZE (not erase) the PDF layers that aren't needed: contours, grading, gravel, power,
// title block, hatch patterns, sheet furniture. Same keep/drop split as the strip ticket, but
// REVERSIBLE - thaw any layer to bring it back.
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);

string[] keep = {
    "SSWR","SEWER","SS-","PIPE-SS", "WATR","WATER","WTR", "HYDR","FH",
    "ESMT","EASEMENT", "BNDY","BOUND","PROP","PARCEL","LOT",
    "ROAD","CURB","PAVE","EOP","RW","R-W","SIDEWLK","SIDEWALK","STRIPE","MRKG",
    "BLDG","BUILDING", "TEXT","ANNO","LABEL", "STRM","STORM",
};
string[] drop = {
    "CONTOUR","PGRADE","GRADE","TBORDER","TITLE","T-BD","SEAL","GRAPHIC_SCALE","LOGO",
    "-PATT","HATCH","VIEWPORT","DEFPOINTS","NORTH","GRAVEL","POWR","POWER","RIVR",
};
bool Keep(string lay) {
    var u = lay.ToUpperInvariant();
    foreach (var d in drop) if (u.Contains(d)) return false;
    foreach (var k in keep) if (u.Contains(k)) return true;
    return false;
}

int froze = 0, kept = 0, skipped = 0;
var frozenNames = new List<string>();
foreach (ObjectId id in lt) {
    var l = (LayerTableRecord)Tx.GetObject(id, OpenMode.ForRead);
    if (!l.Name.ToUpperInvariant().StartsWith("PDF_")) continue;
    if (l.Name == "PDF_IMPORT_ASBUILT") { skipped++; continue; }   // the block ref itself
    if (Keep(l.Name)) { kept++; continue; }
    if (l.IsFrozen) { skipped++; continue; }
    if (l.ObjectId == Db.Clayer) { Log($"  '{l.Name}' is CURRENT layer - cannot freeze, skipping"); skipped++; continue; }
    var w = (LayerTableRecord)Tx.GetObject(id, OpenMode.ForWrite);
    w.IsFrozen = true;
    var chk = (LayerTableRecord)Tx.GetObject(id, OpenMode.ForRead);
    if (!chk.IsFrozen) { Log($"  FAILED to freeze '{l.Name}'"); continue; }
    froze++; frozenNames.Add(l.Name);
}
Log($"FROZEN {froze} PDF layers (kept {kept} visible, skipped {skipped}) (verified).");
Log("--- frozen ---");
foreach (var n in frozenNames.OrderBy(x => x)) Log("   " + n);
Log("REVERSIBLE: thaw any of these in the Layer Properties Manager to bring the geometry back.");

Result

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

Log

FROZEN 42 PDF layers (kept 34 visible, skipped 1) (verified).
--- frozen ---
   PDF_0-ALIGN-SDL2-T
   PDF_0-PIPE-EX SS
   PDF_0-PIPE-STM A
   PDF_0-PIPE-STM B
   PDF_0-PIPE-STM C
   PDF_2015_Flood_Map_DFIRM
   PDF_ae_title-36x24$SEAL
   PDF_ae_title-36x24$SEAL2
   PDF_ae_title-36x24$T-BD-COPY
   PDF_ae_title-36x24$T-BD-INFO1
   PDF_ae_title-36x24$T-BD-INFO2
   PDF_ae_title-36x24$T-BD-LINE
   PDF_ae_title-36x24$T-BD-LOGO
   PDF_ae_title-36x24$T-BD-PROJ
   PDF_ae_title-36x24$T-BD-PROJ2
   PDF_ae_title-36x24$TBORDER
   PDF_ae_title-36x24$TITLE
   PDF_C-CONC
   PDF_C-DEMO
   PDF_C-SIGNS
   PDF_C-SSWR-PIPE-PATT
   PDF_C-SSWR-STRC-PATT
   PDF_E CONCRETE
   PDF_E EDGE PVMT
   PDF_E FENCE
   PDF_E GRAVEL
   PDF_E IPF-SET
   PDF_E POWER
   PDF_E WALL
   PDF_GRAPHIC_SCALE
   PDF_INDEX_CONTOURS
   PDF_INTER_CONTOURS
   PDF_Level 3
   PDF_NOTES
   PDF_P-Setbacks
   PDF_PGRADE
   PDF_REVISIONS
   PDF_SWM
   PDF_SWM-TXT
   PDF_TXT200
   PDF_V-POWR-OVHD
   PDF_V-RIVR-EDGE
REVERSIBLE: thaw any of these in the Layer Properties Manager to bring the geometry back.

Notes

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