Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape, CAD, maker project and design.

First time visiting? Here are some places to start:

  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. 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.

Filleting edges created by an extrusion using startTracking?

Aaron_HooverAaron_Hoover Member Posts: 22 EDU
I'm working on a digital (i.e. cnc router-cut) joints project, and many of the joints will have extruded geometry with fillets on the vertical edges (to accommodate cutter radius) that gets subtracted from another body to form the joint. One example is this "Halved Dovetail" 

I create the feature by creating the half lap joint, then extruding a polyline in the shape of the body of the tail from the midplane. That body gets subtracted from the part on the left and unioned with the part on the right . 

In the final version of the joint, I'd like to fillet the convex corners of the dovetail as well as the concave corners where the tail meets the shoulder. In another thread, @Jake_Rosenfeld
mentioned using a tracking query to get the edges created by the extrude. Can someone help me understand how to use a tracking query to do this? Are there particularly good examples of using tracking queries to create fillets? What is the best way to isolate those four edges at the vertices of the tail cross section and fillet them and only them while still being able to create the mating geometry with a single Boolean subtraction?

My FeatureScript is here: https://cad.onshape.com/documents/23dc8ff499026deeed6aa19e/w/0031df2b6d633ae1a21ed033/e/ecf25bb128148651d6f2a998

Best Answer


  • lemon1324lemon1324 Member, Developers Posts: 142 EDU
    There are similar edge-finding operations in Laser Joint, when calculating pin chamfers and corner overcuts.  In that case, all the edges are "created" by a boolean, so the cap entity queries don't work.

    I use qCreatedBy, and then some utility functions I wrote to filter by edge orientation and edge convexity.  Since you know the coordinates of the joint within your construction coordinate system, you can then filter out the outer two edges that you don't want to fillet.

    Since you need to sketch a moderately complicated profile to create your joint anyway, I'd actually also see if you can precalculate the fillets and include them as part of the sketch.
    Arul Suresh
    PhD Candidate at Stanford University
  • Aaron_HooverAaron_Hoover Member Posts: 22 EDU
    @lemon1324, yeah, that was my initial thought as well. @ilya_baran seemed to think that filleting the solid might be easier/more straightforward. In any case, I may need to do both depending on how hard it is to sketch the fillet at the base of the dovetail. 

    I'll check out how you did it in Laser Joint, but I think I may just start by trying to create the fillets in the sketch. 
  • lanalana Onshape Employees Posts: 387
    edited November 7
    Tracking sketch vertices to get extruded edges does not work because we are defining the extruded edge identity by two sketch edges intersecting in that vertex. We need to make tracking easier to reason about. You could indeed use qNonCapEntity as @mbartlett21 suggested and filter by convexity (see evEdgeConvexity). 
    I'd second Ilya's recommendation to use opFillet instead of calculating the filleted contour.
  • Aaron_HooverAaron_Hoover Member Posts: 22 EDU
    qNonCapEntity actually wound up working just fine as long as I applied the fillet after Boolean so that the edge at the base of the dovetail was filleted as a concave edge instead of a convex edge. I haven't tried computing the fillets in a sketch yet, but that will be my next approach if I have a situation where qNonCapEntity falls short. 
  • Jake_RosenfeldJake_Rosenfeld Moderator, Onshape Employees, Developers Posts: 1,055

    If you can find one of the edges you care about (using qContainsPoint or something simple like that), you could then use qParallelEdges to find all the edges of the same body that are parallel to that edge.
    Jake Rosenfeld - Modeling Team
Sign In or Register to comment.