【C# ORD】创建超高车道,赋予廊道后超高未变化,望解答~

代码摘自例程 C:\Program Files\Bentley\OpenRoadsDesignerCONNECTSDK\examples\ManagedSDKExample\Examples\SuperElevationCreator.cs  结尾为新增代码。模板已上传,劳烦老师们帮忙看一下,多谢!

Entity.Super_Property super_Property = Entity.Super_Property.GetPSPropertyObj();
            ConsensusConnectionEdit con = ConsensusConnectionEdit.GetActive();
            con.StartTransientMode();
            //CreateSingleSuperElevationSection(string Name, double startDistance, double endDistance, Alignment alignment);
            //通过区间名称、起始位置、终止位置和平面线形,创建一个超高区间。
            string sectionName = form.getSectionName();
            double startDistance = form.getStartDistance();
            double endDistance = form.getEndDistance();
            string featureType = form.getFeatureType();
            BCGSE.SuperElevationSectionEdit superEleSection = BCGSE.SuperElevationSectionEdit.CreateSingleSuperElevationSection(sectionName, startDistance, endDistance, alignment);
            if (superEleSection == null)
                return;
            //Set FeatureDefinition to the SuperElevation Section 将 FeatureDefinition 设置为 SuperElevation 部分
            superEleSection.SetFeatureDefinition(featureType); //通过名称设置超高区间的特征定义。

            //Create a SuperElevation Lane  //创建超高车道
            SuperElevationType superElevationType = form.getSuperElevationType();
            Side superElevationSide = form.getSuperElevationSide();
            string laneName = form.getLaneName();
            double insideEdgeOffset = form.getInsideEdgeOffset();
            double width = form.getWidth();
            double slope = form.getSlope();
            double laneStartDistance = form.getLaneStartDistance();
            double laneEndDistance = form.getLaneEndDistance();

            BCGSE.SuperElevationEdit superElevation = BCGSE.SuperElevationEdit.CreateSuperElevation(superElevationType,
                laneName, superElevationSide, insideEdgeOffset, width, slope, laneStartDistance, laneEndDistance, superEleSection);

            //Create four SuperElevation Transitions 创建超高过渡
            double t1Distance = form.getT1Distance();
            double t1Slope = form.getT1Slope();
            PivotEdgeType t1PivotEdgeTyp = form.getT1PivotEdgeType();
            SuperElevationTransitionType t1TransitionType = form.getT1TransitionType();
            RDSuperPointType t1SuperPointType = form.getT1SuperPointType();
            double t1NonLinearCurveLength = form.getT1NonLinearCurveLength();

            BCGSE.SuperElevationTransitionEdit superElevationTransition1 = BCGSE.SuperElevationTransitionEdit.CreateSuperElevationTransition(
                t1Distance, t1Slope, t1PivotEdgeTyp, t1TransitionType,
                                        t1SuperPointType, t1NonLinearCurveLength, superElevation);

            double t2Distance = form.getT2Distance();
            double t2Slope = form.getT2Slope();
            PivotEdgeType t2PivotEdgeTyp = form.getT2PivotEdgeType();
            SuperElevationTransitionType t2TransitionType = form.getT2TransitionType();
            RDSuperPointType t2SuperPointType = form.getT2SuperPointType();
            double t2NonLinearCurveLength = form.getT2NonLinearCurveLength();

            BCGSE.SuperElevationTransitionEdit superElevationTransition2 = BCGSE.SuperElevationTransitionEdit.CreateSuperElevationTransition(
                t2Distance, t2Slope, t2PivotEdgeTyp, t2TransitionType,
                                        t2SuperPointType, t2NonLinearCurveLength, superElevation);

            double t3Distance = form.getT3Distance();
            double t3Slope = form.getT3Slope();
            PivotEdgeType t3PivotEdgeTyp = form.getT3PivotEdgeType();
            SuperElevationTransitionType t3TransitionType = form.getT3TransitionType();
            RDSuperPointType t3SuperPointType = form.getT3SuperPointType();
            double t3NonLinearCurveLength = form.getT3NonLinearCurveLength();

            BCGSE.SuperElevationTransitionEdit superElevationTransition3 = BCGSE.SuperElevationTransitionEdit.CreateSuperElevationTransition(
                t3Distance, t3Slope, t3PivotEdgeTyp, t3TransitionType,
                                        t3SuperPointType, t3NonLinearCurveLength, superElevation);

            //Set Constraint 设置约束
            superElevationTransition2.SetSlopeConstraint(SuperElevationSlopeConstraintType.CrossSlope, superElevationTransition1, superElevationTransition3, superElevation);
            super_Property.superEdit = superElevation;
            

            GeometricModel gm = con.GetActiveGeometricModel();
            GeometricModel geomModel = con.GetActiveGeometricModel();
            if (gm == null) return;
            
            foreach (Corridor cor in gm.Corridors)
            {
                Alignment al = cor.CorridorAlignment;  //获取廊道对应路线
                CorridorEdit corridorEdit = cor as Bentley.CifNET.GeometryModel.SDK.Edit.CorridorEdit;
                if (al.LinearGeometry.Equals(alignment.LinearGeometry))
                {
                    superElevation.AddPointControl("YLJ-W-R", "ZFD-R", 0, form.getEndDistance(), 1, corridorEdit);
                    break;
                }
            }
            con.PersistTransients();
6567.K0+000~K18+000 1.itl