I had your exact same issue.
The key to solve this problem is that the block should not be annotative, but it will contain annotative object; I have attached a block I use on daily basis that behave as you wish; it is an axis label that I use in plan view: since I could display the plan view at different scale in various viewport I need the text and circle that enclosed it to scale with the viewscale, but they also need to stay in the fixed position
Here how it works:
(***WARNING***: the block uses metric units (millimiters); the block is dynamic, it could be more complex than you need; the block parameters are in italian)
You need to create a enclosing block which is annotative (see Cerchio in attached drawing); this block must contain:
- The geometry you want to enclose the text label (in the simplest case is a plain circle)
- A solid hatch associated with that geometry; the solid hatch need to be assigned to a special layer that will print as white (I used a layer I called "Wipeout" which the color property is set to "33, 40, 48" in model space, i.e. the default background color, and the named plot style is set to "WIPEOUT", a style which prints in white and the screening property is set to 0%; I'll explain more on why later)
- You create a new block that is your section marker which is NOT annotative (see Asse in attached drawing); this block must include:ù
- Insert the enclosing block
- Insert the text label as an attribute object and set it to annotative
- Insert the remaining geometry that should not scale with viewscale
Now the trickery part:
- Still inside the block editor environment for the section marker block:
- Select the enclosing block and add the annotative scale you want to display (in my block I've added all the scale from 1:1 to 1:100, because I want to be able to use in wide variety of case)
- Close and save the block
- In model space:
- set the view scale as you wish
- select the section marker block and add the current annotative scale to the block, either via command AIOBJECTSCALEADD or trough right click as shown in image below:

With the last command you add the annotative scale you want to the attributes contained in the section marker block; in the layout example there are 3 viewport at differente scale:
- you can see that in all viewport the enclosing block is the same size and are the text attributes, but the distance between the two label didn't scale;
- in the viewport at scale 1:100 the label isn't displayed because I didn't add that scale to the block
About the Wipeout layer
I use the solid hatch in order to cover the geometry I didn't want to show, in this case it's the line that connect the two circle: I wasn't able to add a constraint that connects the point end of the line with the quadrant of the circle, so I needed to connect to its center; with the solid hatch I cover the line that is inside the circle, so I don't have problems when the enclosing block scales; this method works best using named plot style, but it can be used also with ctb with some more shenanigans.
Last word
I think this more as a workaround then a proper solution because it has some problems and cannot be used in all use-case:
- for example the geometry that is not annotative will show at every viewscale, a behavior you might not want in some cases
- this example work very well because the text attribute is aligned in the middle-center and so its base point for scaling is the same of the enclosing block; I have trouble with text attributes whose base point don't coincide.