老师好。有元素被单元填充后,我想获取元素后修改填充的比例,我通过EC获取到元素属性后,DgnECInstanceCollection找到图案填充的比例后,无法修改,还有什么其他的办法吗
请提供一下您测试用的DGN文件。填充有多种情况的,比如是否关联边界填充。应该有专门的Pattern对象来处理它们。
符老师,文件上传不了,给您截图,就是简单的圆填充
我写了如下测试代码,可以正常运行通过。自动将填充图案比例增加了一倍。
private static void ChangePatternScale() { DgnModel myModel = Session.Instance.GetActiveDgnModel(); EllipseElement myCircle = myModel.FindElementById((ElementId)82930L) as EllipseElement; AreaFillPropertiesEdit myEdit = myCircle.AsAreaFillPropertiesEdit(); if (null == myEdit) { MessageCenter.Instance.ShowInfoMessage("Not a valid area element", null, MessageAlert.Balloon); return; } PatternParams myParams = myEdit.GetPattern(0).Params; if (null == myParams) { MessageCenter.Instance.ShowInfoMessage("No patterns in this element", null, MessageAlert.Balloon); return; } myParams.Scale *= 2; myEdit.RemovePattern(0); myEdit.AddPattern(myParams, null, 0); myEdit.ReplaceInModel(myCircle); }
其中的pattern index一般都为0,只有我们对一个闭合元素设定了多个填充时才需要用到大于0的索引,比如下图的圆就有两个pattern。
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
Answer Verified By: Guangan LI