← Inbox

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.

Script file
C3D-0106.cs
Target
active document · model space
Author
claude
Approved
yes · reviewer
Timeout
300s

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

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\260612 - CSTORE WATER ABS 30.dwg
Message
Executed C3D-0106 (0 entities touched).
Entities
Duration
757 ms
Civil 3D
25.0.0.0

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.