C3D-0292 · 260612 C-Store: read the layouts including 22X17 done
READ-ONLY. Every layout with paper size, viewports (scale, lock, VP-frozen layers), title block attribute values and all paper-space text.
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 "22X17" tab=2 ===
paper: ANSI_full_bleed_C_(22.00_x_17.00_Inches) plotstyle=monochrome.ctb units=Inches
plot area: Layout rotation=Degrees000
VP#1 (paper background)
BLOCK "SS_BLOCK_11X17" [23273] at (21.78,0.23) scale=1.000 layer=0
JOB_NO = "JOB NO.: 260612"
SITE_ADDRESS = "5000 EAST LAKE PKWY, STOCKBRIDGE, GA 30281"
REF_DB_PG = ""
LAND_LOT = "LAND LOT: 3, 4"
DISTRICT = "DISTRICT: 11TH"
COUNTY = "COUNTY: HENRY"
DATE = "DATE: 07/31/26"
SUBDIVISION_NAME_LOT = ""
PREP_FOR = "CIVILWORKS"
SURVEY_TYPE = " East Lake C-Store Sewer Easement Plat"
VIEWPORT n=2 on=True locked=True center=(11.02,8.47) size=21.42x16.39
view center=(1126937.72,537834.17) height=983.43 customScale=0.016667 => 1"=60.00'
VP-frozen (16): 0, C-PROP-LINE-TEXT, FIRE_HYDRANT, FIRE_HYDRANT_VALVE, SEWER_EASEMENT 1 ORNAGE, SEWER_LINE E2, SEWER_LINE_EXISTING_TEXT, SEWER_LINE_TEXT E1, SEWER_LINE_TEXT E2, SEWER_MANHOLE E2, SEWER_MANHOLE_TEXT E1, SEWER_MANHOLE_TEXT E2, WATER_LINE, WATER_LINE_TEXT, WATER_VALVE, WATER_VAULT
MTEXT [2E53D] BLOCK_CLOSURE h=0.05 "FLOOD NOTE:\PTHIS PROPERTY IS NOT LOCATED WITHIN A SPECIAL FLOOD HAZARD AREA (SFHA) AS SHOWN ON F.I.R.M. COMMUNITY PANEL NO. 13151C0093D, EFFECTIVE OCTOBER 6, 2016."
MTEXT [2E53E] BLOCK_CLOSURE 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 [2E53F] BLOCK_CLOSURE h=0.06 "Call FREE"
TEXT [2E540] BLOCK_CLOSURE h=0.06 "325-5000"
TEXT [2E541] BLOCK_CLOSURE h=0.08 "UTILITIES PROTECTION CENTER"
TEXT [2E542] BLOCK_CLOSURE h=0.06 "THROUGHOUT GEORGIA"
TEXT [2E543] BLOCK_CLOSURE h=0.06 "IN METRO ATLANTA"
TEXT [2E544] BLOCK_CLOSURE h=0.06 "1-800-282-7411"
TEXT [2E545] BLOCK_CLOSURE h=0.06 "THREE WORKING DAYS BEFORE YOU DIG"
MTEXT [2E57D] 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+"
BLOCK "SS_LEGEND" [2E57E] at (3.77,13.06) scale=1.000 layer=BLOCK_LEGEND
MTEXT [2E8FB] BLOCK_CERT h=0.08 "SURVEYOR'S CERTIFICATE\P\PIt is hereby certified that this As-Built Survey (Water & Sewer) was prepared from an actual field survey of the improvements as constructed, made by me or under my direct supervision; that the water and sewer facilities and appurtenances shown hereon are located as built and their size, type, and material are correctly shown where noted; and that this survey conforms to the Georgia Minimum Technical Standards for property surveys (Ga. Comp. R. & Regs. Ch. 180-7).\P\P\P\PG. L. Sawhney, Georgia Registered Land Surveyor No. 2547"
MTEXT [2E8FC] BLOCK_CERT h=0.08 "COORDINATE & CONTROL: HORIZONTAL AND VERTICAL DATUM {\fArial|b0|i0|c0|p34;— }NAD83(CORS96), GEORGIA WEST ZONE, U.S. SURVEY FEET, AND NAVD88 (GEOID03), ESTABLISHED BY GNSS TIE TO THE HENRY COUNTY GPS MONUMENT NETWORK:\P\P HC07-06 N 1,273,042.37 E 2,303,522.78 ELEV 826.24\P HC07-05 N 1,269,032.09 E 2,294,343.61 ELEV 870.95"
BLOCK "SCALE50" [2EA19] at (18.83,0.69) scale=1.000 layer=ROAD_RIGHT-OF-WAY
TEXT [2EC14] BLOCK_CLOSURE h=0.06 "VICINITY MAP (NOT TO SCALE)"
MTEXT [2FDCE] BLOCK_NORTH_ARROW h=0.08 "GRID NORTH\PGEORGIA WEST ZONE\P(NAD 1983)"
MTEXT [3012C] BLOCK_CLOSURE h=0.07 "SANITARY SEWER EASEMENT 1\PPROPERTY LINE DESCRIPTION\P\PALL THAT TRACT OR PARCEL OF LAND LYING AND BEING IN LAND LOTS 3 AND 4 OF THE 11TH DISTRICT, HENRY COUNTY, GEORGIA, AND BEING MORE PARTICULARLY DESCRIBED AS FOLLOWS:\P\PCOMMENCING AT THE RIGHT-OF-WAY MONUMENT AT INTERSECTION OF THE EASTERLY RIGHT-OF-WAY OF SPRINGDALE ROAD (80' R/W) AND THE SOUTHERLY RIGHT-OF-WAY OF EAST LAKE PARKWAY (150' R/W) THENCE RUNNING SOUTH ALONG THE EASTERLY RIGHT-OF-WAY OF SPRINGDALE RD, 256.27 FEET TO A POINT ON THE EASTERLY RIGHT-OF-WAY OF SPRINGDALE ROAD; SAID POINT BEING THE TRUE POINT OF BEGINNING;\P\PTHENCE, LEAVING SAID EASTERLY RIGHT-OF-WAY, SOUTH 89 DEGREES 05 MINUTES 51 SECONDS EAST, 122.81 FEET TO A POINT;\PTHENCE, NORTH 44 DEGREES 35 MINUTES 15 SECONDS EAST, 96.05 FEET TO A POINT;\PTHENCE, NORTH 83 DEGREES 08 MINUTES 58 SECONDS WEST, 39.54 FEET TO A POINT;\PTHENCE, NORTH 06 DEGREES 52 MINUTES 19 SECONDS EAST, 30.01 FEET TO A POINT;\PTHENCE, SOUTH 83 DEGREES 08 MINUTES 31 SECONDS EAST, 70.10 FEET TO A POINT;\PTHENCE, SOUTH 89 DEGREES 51 MINUTES 54 SECONDS EAST, 90.26 FEET TO A POINT;\PTHENCE, SOUTH 48 DEGREES 17 MINUTES 12 SECONDS EAST, 25.40 FEET TO A POINT;\PTHENCE, NORTH 58 DEGREES 00 MINUTES 43 SECONDS EAST, 122.94 FEET TO A POINT;\PTHENCE, SOUTH 41 DEGREES 16 MINUTES 59 SECONDS WEST, 104.22 FEET TO A POINT;\PTHENCE, SOUTH 58 DEGREES 00 MINUTES 43 SECONDS WEST, 45.61 FEET TO A POINT;\PTHENCE, NORTH 48 DEGREES 17 MINUTES 11 SECONDS WEST, 36.52 FEET TO A POINT;\PTHENCE, NORTH 89 DEGREES 48 MINUTES 03 SECONDS WEST, 74.32 FEET TO A POINT;\PTHENCE, SOUTH 44 DEGREES 35 MINUTES 20 SECONDS WEST, 133.15 FEET TO A POINT;\PTHENCE, NORTH 89 DEGREES 05 MINUTES 51 SECONDS WEST, 139.64 FEET TO A POINT ON THE EASTERLY RIGHT-OF-WAY OF SPRINGDALE ROAD;\PTHENCE ALONG SAID EASTERLY RIGHT-OF-WAY, ALONG A CURVE TO THE LEFT, AN ARC DISTANCE OF 30.27 FEET, SAID CURVE HAVING A RADIUS OF 947.03 FEET AND BEING SUBTENDED BY A CHORD OF 30.26 FEET, AT NORTH 08 DEGREES 29 MINUTES 09 SECONDS EAST, TO THE TRUE POINT OF BEGINNING;\P\PSAID EASEMENT CONTAINING 0.356 ACRES (15,504.66 SQUARE FEET)"
entities=149 viewports=2
=== 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
VIEWPORT n=-1 on=True locked=False center=(125.38,7.04) size=283.69x67.55
view center=(125.38,7.04) height=67.55 customScale=1.000000 => 1"=1.00'
entities=1 viewports=1Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.