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: How can we make Section Views awesome in Onshape?
Every time I work on a part or an assembly, I find myself recreating the same section views again and again.
This seems like a pretty simple and basic feature that I don't understand why it is not there!
I am brand new to Onshape, coming from Creo, and maybe I need to get better at using mate connectors, but Planes are so much easier to create a section view from, so I would add, having the ability to Create and Save Planes in an Assembly would help.
Re: Is there a reverse qCreatedBy? like qCreator?
When you know the "Type" you want a function to return (which in this case is "Id") you can search the standard library to see if any functions there return that Type using the input you want by pressing CTRL+F to bring up the word search bar and typing "returns TheTypeImLookingFor":
You can the cycle through what it finds and see if anything suits your fancy, I happened to find what I think you're looking for:
I'd also like to point out that a "Query" is just a map of maps of maps etc, and each layer is a subquery with a "queryType" key. If the queryType is correct then that map may also hold the Id of the entity that query refers too. I don't actually know much about how a query map is structured but you can always use "println(query)" in your code, open up a tab that uses that feautre, open up the notices and see how that specific query map is structured to see if it's something you can use. Good Luck
Re: I want to create an array of holes in a spiral pattern along the surface of a cylinder.

Re: how to get/use the name of a part to name another Mate Connector in FS? (edited, used to say "part")
that would work, but I don't want to make a second, specialized mate connector FS just for this naming thing. I'm ok without it.
Re: How to use Move boundary in FeatureScript - opMoveBoundary()
And of-coarse if you're trimming edges back you'll need to use "opEdgeChange" you'll have to figure out how to use it by studying the "Extend" tab in std library source: https://cad.onshape.com/documents/02e253006c3b752eb13303a7/w/7b120b69b752b11fdbbb09dc/e/4b13fb3967e27f942c8ae475
Re: How to use Move boundary in FeatureScript - opMoveBoundary()
Actually I'll go one better: I've made an opTrimEdges function in case anyone wants to trim back the boundaries of a sheet/surface:
export function opTrimEdges(context is Context, id is Id, surfacesOrEdges is Query, trimDistance is ValueWithUnits, tangentPropegation is boolean) { //get edges and track them var selectedEdges = qEntityFilter(surfacesOrEdges, EntityType.EDGE); if (tangentPropegation) { selectedEdges = qUnion([selectedEdges, qTangentConnectedEdges(selectedEdges)]); } var allEdges = qEdgeTopologyFilter(qUnion([selectedEdges, qOwnedByBody(surfacesOrEdges, EntityType.EDGE)]), EdgeTopology.ONE_SIDED); var trackedEdges = []; for (var edge in evaluateQuery(context, allEdges)) { trackedEdges = append(trackedEdges, qUnion([edge, startTracking(context, edge)])); } //Make array to use in edge trimming var edgeChangeOptions = []; for (var i = 0; i < size(trackedEdges); i += 1) { var edge = trackedEdges[i]; edgeChangeOptions = append(edgeChangeOptions, { "edge" : edge, "face" : qAdjacent(edge, AdjacencyType.EDGE, EntityType.FACE), "offset" : trimDistance}); } if (edgeChangeOptions == []) { throw regenError(ErrorStringEnum.EXTEND_SHEET_BODY_NO_BODY, ["entities"]); } //trim edges try silent { opEdgeChange(context, id + "edgeTrim", { "edgeChangeOptions" : edgeChangeOptions }); } catch { var edgesToTrim = []; for (var i = 0; i < size(edgeChangeOptions); i += 1) { edgesToTrim = append(edgesToTrim, edgeChangeOptions[i].edge); } setErrorEntities(context, id, { "entities" : qUnion(edgesToTrim) }); throw regenError(ErrorStringEnum.TRIM_FAILED); }}
Two more things to note that I've learnt is:
- In std library the tab that holds the "moveBoundary" feature is called "extend" which is silly
- You can refer to standard library tabs buy in this format "import(path : "onshape/std/##tab name##", version : "2543.0");" for example: import(path : "onshape/std/extend.fs", version : "2543.0"); and that way you can make sure you use the latest ver.
Rib creation creates disconnected end faces
Is there a way to use the tool differently or does the tool just need an improvement so that it can make ribs more on part with how solidworks does.
Currently it does this...
meaning we wither have to add an arbitrary extra length to the sketch of the rib thickness or use the delete face and heal tool.
