← Inbox

C3D-HCWALAYERS · Create HCWA required layer set (exact names) done

Creates all 70 HCWA-required layers with names matching the HCWA CAD Layers table exactly (Rev 1.6). ADDITIVE ONLY - creates layers, moves no entities. Idempotent. Foundation for the layer migration tickets. Drawing currently has ZERO HCWA-compliant layer names.

Script file
C3D-HCWALAYERS.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 · reviewer
Timeout
60s

C# payload

// Create the HCWA required layer set with EXACT names per the HCWA CAD Layers table
// (Rev 1.6, Nov 1 2023). Additive only — creates layers, moves nothing. Idempotent.
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForWrite);

// name -> color. Grouped: sewer=green family, water=blue family, road=grey, boundary=white.
var layers = new (string name, short color)[] {
    // control (required: 2 GPS-tied pins)
    ("HORIZONTAL_AND_VERTICAL_CONTROL_POINT", 7),
    ("HORIZONTAL_AND_VERTICAL_CONTROL_TEXT", 7),
    // boundary / parcel
    ("PROJECT_BOUNDARY", 7), ("PROJECT_BOUNDARY_TEXT", 7),
    ("PROPERTY_LINE", 7),
    ("LAND_LOT_LINE", 7), ("LAND_LOT_LINE_TEXT", 7),
    ("LOT_NUMBER_TEXT", 7), ("ADDRESS_TEXT", 7),
    // road
    ("ROAD_EDGE_OF_PAVEMENT", 8), ("ROAD_RIGHT-OF-WAY", 8),
    ("ROAD_RIGHT-OF-WAY_TEXT", 8), ("ROAD_TEXT", 8),
    // sewer
    ("SEWER_LINE", 3), ("SEWER_LINE_TEXT", 3),
    ("SEWER_LINE_EXISTING", 3), ("SEWER_LINE_EXISTING_TEXT", 3),
    ("SEWER_MANHOLE", 3), ("SEWER_MANHOLE_TEXT", 3),
    ("SEWER_MANHOLE_EXISTING", 3), ("SEWER_MANHOLE_EXISTING_TEXT", 3),
    ("SEWER_TAP", 3), ("SEWER_TAP_TEXT", 3),
    ("SEWER_END_OF_LINE", 3), ("SEWER_END_OF_LINE_TEXT", 3),
    ("SEWER_FORCE_MAIN", 3), ("SEWER_FORCE_MAIN_TEXT", 3),
    ("SEWER_EASEMENT", 3), ("SEWER_EASEMENT_TEXT", 3),
    // water
    ("WATER_LINE", 5), ("WATER_LINE_TEXT", 5),
    ("WATER_LINE_EXISTING", 5), ("WATER_LINE_EXISTING_TEXT", 5),
    ("WATER_VALVE", 5), ("WATER_VALVE_TEXT", 5),
    ("WATER_VALVE_EXISTING", 5), ("WATER_VALVE_EXISTING_TEXT", 5),
    ("WATER_METER", 5), ("WATER_METER_TEXT", 5),
    ("WATER_VAULT", 5), ("WATER_VAULT_TEXT", 5),
    ("WATER_SERVICE", 5), ("WATER_SERVICE_TEXT", 5),
    ("WATER_END_CAP", 5), ("WATER_END_CAP_TEXT", 5),
    ("WATER_EASEMENT", 5), ("WATER_EASEMENT_TEXT", 5),
    // hydrants
    ("FIRE_HYDRANT", 1), ("FIRE_HYDRANT_TEXT", 1),
    ("FIRE_HYDRANT_EXISTING", 1), ("FIRE_HYDRANT_EXISTING_TEXT", 1),
    ("FIRE_HYDRANT_VALVE", 1), ("FIRE_HYDRANT_VALVE_TEXT", 1),
    ("FIRE_HYDRANT_VALVE_EXISTING", 1), ("FIRE_HYDRANT_VALVE_EXISTING_TEXT", 1),
    ("FIRE_HYDRANT_MANUFACTURER", 1), ("FIRE_HYDRANT_MANUFACTURED_YEAR", 1),
    ("FDC", 1),
    // easements / misc
    ("UTILITY_EASEMENT", 6), ("UTILITY_EASEMENT_TEXT", 6),
    ("UTILITY_EASEMENT_EXISTING", 6), ("UTILITY_EASEMENT_EXISTING_TEXT", 6),
    ("CASING", 4), ("CASING_TEXT", 4),
    ("PUMP_STATION", 4), ("PUMP_STATION_TEXT", 4),
    ("WATER_QUALITY_CRITICAL_AREA", 4), ("WETLAND_BOUNDARY", 4),
};

int made = 0, had = 0;
foreach (var (name, color) in layers) {
    if (lt.Has(name)) { had++; continue; }
    var rec = new LayerTableRecord {
        Name = name,
        Color = Autodesk.AutoCAD.Colors.Color.FromColorIndex(Autodesk.AutoCAD.Colors.ColorMethod.ByAci, color)
    };
    lt.Add(rec);
    Tx.AddNewlyCreatedDBObject(rec, true);
    made++;
}
// verify
int verified = 0;
foreach (var (name, _) in layers) if (lt.Has(name)) verified++;
Log($"HCWA layers created: {made}, already existed: {had}, verified present: {verified}/{layers.Length}");
Log("Additive only — no entities were moved. Layer names match the HCWA CAD Layers table exactly.");

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

Log

HCWA layers created: 68, already existed: 0, verified present: 68/68
Additive only — no entities were moved. Layer names match the HCWA CAD Layers table exactly.

Notes

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

No notes yet.