← Inbox

C3D-HEROBLAYER · TRACT B hero layer (bold on sheet B only) done

Reset SS-BOUNDARY TRACT B entity LW to default; copy boundary onto new SS-HERO TRACT B @0.35mm; freeze that layer in sheet A's VP so bold shows on B only. Nothing else touched.

Script file
C3D-HEROBLAYER.cs
Target
260619 - 3625 Stonewall Tell Rd.dwg · model space
Author
claude
Approved
yes · reviewer
Timeout
60s

C# payload

// Per-sheet hero layer for TRACT B (no VP lineweight override; layers + per-VP freeze).
// 1) reset SS-BOUNDARY TRACT B polyline lineweight -> ByLayer (stop the both-sheets bold bleed)
// 2) create layer SS-HERO TRACT B @ 0.35mm; copy the B boundary polyline onto it (bold via layer)
// 3) freeze SS-HERO TRACT B in sheet "22X17 A" viewport so the bold shows on B only
// Nothing else touched. Reversible.
using System;
using System.Linq;
using System.Collections.Generic;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Colors;

var db = Db;
const string SRC = "SS-BOUNDARY TRACT B";
const string HERO = "SS-HERO TRACT B";

// ensure hero layer exists at 0.35mm, blue (color 5, matching TRACT B)
using (var tr = db.TransactionManager.StartTransaction())
{
    var lt=(LayerTable)tr.GetObject(db.LayerTableId,OpenMode.ForWrite);
    ObjectId hid;
    if(lt.Has(HERO)) hid=lt[HERO];
    else {
        var ltr=new LayerTableRecord{ Name=HERO };
        ltr.Color=Color.FromColorIndex(ColorMethod.ByAci,5);
        hid=lt.Add(ltr); tr.AddNewlyCreatedDBObject(ltr,true);
    }
    var hl=(LayerTableRecord)tr.GetObject(hid,OpenMode.ForWrite);
    hl.LineWeight=LineWeight.LineWeight035; // hero bold standard
    hl.IsFrozen=false; hl.IsOff=false;
    tr.Commit();
}

int reset=0, copied=0;
using (var tr = db.TransactionManager.StartTransaction())
{
    var ms=(BlockTableRecord)tr.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db),OpenMode.ForWrite);
    // collect source polylines first
    var srcIds=new List<ObjectId>();
    foreach(ObjectId id in ms){ var e=tr.GetObject(id,OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
        if(e is Polyline && string.Equals(e.Layer,SRC,StringComparison.OrdinalIgnoreCase)) srcIds.Add(id); }
    foreach(var id in srcIds)
    {
        var pl=(Polyline)tr.GetObject(id,OpenMode.ForWrite);
        pl.LineWeight=LineWeight.ByLineWeightDefault; // back to ByLayer-ish (stop entity override)
        reset++;
        // copy onto hero layer
        var clone=(Polyline)pl.Clone();
        clone.Layer=HERO;
        clone.LineWeight=LineWeight.ByLayer; // bold comes from the hero layer (0.35)
        ms.AppendEntity(clone);
        tr.AddNewlyCreatedDBObject(clone,true);
        copied++;
    }
    tr.Commit();
}
Log($"reset SRC lineweight={reset}, copied to '{HERO}'={copied}");

// freeze SS-HERO TRACT B in sheet 22X17 A's viewport (show bold on B only)
using (var tr = db.TransactionManager.StartTransaction())
{
    var lt=(LayerTable)tr.GetObject(db.LayerTableId,OpenMode.ForRead);
    var heroId = lt.Has(HERO)?lt[HERO]:ObjectId.Null;
    var ld=(DBDictionary)tr.GetObject(db.LayoutDictionaryId,OpenMode.ForRead);
    foreach(DBDictionaryEntry e in ld)
    {
        var lay=(Layout)tr.GetObject(e.Value,OpenMode.ForRead);
        if(!string.Equals(lay.LayoutName,"22X17 A",StringComparison.OrdinalIgnoreCase)) continue;
        foreach(ObjectId vid in lay.GetViewports())
        {
            var vp=tr.GetObject(vid,OpenMode.ForWrite) as Viewport;
            if(vp==null||vp.Number==1) continue;
            if(heroId!=ObjectId.Null){ vp.FreezeLayersInViewport(new[]{heroId}.AsEnumerable().GetEnumerator()); Log($"[22X17 A] froze {HERO} in VP#{vp.Number}"); }
        }
    }
    tr.Commit();
}
Log($"DONE. TRACT B hero on '{HERO}' @0.35mm, visible on sheet B, frozen in sheet A. SRC lineweight reset. Nothing else touched.");

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

Log

reset SRC lineweight=1, copied to 'SS-HERO TRACT B'=1
[22X17 A] froze SS-HERO TRACT B in VP#-1
[22X17 A] froze SS-HERO TRACT B in VP#-1
DONE. TRACT B hero on 'SS-HERO TRACT B' @0.35mm, visible on sheet B, frozen in sheet A. SRC lineweight reset. Nothing else touched.

Notes

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

No notes yet.