Community Tip - Learn all about the Community Ranking System, a fun gamification element of the PTC Community. X
Hello,
I'm using creo 9.0.8.0 and need a formula to calculate the Blank weight.
Usually we write the dimensions down in a parameter like this 10x101x1. I did change it to 6 separate Parameters so that i have 3 for the number and 3 for the decimal places . I multiply the normal numbers in a relation to get the weight and merge the parameters to a single Parameter for the bom.
now the problem:
some of my colleges say its to complicated and time consuming to fill in those measurements and i need a simplier way of doing it. My new way to do it is by extracting the measurements from a single parameter.
The Problem with this solution is that creo cant calculate it that way because it says theyre all Strings and not integers.
Any ideas how to calculate it? Or make it easier?
PRO_MP_MASS is showing the current weight and not the blank one. And getting the numbers from the first profile isnt an option.
If you want i can provide you the current relation/params/part.
thanks in adavance
Hi,
Thanks for you answer, but thats the current solution that my coworkers dont like. i need it the other way around.
A problem we have with itos that the decimal is rounded down and up, what isnt a reliable solution for us.
Also we sometimes write mesurements like 10x101.00x20 so that the production sees withe the .00 that the block has to be grinded, what we do not have with itos.
@PascalE wrote:
Thanks for you answer, but thats the current solution that my coworkers dont like. i need it the other way around.
A problem we have with itos that the decimal is rounded down and up, what isnt a reliable solution for us.
Also we sometimes write mesurements like 10x101.00x20 so that the production sees withe the .00 that the block has to be grinded, what we do not have with itos.
Hi,
in this case the only solution is additional application "attached" to Creo.
Hi,
if there would be a strtoi (String to Integer) function in creo it would be quite easy, i got the extraction so far with this:
if Search(ABMESSUNG, "x")!=0
GEWICHT=extract(ABMESSUNG,1,Search(ABMESSUNG, "x")-1)+"*"+extract(ABMESSUNG,Search(ABMESSUNG, "x")+1,String_length(ABMESSUNG)-Search(ABMESSUNG, "x"))
if Search(GEWICHT, "x")!=0
GEWICHT=extract(GEWICHT,1,Search(GEWICHT, "x")-1)+"*"+extract(GEWICHT,Search(GEWICHT, "x")+1,String_length(GEWICHT)-Search(GEWICHT, "x"))
if Search(GEWICHT, "x")!=0
GEWICHT=extract(GEWICHT,1,Search(GEWICHT, "x")-1)+"*"+extract(GEWICHT,Search(GEWICHT, "x")+1,String_length(GEWICHT)-Search(GEWICHT, "x"))
endif
endif
endif
Maybe someone here knows how to execute the builded calculation multiplied with the density,
But i guess without a strtoi function its not possible to make it easily in relations.
With Creo 11, you will have a Real to String function, RTOS(number,3) for 3 decimal places.
It is a bit annoying that there is no format function like in C where you can build your string by some common specifier with more then one input
mystring=format(„%dx%.2fx%d“, i_or_d_val1,i_or_d_val2, i_or_d_val3)
could easily provide the required result, rtos is a poor improvement in my point of view.
And on top a Display Value is really required.
The integration with Windchill is somewhat poor, there are common cases where you want to have a readable string on your drawing and not a weird database identifier where you can’t handle blanks.
I wouldn’t have a problem when this is calculated during Post Regeneration.
@RPN wrote:
It is a bit annoying that there is no format function like in C where you can build your string by some common specifier with more then one input
mystring=format(„%dx%.2fx%d“, i_or_d_val1,i_or_d_val2, i_or_d_val3)
could easily provide the required result, rtos is a poor improvement in my point of view.
And on top a Display Value is really required.
The integration with Windchill is somewhat poor, there are common cases where you want to have a readable string on your drawing and not a weird database identifier where you can’t handle blanks.
I wouldn’t have a problem when this is calculated during Post Regeneration.
Hi,
also it is a pitty that sscanf() [C language] is not available in Creo relations.
In my 3 days of using Creo, I had never the requirement to extract double or int values from a string inside of a relation. Do you have an example?
On the other side our drawing have the requirement to have leading ‚zero‘s
like 03/05 sheet 3 of 5
Without toolkit we had a very scrappy solution, but with the capability of formatting an integer, %02d is all what you need.
@RPN wrote:
In my 3 days of using Creo, I had never the requirement to extract double or int values from a string inside of a relation. Do you have an example?
On the other side our drawing have the requirement to have leading ‚zero‘slike 03/05 sheet 3 of 5
Without toolkit we had a very scrappy solution, but with the capability of formatting an integer, %02d is all what you need.
Hi,
OP has string parameter containing 10x101x1 value and needs to get 3 numerical values and multiply them together.
But my assumption would be that this is modeled in Creo, in this case all original dims and parameter are available and the string 10x101x1 was build by a relation. In that case I don't want to create 2 new parameter.
Just my 2 Cents😎
My understanding of the problem is you want to have a string parameter that specifies the raw blank dimensions in the form:
AAAA X BBBB X CCCC
And to be able to parse that string to obtain the three lengths that are separated by the " X ".
Being able to do this means the people entering the parameter are strictly following whatever rules you set up as to the numbers. Will they only be integer values? Are real (i.e. 25.3) values allowed? These are important things to know in order to attempt the process.
You'll also probably need some way to indicate to someone that there's an error, like if someone doesn't enter anything at all for the source string.
Basically you've got to extract the strings from the original string, then examine them to calculate the equivalent numeric value. Not easy, especially if you're dealing with a wide range of values. You'd have to know what the maximum value someone could use, etc.
Definitely look into the string handling functions available in the Creo relations, so you'll know what "tools" you have to work with.
Why do any math at all? Creo will give you the weight of your model when you assign a material to the model so it has a density. As for dimensions, those can be extracted from the model.
I don't understand why you need to 1) enter the size values in a string and 2) convert those to real numbers. Are you using your string values to drive the model design?
What is the difference in the current weight and the blank weight? if you are doing a machining operation, then create a blank part that is used to create the finished machined part. These can be related.
We make make big stamping tools, so every prt we create is unique, a tool can easily get up to 500-1000prts if we would make for every prt a block to get the weight it would be to much time we waste just for it. Also our parts are to 99% made in house without a drawing for 95% of them, so its just showing the prt in the BOM.
We need the blank block weight and not the creo provided weight,
The dimension can't be extracted from the part like you say, because we are not only cutting out material from an existing block, were also adding, so it's not a reliable solution.
I need to make it in a string, because some of my collegues complain that it's too complicated with six parameters, before we had a single string, what they want to have back. So i need to convert it to numbers so that the relation is executable and calculates the weight.
As mentioned before, i need the 6 params to realise the ,00 at the end of some measurements.
It would be easy if the bounding box would show the the overall dimensions in a parameter, but thats not the case in creo9.
The string values are only used in the BOM, and if it would work for the weight.