Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
Magnitude of value with units
konstantin_shiriazdanov
Member Posts: 1,221 ✭✭✭✭✭
How to extract unitless magnitude of value with units if the units are unknown? Or what is internal structure of ValueWithUnits type, is it of map type?
0
Comments
-
I would suggest you divide by the unit you are interested in, and ignore the internal representation. If you have a length and what to know how many meters it is then you can do "var lengthInMeters = length / meter". It doesn't matter what unit 'length' has. Or "length / inch" to get the length in inches. In both cases the result is a unitless value.
E.g. this custom feature measures the distance between two points, in inches, and logs it to the console<div>annotation { "Feature Type Name" : "Distance in Inches" } </div><div>export const inchDistance = defineFeature(function(context is Context, id is Id, definition is map) </div><div> precondition </div><div> { </div><div> annotation { "Name" : "Points", "Filter" : EntityType.VERTEX, "MaxNumberOfPicks" : 2 } </div><div> definition.points is Query; </div><div> } </div><div> { </div><div> if (size(evaluateQuery(context, definition.points)) == 2) </div><div> { </div><div> var result = evDistance(context, { </div><div> "side0" : qNthElement(definition.points, 0), </div><div> "side1" : qNthElement(definition.points, 1) </div><div> }); </div><div> println("Distance in inches is: " ~ (<b>result.distance / inch</b>)); </div><div> } </div><div> }); </div>Paul Chastell
TVP, Onshape Labs2 -
Paul is absolutely right. But if you're curious about what the representation is, you can look at units.fs in std or do
println("" ~ inch);Ilya Baran \ VP, Architecture and FeatureScript \ Onshape Inc0 -
ok, thank you Ilya and Paul, I found out that ValueWithUnits is internally a map and "value" field contains magnitude
0


