【ORD C#】廊道创建点控制

老师,下面的代码是我参考另一个帖子老师提供的创建点控制例子,廊道和控制线都已经获取到了,但是还是设置失败。这是我的测试文件111.dgn

public static void PointCtrlTest()
        {
            DgnModel model = Bentley.MstnPlatformNET.Session.Instance.GetActiveDgnModel();

            Bentley.CifNET.SDK.Edit.ConsensusConnectionEdit con = Bentley.CifNET.SDK.Edit.ConsensusConnectionEdit.GetActive();

            Bentley.CifNET.GeometryModel.SDK.Alignment planAlignment = null;

            foreach (Bentley.CifNET.GeometryModel.SDK.Alignment alignment in con.GetActiveGeometricModel().Alignments)

            {

                if (alignment.FeatureName == "Alignment\\Geom_Baseline" && alignment.ActiveProfile != null)

                {

                    planAlignment = alignment;

                    break;

                }

            }

            Bentley.CifNET.GeometryModel.SDK.Corridor corridor = null;

            foreach (Bentley.CifNET.GeometryModel.SDK.Corridor cor in con.GetActiveGeometricModel().Corridors)

            {

                corridor = cor;

                break;

            }

            con.StartTransientMode();
            if(planAlignment == null || corridor == null)
            {
                return;
            }

            Bentley.CifNET.GeometryModel.SDK.Edit.CorridorEdit corridorEdit = corridor as Bentley.CifNET.GeometryModel.SDK.Edit.CorridorEdit;

            //CreatePointControl

            Bentley.CifNET.GeometryModel.SDK.Edit.PointControlParameter parameters = new PointControlParameter(planAlignment, planAlignment.ActiveProfile, corridorEdit.StartDistance, corridorEdit.EndDistance, PointControlMode.Both, PointControlType.Alignment3d);

            parameters.Description = "Test Create PointControl";

            parameters.PointName = "EOP_L";

            parameters.UseAsSecondaryAlignment = false;

            parameters.Priority = 1;

            Bentley.CifNET.GeometryModel.SDK.Edit.PointControlEdit newPointControlEdit = corridorEdit.AddPointControl(parameters);
            con.PersistTransients();
        }

Parents
  • 点控制目前是有点问题,目前ORD10.8版本的,Bentley.CifNET.GeometryModel.SDK.Edit.dll这个库,目前这个库暂时还是没有        bool SetFeatureDefinition(System::String^ featureDefinitionName, System::String^ featureName);这个接口,请耐心等待后续版本发布。

  • 老师,我看您之前的回答的意思是手动设置下参考线的特征定义就能用代码生成点控制是把?但是我廊道和参考线都是自己手动画的,而且好像参考的线不用设置特征定义也能生成点控制啊?并不需要设置特征定义吧?我下面的截图就是手动用无特征定义的线生成的。

  • 通过下面代码可以成功设置:

                //CreatePointControl
    
    
                Bentley.CifNET.GeometryModel.SDK.Edit.PointControlParameter parameters = new PointControlParameter(planAlignment
               , planAlignment.ActiveProfile, 0, planAlignment.Geometry.SumOfLengths(), PointControlMode.Horizontal, PointControlType.Alignment3d);
                parameters.Description = "Test Create PointControl";
                parameters.PointName = "123";
                parameters.UseAsSecondaryAlignment = false;
                parameters.Priority = 2;
                parameters.StartOffsetHorizontal = 0;
                parameters.StopOffsetHorizontal = 0;
                parameters.FeatureDefinition = "Alignment\\Geom_BaseLine";
                PointControlEdit newPointControlEdit = corridorEdit.AddPointControl(parameters);

  • 那个属性能设置上去,但是有些参数会丢失,或者写不进去,是不是还是您说的SetFeatureDefinition这个接口的问题啊?

    还有老师为什么我创建的PointControlParameter初始化设置的结束桩号都变为0了啊,这里好像只能初始化起始桩号,结束桩号好像设置不上?

    还有个问题  我corridorEdit.AddPointControl(parameters);执行完之后我查看corridorEdit里的pointcontrol,

    里面的results view下的ProfileEntity属性变为null,controlType也从之前设置的alignment变为alignment3D

Reply
  • 那个属性能设置上去,但是有些参数会丢失,或者写不进去,是不是还是您说的SetFeatureDefinition这个接口的问题啊?

    还有老师为什么我创建的PointControlParameter初始化设置的结束桩号都变为0了啊,这里好像只能初始化起始桩号,结束桩号好像设置不上?

    还有个问题  我corridorEdit.AddPointControl(parameters);执行完之后我查看corridorEdit里的pointcontrol,

    里面的results view下的ProfileEntity属性变为null,controlType也从之前设置的alignment变为alignment3D

Children