请问怎么在同一个文件中的两个model中参考不同的dgn文件,我下面的测试代码在Default model中参考能成功,后面在 比较版本model中参考另一个文件时,就会报错,提示未找到缓存,这是什么原因啊
//版本对比 //打开版本对比文件 string path = DefaultPath.GetCompareVersionsPath(); BMI.Utilities.ComApp.OpenDesignFile(path, false); //清空之前的参考文件 var atts = BMI.Utilities.ComApp.ActiveModelReference.Attachments; var list = atts.GetEnumerator(); while(list.MoveNext()) { atts.Remove(list.Current); } //在不同的model中参考需要比较的两个文件 atts.AddCoincident(@"C:\Users\liuzhanh\Desktop\999.dgn", "Default", "test", "test"); //激活 var models = BMI.Utilities.ComApp.ActiveDesignFile.Models.GetEnumerator(); while (models.MoveNext()) { if ((models.Current as ModelReference).Name == "比较版本") { (models.Current as ModelReference).Activate(); } } atts = BMI.Utilities.ComApp.ActiveModelReference.Attachments; atts.AddCoincident(@"C:\Users\liuzhanh\Desktop\123.dgn", "比较版本", "test", "test");
看起来是您的Activate()方法未执行成功导致的吧?两个文件都被参考到了同一个模型中
没有,Default的model是成功参考了999.dgn,然后执行的【比较版本】的model激活也成功了,就是最后那次在【比较版本】model里参考文件提示未找到缓存,我试过首先操作【比较版本】model也会失败,是不是这个model有什么样式没设置啊,和默认的default有不同
我用如下VBA代码测试了,可以正常工作,你照此改写成C# 试一下。不同点在于遍历当前文件中的模型时的用法
Sub RefTest() Dim myModel As ModelReference ActiveModelReference.Attachments.AddCoincident "C:\111\Referece\Ref.dgn", "RefModel", "test", "test" For Each myModel In ActiveDesignFile.Models If (myModel.Name = "比较版本") Then myModel.Activate End If Next ActiveModelReference.Attachments.AddCoincident "C:\111\Referece\Ref1.dgn", "Ref1Model", "test", "test" End Sub
//版本对比 //打开版本对比文件 string path = DefaultPath.GetCompareVersionsPath(); BMI.Utilities.ComApp.OpenDesignFile(path, false); //清空之前的参考文件 var atts = BMI.Utilities.ComApp.ActiveModelReference.Attachments; var list = atts.GetEnumerator(); while(list.MoveNext()) { atts.Remove(list.Current); } //在不同的model中参考需要比较的两个文件 atts.AddCoincident(@"C:\Users\liuzhanh\Desktop\999.dgn", "Default", "test001", "test002"); //激活 //var models = BMI.Utilities.ComApp.ActiveDesignFile.Models.GetEnumerator(); //while (models.MoveNext()) //{ // if ((models.Current as ModelReference).Name == "比较版本") // { // (models.Current as ModelReference).Activate(); // } //} foreach(ModelReference mr in BMI.Utilities.ComApp.ActiveDesignFile.Models) { if(mr.Name == "比较版本") { mr.Activate(); } } atts = BMI.Utilities.ComApp.ActiveModelReference.Attachments; atts.AddCoincident(@"C:\Users\liuzhanh\Desktop\123.dgn", "比较版本", "test", "test");
好像还是没用,您这个代码应该和我的没什么区别啊,就遍历的方式不同,但是我用哪个遍历方式都一样能打开指定的model,而且我如果先操作【比较版本】model,再打开default model进行参考操作,两个model都没有参考文件,我再自己找找看什么原因吧
这个会不会跟pw有关系啊,我这里安装了pw服务端和客户端