希望完成的功能是,能在不显式打开文件的前提下,修改tag的值。利用com中的接口,可以在显式打开文件后修改成功,但是若文件没有显示打开,则修改无效,所以没采用。
使用Bentley.DgnPlatformNET.Elements中的接口修改tag,能隐式读取文件,但是TagElement.SetTagValue()无法修改成功。如果加了TagElement.ReplaceInModel(),则会报错。
sc.Scan(scanDelegate);//执行扫描 foreach(ElementId tagid in tagids)//tag的id集合 { TagElement tag=drawingModel.FindElementById(tagid) as TagElement; if (tag!=null&&attrs.ContainsKey(tag.TagName)) { tag.SetTagValue(attrs[tag.TagName].Trim()); tag.ReplaceInModel(tag); MessageCenter.Instance.ShowErrorMessage("tag临时输出:", file + "\n te.tagName" + tag.TagName + "\n 赋值:" + attrs[tag.TagName], false); } }
徐 明卉 said:利用com中的接口,可以在显式打开文件后修改成功
我们在使用COM接口时,也能让MS在后台运行不显示给用户界面的。请参考如下文章。其中的myApp.Visible=false就是不让启动的MS显示界面给用户。
msce c com msce
将文章中的代码加入到插件里面会报错。是不是文章中的方法只适用于独立c#程序,加载在MS中的dll不能采用这种方式?
徐 明卉 said:是不是文章中的方法只适用于独立c#程序
是的