各位老师, 我在提取ORD廊道线的时候遇到一个问题, 就是根据特证名提取出我需要的廊道线, 然后重绘到新的模型里, 发现一个问题, 提取完成的时候, 打开廊道模型, 特征名还在, 如上图所示, 但是, 关闭文件后, 再次打开文件, 发现所有廊道线的特证名丢失, 如下图所示, 找不到原因. 我用的ORD中国版, ORD英文版也有这个问题.现在附上代码和测试文件, 请各位老师不吝赐教, 谢谢!由于文件过大, 只能上传到云盘下载注意: 测试文件需要复制出一份进行测试, 否则特征名丢失后就无法测试了链接:pan.baidu.com/.../1Q85dD6cC2scUDYmUGAkcyg 提取码:rzs3 --来自百度网盘超级会员V3的分享
宁小雨 said:重绘到新的模型里
重绘到新的模型是什么意思?将当前模型的所有内容写入到了同一个DGN文件的新模型中?如果是这个操作的话可能会有问题,因为ORD DGN文件中的各个模型是有内部关联的,最好不要自己随意创建模型。
谢谢符老师, 问题已解决, 发现是 app.SaveSettings();这句话导致的, 不清楚是什么原因
老师, 您说的是这两个吗, 我用不到这两个名, 我用的是每条廊道线上的特征名称
刚测试了,您参考下面的修改一下就好了:
void test() { BIM.Application app = BMI.Utilities.ComApp; GetAllAlignmentFromActiveDgnModel(Session.Instance.GetActiveDgnModel(), out listEleLeft, out listEleRight); CreateModel("test01", ModelType.Normal, true, 2000); AddEleToModel(listEleLeft, out AllLeftEle); AddEleToModel(listEleRight, out AllRightEle); app.ActiveDesignFile.Models["Default-3D"].Activate(); app.ActiveDesignFile.Views[1].IsOpen = false; app.ActiveDesignFile.Views[2].IsOpen = true; app.ActiveDesignFile.Views[3].IsOpen = false; app.ActiveDesignFile.Views[4].IsOpen = false; app.ActiveDesignFile.Views[2].SetToTop(); app.ActiveDesignFile.Views[2].Maximize(); ////界面中没元素不会崩溃 app.CadInputQueue.SendCommand("FIT VIEW EXTENDED 2"); app.ActiveDesignFile.Views[2].Redraw(); app.CommandState.StartDefaultCommand(); ////保存设置==>这句话导致的问题 app.SaveSettings(); }
也就是把 app.ActiveDesignFile.Models["Default-3D"].Activate();放到下面,统一设置的在一块。
Answer Verified By: 宁小雨
//调用测试 public void MyTest() { MessageBox.Show("开始提取廊道线!"); List<string> listStr = new List<string>(); BIM.Application app = BMI.Utilities.ComApp; //获取所有廊道路线 app.ActiveDesignFile.Models["Default-3D"].Activate(); GetAllAlignmentFromActiveDgnModel(Session.Instance.GetActiveDgnModel(), out listEleLeft, out listEleRight); //app.ActiveDesignFile.Models["test01"].Activate(); Class模型.CreateModel("test01", Class模型.ModelType.Normal, true, 2000); AddEleToModel(listEleLeft, out AllLeftEle); AddEleToModel(listEleRight, out AllRightEle); app.ActiveDesignFile.Views[1].IsOpen = false; app.ActiveDesignFile.Views[2].IsOpen = true; app.ActiveDesignFile.Views[3].IsOpen = false; app.ActiveDesignFile.Views[4].IsOpen = false; app.ActiveDesignFile.Views[2].SetToTop(); app.ActiveDesignFile.Views[2].Maximize(); app.CadInputQueue.SendCommand("FIT VIEW EXTENDED 2"); app.ActiveDesignFile.Views[2].Redraw(); app.CommandState.StartDefaultCommand(); app.SaveSettings(); app.ActiveDesignFile.Models["Default-3D"].Activate(); app.SaveSettings(); app.ActiveDesignFile.Models["test01"].Activate(); MessageBox.Show("廊道线提取完成!"); }
请在正确答案下面点Verify Answer来确认答案。谢谢!
好的符老师