← Inbox

C3D-INSP619A · Read 260619 boundary+deed text (read-only) done

Parcels/areas, boundary line+curve calls (bearing/distance), and deed/adjoiner text for the open Stonewall Tell drawing.

Script file
C3D-INSP619A.cs
Target
active document · model space
Author
claude
Approved
yes · claude (read-only)
Timeout
60s

C# payload

// READ-ONLY: what's in the open 260619 drawing for deed review.
// boundary layers + their line/curve calls (bearing+distance), any deed/adjoiner text, parcels.
using System;
using System.Linq;
using System.Collections.Generic;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.Civil.ApplicationServices;
using Autodesk.Civil.DatabaseServices;

var db = Db;
Log($"ACTIVE: {System.IO.Path.GetFileName(Doc.Name)}");

// parcels + areas
using (var tr = db.TransactionManager.StartTransaction())
{
    var cdoc = CivilDocument.GetCivilDocument(db);
    foreach (ObjectId sid in cdoc.GetSiteIds())
    {
        var site = (Site)tr.GetObject(sid, OpenMode.ForRead);
        foreach (ObjectId pid in site.GetParcelIds())
        {
            var p = (Parcel)tr.GetObject(pid, OpenMode.ForRead);
            Log($"PARCEL #{p.Number} '{p.Name}' {p.Area/43560.0:0.000} ac  layer='{p.Layer}'");
        }
    }
    tr.Commit();
}

// boundary geometry: lines/arcs on boundary-ish layers, as bearing+distance calls
double toBearing(double ang) { var d = ang*180/Math.PI; return d; }
string bearingStr(Point3d a, Point3d b)
{
    double dx=b.X-a.X, dy=b.Y-a.Y;
    double az = Math.Atan2(dx,dy)*180/Math.PI; if(az<0)az+=360; // azimuth from north
    string ns = (dy>=0)?"N":"S"; string ew=(dx>=0)?"E":"W";
    double q = Math.Atan2(Math.Abs(dx),Math.Abs(dy))*180/Math.PI;
    int deg=(int)q; double mf=(q-deg)*60; int min=(int)mf; int sec=(int)Math.Round((mf-min)*60);
    if(sec==60){sec=0;min++;} if(min==60){min=0;deg++;}
    return $"{ns}{deg:00}°{min:00}'{sec:00}\"{ew}";
}
using (var tr = db.TransactionManager.StartTransaction())
{
    var ms = (BlockTableRecord)tr.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForRead);
    var boundaryLayers = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
    var lt = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead);
    foreach (ObjectId id in lt){ var l=(LayerTableRecord)tr.GetObject(id,OpenMode.ForRead); if(l.Name.IndexOf("BOUNDARY",StringComparison.OrdinalIgnoreCase)>=0) boundaryLayers.Add(l.Name);}
    Log($"BOUNDARY LAYERS: {string.Join(", ", boundaryLayers)}");
    int shown=0;
    foreach (ObjectId id in ms)
    {
        var e = tr.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
        if (e==null || !boundaryLayers.Contains(e.Layer)) continue;
        if (e is Line ln){ Log($"  [{e.Layer}] L {bearingStr(ln.StartPoint,ln.EndPoint)}  {ln.Length:0.00}'"); shown++; }
        else if (e is Arc a){ double chord=a.StartPoint.DistanceTo(a.EndPoint); Log($"  [{e.Layer}] C R={a.Radius:0.00}' L={a.Length:0.00}' chord={chord:0.00}'"); shown++; }
        else if (e is Polyline pl){ Log($"  [{e.Layer}] PL verts={pl.NumberOfVertices} len={pl.Length:0.00}' closed={pl.Closed} area={pl.Area:0.0}sf ({pl.Area/43560.0:0.000}ac)"); shown++; }
    }
    Log($"boundary entities shown: {shown}");
    tr.Commit();
}

// deed/adjoiner text (DB xxxxx, PB xx, N/F, TRACT)
using (var tr = db.TransactionManager.StartTransaction())
{
    var ms = (BlockTableRecord)tr.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForRead);
    var hits = new List<string>();
    foreach (ObjectId id in ms)
    {
        var e = tr.GetObject(id, OpenMode.ForRead);
        string s=null;
        if(e is DBText t) s=t.TextString; else if(e is MText m) s=m.Text;
        if(string.IsNullOrWhiteSpace(s)) continue;
        var u=s.ToUpperInvariant();
        if(u.Contains("DB ")||u.Contains("D.B")||u.Contains("PB ")||u.Contains("P.B")||u.Contains("N/F")||u.Contains("TRACT")||u.Contains("DEED")||u.Contains("R/W"))
            hits.Add(s.Replace("\n"," ").Trim());
    }
    Log($"DEED/ADJOINER TEXT ({hits.Count}):");
    foreach(var h in hits.Distinct().Take(60)) Log($"  {h}");
    tr.Commit();
}

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260619 - 3625 Stonewall Tell Rd, Atlanta, GA 30349, USA\260619 - 3625 Stonewall Tell Rd.dwg
Message
Executed C3D-INSP619A (0 entities touched).
Entities
Duration
504 ms
Civil 3D
25.0.0.0

Log

ACTIVE: 260619 - 3625 Stonewall Tell Rd.dwg
PARCEL #5 'TRACT B' 3.314 ac  layer='C-PROP'
PARCEL #6 'TRACT A' 0.994 ac  layer='C-PROP'
BOUNDARY LAYERS: SS-BOUNDARY BLUE, SS-BOUNDARY_PTS, SS-BOUNDARY RED, SS-BOUNDARY, SS-BOUNDARY LAND LOT, BOUNDARY PTS, SS-BOUNDARY CYAN, SS-BOUNDARY MAG
  [SS-BOUNDARY] L S00°10'45"E  902.74'
  [SS-BOUNDARY] L N86°29'57"W  81.68'
  [SS-BOUNDARY MAG] PL verts=19 len=1200.80' closed=False area=129561.8sf (2.974ac)
  [SS-BOUNDARY MAG] L S12°55'50"W  236.86'
  [SS-BOUNDARY MAG] L S12°51'39"W  46.50'
  [SS-BOUNDARY MAG] L S13°01'55"W  101.37'
  [SS-BOUNDARY MAG] L S12°42'16"W  48.14'
  [SS-BOUNDARY MAG] L S12°37'13"W  94.86'
  [SS-BOUNDARY MAG] L S13°00'34"W  53.16'
  [SS-BOUNDARY MAG] L S12°35'09"W  147.36'
  [SS-BOUNDARY MAG] L S13°10'31"W  81.66'
  [SS-BOUNDARY MAG] L S12°48'49"W  24.16'
  [SS-BOUNDARY MAG] L S13°00'13"W  41.31'
  [SS-BOUNDARY] L N87°46'52"W  185.75'
  [SS-BOUNDARY] L S02°41'24"W  669.56'
  [SS-BOUNDARY] L S74°19'43"E  125.40'
boundary entities shown: 16
DEED/ADJOINER TEXT (17):
  STONEWALL TELL ROAD
 (R/W VARIES)
  DEMONEY ROAD
 (R/W VARIES)
  NEWBORN DRIVE SW
 (R/W VARIES)
  N/F BOBBY WALKER
 DB 32512 - PG 402
 MARCH 11, 2002
  N/F LATISSA NECOLE THOMAS
 & DANIEL WEBSTER WHITE
 JANUARY 30, 2001
  N/F JEFFERY L. VAUGHAN
 APRIL 30, 2001
 DB 30326 - PG 474
 DB 16958 - PG 165 - NOT REFERENCED
  TRACT "A"
 AREA
 43,299 sq.ft.
 0.99 acres
  TRACT "B"
 AREA
 144,347 sq.ft.
 3.31 acres
  TRACT "D"
 AREA
 119,893 sq.ft.
 2.75 acres
  PROPERTY LINE PER MONUMENTS FOUND
 AND ADJOINER'S DB 32512 - PG 402
  LAND LOT LINE
 PER PB PG 82 - PG 17
  NORTH TRACT
 CALLS FOR 50' R/W STONEWALL TELL ROAD
 DB 30122 - PG 413
  PROPERTY LINE PER MONUMENTS FOUND
 AND ADJOINER'S DB 28196 - PG 23 (R=700.3')
  NO DEED REFERENCED
 FOR MONUMENTATION
  SURVEYOR RECOMMENDS BOUNDARY LINE AGREEMENT
 PROPERTY LINE PER MONUMENTS FOUND
 AND ADJOINER'S DB 32449 - PG 421
  LINE PER TAX - NO DEED REFERENCED
  NO DEED REFERENCED
 FOR CONVEYANCE

Notes

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

No notes yet.