← Inbox

C3D-0335 · 17X11: read the top-left corner exactly as it stands now [C3D-CORNER] done

Read-only. Dumps every line in SS_BLOCK_17X11 whose sheet coords fall in the top-left window (x<6, y>5) with handles, plus non-line block entities and everything sitting in the 17X11 layout in that same window. Needed before cleaning up the leftover box lines from C3D-0333.

Script file
C3D-0335.cs
Target
260714 - 285 Huckaby Rd R2.dwg · paper space
Author
claude
Approved
yes · auto-auth
Timeout
120s

C# payload

// State of the 17X11 top-left corner, in SHEET coords. Everything in the block within
// x 0..5, y 6..11 sheet, plus everything in the LAYOUT in that same window.
const string BLK = "SS_BLOCK_17X11";
const double IX = 16.670, IY = 0.330;    // block insert -> sheet = block + (IX,IY)

Log("drawing: " + Db.Filename);

var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
var bd = (BlockTableRecord)Tx.GetObject(bt[BLK], OpenMode.ForRead);

Log("--- BLOCK " + BLK + ": every line touching sheet x<6, y>5 ---");
int n = 0;
foreach (ObjectId eid in bd) {
    var ln = Tx.GetObject(eid, OpenMode.ForRead) as Line;
    if (ln == null) continue;
    double sx = ln.StartPoint.X + IX, sy = ln.StartPoint.Y + IY;
    double ex = ln.EndPoint.X + IX,   ey = ln.EndPoint.Y + IY;
    if (Math.Min(sx,ex) > 6.0) continue;
    if (Math.Max(sy,ey) < 5.0) continue;
    n++;
    Log(string.Format("  [{0}] sheet ({1,7:F3},{2,7:F3})-({3,7:F3},{4,7:F3})  len={5,7:F4}  layer={6}",
        ln.Handle, sx, sy, ex, ey, ln.Length, ln.Layer));
}
Log("  lines in that window: " + n);

// anything else in the block up there - text, plines
Log("--- BLOCK: non-line entities in that window ---");
foreach (ObjectId eid in bd) {
    var e = Tx.GetObject(eid, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
    if (e == null || e is Line) continue;
    Autodesk.AutoCAD.DatabaseServices.Extents3d ex3;
    try { ex3 = e.GeometricExtents; } catch { continue; }
    double x0 = ex3.MinPoint.X + IX, y0 = ex3.MinPoint.Y + IY;
    double x1 = ex3.MaxPoint.X + IX, y1 = ex3.MaxPoint.Y + IY;
    if (x0 > 6.0 || y1 < 5.0) continue;
    string what = e.GetType().Name;
    string txt = "";
    var m = e as MText; var d = e as DBText; var ad = e as AttributeDefinition;
    if (m != null) txt = m.Contents; else if (d != null) txt = d.TextString;
    else if (ad != null) txt = ad.Tag + "=" + ad.TextString;
    if (txt.Length > 50) txt = txt.Substring(0,50);
    Log(string.Format("  [{0}] {1,-20} sheet ({2:F3},{3:F3})-({4:F3},{5:F3}) layer={6} \"{7}\"",
        e.Handle, what, x0, y0, x1, y1, e.Layer, txt.Replace("\n"," ")));
}

// the layout itself
Log("--- LAYOUT 17X11: everything with any part in x<6, y>5 ---");
var dict = (DBDictionary)Tx.GetObject(Db.LayoutDictionaryId, OpenMode.ForRead);
foreach (DBDictionaryEntry de in dict) {
    var lay = (Layout)Tx.GetObject(de.Value, OpenMode.ForRead);
    if (lay.LayoutName != "17X11") continue;
    var btr = (BlockTableRecord)Tx.GetObject(lay.BlockTableRecordId, OpenMode.ForRead);
    foreach (ObjectId eid in btr) {
        var e = Tx.GetObject(eid, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
        if (e == null) continue;
        Autodesk.AutoCAD.DatabaseServices.Extents3d ex3;
        try { ex3 = e.GeometricExtents; } catch { continue; }
        if (ex3.MinPoint.X > 6.0 || ex3.MaxPoint.Y < 5.0) continue;
        string what = e.GetType().Name;
        string txt = "";
        var m = e as MText; var d = e as DBText; var br = e as BlockReference;
        if (m != null) txt = m.Contents; else if (d != null) txt = d.TextString;
        else if (br != null) txt = "BLOCK " + ((BlockTableRecord)Tx.GetObject(br.BlockTableRecord, OpenMode.ForRead)).Name;
        if (txt.Length > 60) txt = txt.Substring(0,60);
        Log(string.Format("  [{0}] {1,-16} ({2,7:F3},{3,7:F3})-({4,7:F3},{5,7:F3}) layer={6,-20} \"{7}\"",
            e.Handle, what, ex3.MinPoint.X, ex3.MinPoint.Y, ex3.MaxPoint.X, ex3.MaxPoint.Y,
            e.Layer, txt.Replace("\n"," ")));
    }
}

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260714 - 285 Huckaby Rd, Brooks, GA 30205, USA\260714 - 285 Huckaby Rd R3.dwg
Message
Executed C3D-0335 (0 entities touched).
Entities
Duration
393 ms
Civil 3D
25.0.0.0

Log

drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260714 - 285 Huckaby Rd, Brooks, GA 30205, USA\260714 - 285 Huckaby Rd R3.dwg
--- BLOCK SS_BLOCK_17X11: every line touching sheet x<6, y>5 ---
  [21077] sheet (  3.000, 10.630)-( 16.628, 10.630)  len=13.6284  layer=BLOCK_TB2
  [21078] sheet (  3.000, 10.670)-( 16.670, 10.670)  len=13.6700  layer=BLOCK_TB2
  [21086] sheet (  0.371,  8.000)-(  0.373,  0.371)  len= 7.6293  layer=BLOCK_TB2
  [2108D] sheet (  0.330,  8.000)-(  0.330,  0.330)  len= 7.6700  layer=BLOCK_TB2
  [21F21] sheet (  3.000, 10.670)-(  3.000,  8.000)  len= 2.6700  layer=BLOCK_TB2
  [21F22] sheet (  3.000,  8.000)-(  0.330,  8.000)  len= 2.6700  layer=BLOCK_TB2
  [21F23] sheet (  3.000, 10.630)-(  3.000,  8.000)  len= 2.6296  layer=BLOCK_TB2
  [21F24] sheet (  3.000,  8.000)-(  0.373,  8.000)  len= 2.6267  layer=BLOCK_TB2
  lines in that window: 8
--- BLOCK: non-line entities in that window ---
--- LAYOUT 17X11: everything with any part in x<6, y>5 ---
  [20E5D] BlockReference   (  0.330,  0.330)-( 16.670, 10.670) layer=BLOCK_TB2            "BLOCK SS_BLOCK_17X11"
  [20E70] Viewport         ( -8.931, -3.800)-( 39.438, 13.368) layer=0                    ""
  [20E73] Viewport         (  0.373,  0.371)-( 16.628, 10.630) layer=BLOCK_TB2            ""
  [215E7] RasterImage      (  4.128,  3.127)-(  6.428,  5.427) layer=BLOCK_CLOSURE        ""

Notes

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

No notes yet.