You can resize the font of the text block using automation if the text exceeds the size of the shape. I found that the following works.
Open the shape's shapesheet (Window->Show Shapesheet) and add the user section (Insert->Section->User-defined Cells). Put this formula in the value cell for User.Row_1:
=Min(1,Height/TEXTHEIGHT(TheText,Width)))
After the shape text changes, get the value of the user cell. in c#:
double scale = shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionUser, (short)IVisio.VisRowIndices.visRowUser, (short)IVisio.VisCellIndices.visUserValue).ResultIU;
Then set the font, and the TextMargins (for any that are non-zero) with the following (assuming the normal font size is 12 and the left margin is 4pt.:
shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionCharacter, 0, (short)IVisio.VisCellIndices.visCharacterSize).FormulaU = (scale*12).ToString() + "pt";
shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionObject, (short)IVisio.VisRowIndices.visRowText, (short)IVisio.VisCellIndices.visTxtBlkLeftMargin).FormulaU = (scale * 4).ToString() + "pt";
To do this for custom stencil, Right click on your Shapes toolbar & Click on "Edit Stencil". Now, all the shapes in the stencil will be in edit mode.
Now right click on the Shape and select Edit Master -> Edit Master Shape
The shape will now open in Shape Editor. Now click on Formatting -> Protection & disable/enable protection on the the desired properties. Click File -> close - you'll be prompted to save.
Henceforth, all created shapes will have the properties disabled/enabled as you had selected above.
Best Answer
In Options > Advanced set
Automatically zoom text when editing under (number) points
to 0.