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.
What tool to merge multiple small faces into a larger face at a defined offset distance

Looking for the best method to join solids by taking multiple small faces, extruding them to the face of another solid/sketch that is offset from those small faces. Sweeping doesnt seem to work unless there is a sweep path between each point but that is very tedious.
Think of an exhaust header where I have 4 small faces that need to extrude down into a collector face.
Tagged:
0
Answers
Extrude to face with an offset.
Move face with an offset.
Simple answers unless there is an other issue that complicates matters. Can you post a link to your document?
Here's an example document.
https://cad.onshape.com/documents/c7c35c328acb26715291ac60/w/7f037cd8527a40d3c01460f3/e/dd0eb7b91d995dc6522a979f?renderMode=0&uiState=67a1a67735e0f43791b633ad
Essentially, I want to take the 13 small circles, and extrude them out to the larger .5" circle where they will combine. They don't need to fill the .5" circle completely and they can all intersect as long as they fit into the .5" circle.
I tried with lofts but the feature didn't come out well. Couldn't hold the cross section.
Yes it's a bit tedious with paths, but the 3dfitspline isn't too bad. Here's one way to do this. Some of the filaments overlap but tat can be adjusted with the start and end magnitude of the splines.
https://cad.onshape.com/documents/c5377525de6cf52269799e14/w/33a5730dd84afbcce8c83e52/e/0a3c0a45b3068bfd4a369ff0
Yeah that's roughly the way I've been doing it now. It just gets tedious when there are 60+ positions to put a spline into. But, maybe that's just the only way right now. Thanks.
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…
Yes. I like them, but to make a manufacturing drawing I'm just making cables as a 2D Sketch, and placing representative connectors with .5" or so of a "Representative wiring down into a bundle" that can just be mated to a swept spline that represents the cable harness.
Maybe I can just try to do that in cable routing and save the individual connectors as components to add. Trying to get away from Solidworks routing, but the lack of flatten route in onshape makes it a little tougher.
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;
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.EMagnitude
stlg
fudge:definition.SMagnitude
stlg
fudge;
opFitSpline(context, id + "fitSpline1", {
"points" : [Startpt, Endpt],
"startDerivative": Starttan
STanScale,
"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)
});
});
Duplicate.
Thanks for sharing that, it looks like it does a great job of what I'm trying to do. I thought I recognized your name from over in the wire routing discussion.
So, I'm struggling with that tool. I know you aren't tech support or anything but I'm just getting into the featurescript function of Onshape. Did I copy something wrong? Looks like I'm getting an error.
Looks like the forum software mangled the code by removing a bunch "*" signs!
I copied the code to my copy of your original doc:
https://cad.onshape.com/documents/28fa713553d45506ee3ba20e/w/99614c83e0abd6fa995cd081/e/2a7c9f36ea549f0ce7f11026?renderMode=0&tangentEdgeStyle=1&uiState=67a2f32b8ff7125109b8295e
Awesome, I've got it up and working. That is a great tool. Thanks so much for sharing, it'll make my life way easier.
Glad that helped!
I never released these as "public" custom features because I didn't want the "pressure" to maintain them, and they are also specifically tailored to our workflows but it started out for exactly this use case so I thought I could go back in the history and grab the code that provides the "core" functions.
A couple of notes for anyone trying to use this code, if it fails check the orientation of the mate connectors: the sweep will be tangent to the +z direction of the each MC. You can use a negative tangency value to flip that but but it will apply to both ends unless you enable the "end tangency" option (which lets you adjust both independently).
In a later version I made it try to "guess" the orientation, I could look at that but the code is more complicated and I don't remember if there were also other "weird" functions included…