想要通过C#实现如下两个功能:
1、在一根线路上创建廊道;
2、在创建的廊道上应用Template drop生成路基模型
请问现在的ORD有提供这样的API么?
以下代码示例如何通过路线创建一个廊道对象。
CorridorEdit CreateCorridor(ConsensusConnectionEdit con, Alignment alignment, String strName) { CorridorEdit newCorridor = CorridorEdit.CreateByAlignment(con, strName , alignment); Return newCorridor; }
以下代码示例如何在廊道对象上增加一个模板应用对象。
void CreateTemplateDrop(CorridorEdit corridor, double startStation, double endStation, TemplateDefinition tempDef) { TemplateDropParameters tempDropParams = new TemplateDropParameters(tempDef, startStation, endStation); tempDropParams.Interval = 5.0; tempDropParams.Desription = "Test Add TemplateDrop"; TemplateDropEdit templateDrop = corridor.AddTemplateDrop(tempDropParams); Return templateDrop; }
以下代码示例如何将一个模板应用对象分割为多个模板应用对象:
IList<TemplateDropEdit> SplitTemplateDrop(TemplateDropEdit templateDropEdit) { System.Collections.Generic.List<double> station = new List<double>(); station.Add(3000.00); station.Add(6000.00); IList<TemplateDropEdit> newTemplateDrops = templateDropEdit.Split(station); Return newTemplateDrops; }
张总,我试了下你发的构建廊道方法,这个CorrdiorEdit对象好像是个Internal对象访问不了呀,
后面的CreateByAlignment方法好像页没有找打。
目前重构了,就是用Corridor就行,抱歉,之前的是重构前的。
张总,我构建了廊道以后,没有报错,但是在Alignment上面看不到廊道,请问可能是什么问题?
这是我的代码
public static Corridor CreateCorridor(Alignment alignment, string alignName, string corriName) { ConsensusConnectionEdit con = ConsensusConnectionEdit.GetActive(); Alignment align = GetAlignmentByName(alignName); if (align != null) { // con.StartTransientMode(); Corridor newCorridor = Corridor.CreateFromElement(con, align.Element); // Corridor newCorridor = align.CreateCorridorByAlignment("testCorridor2"); con.PersistTransients(); return newCorridor; } return null; }
在线路上没有看到廊道:
请参考下面代码:
Line line = Line.Create1(new DPoint3d(0, 0, 0), new DPoint3d(1000, 0, 0)); Alignment alignment = con.GetActiveGeometricModel().CreateAlignmentByLinearElement(line, true); Corridor corridor = alignment.CreateCorridorByAlignment("TestCorridor");
张总,测试了您发的这一段代码,好像还是不行。
建出来的Alignment还是没有看到廊道。
static void testCreateAlignment () { ConsensusConnectionEdit con = ConsensusConnectionEdit.GetActive(); con.StartTransientMode(); List<Bentley.GeometryNET.DPoint3d> points = new List<Bentley.GeometryNET.DPoint3d>(); Bentley.GeometryNET.DPoint3d pt1 = new Bentley.GeometryNET.DPoint3d(0, 0, 0); Bentley.GeometryNET.DPoint3d pt2 = new Bentley.GeometryNET.DPoint3d(1000, 0, 0); points.Add(pt1); points.Add(pt2); Bentley.GeometryNET.CurveVector cv = Bentley.GeometryNET.CurveVector.CreateLinear(points, Bentley.GeometryNET.CurveVector.BoundaryType.Inner, false); Alignment al = con.GetActiveGeometricModel().CreateAlignmentByCurveVector(cv); var profile = al.CreateProfileByConstElevation(100, true); Corridor corridor = al.CreateCorridorByAlignment("TestCorridor"); con.PersistTransients(); }
Answer Verified By: fanghua wei
谢谢张总,现在我可以创建出廊道了。
感谢您的及时反馈。有空时请阅读置顶的【发帖指南】,在获得正确答案后还请帮助确认正确答案。谢谢!