环境:CE
语言:C#
参考这个帖子的方法【MSCE c#】修改文本,修改不成功 - ◆ 二次开发(MicroStation编程, ProjectWise编程等) - Bentley 中国优先社区 - Bentley Communities,
修改单元子元素,但是单元如果多级嵌套,修改未能成功,请问多级嵌套的单元如果修改
如下代码,我测试过了可以修改嵌套单元中的文本元素的文字:
var subEls = comEl.GetSubElements(); while (subEls.MoveNext()) { var subEl = subEls.Current; if (subEl.Type == BIM.MsdElementType.Text) { BIM.TextElement curTxtEle = (BIM.TextElement)subEl; curTxtEle.Text = "aaa"; curTxtEle.Rewrite(); } else if (BIM.MsdElementType.TextNode == subEl.Type) { BIM.TextNodeElement curTxtNodeEle = (BIM.TextNodeElement)subEl; BIM.ElementEnumerator curSubEles = curTxtNodeEle.GetSubElements(); while (curSubEles.MoveNext()) { var curSubEle = curSubEles.Current; if (curSubEle.Type == BIM.MsdElementType.Text) { BIM.TextElement curTxtEle = (BIM.TextElement)curSubEle; curTxtEle.Text = "aaa"; curTxtEle.Rewrite(); } } } else if (BIM.MsdElementType.CellHeader==subEl.Type) { BIM.CellElement comElCur = (BIM.CellElement)subEl; var subElsCur = comElCur.GetSubElements(); while (subElsCur.MoveNext()) { var subElCur = subElsCur.Current; if (subElCur.Type == BIM.MsdElementType.Text) { BIM.TextElement curTxtEle = (BIM.TextElement)subElCur; curTxtEle.Text = "aaa"; curTxtEle.Rewrite(); } } } }
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
郭老师,能否修改单元中的子单元(整个子单元替换)
您试试获取到所有子元素以后,用这些子元素和您用来替换的元素重新构造一个单元替换掉旧单元。
郭老师,旧的单元还有EC属性、EC关联属性,如果直接替换可能造成结构破坏,我测试一下