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.
Best Of
Re: Best fit plane
I suppose it might be a good reason to start learning feature script and possibly a good project to start with after the I get the basics down. Thanks for the feedback. most appreciated and good luck with your other FS. I might have to add that since I do a little 3D printing. Nice one.

Re: Improvements to Onshape - January 31st, 2025
Try throwing it in the trash and then retrieving it. That process forces the document to update.
Re: Improvements to Onshape - January 31st, 2025
Is there a way to get this in an existing part studio ? it only shows in new studios

BSPP and NPT Threads in Hole callout
Re: What tool to merge multiple small faces into a larger face at a defined offset distance
Have you looked at the wiring tools?
https://forum.onshape.com/discussion/comment/113373#Comment_113373
Otherwise it would be pretty easy to make a FS that does a loft between each pair of faces…
Re: What tool to merge multiple small faces into a larger face at a defined offset distance
Here's some code I create for a simple feature that takes two mate connectors and sweeps a circle along the path. In most cases you won't even need to adjust the "tangency". You would still have to create each "jumper" (as I call them) one by one but all you need is a couple of clicks for each one (it is set to remember last use value for the diameter…
You just need a sketch on the end of your cable jacket for the start of each sweep
I've made it more complex over time but this is back when it was nice and simple to use:
FeatureScript 1589;
import(path : "onshape/std/geometry.fs", version : "1589.0");
annotation { "Feature Type Name" : "Wire Jumper" }
export const myFeature = defineFeature(function(context is Context, id is Id, definition is map)
precondition
{
annotation { "Name" : "Start and End", "Filter" : BodyType.MATE_CONNECTOR, "MaxNumberOfPicks" : 2 }
definition.Connectors is Query;
annotation { "Name" : "Diameter", "UIHint": UIHint.REMEMBER_PREVIOUS_VALUE }
isLength(definition.Dia, BLEND_BOUNDS);
annotation { "Name" : "Start Magnitude",}
isReal(definition.SMagnitude, CLAMP_MAGNITUDE_REAL_BOUNDS);
annotation { "Name" : "End Magnitude?", "UIHint" : UIHint.DISPLAY_SHORT, "Default" : false}
definition.EndMag is boolean;
if(definition.EndMag){
annotation { "Name" : "End Magnitude","UIHint" : UIHint.DISPLAY_SHORT}
isReal(definition.EMagnitude, CLAMP_MAGNITUDE_REAL_BOUNDS);
}
// Define the parameters of the feature type
}
{
var Connlist = evaluateQuery(context, definition.Connectors);
var OD = definition.Dia;
var Startpt = evMateConnector(context, {"mateConnector" : Connlist[0]}).origin;
var Starttan = evMateConnector(context, {"mateConnector" : Connlist[0]}).zAxis;
var Endpt = evMateConnector(context, {"mateConnector" : Connlist[1]}).origin;
var Endtan = evMateConnector(context, {"mateConnector" : Connlist[1]}).zAxis;
var stlg = sqrt(squaredNorm(Endpt-Startpt))/meter;
var fudge = 1;
var STanScale = definition.SMagnitude
stlg
fudge;
var ETanScale = definition.EndMag?definition.EMagnitudestlg
fudge:definition.SMagnitude
stlg
fudge;
opFitSpline(context, id + "fitSpline1", {
"points" : [Startpt, Endpt],
"startDerivative": StarttanSTanScale,
"endDerivative": Endtan-1*ETanScale
});
setAttribute(context, {
"entities" : qCreatedBy(id + "fitSpline1", EntityType.EDGE),
"name" : "Spline",
"attribute" : {
"featureId" : id + "fitSpline1"
}
});
var xdir = evMateConnector(context, {"mateConnector" : Connlist[0]}).xAxis;
var sketch1 = newSketchOnPlane(context, id + "sketch1", {
"sketchPlane" : plane(Startpt, Starttan, xdir)
});
skCircle(sketch1, "circle1", {"center" : vector(0,0)*inch,"radius" : OD/2});
skSolve(sketch1);
opSweep(context, id + "sweep1", {
"profiles" : qCreatedBy(id + "sketch1", EntityType.FACE),
"path" : qCreatedBy(id + "fitSpline1", EntityType.EDGE)
});
opDeleteBodies(context, id + "deleteBodies1", {
"entities" : qCreatedBy(id + "sketch1", EntityType.BODY)
});
});
Re: Improvements to Onshape - January 31st, 2025
@aeromorrison in release 1.190 the Flatten diagnostic and exporter tool was released. It will allow you to flatten a form likes this. FEA could be conducted from here.
Re: New Video Tutorial: Power User Selection Skills for Onshape
Great video! Thanks @EvanReese.
Being able to store selections (Queries) in variables and then use those variables in standard feature queries would be fantastic for automation.
Re: Increase in general bugginess
To be honest, we've had a few scaling issues recently and there were some additional bumps around the 1.193 deployment on Friday and again yesterday morning (mostly in Europe). We pushed some changes yesterday afternoon that have really helped things.
If you are seeing 30s to open a sketch or several minutes to load something small, please open a support ticket.
As for relations breaking, please open support tickets on that too. That's the only way we will be able to make the service better for everyone.