If you are opening the new drawing after it's creation, why not create the new drawing within the document manager and let it create it in the editor? I have no idea if that would affect your issue but I would try it and see if it makes a difference.
In what context are you creating your modal dialog (CommandMethod/LispFunction/etc.)? Are you using Application.ShowModalDialog()?
The basic problems is that an internal AutoCAD state is not getting properly ended, and so the internal UNDO state thinks there is an operation ongoing. Even though you are not modifying the database, it's possible that the call to WblockCloneObjects has some bearing on the problem. I would try to narrow it down by removing small pieces until the problem disappears.
It is a CommandMethod with the Session flag set. I launch the dialog with just ShowDialog from an instance of the custom form.
I'm sure you have tested this, but is it possible that you have some transaction somewhere open the whole time?
If a command is used to open the dialog then wouldn't anything done while that dialog is opened be nested inside its undo marks?
Think should only be for commands that do not modify database but you have NoUndoMarker CommandFlag.
Modifying a dimension in a noncurrent database will cause its DimBlockId to be set to NULL. This ensures that the next time the database is loaded as the current drawing, a new dimension block will be created, and the old one will be purged. This is necessary because dimension blocks in noncurrent databases cannot be created or modified. A dimension opened for write in a noncurrent database will have its DimBlockId set to NULL during close. This may generate problems for applications.
Setting the text using the Dimension.DimensionText property will override the default value.