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.
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
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.