[ORD C++] 用curvevector生成alignment给廊道添加点控制失败怎么回事?

老师,我在二次开发中生成廊道成功,但是给廊道添加控制点时,由curvevector生成align2作为plan element,发现增加控制点失败,请问什么原因?

检查发现两个问题:

1)调试时发现newPointControlEdit 的 PointControlType 为 none,之前明明设置了PointControlType.Alignment,这是怎么回事?

2)使用我生成的alignment 在软件中手动操作create point control,我编程生成的align2提示 element has no name,并且在exlporer里也没有该alignment。

代码如下:

ConsensusConnectionEdit con = ConsensusConnectionEdit.GetActive();
LinearElement lineEle1 = LinearElement.CreateFromCurveVector(curve1, false);
AlignmentEdit align1 = AlignmentEdit.CreateByLinearElement(con, lineEle1, true);
LinearElement lineEle2 = LinearElement.CreateFromCurveVector(curve2, false);
AlignmentEdit align2 = AlignmentEdit.CreateByLinearElement(con, lineEle2, true);
if (null == align1 || null == align2)
return null;

con.StartTransientMode();

//创建纵面
……

//创建走廊带
Bentley.CifNET.GeometryModel.SDK.Edit.CorridorEdit newCorridor = Bentley.CifNET.GeometryModel.SDK.Edit.CorridorEdit.CreateByAlignment(con, "Corridor", align1);

//生成控制点
Bentley.CifNET.GeometryModel.SDK.Edit.PointControlParameter parameters = new PointControlParameter(align2
, align2.ActiveProfile, 0, align1.Geometry.SumOfLengths(), PointControlMode.Horizontal, PointControlType.Alignment);
parameters.Description = "Test Create PointControl";
parameters.PointName = "_L";
parameters.UseAsSecondaryAlignment = false;
parameters.Priority = 2;
PointControlEdit newPointControlEdit = newCorridor.AddPointControl(parameters);
newPointControlEdit.ControlType = PointControlType.Alignment;

con.PersistTransients();