← Inbox

C3D-0329 · List all segment labels with segment length, layer, lineweight and style [C3D-PSL3] done

Read-only. Each ParcelSegmentLabel with its labelled segment length (so 408.70 / 79.34 / 1089.00 / 150.35 can be identified by handle), plus its layer, entity lineweight, style name and screen position. Also enumerates the parcel line/curve label styles.

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

C# payload

Log("drawing: " + Db.Filename);
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForRead);

int n = 0;
foreach (ObjectId id in ms) {
    var obj = Tx.GetObject(id, OpenMode.ForRead);
    string cls = obj.GetType().Name;
    if (cls != "ParcelSegmentLabel" && cls != "GeneralSegmentLabel") continue;
    var ent = (Autodesk.AutoCAD.DatabaseServices.Entity)obj;
    n++;

    string styleName = "?";
    try {
        var sid = (ObjectId)obj.GetType().GetProperty("StyleId").GetValue(obj, null);
        if (!sid.IsNull) {
            var st = Tx.GetObject(sid, OpenMode.ForRead);
            styleName = (st.GetType().GetProperty("Name").GetValue(st, null) ?? "").ToString();
        }
    } catch { }

    // the labelled segment length - this is the 408.70 / 79.34 / 1089.00 / 150.35
    double len = -1; double bearing = -1;
    try {
        var fid = (ObjectId)obj.GetType().GetProperty("FeatureId").GetValue(obj, null);
        if (!fid.IsNull) {
            var f = Tx.GetObject(fid, OpenMode.ForRead);
            var cv = f.GetType().GetProperty("BaseCurve");
            if (cv != null) {
                var c = cv.GetValue(f, null) as Autodesk.AutoCAD.DatabaseServices.Curve;
                if (c != null) {
                    len = c.GetDistanceAtParameter(c.EndParam) - c.GetDistanceAtParameter(c.StartParam);
                    var sp = c.StartPoint; var epp = c.EndPoint;
                    bearing = Math.Atan2(epp.Y - sp.Y, epp.X - sp.X) * 180.0 / Math.PI;
                }
            }
        }
    } catch (System.Exception e) { Log("   feat err: " + e.Message); }

    Autodesk.AutoCAD.DatabaseServices.Extents3d ex;
    string loc = "";
    try { ex = ent.GeometricExtents; loc = string.Format("({0:F1},{1:F1})", (ex.MinPoint.X+ex.MaxPoint.X)/2, (ex.MinPoint.Y+ex.MaxPoint.Y)/2); } catch { }

    Log(string.Format("[{0}] {1,-20} len={2,9:F2} brg={3,8:F2} layer={4,-18} lw={5,-22} style=\"{6}\" at {7}",
        ent.Handle, cls, len, bearing, ent.Layer, ent.LineWeight, styleName, loc));
}
Log("");
Log("segment labels: " + n);

Log("--- parcel segment label styles in the drawing ---");
var civ = Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument;
try {
    var styles = civ.Styles.LabelStyles.ParcelLabelStyles.LineLabelStyles;
    foreach (ObjectId sid in styles) {
        var s = Tx.GetObject(sid, OpenMode.ForRead);
        Log("  LINE  " + (s.GetType().GetProperty("Name").GetValue(s,null)));
    }
    foreach (ObjectId sid in civ.Styles.LabelStyles.ParcelLabelStyles.CurveLabelStyles) {
        var s = Tx.GetObject(sid, OpenMode.ForRead);
        Log("  CURVE " + (s.GetType().GetProperty("Name").GetValue(s,null)));
    }
} catch (System.Exception e) { Log("  style enum: " + e.Message); }

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260714 - 285 Huckaby Rd, Brooks, GA 30205, USA\260714 - 285 Huckaby Rd R2.dwg
Message
Executed C3D-0329 (0 entities touched).
Entities
Duration
2093 ms
Civil 3D
25.0.0.0

Log

drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260714 - 285 Huckaby Rd, Brooks, GA 30205, USA\260714 - 285 Huckaby Rd R2.dwg
[21453] GeneralSegmentLabel  len=    -1.00 brg=   -1.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (0.5,0.0)
[21458] ParcelSegmentLabel   len=  7011.06 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2203439.5,1207001.8)
[21459] ParcelSegmentLabel   len=  7011.06 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2204346.4,1206714.8)
[2145A] ParcelSegmentLabel   len=  7011.06 brg=    0.00 layer=C-PROP-LINE        lw=ByLayer                style="?" at (2205327.4,1206731.4)
[2145B] ParcelSegmentLabel   len=  7011.06 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2205800.3,1206804.1)
[2145D] ParcelSegmentLabel   len=  7011.06 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2204909.7,1207303.3)
[2148C] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2205807.7,1206954.0)
[2148D] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2205316.3,1206985.5)
[2148E] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2205068.8,1207018.1)
[2148F] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2204778.5,1206844.8)
[21490] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=C-PROP-LINE        lw=ByLayer                style="?" at (2205049.2,1206718.5)
[21491] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2205254.7,1206759.3)
[21492] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=C-PROP-LINE        lw=ByLayer                style="?" at (2205800.3,1206804.1)
[21493] ParcelSegmentLabel   len=  3511.51 brg=    0.00 layer=C-PROP-LINE        lw=ByLayer                style="?" at (2206284.6,1206886.6)
[214AA] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2204718.6,1207302.1)
[214AB] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=SS-0-FRAME         lw=ByLayer                style="?" at (2203439.7,1207171.9)
[214AC] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2204142.1,1206713.7)
[214AD] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2204764.3,1206850.7)
[214AE] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2205051.6,1206968.5)
[214AF] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2205326.5,1206997.4)
[214B0] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2205807.7,1206954.0)
[214B1] ParcelSegmentLabel   len=  7067.70 brg=    0.00 layer=C-PROP-LINE-TEXT   lw=ByLayer                style="?" at (2206263.5,1207229.8)

segment labels: 22
--- parcel segment label styles in the drawing ---
  style enum: Property Get method was not found.

Notes

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

No notes yet.