← Inbox

C3D-0232 · 260612 Springdale: read the paper-space layouts done

READ-ONLY. Every layout: paper size, viewports with scale/lock/frozen layers, title block attribute values, and all paper-space text.

Script file
C3D-0232.cs
Target
260612-Springdale Sanitary Sewer Extension As-Built 60.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
60s

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

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\260612-Springdale Sanitary Sewer Extension As-Built 60 wPROFILE.dwg
Message
Executed C3D-0232 (0 entities touched).
Entities
Duration
414 ms
Civil 3D
25.0.0.0

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: 4"
      DISTRICT               = "DISTRICT: 11TH"
      COUNTY                 = "COUNTY: HENRY"
      DATE                   = "DATE: 07/31/26"
      SUBDIVISION_NAME_LOT   = ""
      PREP_FOR               = "CIVILWORKS"
      SURVEY_TYPE            = " Springdale Sanitary Sewer Extension As-Built"
  VIEWPORT n=2 on=True locked=True center=(11.02,8.47) size=21.42x16.39
     view center=(1127226.18,537654.79) height=983.43  customScale=0.016667  => 1"=60.00'
     VP-frozen (9): 0, FIRE_HYDRANT, FIRE_HYDRANT_VALVE, SS-ROAD-BUILDING, SS-ROAD-CANOPY, SS-ROAD-DUMPSTER, SS-ROAD-SIDEWALK, SS-ROAD-STRIPE, WATER_LINE
  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.76,12.91) 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)"
  entities=148 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=False locked=False center=(85.85,7.04) size=204.63x67.55
     view center=(85.85,7.04) height=67.55  customScale=1.000000  => 1"=1.00'
  entities=1 viewports=1

Notes

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

No notes yet.