Article | 70002506 |
Type | HowTo |
Product | Engine |
Version | 11 |
Date Added | 3/31/2024 12:00:00 AM |
Fixed | 11.1.4.0 (3/31/2024 12:00:00 AM) |
Submitted by | Peter Chanios |
Summary
Solution
Put vdMtext objects that you want to draw on the top in separate layers
Override the OnDraw and OnDrawAfter
In onDraw set the text layers frozen
In OnDrawAfter Draw all the text in the frozen layers
vdDocument doc; doc.OnDrawAfter += Doc_OnDrawAfter; doc.OnDraw += Doc_OnDraw; static bool IsOverAllLayer(vdLayer layer) { return layer != null && string.Compare(layer.Name, "awCabs_2D_Text", true) == 0 || string.Compare(layer.Name, "awCabs_2D_Number", true) == 0; } private void Doc_OnDraw(object sender, vdRender render, ref bool cancel) { foreach (vdLayer layer in doc.Layers) { if (IsOverAllLayer(layer)) layer.Frozen = true; } } private void Doc_OnDrawAfter( object sender, vdRender render) { foreach (vdFigure figure in doc.ActiveLayOut.Entities) { if (IsOverAllLayer(figure.Layer)) figure.Draw(render); else if(figure is vdInsert) { vdInsert insert = figure as vdInsert; vdBlock block = insert.Block; foreach (vdFigure fig in block.Entities) { if (IsOverAllLayer(fig.Layer)) { render.PushDrawFigureList(insert); render.PushMatrix(insert.ECSMatrix); fig.Draw(render); render.PopMatrix(); render.PopDrawFigureList(); } } } } }