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.
Pass Boolean through FS dialog
CAD_SSP
Member Posts: 45 ✭✭
At present you cannot pass a boolean through a feature script dialog, this is ideal if you want to hide a feature in certain configurations (rather than forcing them to fail which seems an odd workaround to me).
Something like:
Something like:
<span style="background-color: transparent; color: inherit; font-size: inherit; white-space: pre-wrap;">annotation { "Name" : "My Boolean Variable" }
</span><span style="background-color: transparent; color: inherit; font-size: inherit; white-space: pre-wrap;">definition.myBooleanVariable is booleanVariable;</span>A current workaround is to pass the variable name in as a string (without "#") and then check if it is a boolean and so on but is not very intuitive as you want to include the "#" but that stops it working.
Tagged:
0
Comments
annotation { "Name" : "My Boolean" } definition.myBoolean is boolean;If your partstudio contains a variable that is a boolean such as "#Showitem = false" you cannot pass this boolean value into featurescript (as far as I can see).
A boolean input as you state is a checkbox, you cannot assign a variable value or a formula to it.
The only workaround I have found is to us a string query and pass the boolean name in as text, then you can use the use "getVariable" within FS to check the value i.e.
<div>annotation { "Name" : "Hide If:" } definition.hideIf is string;</div>pass in "Showitem" without the "#" and then do a check to see what if anything was passed in:
<div>var hideIfcheck is boolean = false; <span>if (definition.hideIf != "") </span>{ try { if (getVariable(context, definition.hideIf)) { hideIfcheck = true; } } catch (error) { reportFeatureWarning(context, id, "you have used a non Boolean or non-existant variable"); } }</div>This is a messy workaround as you instinctively want to put the variable name when you type it with the "#" but I cannot find a way of removing that within featurescript.annotation { "Feature Type Name" : "Take Boolean" } export const takeBoolean = defineFeature(function(context is Context, id is Id, definition is map) precondition { annotation { "Name" : "Boolean" } isAnything(definition.bool); } { if (!(definition.bool is boolean)) throw regenError("Boolean should be a boolean", ["bool"]); });But you may want to consider just using a normal checkbox for your feature and then using configurations to toggle it rather than variables:
https://www.onshape.com/videos/introducing-onshape-configurations
https://cad.onshape.com/documents/57acdfaae4b005c413ed9b6f/w/3fd585a46d3af1b3ba413c53/e/b02ec721136c6121c1a02cc1
Configurations are perfect for most applications but don't suit this particular case.