I know this is an old topic, but nevertheless I wanted to share my findings concerning this double regeneration problem.
I had the same problem, and I found a solution.
First of all, I would like to mention that I'm using Creo 2.0 M030 at this moment, hopefully this solution also works on older software versions.
PROBLEM:
Because Creo (and in extension all 3D programs) (re-)generate parts and assemblies in a fixed order, it seems not possible to use a dimension, parameter, ... that is only generated/calculated during the generation of the item.
GENERATION OF PARTS IN CREO:
- Parameters are set
- Input is processed and put in the parameters
- Part relations are processed (and parameters are updated)
- Features are created in the sequence as can be seen in the model tree.
The creation of the features is actually done by running the Pro/Program structure. Here you can additionally add some kind of intelligence (IF-ELSE-END IF)
When a particular feature is created, first the FEATURE-relations are processed, after this the actual feature is executed. And here we can do some magic...
SOLUTION:
Use parameters and FEATURE relations.
By using feature relations, you can alter the parameters of the main part. Meaning you can for example add a feature that measures a distance or an angle, push this value to the main parameters, and then use this value in a next feature.
Please note that it is only possible to add relations before a feature is processed. This means if you would like to use a measurement, you need to create the analysis feature, and add the feature relation in the NEXT feature. I like to create a dummy analysis feature right after the actual measurement. This is more visual then putting the relations in a random next feature.
From that point on, every feature after this dummy feature can use the updated parameters.
BE CAREFUL, there is a small bug in creo concerning feature relations:
Normally, all angle measurements are in DEGREES. (except if you altered this in your config.pro)
The relations on feature level use RAD in stead of DEGREES. Even if you ask to evaluate the relation or parameter it is shown in degrees, but the actual setting of the parameter is done in RAD.
For example, if you measure 90° and you use a feature relation to update a main parameter, the parameter is set to 1.57.... (pi/2)
To solve this, just multiply by 180 and divide by PI in the feature relation.
I hope this solves the double regeneration issue for you.