C3D-0106 · READ-ONLY: pre-delivery sanity check [SANITY-CHECK] done
Lists every layer still holding entities split by model, paper and block definition, and flags zero-length geometry, text under 0.5 height, and anything sitting more than 5000 feet outside the sewer extent. No changes.
C# payload
// READ-ONLY. Pre-delivery sanity check. Nothing is modified.
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
Log("drawing: " + Db.Filename);
var model = new Dictionary<string,int>();
var paper = new Dictionary<string,int>();
var blockd = new Dictionary<string,int>();
var types = new Dictionary<string,int>();
int zeroLen = 0, tinyText = 0, offSite = 0;
double minX = 1e18, maxX = -1e18, minY = 1e18, maxY = -1e18;
// site extent from the sewer lines, to spot strays
foreach (ObjectId id in (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForRead)) {
var ln = Tx.GetObject(id, OpenMode.ForRead) as Line;
if (ln == null) continue;
try { if (ln.Layer != "SEWER_LINE") continue; } catch { continue; }
foreach (var p in new Point3d[] { ln.StartPoint, ln.EndPoint }) {
if (p.X < minX) minX = p.X; if (p.X > maxX) maxX = p.X;
if (p.Y < minY) minY = p.Y; if (p.Y > maxY) maxY = p.Y;
}
}
Log(String.Format("sewer extent: X {0:F0}..{1:F0} Y {2:F0}..{3:F0}", minX, maxX, minY, maxY));
foreach (ObjectId btrId in bt) {
var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
bool isModel = btr.Name.ToUpper() == "*MODEL_SPACE";
foreach (ObjectId id in btr) {
Autodesk.AutoCAD.DatabaseServices.DBObject o;
try { o = Tx.GetObject(id, OpenMode.ForRead); } catch { continue; }
var ent = o as Autodesk.AutoCAD.DatabaseServices.Entity;
if (ent == null) continue;
string lay; try { lay = ent.Layer; } catch { continue; }
var tgt = isModel ? model : (btr.IsLayout ? paper : blockd);
if (!tgt.ContainsKey(lay)) tgt[lay] = 0;
tgt[lay]++;
string tn = o.GetType().Name;
if (!types.ContainsKey(tn)) types[tn] = 0;
types[tn]++;
if (!isModel) continue;
var pl = o as Polyline;
if (pl != null && pl.Length < 0.01) zeroLen++;
var ln2 = o as Line;
if (ln2 != null && ln2.Length < 0.01) zeroLen++;
var mt = o as MText;
if (mt != null && mt.TextHeight < 0.5) tinyText++;
// anything wildly outside the site
try {
var e = ent.GeometricExtents;
if (e.MinPoint.X < minX - 5000 || e.MaxPoint.X > maxX + 5000 ||
e.MinPoint.Y < minY - 5000 || e.MaxPoint.Y > maxY + 5000) {
offSite++;
if (offSite <= 10)
Log(String.Format(" OFF-SITE [{0}] {1} on {2} at {3:F0},{4:F0}",
o.Handle, tn, lay, e.MinPoint.X, e.MinPoint.Y));
}
} catch { }
}
}
Log("");
Log("=== layers holding anything ===");
var all = new List<string>();
foreach (ObjectId lid in lt) {
var l = (LayerTableRecord)Tx.GetObject(lid, OpenMode.ForRead);
all.Add(l.Name);
}
all.Sort();
int empty = 0;
foreach (var nm in all) {
int m = model.ContainsKey(nm) ? model[nm] : 0;
int p = paper.ContainsKey(nm) ? paper[nm] : 0;
int b = blockd.ContainsKey(nm) ? blockd[nm] : 0;
if (m + p + b == 0) { empty++; continue; }
var l = (LayerTableRecord)Tx.GetObject(lt[nm], OpenMode.ForRead);
Log(String.Format(" {0,-38} model={1,-5} paper={2,-4} blockdef={3,-4} {4}{5}",
nm, m, p, b, l.IsOff ? "OFF " : "", l.IsFrozen ? "FROZEN " : ""));
}
Log(" (empty layers: " + empty + ")");
Log("");
Log("=== flags ===");
Log(" zero-length lines/polylines in model: " + zeroLen);
Log(" MText under 0.5 height in model: " + tinyText);
Log(" entities >5000ft outside the site: " + offSite);
Log(" total layers: " + all.Count);
Result
Log
drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\260612 - CSTORE WATER ABS 30.dwg sewer extent: X 2296380..2297425 Y 1279598..1280096 OFF-SITE [9B38] Site on C-ANNO-TABL-TTBL at 0,0 OFF-SITE [11A08] Site on C-ANNO-TABL-TTBL at 0,0 OFF-SITE [11A33] Site on C-ANNO-TABL-TTBL at 0,0 OFF-SITE [1467D] Site on C-ANNO-TABL-TTBL at 0,0 OFF-SITE [165BD] Site on C-ANNO-TABL-TTBL at 0,0 === layers holding anything === 0 model=490 paper=4 blockdef=785 A-BLDG model=0 paper=0 blockdef=3 BLOCK_CERT model=0 paper=3 blockdef=0 BLOCK_CLOSURE model=0 paper=35 blockdef=11 BLOCK_LEGEND model=0 paper=1 blockdef=24 BLOCK_NORTH_ARROW model=0 paper=101 blockdef=101 BLOCK_SCALE model=0 paper=0 blockdef=80 BLOCK_TB2 model=0 paper=0 blockdef=526 BOUNDARY model=0 paper=4 blockdef=4 C-0-GNRL-NOTE-INDX model=0 paper=0 blockdef=1 C-ANNO model=3 paper=0 blockdef=25 C-ANNO-CERT-LINE model=0 paper=0 blockdef=1 C-ANNO-TABL-TTBL model=5 paper=0 blockdef=1 C-PROP model=3 paper=0 blockdef=0 C-PROP-LINE model=1 paper=0 blockdef=0 C-PROP-LINE-TEXT model=8 paper=0 blockdef=0 C-PROP-TABL model=2 paper=0 blockdef=0 Defpoints model=0 paper=0 blockdef=37 FENCE-CHAIN model=0 paper=0 blockdef=1 FIRE_HYDRANT model=4 paper=0 blockdef=41 FIRE_HYDRANT_VALVE model=3 paper=0 blockdef=0 G-NOTE model=0 paper=0 blockdef=114 G-TTLB-HALF model=0 paper=0 blockdef=5 G-TTLB-LIGH model=0 paper=0 blockdef=5 G-TTLB-THIN model=0 paper=0 blockdef=1 G-TTLB-TTF model=0 paper=0 blockdef=26 HORIZONTAL_AND_VERTICAL_CONTROL_POINT model=1 paper=0 blockdef=0 LS-BOULDER model=0 paper=0 blockdef=12 LS-EX. TREE model=0 paper=0 blockdef=150 PDF2_0-ALIGN-SDL2-T model=0 paper=0 blockdef=31 PDF2_0-PIPE-EX SS model=0 paper=0 blockdef=1 PDF2_0-PIPE-SS-A model=0 paper=0 blockdef=31 PDF2_0-PIPE-SS-A-T model=0 paper=0 blockdef=93 PDF2_0-PIPE-STM A model=0 paper=0 blockdef=32 PDF2_0-PIPE-STM B model=0 paper=0 blockdef=32 PDF2_0-PIPE-STM C model=0 paper=0 blockdef=42 PDF2_2015_Flood_Map_DFIRM model=0 paper=0 blockdef=3 PDF2_ae_title-36x24$SEAL model=0 paper=0 blockdef=37 PDF2_ae_title-36x24$SEAL2 model=0 paper=0 blockdef=59 PDF2_ae_title-36x24$T-BD-COPY model=0 paper=0 blockdef=469 PDF2_ae_title-36x24$T-BD-INFO1 model=0 paper=0 blockdef=88 PDF2_ae_title-36x24$T-BD-INFO2 model=0 paper=0 blockdef=27 PDF2_ae_title-36x24$T-BD-LINE model=0 paper=0 blockdef=13 PDF2_ae_title-36x24$T-BD-LOGO model=0 paper=0 blockdef=84 PDF2_ae_title-36x24$T-BD-PROJ model=0 paper=0 blockdef=113 PDF2_ae_title-36x24$T-BD-PROJ2 model=0 paper=0 blockdef=19 PDF2_ae_title-36x24$TBORDER model=0 paper=0 blockdef=228 PDF2_ae_title-36x24$TITLE model=0 paper=0 blockdef=45 PDF2_C-ANNO model=0 paper=0 blockdef=31 PDF2_C-BLDG-COLS model=0 paper=0 blockdef=210 PDF2_C-CONC model=0 paper=0 blockdef=18 PDF2_C-CURB-FACE model=0 paper=0 blockdef=325 PDF2_C-DEMO model=4 paper=0 blockdef=4 FROZEN PDF2_C-ESMT-BLDG-SBAK model=0 paper=0 blockdef=12 PDF2_C-ESMT-BLDG-SBAK-ANNO model=0 paper=0 blockdef=2 PDF2_C-SIDEWALKS model=0 paper=0 blockdef=9 PDF2_C-SIDEWLK-HTC model=0 paper=0 blockdef=477 PDF2_C-SIGNS model=0 paper=0 blockdef=8 PDF2_C-SSWR-LATS model=0 paper=0 blockdef=33 PDF2_C-SSWR-PIPE model=0 paper=0 blockdef=100 PDF2_C-SSWR-PIPE-PATT model=0 paper=0 blockdef=71 PDF2_C-SSWR-STRC-PATT model=0 paper=0 blockdef=38 PDF2_C-STRIPES model=0 paper=0 blockdef=174 PDF2_C-STRM-CNTR model=0 paper=0 blockdef=94 PDF2_C-WATR-ANNO model=0 paper=0 blockdef=29 PDF2_C-WATR-CNTR model=0 paper=0 blockdef=46 PDF2_C-WATR-STRC model=0 paper=0 blockdef=17 PDF2_C-WATR-TEXT model=0 paper=0 blockdef=14 PDF2_E CONCRETE model=0 paper=0 blockdef=2 PDF2_E EDGE PVMT model=0 paper=0 blockdef=2 PDF2_E FENCE model=0 paper=0 blockdef=5 PDF2_E GRAVEL model=427 paper=0 blockdef=427 FROZEN PDF2_E IPF-SET model=10 paper=0 blockdef=40 PDF2_E POWER model=0 paper=0 blockdef=23 PDF2_E STORM model=0 paper=0 blockdef=7 PDF2_E STORM TEXT model=0 paper=0 blockdef=17 PDF2_E WALL model=0 paper=0 blockdef=2 PDF2_ESMT v2 model=0 paper=0 blockdef=16 PDF2_GENERAL-TEXT model=0 paper=0 blockdef=4 PDF2_GRAPHIC_SCALE model=0 paper=0 blockdef=70 PDF2_INDEX_CONTOURS model=0 paper=0 blockdef=1164 PDF2_INTER_CONTOURS model=5365 paper=0 blockdef=5365 FROZEN PDF2_Level 3 model=0 paper=0 blockdef=2 PDF2_NOTES model=0 paper=0 blockdef=1 PDF2_P-ESMT model=3 paper=0 blockdef=3 FROZEN PDF2_P-RW model=0 paper=0 blockdef=3 PDF2_P-Setbacks model=0 paper=0 blockdef=1 PDF2_PGRADE model=0 paper=0 blockdef=481 PDF2_REVISIONS model=0 paper=0 blockdef=3 PDF2_SWM model=14 paper=0 blockdef=14 FROZEN PDF2_SWM-TXT model=0 paper=0 blockdef=1 PDF2_Text model=4 paper=0 blockdef=221 PDF2_TXT200 model=0 paper=0 blockdef=62 PDF2_V-BNDY model=0 paper=0 blockdef=9 PDF2_V-BNDY-ANNO model=1 paper=0 blockdef=328 PDF2_V-ESMT model=0 paper=0 blockdef=3 PDF2_V-POWR-OVHD model=0 paper=0 blockdef=280 PDF2_V-RIVR-EDGE model=0 paper=0 blockdef=41 PDF2_V-ROAD-CURB model=1 paper=0 blockdef=239 PDF2_V-ROAD-MRKG model=0 paper=0 blockdef=61 PDF2_V-SSWR model=0 paper=0 blockdef=16 PDF2_V-SSWR-ANNO model=0 paper=0 blockdef=10 PDF2_V-STRM-GRAT model=0 paper=0 blockdef=18 PDF2_V-STRM-STRC-TEXT model=0 paper=0 blockdef=14 PDF2_V-WATR model=0 paper=0 blockdef=137 PROPERTY_LINE model=2 paper=0 blockdef=0 ROAD_EDGE_OF_PAVEMENT model=25 paper=0 blockdef=4 ROAD_RIGHT-OF-WAY model=4 paper=1 blockdef=0 SEWER_EASEMENT model=3 paper=0 blockdef=0 SEWER_EASEMENT POLY model=2 paper=0 blockdef=0 FROZEN SEWER_EASEMENT_20 model=1 paper=0 blockdef=0 FROZEN SEWER_EASEMENT_TEXT model=29 paper=0 blockdef=0 SEWER_LINE model=14 paper=0 blockdef=0 SEWER_LINE_TEXT model=28 paper=0 blockdef=1 SEWER_MANHOLE model=13 paper=0 blockdef=0 SEWER_MANHOLE_EXISTING model=1 paper=0 blockdef=0 SEWER_MANHOLE_TEXT model=26 paper=0 blockdef=0 SPDETAIL model=0 paper=0 blockdef=1 SPDIMENSION model=0 paper=0 blockdef=108 SPOVERVIEW model=0 paper=0 blockdef=1 SPPAINT model=0 paper=0 blockdef=2093 SPSHAPE_OUTLINE model=0 paper=0 blockdef=79 SS-0-FRAME model=21 paper=0 blockdef=1 FROZEN SS-BOUNDARY model=5 paper=0 blockdef=5 FROZEN SS-BOUNDARY ANGEL model=0 paper=0 blockdef=34 SS-BOUNDARY BLUE model=0 paper=0 blockdef=5 SS-BOUNDARY CYAN model=0 paper=0 blockdef=2 SS-BOUNDARY MAG model=0 paper=0 blockdef=1 SS-BOUNDARY_PTS model=0 paper=0 blockdef=1 SS-CL OF CREEK model=0 paper=0 blockdef=1 SS-ROAD-BUILDING model=1 paper=0 blockdef=0 SS-ROAD-CANOPY model=1 paper=0 blockdef=0 SS-ROAD-CL model=4 paper=0 blockdef=0 SS-ROAD-DUMPSTER model=1 paper=0 blockdef=0 SS-ROAD-SIDEWALK model=2 paper=0 blockdef=0 SS-ROAD-STRIPE model=40 paper=0 blockdef=15 SS-ROAD-TBC model=75 paper=0 blockdef=0 SS-V-BLDG-OTLN model=0 paper=0 blockdef=36 SS-V-BRKL-TOP model=0 paper=0 blockdef=2 SS-V-ROAD-CURB model=0 paper=0 blockdef=87 SS-X-FENCE WOOD model=0 paper=0 blockdef=6 TREES model=0 paper=0 blockdef=1 V-CTRL-HCPT model=0 paper=0 blockdef=1 V-CTRL-LINE-SHOT model=2 paper=0 blockdef=0 V-CTRL-TEXT model=2 paper=0 blockdef=0 V-NODE-STRM model=0 paper=0 blockdef=2 V-NODE-WATR model=0 paper=0 blockdef=3 WATER_LINE model=8 paper=0 blockdef=0 WATER_LINE_PTS model=25 paper=0 blockdef=0 FROZEN WATER_LINE_TEXT model=3 paper=0 blockdef=0 WATER_VALVE model=5 paper=0 blockdef=0 WATER_VAULT model=4 paper=0 blockdef=0 www.cadblocksfree.com model=0 paper=0 blockdef=23 X-PROP-CRNR model=0 paper=0 blockdef=1 X-STRM-STRC model=0 paper=0 blockdef=1 (empty layers: 334) === flags === zero-length lines/polylines in model: 186 MText under 0.5 height in model: 0 entities >5000ft outside the site: 5 total layers: 489
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.