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.
Cut Frame Ends at 90 deg Instead of Angles

I am using the Frame feature to make a cut list of steel c-channels. The channels will all be separate parts not connected. I've drawn all the lines for the frame to follow in a top view sketch and I want to limit the frame ends to the surfaces shown. This gives angled cuts parallel to the surfaces.
Instead, I want perpendicular cuts (imagine chopping all this with a chop saw set to 0°) that won't interfere with the surfaces. The red line drawn shows what I want. Basically extrudes but with a profile sketch not in place. What is the best way to achieve this?
I have a cut list now from the Frames. I thought about making a simple extrude with the profile and using the cut list to quickly make 100 different configurations with the lengths. But mating those in place in the assembly seems cumbersome.
Comments
There are a number of ways to do this but the simplest that occurred to me is to shorten the frame paths. In the sketch where you make the segment paths, you could offset the centerline to the location where an untrimmed length is good. Here's what I mean. Assume your profile is 3.5" wide:
Thanks for the suggestion. That does work, but will involve a bit of rework to what I've already released. What are the other ways of doing this?
I've been working on a frame script that draws a bounding box around the cap faces and one of the applications was for exactly this. We have a lot of random angled box tube segments at the bottom of our tables where the ends don't need to go all the way to the face to be supportive enough to the end product but drawing the segments up to geometry is easier for the drafter. Script is still very WIP tho.
The bounding boxes would be booleaned away to square up frames to their geometric minimum extents.
@Taylor_Steindel In the geometry of your original picture, all of those frame segments hit the end wall at the same angle (single flat wall, and parallel frame segments). A simple way to fix this would be a "move face" operation. Do the frames with no trim. Then figure out the required setback amount. Then do a "move face" and select all the end faces. Move face is a safe operation to use with frame segments because it preserves the frame attributions on the cap faces (the faces at the ends of segments). Here's what I mean:
1. frames are swept to their end sketch and not trimmed
2. Measure the setback required. If the incident angles between segment and colliding wall are the same, then a single "move face" operation will work
3. Move face
This is not a great solution, because it really only works the way you want for straight segments but might be enough for your rework needs?
@jnewth I think that's the path for me. Cuts the click by maybe 75%, thank you!
Edit: Shoot, the cut list is not updated after the move face. Ideally I would redraw the segments and redo the frames, but these go into an assembly with 160 mates to these frames and I do not want to fix all those mates. I'll export the cut list and do some algebra to subtract the "face move" distance (varying distances for the different frames).
Second edit: Part Length table to the rescue! Rework complete, saved me several hours, thanks!
@Derek_Van_Allen_BD yes, that's what I am looking for. Agreed, easier for the drafter to draw and define the segments without worrying about drawing a perpendicular end cut. Hope the rest of the script development goes well!
Yeah the big hangup right now is the edits to the frame bodies don't always maintain frame attributes for the members so the Boolean operation breaks cut lists. I'm making a helper function that robustly re-tags any errant faces from non frame sensitive operations to make this work as intended
@Taylor_Steindel The cutlist can't update the way you would like. The cutlist is a feature that runs at a particular point in the feature tree, and reflects the part studio at that moment. Downstream changes won't force the table created earlier to update. What you could do in that case is just move the cutlist feature AFTER the move face operations. Then the cutlist will reflect the correct values.
@Derek_Van_Allen_BD Reattribution is tricky. The frame trim tools handle many cases with correct reattribution (though there are some pathological cases) but….yeah, it's not the easiest thing to make work. I think you could replace your boolean operations with splitting planes and then call the frameTrim directly which would then do the reattribution correctly for you but you'd have to try it out. Also I wrote some debug visualizer functions to highlight the end faces and found them enormously helpful while debugging.
@jnewth The current strategy I've been taking has been to check if a frame body already has start or end faces applied and if not query all faces on the frame, subtract all swept faces from that query and then check the remaining faces for adjacency to each other for complex cases to find weird multi cope groups. Then I look for the groups closest to either end of the sweep path and reattribute them as start or end depending on what was missing originally, or arbitrarily reattribute if both were missing. I don't know if frames were designed to have multiple faces labeled as a start or end face but for some of my parts that does describe what the geometry is doing.
@Derek_Van_Allen_BD That's pretty much how the frameTrim strategy works as well, iirc. Grabbing all unattributed faces is probably not fine-grained enough for a general purpose tool but might work for your application. You want to avoid picking up an unattributed face like this hole cut through a segment:
The dark blue has a swept face attribute and the green has an end face attribute. The hole has neither.
Generally flood fill worked best. The frameTrim reattribution code can tolerate multiple faces set. It tries hard to make them all adjacent:
What you really dont want is for start and end faces to be adjacent:
A sample with chop saw locked at 90 deg.
Also a sample using replace face that keeps cut list correct.
https://cad.onshape.com/documents/105b04ed73945e85546e3fed/w/c54027e5d2700d0a69cbc2ae/e/3fcb42e3618f3ed1eb500ef4