With a DB (Dynamic Block) if you change a property (Visibility / Length / Angle / etc) what acad does is it copies the block's definition to a new anonymous block (something with a *U##### name). Then it's seen as just another block inside the Blocks collection. EffectiveScale is not a Dynamic Block property, it's an annotative scale property - so this shouldn't go and make any anonymous blocks.
E.g. I made a block, called it TEST2, and placed a polar length & stretch inside in BEdit. Then I modified the stretch point and listed it:
Command: LS
LIST 1 found
BLOCK REFERENCE Layer: "0"
Space: Model space
Handle = 25d
Block Name: "test2"
Anonymous Name: "*U5"
at point, X=2291.9786 Y=1127.8018 Z= 0.0000
X scale factor: 1.0000
Y scale factor: 1.0000
rotation angle: 0
Z scale factor: 1.0000
InsUnits: Millimeters
Unit conversion: 1.0000
Scale uniformly: No
Allow exploding: Yes
Distance1: 1142.0613
Angle1: 27
Now I wrote this lisp into the command line:
Command: (vlax-for blk (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-dump-object blk))
; IAcadModelSpace: A special Block object containing all model space entities...
; Name = "*Model_Space"...
; IAcadPaperSpace: A special Block object containing all the entities in the active paper space layout...
; Name = "*Paper_Space"...
; IAcadBlock: A block definition containing a name and a set of objects...
; Name = "*Paper_Space0"...
; IAcadBlock: A block definition containing a name and a set of objects...
; Name = "test2"[/color]...
; IAcadBlock: A block definition containing a name and a set of objects...
; Name = "*U5"...
Note the last 2 blocks are actually the same definition, only the 2nd is the version of test2 where the parameter has changed. Also note that the Block Definition object does not have an EffectiveName property, only Block References do.
What you can do to ignore these blocks is to compare their names to stop if it finds one where the name starts with "*U". E.g. not even iterating over a block where its name starts with "*U", since it's nested objects were already iterated over when the original definition was looked at.
Note added line#5 in my previous code:
(defun c:BlkENameScale
(/ foundNames
) "\nBlock Name\tXScale\tYScale\tZScale\n-----------------------------------------------------")
(princ (vla
-get
-XEffectiveScaleFactor NestedObject
)) (princ (vla
-get
-YEffectiveScaleFactor NestedObject
)) (princ (vla
-get
-ZEffectiveScaleFactor NestedObject
)) (setq foundNames
(cons (vla
-get
-EffectiveName NestedObject
) foundNames
)))))))