← Inbox

C3D-260612-PTLAYERS · Point layers audit done

Read-only: points per layer, descriptions on each layer, any description split across multiple layers, and the point groups.

Script file
C3D-260612-PTLAYERS.cs
Target
260612 · model space
Author
claude
Approved
yes · reviewer
Timeout
180s

C# payload

// READ-ONLY: which LAYER each CogoPoint sits on, grouped by layer and by description,
// so mis-filed points are visible. Also lists the point groups and their layer overrides.
var cd = CivilDoc;
Log("Total points: " + (int)cd.CogoPoints.Count);

var byLayer = new Dictionary<string,int>();
var layerDesc = new Dictionary<string, Dictionary<string,int>>();
var descLayer = new Dictionary<string, Dictionary<string,int>>();

foreach (ObjectId id in cd.CogoPoints) {
    var cp = (CogoPoint)Tx.GetObject(id, OpenMode.ForRead);
    string lay = cp.Layer ?? "";
    string desc = (cp.RawDescription ?? "").Trim();
    if (desc.Length == 0) desc = "(blank)";

    byLayer[lay] = byLayer.ContainsKey(lay) ? byLayer[lay]+1 : 1;

    if (!layerDesc.ContainsKey(lay)) layerDesc[lay] = new Dictionary<string,int>();
    layerDesc[lay][desc] = layerDesc[lay].ContainsKey(desc) ? layerDesc[lay][desc]+1 : 1;

    if (!descLayer.ContainsKey(desc)) descLayer[desc] = new Dictionary<string,int>();
    descLayer[desc][lay] = descLayer[desc].ContainsKey(lay) ? descLayer[desc][lay]+1 : 1;
}

Log("=== POINTS PER LAYER ===");
foreach (var kv in byLayer) Log("  " + kv.Value.ToString().PadLeft(4) + "  '" + kv.Key + "'");

Log("=== DESCRIPTIONS ON EACH LAYER ===");
foreach (var kv in layerDesc) {
    Log("  layer '" + kv.Key + "':");
    foreach (var d in kv.Value) Log("      " + d.Value.ToString().PadLeft(4) + "  " + d.Key);
}

Log("=== DESCRIPTIONS SPLIT ACROSS MORE THAN ONE LAYER ===");
int split = 0;
foreach (var kv in descLayer) {
    if (kv.Value.Count < 2) continue;
    split++;
    var parts = new List<string>();
    foreach (var l in kv.Value) parts.Add(l.Value + " on '" + l.Key + "'");
    Log("  " + kv.Key + "  ->  " + string.Join(", ", parts));
}
if (split == 0) Log("  (none - every description is on a single layer)");

Log("=== POINT GROUPS ===");
foreach (ObjectId id in cd.PointGroups) {
    var pg = Tx.GetObject(id, OpenMode.ForRead) as PointGroup;
    if (pg == null) continue;
    uint[] nums; try { nums = pg.GetPointNumbers(); } catch { nums = new uint[0]; }
    Log("  '" + pg.Name + "'  points=" + nums.Length);
}

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

Log

Total points: 133
=== POINTS PER LAYER ===
    61  '0'
    57  'SS-FRZ'
    11  'V-STRM-TEXT'
     4  'SS-GREASE'
=== DESCRIPTIONS ON EACH LAYER ===
  layer '0':
         2  40EASEMENT
         1  SSMH MD 21.95
         1  SSMH MD 13.96 WATER
         1  SSMH MD 10.3
         1  SSMH INV 12.65
         1  SSMH INV 10.28
         3  SSMH
         1  SSMH INV 12.22
         1  R\W
        29  TBC
         1  EP TBC
         1  TBC END
         1  GUTTER END TBC
         1  SSMH INV 9.45
         1  AC
         1  DI 18 METAL PIPE INV 3.73
         2  FH
         3  WV
         2  WATER VAULT
         1  2 IN RPZ BFP  COR
         1  6 IN PVC STUB
         1  2 IN  PVC LINE
         1  1 IN BLUE WATER LINE STUB
         1  (blank)
         1  1 IN BLUE WATER LINE AT BLDING
         1  WATER LINE TO BLDG
  layer 'SS-FRZ':
         7  EP
         7  WHITE LINE
         8  CL
         4  TURNING LANE
         8  YELLOW LINE
         1  START WHITE LINE TURN
         2  WHITE LINE TURNING LANE
         1  WHITE LINE END
         5  TBC
         1  WATER
         3  BOX COR
         6  VAULT COR
         3  2 IN RPZ BFP  COR
         1  WATER LINE  MARK FOR NEW LINE TO BLDG
  layer 'V-STRM-TEXT':
         3  GUTTER
         1  DI INV BOT 5.08 18 CON PIPE
         1  18 CON PIPEINV 6.1 TO TOP OF BOX
         1  24IN RIDGED PIPE INV TO 18 PIPE INV 5.3 BOT 11.1
         1  24IN RIDGED INV 9.42 WITH SILT
         1  DI 18 CON PIPE INV 4.73
         1  DI 18 METAL PIPE INV 3.95
         1  DI 18 PIPE INV 3.4
         1  DI 2FT ROUND INV 10.11
  layer 'SS-GREASE':
         1  GREASE TRAP 6 PVC 6.52 INV 7.77
         1  GREASE TRAP ASPHALT OVER
         2  GREASE TRAP
=== DESCRIPTIONS SPLIT ACROSS MORE THAN ONE LAYER ===
  TBC  ->  29 on '0', 5 on 'SS-FRZ'
  2 IN RPZ BFP  COR  ->  1 on '0', 3 on 'SS-FRZ'
=== POINT GROUPS ===
  '2000'  points=133
  '_All Points'  points=133
  'TBC'  points=37

Notes

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

No notes yet.