← Inbox

C3D-INSP2403A · Inspect layouts+parcels for hero (read-only) done

List paper tabs (09/10/R4), per-viewport freezes, every parcel area (sf/ac), and hero/boundary/parcel layers. For heroing 1.6 AC on paper 10.

Script file
C3D-INSP2403A.cs
Target
active document · model space
Author
claude
Approved
yes · claude (read-only)
Timeout
60s

C# payload

// READ-ONLY: inspect the ACTIVE drawing for hero planning.
// - list layouts (paper tabs) + their viewports' frozen-layer isolation hints
// - list every Parcel with area (sf + acres) and its Site
// - list parcel-ish layers and hero layers
using System;
using System.Linq;
using System.Collections.Generic;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.Civil.ApplicationServices;
using Autodesk.Civil.DatabaseServices;

var db = Db;

Log($"ACTIVE: {System.IO.Path.GetFileName(Doc.Name)}");

// ---- layouts ----
using (var tr = db.TransactionManager.StartTransaction())
{
    var ld = (DBDictionary)tr.GetObject(db.LayoutDictionaryId, OpenMode.ForRead);
    Log("LAYOUTS (paper tabs):");
    foreach (DBDictionaryEntry e in ld)
    {
        if (string.Equals(e.Key, "Model", StringComparison.OrdinalIgnoreCase)) continue;
        var lay = (Layout)tr.GetObject(e.Value, OpenMode.ForRead);
        int vpCount = 0, vpWithFreezes = 0;
        var frozenSample = new List<string>();
        foreach (ObjectId vid in lay.GetViewports())
        {
            var vp = tr.GetObject(vid, OpenMode.ForRead) as Viewport;
            if (vp == null || vp.Number == 1) continue; // 1 = the paper itself
            vpCount++;
            var fl = vp.GetFrozenLayers();
            if (fl != null && fl.Count > 0)
            {
                vpWithFreezes++;
                if (frozenSample.Count == 0)
                    foreach (ObjectId lid in fl.Cast<ObjectId>().Take(6))
                        frozenSample.Add(((LayerTableRecord)tr.GetObject(lid, OpenMode.ForRead)).Name);
            }
        }
        Log($"  [{lay.LayoutName}] tabOrder={lay.TabOrder} viewports={vpCount} vpWithPerVPFreezes={vpWithFreezes}");
        if (frozenSample.Count > 0) Log($"      sampleFrozen: {string.Join(", ", frozenSample)}");
    }
    tr.Commit();
}

// ---- parcels ----
using (var tr = db.TransactionManager.StartTransaction())
{
    var cdoc = CivilDocument.GetCivilDocument(db);
    Log("PARCELS (by site):");
    foreach (ObjectId sid in cdoc.GetSiteIds())
    {
        var site = (Site)tr.GetObject(sid, OpenMode.ForRead);
        Log($"  SITE: {site.Name}");
        foreach (ObjectId pid in site.GetParcelIds())
        {
            var p = (Parcel)tr.GetObject(pid, OpenMode.ForRead);
            double sf = p.Area;
            Log($"    #{p.Number}  '{p.Name}'  area={sf:0.0} sf ({sf/43560.0:0.000} ac)  style='{p.StyleName}'");
        }
    }
    tr.Commit();
}

// ---- layer scan for hero / boundary / parcel layers ----
using (var tr = db.TransactionManager.StartTransaction())
{
    var lt = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead);
    var hits = new List<string>();
    foreach (ObjectId id in lt)
    {
        var l = (LayerTableRecord)tr.GetObject(id, OpenMode.ForRead);
        var n = l.Name;
        if (n.IndexOf("HERO", StringComparison.OrdinalIgnoreCase) >= 0
         || n.IndexOf("BOUNDARY", StringComparison.OrdinalIgnoreCase) >= 0
         || n.IndexOf("SS-", StringComparison.OrdinalIgnoreCase) >= 0
         || n.IndexOf("PARCEL", StringComparison.OrdinalIgnoreCase) >= 0)
            hits.Add($"{n}{(l.IsFrozen ? " [FROZEN]" : "")}{(l.IsOff ? " [OFF]" : "")}");
    }
    Log($"HERO/BOUNDARY/PARCEL LAYERS ({hits.Count}):");
    foreach (var h in hits.OrderBy(x=>x)) Log($"    {h}");
    tr.Commit();
}

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\251009 - 281 Maranatha Trail, Lawrenceville, GA 30045, USA\281 MARANATHA 2403\281 MARANTHA LOT 10.dwg
Message
Executed C3D-INSP2403A (0 entities touched).
Entities
Duration
388 ms
Civil 3D
25.0.0.0

Log

ACTIVE: 281 MARANTHA LOT 10.dwg
LAYOUTS (paper tabs):
  [09] tabOrder=2 viewports=2 vpWithPerVPFreezes=1
      sampleFrozen: Layer1
  [10] tabOrder=1 viewports=2 vpWithPerVPFreezes=1
      sampleFrozen: Layer1
  [R4] tabOrder=3 viewports=2 vpWithPerVPFreezes=1
      sampleFrozen: Layer1
PARCELS (by site):
  SITE: {DBBA330E-324D-4F34-97479ABEBDCF917D}
    #1  'Property : 1'  area=122724.1 sf (2.817 ac)  style='Property'
  SITE: {DBBA330E-324D-4F34-97479ABEBDCF917D}|1
  SITE: Site
    #1  'Property : 1'  area=53322.5 sf (1.224 ac)  style='Property'
    #2  'Property : 2'  area=69381.6 sf (1.593 ac)  style='Property'
HERO/BOUNDARY/PARCEL LAYERS (16):
    BOUNDARY
    BOUNDARY_FRAME
    BOUNDARY_PTS
    C-ROAD-MASS-LINE
    C-ROAD-MASS-LINE-FREE
    C-ROAD-MASS-LINE-N
    C-ROAD-MASS-LINE-OVER
    C-ROAD-MASS-VIEW
    C-ROAD-MASS-VIEW-GRID-MAJR
    C-ROAD-MASS-VIEW-GRID-MINR
    C-ROAD-MASS-VIEW-TEXT
    C-ROAD-MASS-VIEW-TITL
    C-ROAD-MASS-VIEW-TTLB
    SS-BOUNDARY_CYAN
    SS-BOUNDARY_R3 [FROZEN]
    SS-BOUNDARY_RED [FROZEN]

Notes

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

No notes yet.