If you are using a library part like Deciduous Trees 21 then no...its a feature of the code.
The coding says when the type of tree is changed, then read the default values from a table...and apply them to A(Width), B(Length), ZZYZX(Height)
If you want to edit the library part to stop this, all you need to do is to override the default table with the current A(Width), B(Length), ZZYZX(Height) values.
The Default values are stored in an array DefSizeValues
As a test I made a parameter
Auto_Change_Tree_Size (Boolean)
In the Master Script I added
if Auto_Change_Tree_Size = 0 then
DefSizeValues[1][1] = A
DefSizeValues[2][1] = A
DefSizeValues[3][1] = A
DefSizeValues[4][1] = A
DefSizeValues[5][1] = A
DefSizeValues[1][2] = B
DefSizeValues[2][2] = B
DefSizeValues[3][2] = B
DefSizeValues[4][2] = B
DefSizeValues[5][2] = B
DefSizeValues[1][3] = ZZYZX
DefSizeValues[2][3] = ZZYZX
DefSizeValues[3][3] = ZZYZX
DefSizeValues[4][3] = ZZYZX
DefSizeValues[5][3] = ZZYZX
DefSizeValues[1][4] = A
DefSizeValues[2][4] = A
DefSizeValues[3][4] = A
DefSizeValues[4][4] = A
DefSizeValues[5][4] = A
endif
Then saved it as a new library part.
This will work for:
Deciduous Trees 21
Evergreens 21
Houseplants 21
Palm Trees 21
Pine Trees 21
Shrubs 21
In Tree model detailed 21:
if Auto_Change_Tree_Size = 0 then
for i_loop = 1 to 10
sizeDefaultA[i_loop] = A
sizeDefaultB[i_loop] =B
sizeDefaultZzyzx[i_loop] = ZZYZX
next i_loop
endif
(using a loop for the values)
The other trees in the Archicad 21 library it is coded in the parameter script directly, no neat arrays to control.
If you want to create your own library parts, or edit the Archicad 21 library, it is a little bit of work, but potentially better for you in the long run if this is a common problem.
There is no work around to fix this...