C3D-0320 · 260714 Huckaby R2: power centrelines to the GRCV squiggle done
Not a W - the squiggle. GRCV is the AutoCAD overhead-power linetype already loaded in this drawing (4 dashes, patLen 0.390, shape 133 from GRCV.shx, and the shape style is present so it renders). Assigns GRCV to SS-V-POWER-CL, sets the 4 centrelines ByLayer at LinetypeScale 40 for ~15.6 ft per squiggle on 350-1600 ft runs, and erases the POWER_LINE (W) linetype from the previous attempt. Verifies the layer assignment and each entity.
C# payload
// Use the SQUIGGLE, not a W. GRCV is the AutoCAD overhead-power pattern and it is already loaded
// in this drawing: 4 dashes, patLen 0.390, with shape #133 from GRCV.shx as the squiggle glyph
// (verified C3D-0319, and the GRCV.shx shape style is present so it will actually draw).
//
// Puts SS-V-POWER-CL on GRCV, sets a LinetypeScale that suits 350-1600 ft runs, and purges the
// POWER_LINE linetype I made earlier so it does not linger.
const string LTNAME = "GRCV";
const string LAYER = "SS-V-POWER-CL";
const double LTS = 40.0; // 0.390 * 40 = ~15.6 ft per squiggle
Log("drawing: " + Db.Filename);
var ltt = (LinetypeTable)Tx.GetObject(Db.LinetypeTableId, OpenMode.ForWrite);
if (!ltt.Has(LTNAME)) { Log("GRCV not loaded - stopping."); return; }
ObjectId ltId = ltt[LTNAME];
{
var r = (LinetypeTableRecord)Tx.GetObject(ltId, OpenMode.ForRead);
Log(string.Format("using {0}: dashes={1} patLen={2:F3} \"{3}\"", r.Name, r.NumDashes, r.PatternLength, r.Comments));
}
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
if (!lt.Has(LAYER)) { Log("layer " + LAYER + " missing - stopping."); return; }
var ltr = (LayerTableRecord)Tx.GetObject(lt[LAYER], OpenMode.ForWrite);
ltr.LinetypeObjectId = ltId;
{
var back = (LayerTableRecord)Tx.GetObject(lt[LAYER], OpenMode.ForRead);
var used = (LinetypeTableRecord)Tx.GetObject(back.LinetypeObjectId, OpenMode.ForRead);
Log("layer " + back.Name + " linetype -> " + used.Name + " (verified)");
}
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForWrite);
int n = 0;
foreach (ObjectId id in ms) {
var probe = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
if (probe == null || !probe.Layer.Equals(LAYER, StringComparison.OrdinalIgnoreCase)) continue;
var w = (Autodesk.AutoCAD.DatabaseServices.Entity)Tx.GetObject(id, OpenMode.ForWrite);
w.LinetypeId = Db.ByLayerLinetype;
w.LinetypeScale = LTS;
n++;
var back = (Autodesk.AutoCAD.DatabaseServices.Entity)Tx.GetObject(id, OpenMode.ForRead);
var bl = (LinetypeTableRecord)Tx.GetObject(back.LinetypeId, OpenMode.ForRead);
var line = back as Line;
Log(string.Format(" [{0}] ltype={1} ltscale={2:F1} len={3:F1} -> ~{4:F0} squiggles (verified)",
back.Handle, bl.Name, back.LinetypeScale,
line != null ? line.Length : 0.0,
line != null ? line.Length / (0.390 * LTS) : 0.0));
}
// ---- drop the W linetype from the previous attempt
if (ltt.Has("POWER_LINE")) {
try {
var dead = (LinetypeTableRecord)Tx.GetObject(ltt["POWER_LINE"], OpenMode.ForWrite);
dead.Erase();
Log("erased the earlier POWER_LINE (W) linetype");
} catch (System.Exception e) { Log("could not erase POWER_LINE: " + e.Message); }
}
Log("");
Log(string.Format("GRCV squiggle applied to {0} centrelines on {1}", n, LAYER));
Ed.Regen();
Result
Log
drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260714 - 285 Huckaby Rd, Brooks, GA 30205, USA\260714 - 285 Huckaby Rd R2.dwg using GRCV: dashes=4 patLen=0.390 "GRCV---~~----~~---" layer SS-V-POWER-CL linetype -> GRCV (verified) [20C9D] ltype=ByLayer ltscale=40.0 len=893.0 -> ~57 squiggles (verified) [20C9E] ltype=ByLayer ltscale=40.0 len=364.6 -> ~23 squiggles (verified) [20CA9] ltype=ByLayer ltscale=40.0 len=1514.6 -> ~97 squiggles (verified) [20CB1] ltype=ByLayer ltscale=40.0 len=1569.6 -> ~101 squiggles (verified) erased the earlier POWER_LINE (W) linetype GRCV squiggle applied to 4 centrelines on SS-V-POWER-CL
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.