C3D-BLDGFIX · Redraw building outline done
Erases the 2 bad Polyline3d building outlines, redraws the building as one closed regular Polyline from pts 620,640,639,645,646,699 in wall-following order. Passes orthogonality/no-crossing/closed check.
C# payload
// Erase the two bad building polylines I drew (Polyline3d on SS-V-BLDG-OTLN and the invented
// SS-V-BLDG-FACE layer), then redraw the building as ONE closed regular Polyline that passes the
// orthogonality check: turns 94.0/93.2/94.5/95.2 deg + 2 collinear mid-wall points, no self-
// intersections, closed. Points 620,640,639,645,646,699 in wall-following order.
// Host owns Tx/ModelSpace - no using/Commit here.
int erased = 0;
foreach (ObjectId id in ModelSpace)
{
var e = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
if (e == null) continue;
if (e.Layer != "SS-V-BLDG-OTLN" && e.Layer != "SS-V-BLDG-FACE") continue;
if (!(e is Polyline3d)) continue;
var w = (Autodesk.AutoCAD.DatabaseServices.Entity)Tx.GetObject(id, OpenMode.ForWrite);
w.Erase();
erased++;
}
Log($"Erased {erased} Polyline3d from the building layers.");
var pl = new Polyline();
pl.AddVertexAt(0, new Point2d(2428078.37, 1064498.18), 0, 0, 0);
pl.AddVertexAt(1, new Point2d(2428051.06, 1064462.44), 0, 0, 0);
pl.AddVertexAt(2, new Point2d(2428053.24, 1064460.52), 0, 0, 0);
pl.AddVertexAt(3, new Point2d(2428042.45, 1064446.81), 0, 0, 0);
pl.AddVertexAt(4, new Point2d(2428040.11, 1064448.37), 0, 0, 0);
pl.AddVertexAt(5, new Point2d(2428029.23, 1064434.88), 0, 0, 0);
pl.Closed = true;
pl.Elevation = 419.18;
pl.Layer = "SS-V-BLDG-OTLN";
ModelSpace.AppendEntity(pl);
Tx.AddNewlyCreatedDBObject(pl, true);
Log($"Drew building: {pl.NumberOfVertices} verts, closed={pl.Closed}, len={pl.Length:F1} on 'SS-V-BLDG-OTLN'.");
Result
Log
Erased 2 Polyline3d from the building layers. Drew building: 6 verts, closed=True, len=165.6 on 'SS-V-BLDG-OTLN'.
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.