← Inbox

C3D-HCWALAYERS2 · Create HCWA as-built layer set v2 (48 layers) done

Same as C3D-HCWALAYERS, renamed to avoid the stale duplicate-id collision. Additive only, nothing existing touched.

Script file
C3D-HCWALAYERS2.cs
Target
SS_Outfall_260612_SHEET.dwg · model space
Author
claude
Approved
yes · reviewer
Timeout
60s

C# payload

// Create the HCWA as-built layer set (empty layers, exact names per the HCWA CAD Layers table).
// Additive only — no existing layer touched. Idempotent (skips layers that already exist).
// Colors: sewer=green(3), water=blue(5), hydrants=red(1), existing=8(gray), text=white(7),
// road=8, boundary/easement=6(magenta)/4(cyan), control=2(yellow).
using System;
using System.Collections.Generic;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Colors;

var db = Db;

// name -> color index
var layers = new (string name, short color)[]
{
    // base / required on every as-built
    ("HORIZONTAL_AND_VERTICAL_CONTROL_POINT", 2),
    ("HORIZONTAL_AND_VERTICAL_CONTROL_TEXT", 7),
    ("PROJECT_BOUNDARY", 6),
    ("PROJECT_BOUNDARY_TEXT", 7),
    ("PROPERTY_LINE", 6),
    ("LAND_LOT_LINE", 8),
    ("LAND_LOT_LINE_TEXT", 7),
    ("LOT_NUMBER_TEXT", 7),
    ("ADDRESS_TEXT", 7),
    ("ROAD_EDGE_OF_PAVEMENT", 8),
    ("ROAD_RIGHT-OF-WAY", 8),
    ("ROAD_RIGHT-OF-WAY_TEXT", 7),
    ("ROAD_TEXT", 7),

    // easements (40' easement points exist; type TBD so include all three)
    ("SEWER_EASEMENT", 4),
    ("SEWER_EASEMENT_TEXT", 7),
    ("WATER_EASEMENT", 4),
    ("WATER_EASEMENT_TEXT", 7),
    ("UTILITY_EASEMENT", 4),
    ("UTILITY_EASEMENT_TEXT", 7),

    // sewer
    ("SEWER_MANHOLE", 3),
    ("SEWER_MANHOLE_TEXT", 7),
    ("SEWER_MANHOLE_EXISTING", 8),
    ("SEWER_MANHOLE_EXISTING_TEXT", 7),
    ("SEWER_LINE", 3),
    ("SEWER_LINE_TEXT", 7),
    ("SEWER_LINE_EXISTING", 8),
    ("SEWER_LINE_EXISTING_TEXT", 7),
    ("SEWER_END_OF_LINE", 3),
    ("SEWER_END_OF_LINE_TEXT", 7),
    ("SEWER_TAP", 3),
    ("SEWER_TAP_TEXT", 7),

    // water
    ("FIRE_HYDRANT", 1),
    ("FIRE_HYDRANT_TEXT", 7),
    ("FIRE_HYDRANT_VALVE", 1),
    ("FIRE_HYDRANT_VALVE_TEXT", 7),
    ("WATER_VALVE", 5),
    ("WATER_VALVE_TEXT", 7),
    ("WATER_LINE", 5),
    ("WATER_LINE_TEXT", 7),
    ("WATER_SERVICE", 5),
    ("WATER_SERVICE_TEXT", 7),
    ("WATER_METER", 5),
    ("WATER_METER_TEXT", 7),
    ("WATER_VAULT", 5),
    ("WATER_VAULT_TEXT", 7),
    ("WATER_END_CAP", 5),
    ("WATER_END_CAP_TEXT", 7),
};

int added = 0, existed = 0;
using (var tr = db.TransactionManager.StartTransaction())
{
    var lt = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForWrite);
    foreach (var (name, color) in layers)
    {
        if (lt.Has(name)) { existed++; continue; }
        var ltr = new LayerTableRecord { Name = name };
        ltr.Color = Color.FromColorIndex(ColorMethod.ByAci, color);
        lt.Add(ltr);
        tr.AddNewlyCreatedDBObject(ltr, true);
        added++;
    }
    tr.Commit();
}
Log($"HCWA layers created: {added}, already existed: {existed}, total in set: {layers.Length}");

// verify
using (var tr = db.TransactionManager.StartTransaction())
{
    var lt = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead);
    int ok = 0;
    foreach (var (name, _) in layers) if (lt.Has(name)) ok++;
    Log($"VERIFY: {ok}/{layers.Length} HCWA layers present.");
    tr.Commit();
}
Log("DONE. All additive; no existing layers touched.");

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\SS_Outfall_260612_SHEET.dwg
Message
Executed C3D-HCWALAYERS2 (0 entities touched).
Entities
Duration
340 ms
Civil 3D
25.0.0.0

Log

HCWA layers created: 47, already existed: 0, total in set: 47
VERIFY: 47/47 HCWA layers present.
DONE. All additive; no existing layers touched.

Notes

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

No notes yet.