I'd like to get some traction on a feature request for overhaul of the hole feature in part design.
The hole feature covers 99% of holes you would need, just like most other 3D modeling software, In some ways it is a step above other 3D modeling software.
My arch nemesis, the countersunk threaded hole is no problem (useful when the mating part uses a captive fastener and is not machined on the mating side), Unlike SolidWorks which requires using the "Advanced Hole Feature" (when it could have a mere check box).
Every piece of 3D modeling software has been unable to easily add standardized complex holes, such as BSPP, which could requires all 4 hole operations, a couterbore, countersink, tapped thread, and through hole (in some senarios).
I propose a change to how holes are handled. The threads are normally defined in the order the machinist would need to machine them. See the image below for example (I acknowledge the irony of using an image from the solidworks help page).
Currently thread specs for custom threads are stored in a json file. I propose expanding this to encapsulate multi operation holes.
For example (ignoring how far side is not implemented) the above thread could be defined as:
Code: Select all
{
"name": "Custom thread from solidworks help page",
"data": [
{ "type": "countersink", "location": "farSide", "diameter": 0.53, "angle": 82},
{ "type": "countersink", "location": "farSide", "diameter": .27, "depth": .17},
{"type": "drill", "diameter": .2, "depth": "through"},
{"type": "thread", "thread": "1/4-20 UNC 2B" "depth": .25},
{"type": "counterbore", "diameter": .44, "depth".25}
}
}
A thread family could be specified in a similar way:
Code: Select all
{
"familyName": "BSPP (British Standard Parallel Pipe Thread)"
"data": [
{"name": "BSPP 1/8" .... thread spec
{"name": "BSPP 1/4" .... thread spec
etc....
]
}
And now for my magnum opus: I propose the ability to use already defined threads in new threads, much like how currently you supply a thread "M2.5" and it unpacks into a drill and tap.
For example a BSPP Junction, which is unpacked into: tap-drill, thru-drill, cbore, csink, tap. Similarly for the far side. (Impracticable it may be to pack this particular thread into a single thread callout, since its guaranteed to be two milling operations because of surface finish requirements).
Code: Select all
{
"name": "BSPP Junction",
"data": [
{ "type": "BSPP 1/4"},
{ "type": "BSPP 1/4", "location": "farSide"},
{ "type": "drill", "diameter": .25, "depth", "through"}
}
}
Some thread operations are optional, for example the couterbore in the BSPP thread "A1" in the picture above is only defined as a maximum and could be 0 (as long as the surface finish could be maintained). With this in mind it is possible to implement a few more thread options:
- Maximum and minimum depths: user to select a value between (default and override of course)
- Relative depth for instance "+10" evaluates to the previous depth + 10mm (for instance if the BSPP counterbore is reduced the countersink and tap depth need to be reduced as well).
- Countersink depth (because its nice)
When a hole requires a clearance to access with a tool it would be nice to have a check box to add tool clearance to the hole. The tool clearance hole can have the diameter of the largest OD or Major Diameter rounded up to the next drill size, with depth as through by default with the option to decrease it. For example a hole near a fillet won't be machinable as left by default, a second pocket feature must be added that matches the hole to give clearance for the tool. (And if more holes are added they don't get the clearance, unless a pattern is used) (Other CAD programs don't include this feature likely because then hole feature has no flat face to start from, so a section view must be used to dimension the depths in addition to the hole callout (depths as reference)).
These options could be exposed to the user in some small way such as a "Add another operation" button in the thread tool. And a list of operations that will be performed.
With all of these combined FreeCAD would have complete freedom and stand head and shoulders above all other 3D modeling software when it comes to holes and user choice.
It seems like most of this is post processing the thread data and GUI, and seems possible.
Thanks for reading all the way through my manifesto!, please share any comments or thoughts.