For some reason, I can't create Median Depressed subassembly in code. This is my code
[CommandMethod(nameof(TestMarkPointLaneCreation))]
public void TestMarkPointLaneCreation()
{
var doc = Application.DocumentManager.MdiActiveDocument;
using Transaction tr = doc.TransactionManager.StartTransaction();
var assId = CivilApplication.ActiveDocument.AssemblyCollection.Add("Test", AssemblyType.UndividedCrownedRoad, Point3d.Origin);
var markPointTemplateId = CivilApplication.ActiveDocument.SubassemblyCollection.ImportStockSubassembly("MarkPoint", "Subassembly.MarkPoint", Point3d.Origin);
var medianDepressedId = CivilApplication.ActiveDocument.SubassemblyCollection.ImportStockSubassembly("MedianDepressed", "Subassembly.MedianDepressed", Point3d.Origin);
var markPointTemplate = tr.GetObject(markPointTemplateId, OpenMode.ForWrite) as Subassembly;
var pointName = markPointTemplate.ParamsString["PointName"];
pointName.Value = "FirstMarkPoint";
var ass = assId.GetObject(OpenMode.ForWrite) as Assembly;
var medianDepressed = tr.GetObject(medianDepressedId, OpenMode.ForWrite) as Subassembly;
var markedPointName = medianDepressed.ParamsString["MarkedPointName"];
markedPointName.Value = pointName.Value;
var slope1Val = medianDepressed.ParamsDouble["Slope1"];
slope1Val.Value = -1/2.0; // somehow this value is exactly the inverse of what you see in the UI...
Debug.Assert(-1/2.0 == slope1Val.Value);
var assemblyGroupRight = ass.AddSubassembly(markPointTemplateId);
assemblyGroupRight.Name = "Right";
ass.AddSubassembly(medianDepressed.ObjectId, markPointTemplate.Points[0]);
tr.Commit();
}
When I examine the Median Depressed subassembly, it seems like it has only 1 Point which is not correct.