C3D-260619-SHEETFREE · Sheet occupancy + viewport scale done
Read-only: what occupies the 22X17 C sheet and where, the viewport scale (for a correct graphic scale bar), and the text styles/heights in use.
C# payload
// READ-ONLY: what's on the 22X17 C sheet already, so the clerk box (#3) and scale bar (#4)
// land in free space and match existing text conventions.
const string LAYOUT = "22X17 C";
var layDict = (DBDictionary)Tx.GetObject(Db.LayoutDictionaryId, OpenMode.ForRead);
var layout = (Layout)Tx.GetObject(layDict.GetAt(LAYOUT), OpenMode.ForRead);
var ps = (BlockTableRecord)Tx.GetObject(layout.BlockTableRecordId, OpenMode.ForRead);
Log("sheet " + (layout.PlotPaperSize.X/25.4).ToString("F2") + " x " + (layout.PlotPaperSize.Y/25.4).ToString("F2") + " in");
// occupied boxes, so free space is visible
Log("--- occupancy (non-viewport entities with extents) ---");
foreach (ObjectId id in ps)
{
var e = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
if (e == null || e is Viewport) continue;
Extents3d ex; try { ex = e.GeometricExtents; } catch { continue; }
double w = ex.MaxPoint.X-ex.MinPoint.X, h = ex.MaxPoint.Y-ex.MinPoint.Y;
if (w < 0.15 && h < 0.15) continue; // skip tiny bits
Log(" " + e.GetType().Name.PadRight(16) + " layer=" + e.Layer.PadRight(22) +
" (" + ex.MinPoint.X.ToString("F2") + "," + ex.MinPoint.Y.ToString("F2") + ")-(" +
ex.MaxPoint.X.ToString("F2") + "," + ex.MaxPoint.Y.ToString("F2") + ")");
}
// viewport scale, needed for a correct graphic scale bar
Log("--- viewports ---");
foreach (ObjectId id in ps)
{
var vp = Tx.GetObject(id, OpenMode.ForRead) as Viewport;
if (vp == null || vp.Number == 1) continue;
Log(" vp h=" + vp.Handle + " num=" + vp.Number + " centre(" + vp.CenterPoint.X.ToString("F2") + "," + vp.CenterPoint.Y.ToString("F2") +
") size " + vp.Width.ToString("F2") + "x" + vp.Height.ToString("F2") +
" customScale=" + vp.CustomScale.ToString("F6") + " (1 paper in = " + (vp.CustomScale > 0 ? (1.0/vp.CustomScale).ToString("F2") : "?") + " model units)" +
" locked=" + vp.Locked + " on=" + vp.On);
}
// text styles in use, so new text matches
Log("--- text styles used on the sheet ---");
var seen = new Dictionary<string,int>();
foreach (ObjectId id in ps)
{
var e = Tx.GetObject(id, OpenMode.ForRead);
string sn = null; double ht = 0;
var mt = e as MText; if (mt != null) { sn = ((TextStyleTableRecord)Tx.GetObject(mt.TextStyleId, OpenMode.ForRead)).Name; ht = mt.TextHeight; }
var dt = e as DBText; if (dt != null) { sn = ((TextStyleTableRecord)Tx.GetObject(dt.TextStyleId, OpenMode.ForRead)).Name; ht = dt.Height; }
if (sn == null) continue;
var k = sn + " @ " + ht.ToString("F3");
seen[k] = seen.ContainsKey(k) ? seen[k]+1 : 1;
}
foreach (var kv in seen) Log(" " + kv.Value + "x " + kv.Key);
Result
Log
sheet 22.00 x 17.00 in --- occupancy (non-viewport entities with extents) --- Line layer=TB1 (11.20,0.33)-(21.76,0.33) Line layer=BLOCK_NORTH_ARROW (21.31,15.73)-(21.31,16.36) Line layer=BLOCK_NORTH_ARROW (21.26,15.72)-(21.31,16.36) Line layer=BLOCK_NORTH_ARROW (21.30,15.73)-(21.30,16.33) Line layer=BLOCK_NORTH_ARROW (21.30,15.73)-(21.30,16.25) Line layer=BLOCK_NORTH_ARROW (21.29,15.73)-(21.29,16.17) Polyline2d layer=BLOCK_NORTH_ARROW (21.17,14.23)-(21.44,14.92) DBText layer=BLOCK_NORTH_ARROW (21.37,13.30)-(21.45,13.95) Line layer=BLOCK_NORTH_ARROW (21.31,13.34)-(21.31,13.98) Line layer=BLOCK_NORTH_ARROW (21.24,13.39)-(21.31,13.98) Line layer=BLOCK_NORTH_ARROW (21.29,13.38)-(21.29,13.85) Line layer=BLOCK_NORTH_ARROW (21.30,13.37)-(21.30,13.90) Line layer=BLOCK_NORTH_ARROW (21.30,13.36)-(21.30,13.96) Line layer=BLOCK_NORTH_ARROW (21.27,13.39)-(21.27,13.69) Line layer=BLOCK_NORTH_ARROW (21.27,13.39)-(21.27,13.64) Line layer=BLOCK_NORTH_ARROW (21.26,13.39)-(21.26,13.59) Line layer=BLOCK_NORTH_ARROW (21.28,13.39)-(21.28,13.75) Line layer=BLOCK_NORTH_ARROW (21.28,13.38)-(21.28,13.80) Line layer=BLOCK_NORTH_ARROW (21.30,13.98)-(21.31,14.23) Line layer=BLOCK_NORTH_ARROW (21.31,15.01)-(21.31,15.60) Line layer=BLOCK_NORTH_ARROW (21.20,15.00)-(21.22,15.24) Polyline2d layer=BLOCK_NORTH_ARROW (21.23,15.10)-(21.35,15.60) Polyline2d layer=BLOCK_NORTH_ARROW (21.18,15.04)-(21.45,15.73) Line layer=BLOCK_NORTH_ARROW (21.25,15.00)-(21.25,15.23) Line layer=BLOCK_NORTH_ARROW (21.24,15.00)-(21.24,15.24) Line layer=BLOCK_NORTH_ARROW (21.24,15.00)-(21.24,15.26) Line layer=BLOCK_NORTH_ARROW (21.23,15.00)-(21.23,15.27) Line layer=BLOCK_NORTH_ARROW (21.22,15.00)-(21.22,15.29) Line layer=BLOCK_NORTH_ARROW (21.22,15.00)-(21.22,15.24) Line layer=BLOCK_NORTH_ARROW (21.28,15.21)-(21.28,15.58) Line layer=BLOCK_NORTH_ARROW (21.29,15.20)-(21.29,15.59) Line layer=BLOCK_NORTH_ARROW (21.30,15.18)-(21.30,15.59) Line layer=BLOCK_NORTH_ARROW (21.30,15.17)-(21.30,15.59) Polyline2d layer=BLOCK_NORTH_ARROW (21.31,14.94)-(21.50,15.05) Line layer=BLOCK_NORTH_ARROW (21.31,14.56)-(21.31,14.77) Polyline2d layer=BLOCK_NORTH_ARROW (21.27,14.36)-(21.39,14.85) Line layer=BLOCK_NORTH_ARROW (21.17,14.61)-(21.19,14.94) Line layer=BLOCK_NORTH_ARROW (21.25,14.60)-(21.25,14.94) Line layer=BLOCK_NORTH_ARROW (21.25,14.60)-(21.25,14.94) Line layer=BLOCK_NORTH_ARROW (21.24,14.61)-(21.24,14.94) Line layer=BLOCK_NORTH_ARROW (21.24,14.61)-(21.24,14.94) Line layer=BLOCK_NORTH_ARROW (21.23,14.61)-(21.23,14.94) Line layer=BLOCK_NORTH_ARROW (21.22,14.61)-(21.22,14.94) Line layer=BLOCK_NORTH_ARROW (21.22,14.61)-(21.22,14.94) Line layer=BLOCK_NORTH_ARROW (21.21,14.61)-(21.21,14.94) Line layer=BLOCK_NORTH_ARROW (21.21,14.61)-(21.21,14.94) Line layer=BLOCK_NORTH_ARROW (21.20,14.61)-(21.20,14.94) Line layer=BLOCK_NORTH_ARROW (21.19,14.61)-(21.19,14.92) Line layer=BLOCK_NORTH_ARROW (21.19,14.61)-(21.19,14.84) Line layer=BLOCK_NORTH_ARROW (21.18,14.61)-(21.18,14.77) Line layer=BLOCK_NORTH_ARROW (21.26,14.60)-(21.26,14.94) Line layer=BLOCK_NORTH_ARROW (21.27,14.59)-(21.27,14.94) Line layer=BLOCK_NORTH_ARROW (21.27,14.59)-(21.27,14.94) Line layer=BLOCK_NORTH_ARROW (21.28,14.59)-(21.28,14.94) Line layer=BLOCK_NORTH_ARROW (21.28,14.58)-(21.28,14.84) Line layer=BLOCK_NORTH_ARROW (21.29,14.58)-(21.29,14.83) Line layer=BLOCK_NORTH_ARROW (21.30,14.57)-(21.30,14.82) Line layer=BLOCK_NORTH_ARROW (21.30,14.56)-(21.30,14.82) Line layer=BLOCK_NORTH_ARROW (21.31,14.36)-(21.31,14.56) Polyline2d layer=BLOCK_NORTH_ARROW (21.11,14.89)-(21.31,15.01) Polyline2d layer=BLOCK_NORTH_ARROW (21.31,15.01)-(21.46,15.09) Line layer=BLOCK_NORTH_ARROW (21.21,15.00)-(21.21,15.16) Line layer=BLOCK_NORTH_ARROW (21.25,15.00)-(21.25,15.22) Line layer=BLOCK_NORTH_ARROW (21.26,15.00)-(21.26,15.21) Line layer=BLOCK_NORTH_ARROW (21.27,15.00)-(21.27,15.20) Line layer=BLOCK_NORTH_ARROW (21.27,15.01)-(21.27,15.19) Line layer=BLOCK_NORTH_ARROW (21.28,15.01)-(21.28,15.18) Line layer=BLOCK_NORTH_ARROW (21.28,15.01)-(21.28,15.17) Line layer=BLOCK_NORTH_ARROW (21.29,15.01)-(21.29,15.17) Line layer=BLOCK_NORTH_ARROW (21.30,15.01)-(21.30,15.16) Polyline2d layer=BLOCK_NORTH_ARROW (21.15,14.86)-(21.31,14.94) Line layer=BLOCK_NORTH_ARROW (21.28,15.23)-(21.28,15.58) Line layer=BLOCK_NORTH_ARROW (21.27,15.24)-(21.27,15.57) Line layer=BLOCK_NORTH_ARROW (21.27,15.26)-(21.27,15.56) Line layer=BLOCK_NORTH_ARROW (21.26,15.28)-(21.26,15.55) Line layer=BLOCK_NORTH_ARROW (21.25,15.29)-(21.25,15.54) Line layer=BLOCK_NORTH_ARROW (21.25,15.32)-(21.25,15.52) Line layer=BLOCK_NORTH_ARROW (21.27,15.72)-(21.27,15.94) Line layer=BLOCK_NORTH_ARROW (21.28,15.73)-(21.28,16.10) Line layer=BLOCK_NORTH_ARROW (21.28,15.73)-(21.28,16.02) MText layer=BLOCK_CLOSURE (18.70,4.84)-(21.60,5.25) MText layer=BLOCK_CLOSURE (18.70,5.39)-(21.34,7.27) DBText layer=BLOCK_CLOSURE (19.24,3.91)-(19.64,3.97) DBText layer=BLOCK_CLOSURE (19.24,3.72)-(19.67,3.77) DBText layer=BLOCK_CLOSURE (18.70,4.01)-(20.44,4.09) DBText layer=BLOCK_CLOSURE (19.23,3.58)-(20.20,3.64) DBText layer=BLOCK_CLOSURE (19.24,3.81)-(20.06,3.86) DBText layer=BLOCK_CLOSURE (19.24,3.49)-(20.00,3.55) DBText layer=BLOCK_CLOSURE (18.71,3.35)-(20.48,3.41) Polyline layer=BLOCK_CLOSURE (18.98,3.69)-(18.99,3.84) Solid layer=BLOCK_CLOSURE (18.98,3.69)-(18.98,3.84) Line layer=BLOCK_CLOSURE (18.79,3.59)-(19.04,3.86) Line layer=BLOCK_CLOSURE (18.77,3.57)-(19.02,3.84) Solid layer=BLOCK_CLOSURE (18.76,3.58)-(19.03,3.86) Polyline2d layer=BLOCK_CLOSURE (18.78,3.71)-(19.08,3.80) Polyline2d layer=BLOCK_CLOSURE (18.79,3.67)-(19.09,3.75) Polyline layer=BLOCK_CLOSURE (18.77,3.67)-(19.08,3.75) Polyline layer=BLOCK_CLOSURE (18.69,3.51)-(19.10,3.92) MText layer=BLOCK_CLOSURE (18.69,3.99)-(21.55,4.84) Polyline layer=SS-BOUNDARY CYAN (21.81,-0.00)-(21.98,0.29) BlockReference layer=SS-BOUNDARY (18.68,7.45)-(21.38,10.66) DBText layer=BLOCK_CLOSURE (8.49,0.51)-(9.83,0.60) BlockReference layer=SS-BOUNDARY LAND LOT (0.25,0.26)-(21.75,16.74) MText layer=C-ANNO-CERT (11.56,16.15)-(18.16,16.25) MText layer=C-ANNO-CERT (11.56,14.49)-(18.16,15.98) MText layer=C-ANNO-CERT (11.56,13.87)-(18.16,13.97) MText layer=C-ANNO-CERT (11.56,13.57)-(18.16,13.66) MText layer=C-ANNO-CERT (11.56,13.04)-(18.16,13.39) MText layer=C-ANNO-CERT (11.56,11.94)-(18.16,12.85) MText layer=C-ANNO-CERT (11.71,11.66)-(14.11,11.74) MText layer=C-ANNO-CERT (14.18,11.66)-(14.58,11.74) MText layer=C-ANNO-CERT (14.53,11.66)-(15.33,11.74) MText layer=C-ANNO-CERT (11.71,11.53)-(14.11,11.61) MText layer=C-ANNO-CERT (14.18,11.53)-(14.58,11.61) MText layer=C-ANNO-CERT (14.53,11.53)-(15.33,11.61) MText layer=C-ANNO-CERT (11.71,11.37)-(14.11,11.47) MText layer=C-ANNO-CERT (14.18,11.39)-(14.58,11.47) MText layer=C-ANNO-CERT (14.53,11.39)-(15.33,11.47) MText layer=C-ANNO-CERT (11.71,11.22)-(14.11,11.34) MText layer=C-ANNO-CERT (14.18,11.26)-(14.58,11.34) MText layer=C-ANNO-CERT (14.53,11.26)-(15.33,11.34) MText layer=C-ANNO-CERT (11.56,10.68)-(14.16,10.79) MText layer=C-ANNO-CERT (15.13,10.68)-(17.73,10.79) MText layer=C-ANNO-CERT (11.56,10.13)-(14.16,10.23) MText layer=C-ANNO-CERT (15.13,10.13)-(17.73,10.23) MText layer=C-ANNO-CERT (15.13,9.75)-(17.73,9.83) MText layer=C-ANNO-CERT (11.57,6.37)-(18.17,6.45) MText layer=C-ANNO-CERT (11.57,5.70)-(18.17,6.18) MText layer=C-ANNO-CERT (11.57,5.23)-(15.57,5.34) MText layer=C-ANNO-CERT (15.79,5.26)-(17.59,5.34) MText layer=C-ANNO-CERT (11.56,9.44)-(18.16,9.52) MText layer=C-ANNO-CERT (11.56,8.74)-(18.16,9.25) MText layer=C-ANNO-CERT (11.56,8.57)-(14.86,8.65) MText layer=C-ANNO-CERT (15.13,8.57)-(18.43,8.65) MText layer=C-ANNO-CERT (11.56,8.40)-(14.86,8.52) MText layer=C-ANNO-CERT (15.13,8.40)-(18.43,8.52) MText layer=C-ANNO-CERT (11.56,8.26)-(14.86,8.38) MText layer=C-ANNO-CERT (15.13,8.26)-(18.43,8.38) MText layer=C-ANNO-CERT (11.56,7.99)-(14.86,8.11) MText layer=C-ANNO-CERT (15.13,7.99)-(18.43,8.11) MText layer=C-ANNO-CERT (11.56,7.86)-(14.86,7.98) MText layer=C-ANNO-CERT (15.13,7.86)-(18.43,7.98) MText layer=C-ANNO-CERT (15.13,7.72)-(18.43,7.84) MText layer=C-ANNO-CERT (15.13,7.11)-(18.13,7.22) MText layer=C-ANNO-CERT (11.56,6.74)-(13.96,6.82) MText layer=C-ANNO-CERT (15.13,6.71)-(18.13,6.82) Line layer=C-ANNO-CERT-LINE (11.56,14.11)-(14.96,14.11) Line layer=C-ANNO-CERT-LINE (11.56,10.83)-(14.11,10.83) Line layer=C-ANNO-CERT-LINE (15.13,10.83)-(17.68,10.83) Line layer=C-ANNO-CERT-LINE (11.56,10.28)-(14.11,10.28) Line layer=C-ANNO-CERT-LINE (15.13,10.28)-(17.68,10.28) Line layer=C-ANNO-CERT-LINE (11.56,9.88)-(14.11,9.88) Line layer=C-ANNO-CERT-LINE (15.13,9.88)-(17.68,9.88) Line layer=C-ANNO-CERT-LINE (11.57,5.38)-(15.47,5.38) Line layer=C-ANNO-CERT-LINE (15.79,5.38)-(17.54,5.38) Line layer=C-ANNO-CERT-LINE (11.56,7.28)-(13.76,7.28) Line layer=C-ANNO-CERT-LINE (15.13,7.28)-(18.03,7.28) Line layer=C-ANNO-CERT-LINE (11.56,6.88)-(13.76,6.88) Line layer=C-ANNO-CERT-LINE (15.13,6.88)-(18.03,6.88) MText layer=C-ANNO-CERT (11.56,9.75)-(14.16,9.83) MText layer=C-ANNO-CERT (11.56,10.83)-(14.16,10.94) MText layer=C-ANNO-CERT (15.13,10.83)-(17.73,10.94) MText layer=C-ANNO-CERT (11.56,7.16)-(13.96,7.24) MText layer=SS-BOUNDARY LAND LOT (11.77,15.04)-(12.35,15.14) Line layer=C-ANNO-CERT-LINE (11.56,15.05)-(12.41,15.05) RasterImage layer=BLOCK_CLOSURE (7.86,0.68)-(10.46,3.28) Polyline layer=BLOCK_CLOSURE (7.86,0.68)-(10.46,3.28) Line layer=TB1 (0.61,0.73)-(4.59,0.73) Line layer=TB1 (0.61,0.77)-(4.59,0.77) Line layer=TB1 (0.61,0.80)-(4.59,0.80) DBText layer=TB1 (2.13,0.48)-(3.11,0.61) DBText layer=TB1 (1.53,0.88)-(1.69,0.98) DBText layer=TB1 (2.50,0.88)-(2.72,0.98) Solid layer=TB1 (3.59,0.75)-(4.59,0.77) DBText layer=TB1 (3.49,0.88)-(3.71,0.98) DBText layer=TB1 (4.45,0.88)-(4.69,0.98) Solid layer=TB1 (2.60,0.77)-(3.59,0.79) Solid layer=TB1 (1.60,0.75)-(2.60,0.77) --- viewports --- vp h=21534 num=2 centre(11.00,8.50) size 21.41x16.39 customScale=0.016667 (1 paper in = 60.00 model units) locked=True on=True --- text styles used on the sheet --- 1x SIMPLEX @ 0.076 1x L120 @ 0.055 1x DIM @ 0.059 7x ROMAND @ 0.057 1x ROMAND @ 0.076 49x SIMPLEX @ 0.080 6x ROMANC @ 0.100
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.