请问现在可以通过C#代码来实现廊道的构建么?

想要通过C#实现如下两个功能:

1、在一根线路上创建廊道;

2、在创建的廊道上应用Template drop生成路基模型

请问现在的ORD有提供这样的API么?

Parents
  • 以下代码示例如何通过路线创建一个廊道对象。

    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方法好像页没有找打。

  • 张总,我构建了廊道以后,没有报错,但是在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 

  • 谢谢张总,现在我可以创建出廊道了。

Reply Children