← Inbox

C3D-0450 · Full drawing layer/site oddity scan (read-only) done

Scan: layers off/frozen/non-plot; all sites + parcels + their layers; per-viewport VP-frozen layer sets on every layout; xrefs. To surface anything that would hide/print-drop calls.

Script file
C3D-0450.cs
Target
260711 - 281 Maranatha Trail.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
60s

C# payload


var nameById=new System.Collections.Generic.Dictionary<ObjectId,string>();
var lt=(LayerTable)Tx.GetObject(Db.LayerTableId,OpenMode.ForRead);
foreach (ObjectId id in lt){ var lr=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead); nameById[id]=lr.Name; }

// A) layers off or non-plot (would silently drop from print)
Log("=== LAYERS OFF or NON-PLOT ===");
foreach (ObjectId id in lt){
  var lr=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead);
  if(lr.IsOff||lr.IsFrozen||!lr.IsPlottable)
     Log("  "+lr.Name+"  off="+lr.IsOff+" frozen="+lr.IsFrozen+" plot="+lr.IsPlottable);
}

// B) SITES and parcels
Log("=== SITES / PARCELS ===");
var cd=CivilDoc;
foreach (ObjectId sidId in cd.GetSiteIds()){
  var site=(Autodesk.Civil.DatabaseServices.Site)Tx.GetObject(sidId,OpenMode.ForRead);
  Log("SITE: '"+site.Name+"'");
  try{ foreach(ObjectId pid in site.GetParcelIds()){
     var pc=(Autodesk.Civil.DatabaseServices.Parcel)Tx.GetObject(pid,OpenMode.ForRead);
     Log("   PARCEL: '"+pc.Name+"' layer="+pc.Layer+" area="+pc.Area.ToString("F0"));
  }}catch(System.Exception ex){ Log("   (parcels: "+ex.Message+")"); }
}
// parcels not in a named site? list alignments/parcels count via document
Log("=== SITELESS check: total site count = "+cd.GetSiteIds().Count);

// C) VP-freeze per 11X17 viewport with parent/label layer pairing
var lm=(DBDictionary)Tx.GetObject(Db.LayoutDictionaryId,OpenMode.ForRead);
foreach (System.Collections.DictionaryEntry de in lm){
  string lname=(string)de.Key;
  var lay=(Layout)Tx.GetObject((ObjectId)de.Value,OpenMode.ForRead);
  var btr=(BlockTableRecord)Tx.GetObject(lay.BlockTableRecordId,OpenMode.ForRead);
  bool header=false;
  foreach (ObjectId eid in btr){
    var vp=Tx.GetObject(eid,OpenMode.ForRead) as Viewport;
    if(vp==null) continue;
    var frozen=vp.GetFrozenLayers();
    if(frozen.Count==0) continue;
    if(!header){ Log("=== LAYOUT '"+lname+"' VP-FROZEN ==="); header=true; }
    var names=new System.Collections.Generic.List<string>();
    foreach(ObjectId fid in frozen) names.Add(nameById.ContainsKey(fid)?nameById[fid]:"?" );
    names.Sort();
    Log("  VP: "+string.Join(", ",names));
  }
}

// D) xrefs
Log("=== XREFS ===");
var bt=(BlockTable)Tx.GetObject(Db.BlockTableId,OpenMode.ForRead);
foreach(ObjectId bid in bt){ var b=(BlockTableRecord)Tx.GetObject(bid,OpenMode.ForRead); if(b.IsFromExternalReference) Log("  XREF: "+b.Name+" path="+b.PathName); }

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260711 - 281 Maranatha Trail, Lawrenceville, GA 30045, USA\260711 - 281 Maranatha Trail R2.dwg
Message
Executed C3D-0450 (0 entities touched).
Entities
Duration
476 ms
Civil 3D
25.0.0.0

Log

=== LAYERS OFF or NON-PLOT ===
  Defpoints  off=False frozen=False plot=False
  C-ANNO-VFRM  off=False frozen=False plot=False
  C-ROAD-SECT-BUFR  off=False frozen=False plot=False
  SS-BOUNDARY 9 TEXT  off=False frozen=True plot=True
  0-FRAME  off=False frozen=True plot=True
  11  off=False frozen=True plot=True
  8  off=False frozen=True plot=True
  9  off=False frozen=True plot=True
  10  off=False frozen=True plot=True
=== SITES / PARCELS ===
SITE: '{DBBA330E-324D-4F34-97479ABEBDCF917D}|1'
SITE: '10'
   PARCEL: 'LOT 10' layer=C-PROP area=77044
SITE: 'sites'
SITE: '9'
   PARCEL: 'LOT 9' layer=C-PROP area=45680
SITE: '{DBBA330E-324D-4F34-97479ABEBDCF917D}'
   PARCEL: 'Property : 1' layer=A-BLDG area=122724
=== SITELESS check: total site count = 5
=== LAYOUT '09' VP-FROZEN ===
  VP: SS-BOUNDARY 11
  VP: Layer1, SS-BOUNDARY 11
=== LAYOUT '11X17' VP-FROZEN ===
  VP: SS-BOUNDARY 9, V-SITE-FNCE
  VP: 9, A-BLDG, SS-BOUNDARY 11
=== LAYOUT 'R4' VP-FROZEN ===
  VP: Layer1
=== XREFS ===

Notes

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

No notes yet.