C3D-0242 · 260714 Huckaby: read the existing layouts before building 17X11 done
READ-ONLY. Every layout with paper size, viewports (scale, lock, frozen layers), title block attributes and paper-space content, to plan a landscape 17X11 sheet.
C# payload
// READ-ONLY: full read of every paper-space layout - viewports (scale, on/off, frozen layers),
// title block attributes, and everything drawn in paper space.
var lm = LayoutManager.Current;
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
foreach (ObjectId btrId in bt) {
var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
if (!btr.IsLayout) continue;
var lay = (Layout)Tx.GetObject(btr.LayoutId, OpenMode.ForRead);
if (lay.LayoutName == "Model") continue;
Log("");
Log("=== LAYOUT \"" + lay.LayoutName + "\" tab=" + lay.TabOrder + " ===");
Log(string.Format(" paper: {0} plotstyle={1} units={2}",
lay.CanonicalMediaName, lay.CurrentStyleSheet, lay.PlotPaperUnits));
var ext = lay.PlotPaperMargins;
Log(string.Format(" plot area: {0} rotation={1}", lay.PlotType, lay.PlotRotation));
int vpn = 0, ents = 0;
foreach (ObjectId id in btr) {
Autodesk.AutoCAD.DatabaseServices.DBObject o;
try { o = Tx.GetObject(id, OpenMode.ForRead); } catch { continue; }
ents++;
var vp = o as Viewport;
if (vp != null) {
vpn++;
if (vp.Number == 1) { Log(" VP#1 (paper background)"); continue; }
double sc = 0;
try { sc = vp.CustomScale; } catch { }
Log(string.Format(" VIEWPORT n={0} on={1} locked={2} center=({3:F2},{4:F2}) size={5:F2}x{6:F2}",
vp.Number, vp.On, vp.Locked, vp.CenterPoint.X, vp.CenterPoint.Y, vp.Width, vp.Height));
Log(string.Format(" view center=({0:F2},{1:F2}) height={2:F2} customScale={3:F6} => 1\"={4:F2}'",
vp.ViewCenter.X, vp.ViewCenter.Y, vp.ViewHeight, sc, sc > 0 ? 1.0 / sc : 0));
try {
var fl = vp.GetFrozenLayers();
if (fl != null && fl.Count > 0) {
var names = new List<string>();
foreach (ObjectId lid in fl) {
var ltr = (LayerTableRecord)Tx.GetObject(lid, OpenMode.ForRead);
names.Add(ltr.Name);
}
names.Sort();
Log(" VP-frozen (" + names.Count + "): " + string.Join(", ", names));
}
} catch (System.Exception e) { Log(" frozen: " + e.Message); }
continue;
}
var br = o as BlockReference;
if (br != null) {
string nm = br.Name;
try { if (br.IsDynamicBlock) nm = ((BlockTableRecord)Tx.GetObject(br.DynamicBlockTableRecord, OpenMode.ForRead)).Name; } catch { }
Log(string.Format(" BLOCK \"{0}\" [{1}] at ({2:F2},{3:F2}) scale={4:F3} layer={5}",
nm, br.Handle, br.Position.X, br.Position.Y, br.ScaleFactors.X, br.Layer));
foreach (ObjectId aid in br.AttributeCollection) {
var ar = Tx.GetObject(aid, OpenMode.ForRead) as AttributeReference;
if (ar != null) Log(string.Format(" {0,-22} = \"{1}\"", ar.Tag, ar.TextString));
}
continue;
}
var mt = o as MText;
if (mt != null) { Log(string.Format(" MTEXT [{0}] {1} h={2:F2} \"{3}\"", mt.Handle, mt.Layer, mt.TextHeight, mt.Contents.Replace("\n"," "))); continue; }
var dt = o as DBText;
if (dt != null) { Log(string.Format(" TEXT [{0}] {1} h={2:F2} \"{3}\"", dt.Handle, dt.Layer, dt.Height, dt.TextString)); continue; }
}
Log(" entities=" + ents + " viewports=" + vpn);
}
Result
Log
=== LAYOUT "11X17" tab=1 ===
paper: ANSI_full_bleed_B_(11.00_x_17.00_Inches) plotstyle=monochrome.ctb units=Inches
plot area: Layout rotation=Degrees000
VP#1 (paper background)
TEXT [157FA] BLOCK_NORTH_ARROW h=0.08 "GA W.GRID"
MTEXT [1592B] BLOCK_NOTES_FLOOD h=0.06 "NOTE: PROPERTY LINES SHOWN ON THIS SURVEY/PLAT REPRESENT PHYSICAL FIELD CONDITIONS BY EVIDENCE OF APPARENT POSSESSION (IRON PINS FOUND, OLD & ESTABLISHED FENCE LINES, OLD WALL LINES, SHRUB & HEDGE LINE, HOUSE LOCATIONS, ETC.) THEY MAY DIFFER AND BE IN CONTENTION FROM EVIDENCE FOUND AT THE APPLICABLE COUNTY COURTHOUSE. THEY MAY ALSO DIFFER FROM OTHER SURVEYOR OPINIONS AND/OR NEIGHBORS SURVEYS/PLATS. A FULL LAND TITLE REPORT OPINION ON ALL PROPERTIES, INCLUDING ADJACENT AND CONTIGUOUS PROPERTIES MAY BE NEEDED TO RESOLVE ALL POSSIBLE PROPERTY LINE DISPUTES OR DISCREPANCIES.\P\PTHIS SURVEY WAS MADE WITHOUT THE BENEFIT OF A CURRENT TITLE COMMITMENT. EASEMENTS AND ENCUMBRANCES MAY EXIST WHICH BENEFIT AND BURDEN THIS PROPERTY. THIS SURVEY IS SUBJECT TO REVISIONS AND UPDATE UPON RECEIPT OF SAID TITLE COMMITMENT."
TEXT [1660E] BLOCK_CLOSURE h=0.06 "Call FREE"
TEXT [1660F] BLOCK_CLOSURE h=0.06 "325-5000"
TEXT [16610] BLOCK_CLOSURE h=0.08 "UTILITIES PROTECTION CENTER"
TEXT [16611] BLOCK_CLOSURE h=0.06 "THROUGHOUT GEORGIA"
TEXT [16612] BLOCK_CLOSURE h=0.06 "IN METRO ATLANTA"
TEXT [16613] BLOCK_CLOSURE h=0.06 "1-800-282-7411"
TEXT [16614] BLOCK_CLOSURE h=0.06 "THREE WORKING DAYS BEFORE YOU DIG"
MTEXT [1664C] BLOCK_CLOSURE h=0.08 "FIELD CLOSURE=1'IN 20,000+ \PANGLE POINT ERROR=< 03" \PEQUIPMENT USED=GPS/TOTAL STATION \PADJUSTMENT METHOD=COMPASS RULE\PPLAT CLOSURE=1'IN 100,000+"
VIEWPORT n=2 on=True locked=True center=(5.49,8.52) size=10.55x16.37
view center=(1036448.40,465018.49) height=532.00 customScale=0.030776 => 1"=32.49'
BLOCK "SS_LEGEND" [1FDBA] at (10.82,13.15) scale=1.000 layer=SS-BOUNDARY
TEXT [20955] BLOCK_CLOSURE h=0.06 "VICINITY MAP (NOT TO SCALE)"
BLOCK "SS_BLOCK_11X17" [20B53] at (10.81,0.29) scale=1.000 layer=BLOCK_TB2
JOB_NO = "JOB NO.: 260714"
SITE_ADDRESS = "285 Huckaby Rd, Brooks, GA 30205, USA"
REF_DB_PG = "REF DB 5857 Page 692"
LAND_LOT = "LAND LOT: 124"
DISTRICT = "DISTRICT: 4th"
COUNTY = "COUNTY: Fayette"
DATE = "DATE: 08/13/26"
SUBDIVISION_NAME_LOT = ""
PREP_FOR = "JOY EWING"
SURVEY_TYPE = "Boundary Survey"
FIRM_PANEL = "13113C0155E,"
FIRM_DATE = "EFFECTIVE SEPTEMBER 26, 2008,"
FLOOD_ZONE = "AND LIES IN ZONE X."
entities=141 viewports=2
=== LAYOUT "HOUSEDIM" tab=2 ===
paper: ANSI_full_bleed_B_(11.00_x_17.00_Inches) plotstyle=monochrome.ctb units=Inches
plot area: Layout rotation=Degrees000
VIEWPORT n=-1 on=False locked=False center=(28.28,8.74) size=69.82x18.99
view center=(28.28,8.74) height=18.99 customScale=1.000000 => 1"=1.00'
VIEWPORT n=-1 on=False locked=True center=(5.50,8.53) size=10.57x16.39
view center=(2354969.39,1490786.39) height=327.81 customScale=0.050000 => 1"=20.00'
MTEXT [1E65E] BLOCK_TB2 h=0.09 "ALL MATTERS OF TITLE ARE EXCEPTED. THIS PLAT IS SUBJECT TO ALL LEGAL EASEMENTS AND RIGHTS-OF-WAY PUBLIC OR PRIVATE."
TEXT [1E665] BLOCK_TB2 h=0.12 "SCALE: GRAPHIC"
TEXT [1E667] BLOCK_TB2 h=0.12 "COUNTY: DEKALB"
TEXT [1E668] BLOCK_TB2 h=0.12 "DISTRICT: 15TH"
TEXT [1E669] BLOCK_TB2 h=0.12 "LAND LOT: 135"
TEXT [1E66B] BLOCK_TB2 h=0.12 "JOB NO.: 250803"
TEXT [1E66C] BLOCK_TB2 h=0.12 "DATE: 08/22/25"
TEXT [1E66E] BLOCK_TB2 h=0.08 "PREPARED FOR:"
TEXT [1E670] BLOCK_TB2 h=0.19 "BOUNDARY SURVEY "
TEXT [1E671] BLOCK_TB2 h=0.10 "GRAPHIC SCALE"
TEXT [1E6AD] BLOCK_TB2 h=0.10 "20 10 0 20"
TEXT [1E6D4] BLOCK_NORTH_ARROW h=0.08 "GA W.GRID"
MTEXT [1E7AB] BLOCK_TB2 h=0.05 "FLOOD NOTE:\PTHIS PROPERTY IS NOT IN AN AREA HAVING SPECIAL FLOOD AS PER COMMUNITY PANEL NO. 13089C0132J, DATED MAY 16th 2013."
MTEXT [1E7AC] BLOCK_TB2 h=0.15 "KEYSTONE DEVELOPMENT SOLUTIONS LLC"
TEXT [1E7AD] BLOCK_TB2 h=0.24 "SAWHNEY & ASSOCIATES"
TEXT [1E7AE] BLOCK_TB2 h=0.11 "523 HASTINGS WAY"
TEXT [1E7AF] BLOCK_TB2 h=0.11 "JONESBORO GA 30238"
TEXT [1E7B0] BLOCK_TB2 h=0.08 "PH.# (678)478-6857"
TEXT [1E7B2] SS-BOUNDARY LAND LOT h=0.09 "LEGEND"
MTEXT [1E7B3] SS-BOUNDARY LAND LOT h=0.10 "IPF IRON PIN FOUND \PIPP IRON PIN PROPOSED\PR/W RIGHT OF WAY\PRWM RIGHT OF WAY MARKER \PMAG MAGNETIC \PPOB POINT OF BEGINNING\PPOC POINT OF COMMENCEMENT\PB/L BUILDING LINE \PD.E. DRAINAGE EASEMENT\PN/F NOW OR FORMERLY \PL.L. LAND LOT\PPP POWER POLE \P DROP INLET\P WATER VALVE\P SEWER MANHOLE\P FIRE HYDRANT\P ELELVATION POINT\P PROPERTY CORNER\P FENCE"
BLOCK "Water Valve" [1E7B4] at (0.50,14.16) scale=0.698 layer=V-NODE-WATR
BLOCK "Catch Basin" [1E7B5] at (0.50,14.35) scale=1.250 layer=V-NODE-STRM
BLOCK "Drainage MH" [1E7B6] at (0.50,14.03) scale=1.000 layer=V-NODE-STRM
BLOCK "Existing Hyd" [1E7B7] at (0.50,13.89) scale=0.723 layer=V-NODE-WATR
BLOCK "STA" [1E7B8] at (0.50,13.70) scale=0.083 layer=V-CTRL-HCPT
MTEXT [1E7BA] BLOCK_TB2 h=0.12 "0.25 ACRES"
TEXT [1E7BE] BLOCK_STAMP h=0.07 "A"
TEXT [1E7BF] BLOCK_STAMP h=0.07 "A"
TEXT [1E7C0] BLOCK_STAMP h=0.07 "N"
TEXT [1E7C1] BLOCK_STAMP h=0.07 "N"
TEXT [1E7C2] BLOCK_STAMP h=0.07 "O"
TEXT [1E7C3] BLOCK_STAMP h=0.07 "O"
TEXT [1E7C4] BLOCK_STAMP h=0.07 "E"
TEXT [1E7C5] BLOCK_STAMP h=0.07 "E"
TEXT [1E7C6] BLOCK_STAMP h=0.10 "G."
TEXT [1E7C7] BLOCK_STAMP h=0.07 "S"
TEXT [1E7C8] BLOCK_STAMP h=0.07 "S"
TEXT [1E7C9] BLOCK_STAMP h=0.07 "D"
TEXT [1E7CA] BLOCK_STAMP h=0.07 "D"
TEXT [1E7CB] BLOCK_STAMP h=0.10 "A"
TEXT [1E7CC] BLOCK_STAMP h=0.10 "S"
TEXT [1E7CD] BLOCK_STAMP h=0.10 "L."
TEXT [1E7CE] BLOCK_STAMP h=0.07 "U"
TEXT [1E7CF] BLOCK_STAMP h=0.07 "R"
TEXT [1E7D0] BLOCK_STAMP h=0.07 "R"
TEXT [1E7D1] BLOCK_STAMP h=0.07 "U"
TEXT [1E7D2] BLOCK_STAMP h=0.07 "V"
TEXT [1E7D3] BLOCK_STAMP h=0.07 "V"
TEXT [1E7D4] BLOCK_STAMP h=0.10 "H"
TEXT [1E7D5] BLOCK_STAMP h=0.10 "W"
TEXT [1E7D6] BLOCK_STAMP h=0.10 "Y"
TEXT [1E7D7] BLOCK_STAMP h=0.10 "E"
TEXT [1E7D8] BLOCK_STAMP h=0.07 "Y"
TEXT [1E7D9] BLOCK_STAMP h=0.07 "Y"
TEXT [1E7DA] BLOCK_STAMP h=0.10 "N"
TEXT [1E7DC] BLOCK_STAMP h=0.07 "E"
TEXT [1E7DD] BLOCK_STAMP h=0.07 "PROFESSIONAL"
TEXT [1E7DE] BLOCK_STAMP h=0.07 "PROFESSIONAL"
TEXT [1E7DF] BLOCK_STAMP h=0.07 "PROFESSIONAL"
TEXT [1E7E0] BLOCK_STAMP h=0.07 "PROFESSIONAL"
TEXT [1E7E1] BLOCK_STAMP h=0.07 "PROFESSIONAL"
TEXT [1E7E2] BLOCK_STAMP h=0.07 "No. 2547"
TEXT [1E7E3] BLOCK_STAMP h=0.07 "L"
TEXT [1E7E4] BLOCK_STAMP h=0.07 "L"
TEXT [1E7E5] BLOCK_STAMP h=0.10 "G"
TEXT [1E7EA] BLOCK_STAMP h=0.07 "E"
TEXT [1E7EB] BLOCK_STAMP h=0.07 "G"
TEXT [1E7EC] BLOCK_STAMP h=0.07 "R"
TEXT [1E7ED] BLOCK_STAMP h=0.07 "R"
TEXT [1E7EE] BLOCK_STAMP h=0.10 "E"
TEXT [1E7EF] BLOCK_STAMP h=0.07 "I"
TEXT [1E7F0] BLOCK_STAMP h=0.10 "O"
TEXT [1E7F1] BLOCK_STAMP h=0.07 "E"
TEXT [1E7F2] BLOCK_STAMP h=0.07 "S"
TEXT [1E7F3] BLOCK_STAMP h=0.07 "T"
TEXT [1E7F4] BLOCK_STAMP h=0.10 "R"
TEXT [1E7F5] BLOCK_STAMP h=0.10 "G"
TEXT [1E7F6] BLOCK_STAMP h=0.07 "R"
TEXT [1E7F7] BLOCK_STAMP h=0.07 "R"
TEXT [1E7F8] BLOCK_STAMP h=0.07 "D"
TEXT [1E7F9] BLOCK_STAMP h=0.10 "A"
TEXT [1E7FA] BLOCK_STAMP h=0.10 "I"
MTEXT [1E803] TEXT h=0.06 "NOTE: PROPERTY LINES SHOWN ON THIS SURVEY/PLAT REPRESENT PHYSICAL FIELD CONDITIONS BY EVIDENCE OF APPARENT POSSESSION (IRON PINS FOUND, OLD & ESTABLISHED FENCE LINES, OLD WALL LINES, SHRUB & HEDGE LINE, HOUSE LOCATIONS, ETC.) THEY MAY DIFFER AND BE IN CONTENTION FROM EVIDENCE FOUND AT THE APPLICABLE COUNTY COURTHOUSE. THEY MAY ALSO DIFFER FROM OTHER SURVEYOR OPINIONS AND/OR NEIGHBORS SURVEYS/PLATS. A FULL LAND TITLE REPORT OPINION ON ALL PROPERTIES, INCLUDING ADJACENT AND CONTIGUOUS PROPERTIES MAY BE NEEDED TO RESOLVE ALL POSSIBLE PROPERTY LINE DISPUTES OR DISCREPANCIES.\P\PTHIS SURVEY WAS MADE WITHOUT THE BENEFIT OF A CURRENT TITLE COMMITMENT. EASEMENTS AND ENCUMBRANCES MAY EXIST WHICH BENEFIT AND BURDEN THIS PROPERTY. THIS SURVEY IS SUBJECT TO REVISIONS AND UPDATE UPON RECEIPT OF SAID TITLE COMMITMENT."
MTEXT [1E806] BLOCK_TB2 h=0.12 "REF PB 28 PG 151"
TEXT [1E807] SS-BOUNDARY LAND LOT h=0.08 "VICINITY MAP (NOT TO SCALE)"
TEXT [1E808] SS-BOUNDARY LAND LOT h=0.06 "Call FREE"
TEXT [1E809] SS-BOUNDARY LAND LOT h=0.06 "325-5000"
TEXT [1E80A] SS-BOUNDARY LAND LOT h=0.08 "UTILITIES PROTECTION CENTER"
TEXT [1E80B] SS-BOUNDARY LAND LOT h=0.06 "THROUGHOUT GEORGIA"
TEXT [1E80C] SS-BOUNDARY LAND LOT h=0.06 "IN METRO ATLANTA"
TEXT [1E80D] SS-BOUNDARY LAND LOT h=0.06 "1-800-282-7411"
TEXT [1E80E] SS-BOUNDARY LAND LOT h=0.06 "THREE WORKING DAYS BEFORE YOU DIG"
MTEXT [1E846] SS-BOUNDARY LAND LOT h=0.08 "FIELD CLOSURE=1'IN 20,000+ \PANGLE POINT ERROR=< 03" \PEQUIPMENT USED=GPS/TOTAL STATION \PADJUSTMENT METHOD=COMPASS RULE\PPLAT CLOSURE=1'IN 100,000+"
TEXT [1E853] BLOCK_TB2 h=0.12 "GLENDALE ESTATES LOT 10"
MTEXT [1E854] BLOCK_TB2 h=0.12 "2330 Green Forrest Dr, Decatur, GA 30032"
entities=338 viewports=2Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.