问题:使用DgnElementSetTool,选择DimensionElement后,修改标注高度,在OnDynamicFrame中DoRedraw不生效,并没有动态更新,
请上传您的代码。
protected override void OnDynamicFrame(DgnButtonEvent ev) { if (!GetAnchorPoint(out origin)) return; if (ElementAgenda.GetCount() <= 0) return; DgnModel dgnModel = Session.Instance.GetActiveDgnModel(); RedrawElems redrawElems = new RedrawElems(); redrawElems.SetDynamicsViewsFromActiveViewSet(Session.GetActiveViewport()); redrawElems.DrawMode = DgnDrawMode.TempDraw; redrawElems.DrawPurpose = DrawPurpose.Dynamics; for (uint i = 0; i < ElementAgenda.GetCount(); i++) { Element ele = ElementAgenda.GetEntry(i); if (ele is DimensionElement) { DimensionElement dimEle = dgnModel.FindElementById(ele.ElementId) as DimensionElement; dimEle.GetHeight(out double oldH); double newH = endPt.Y - origin.Y; dimEle.SetHeight(newH + oldH); redrawElems.DoRedraw(dimEle); } } }
既然已经从ElementAgenda中拿到这个ele了,为何还要再调用dgnModel.FindElementById去重新拿?是否已经直接针对这个ele执行您的修改动作呢?
感觉标注需要调用ReplaceInModel替换掉文件中的元素才能更新其显示,所以没办法直接用RedrawElems去重绘。
您好,我改为replace后,变成了这种效果