anyway you can flag the blocks and trigger a redraw when acad is opened so that autocad redraws it then instead?
What do you mean? Always look if there is some flagged block in opening drawing, and redraw it? But if the drawing will be opened without my program? Or there is some property in BlockReference (or in some of parent classes) that tells AutoCAD to recalculate the Object?
When you clone a dynamic block reference, the referenced anonymous block must be getting cloned too, and this is what is most-likely not being hooked up to the dynamic block (although it should be).
The easiest solution is of course, to just recreate the dynamic block reference using the properties and insertion parameters of the cloned one, but other than that, you would need to look into what is happening in the deep-clone process to get an aswer.
No, I import model space of another drawing, that contains dynamic block definition. Then I insert its BlockReference and change dynamic parameters. As result I have modified BlockReference with non-modified hatch. That is if I do this with database without opening drawing.
And that is interesting: If I will open this block via block editor, Autocad recalculates the hatch. Look to the illustration on youtube
http://www.youtube.com/watch?v=3zcjUGdVNiMIf I open drawing in Acad (DocumentManager.Open()), and make all operations, I have good result. But I don't want to open this drawings.