← Inbox

C3D-0278 · 260714 Huckaby: model extents and what is forcing the scale done

READ-ONLY. Total model extents with the scale needed to fit the 16.34x10.34 border, every entity more than 400 ft from the model centre, and all boundary/parcel geometry.

Script file
C3D-0278.cs
Target
260714 - 285 Huckaby Rd.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
60s

C# payload

// What is the real extent of the drawing, and what is furthest out?
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForRead);
double x0=1e30,y0=1e30,x1=-1e30,y1=-1e30;
var items = new List<string>();
foreach (ObjectId id in ms) {
    var ent = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
    if (ent == null) continue;
    double a,b,c,d;
    try { var e = ent.GeometricExtents; a=e.MinPoint.X;b=e.MinPoint.Y;c=e.MaxPoint.X;d=e.MaxPoint.Y; } catch { continue; }
    if (a<x0)x0=a; if (b<y0)y0=b; if (c>x1)x1=c; if (d>y1)y1=d;
}
Log(string.Format("MODEL EXTENTS ({0:F2},{1:F2})-({2:F2},{3:F2})  = {4:F1} x {5:F1} ft", x0,y0,x1,y1, x1-x0, y1-y0));
Log(string.Format("to fit 16.34 x 10.34 in: needs 1\"={0:F1}' (width) or 1\"={1:F1}' (height)",
    (x1-x0)/16.34, (y1-y0)/10.34));
Log("");

// cluster: what is far from the bulk?
double cx=(x0+x1)/2, cy=(y0+y1)/2;
Log("--- entities more than 400 ft from the model centre ---");
int far=0;
foreach (ObjectId id in ms) {
    var ent = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
    if (ent == null) continue;
    double a,b,c,d;
    try { var e = ent.GeometricExtents; a=e.MinPoint.X;b=e.MinPoint.Y;c=e.MaxPoint.X;d=e.MaxPoint.Y; } catch { continue; }
    double mx=(a+c)/2, my=(b+d)/2;
    double dist = Math.Sqrt((mx-cx)*(mx-cx)+(my-cy)*(my-cy));
    if (dist < 400) continue;
    far++;
    string what = ent.GetType().Name;
    var cp = ent as CogoPoint;
    if (cp != null) what = "PT " + cp.PointNumber + " \"" + cp.RawDescription + "\"";
    var mt = ent as MText; if (mt != null) what = "MTEXT \"" + mt.Contents.Replace("\n"," ").Substring(0,Math.Min(28,mt.Contents.Length)) + "\"";
    var dt = ent as DBText; if (dt != null) what = "TEXT \"" + dt.TextString + "\"";
    if (far <= 25) Log(string.Format("  {0:F0} ft  {1,-34} layer={2}  ({3:F1},{4:F1})", dist, what, ent.Layer, mx, my));
}
Log("far entities: " + far);
Log("");
// the boundary layers
Log("--- SS-BOUNDARY / PARCEL layers ---");
foreach (ObjectId id in ms) {
    var ent = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
    if (ent == null) continue;
    if (ent.Layer.ToUpper().IndexOf("BOUND") < 0 && ent.Layer.ToUpper().IndexOf("PARCEL") < 0) continue;
    double a,b,c,d;
    try { var e = ent.GeometricExtents; a=e.MinPoint.X;b=e.MinPoint.Y;c=e.MaxPoint.X;d=e.MaxPoint.Y; } catch { continue; }
    var pl = ent as Polyline;
    string extra = pl != null ? string.Format(" verts={0} len={1:F1} closed={2}", pl.NumberOfVertices, pl.Length, pl.Closed) : "";
    Log(string.Format("  [{0}] {1,-12} layer={2,-24} ({3:F1},{4:F1})-({5:F1},{6:F1}){7}",
        ent.Handle, ent.GetType().Name, ent.Layer, a,b,c,d, extra));
}

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-0278 (0 entities touched).
Entities
Duration
578 ms
Civil 3D
25.0.0.0

Log

MODEL EXTENTS (0.00,0.00)-(2298534.11,1280399.85)  = 2298534.1 x 1280399.9 ft
to fit 16.34 x 10.34 in: needs 1"=140669.2' (width) or 1"=123829.8' (height)

--- entities more than 400 ft from the model centre ---
  1315550 ft  Site                               layer=C-ANNO-TABL-TTBL  (0.0,0.0)
  1315550 ft  Site                               layer=C-ANNO-TABL-TTBL  (0.0,0.0)
  1315550 ft  Site                               layer=C-ANNO-TABL-TTBL  (0.0,0.0)
  1315550 ft  Site                               layer=C-ANNO-TABL-TTBL  (0.0,0.0)
  1315550 ft  Site                               layer=C-ANNO-TABL-TTBL  (0.0,0.0)
  1314095 ft  PT 129 "R/W"                       layer=0  (2296951.4,1280252.2)
  1313770 ft  PT 193 "SIGN"                      layer=PROJECT_BOUNDARY_TEXT  (2296585.7,1280239.9)
  1313781 ft  PT 248 "H CAP SIGN"                layer=PROJECT_BOUNDARY_TEXT  (2296648.4,1280151.0)
  1313797 ft  PT 255 "H CAP SIGN"                layer=PROJECT_BOUNDARY_TEXT  (2296666.1,1280150.9)
  1313777 ft  PT 344 "SSMH A9"                   layer=SEWER_MANHOLE E1  (2296714.1,1280025.3)
  1313791 ft  PT 345 "WATER LINE STUB"           layer=WATER_LINE_PTS  (2296723.0,1280036.2)
  1313767 ft  PT 352 "SSMH A10"                  layer=SEWER_MANHOLE E1  (2296691.0,1280045.9)
  1313765 ft  PT 353 "SSMH TEST MH"              layer=SEWER_MANHOLE E1  (2296685.2,1280052.4)
  1313785 ft  PT 356 "TBC SW WATER TO BLDG"      layer=WATER_LINE_PTS  (2296693.4,1280077.6)
  1313739 ft  PT 358 "SSMH TEST MH"              layer=SEWER_MANHOLE E1  (2296652.0,1280058.1)
  1313707 ft  PT 360 "CLEAN OUT"                 layer=PROJECT_BOUNDARY_TEXT  (2296614.7,1280057.9)
  1313700 ft  PT 361 "CLEAN OUT"                 layer=PROJECT_BOUNDARY_TEXT  (2296608.5,1280055.9)
  1313728 ft  PT 370 "CLEAN OUT"                 layer=PROJECT_BOUNDARY_TEXT  (2296633.8,1280068.3)
  1313713 ft  PT 374 "CLEAN OUT"                 layer=PROJECT_BOUNDARY_TEXT  (2296612.4,1280075.6)
  1313692 ft  PT 377 "SSMH A12"                  layer=SEWER_MANHOLE E1  (2296604.6,1280046.2)
  1313911 ft  PT 378 "SSMH A6"                   layer=SEWER_MANHOLE  (2296827.2,1280096.0)
  1313926 ft  PT 379 "SSMH A5"                   layer=SEWER_MANHOLE  (2296878.7,1280034.2)
  1313955 ft  PT 380 "SSMH A4"                   layer=SEWER_MANHOLE  (2296980.5,1279912.3)
  1314075 ft  PT 381 "SSMH A3"                   layer=SEWER_MANHOLE  (2297249.9,1279675.2)
  1314054 ft  PT 382 "SSMH A2"                   layer=SEWER_MANHOLE  (2297269.0,1279597.7)
far entities: 6444

--- SS-BOUNDARY / PARCEL layers ---
  [23712] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296577.5,1280236.9)-(2296594.0,1280242.9)
  [23749] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296645.3,1280133.9)-(2296651.6,1280168.1)
  [23750] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296663.1,1280133.8)-(2296669.1,1280168.0)
  [237B9] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296598.3,1280054.9)-(2296631.2,1280060.9)
  [237BA] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296592.1,1280052.9)-(2296625.0,1280058.9)
  [237C3] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296604.7,1280061.1)-(2296662.9,1280075.5)
  [237C7] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296596.0,1280072.6)-(2296628.9,1280078.6)
  [237DF] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296685.7,1280077.3)-(2296718.7,1280083.3)
  [237EB] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296520.2,1280007.7)-(2296544.2,1280017.3)
  [238E9] CogoPoint    layer=PROJECT_BOUNDARY_TEXT    (2296484.8,1280031.5)-(2296552.9,1280055.8)
  [2E1E9] Site         layer=SS-BOUNDARY              (2296319.1,1279728.4)-(2296945.9,1280257.8)
  [2F0C3] Polyline     layer=SS-BOUNDARY              (2296377.8,1279586.6)-(2297434.2,1280115.6) verts=27 len=2871.3 closed=True
  [2F0C7] Polyline     layer=SS-BOUNDARY              (2296377.8,1279586.6)-(2297434.2,1280115.6) verts=27 len=2871.3 closed=True
  [2F0DE] Site         layer=SS-BOUNDARY              (2296378.6,1279941.4)-(2296842.2,1280109.2)
  [2F0E0] Parcel       layer=SS-BOUNDARY              (2296378.6,1279941.4)-(2296842.2,1280109.2)

Notes

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

No notes yet.