老师,我在二次开发中生成廊道成功,但是给廊道添加控制点时,由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();
1.con.StartTransientMode();应该放在AlignmentEdit align1 = AlignmentEdit.CreateByLinearElement(con, lineEle1, true);前面;
2.关于控制点的问题,你试试将PointControlType.Alignment换成PointControlType.Alignment3D;
我试了,还是没有成功。con.StartTransientMode()放在前面,会在模型中多生成lineEle1,没有别的效果。
李工,问题我大概定位了,主要还是跟平面线Alignment有关,错误如下图:
但是我重新手动重置一下平面线的特征定义
这时候explore里头的Alignment就有该元素
这时候添加控制点就没问题了
结论,还是代码里头SetFeatureDefinition有点问题,你可以试试按照我的方法,将代码生成的平面线重置一下特征定义,然后执行添加控制点代码,应该没问题。
谢谢张老师。手动重置一下特征定义是可以成功,但是我二次开发需要程序完成,这样才能避免大量重复操作,还请您帮忙看看SetFeatureDefinition的bug如何解决。
我已经将问题反馈给ORD组了,这个等后续消息吧。
好嘞,谢谢您。希望能尽快解决,这个功能对我们二次开发很重要。
这个问题会在下个版本中解决,我看了下代码,已经解决了,请等待下个版本。
Answer Verified By: Tee Lee