[Feature Request] Custom Holes Part Design

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply

Support

5 (Yes Support)
2
50%
4
2
50%
3
0
No votes
2
0
No votes
1 (No Support)
0
No votes
 
Total votes: 4
ChemicalCoal
Posts: 24
Joined: Sun May 09, 2021 3:38 am

[Feature Request] Custom Holes Part Design

Post by ChemicalCoal »

Hi everyone, I present my "whole" manifesto,

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).
Image

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).

Image

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).
Image

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}
	}
}
While this particular thread is impractical, (requiring an operation from the far side to get the countersink (since its so large), and the 1/4-20 thread being entirely eaten up by the final counterbore) it could be done.

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....
	]
}
It seems like this would be ideal, any type of hole or thread cutting operation could be used.

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).

Image

Code: Select all

{
	"name": "BSPP Junction",
	"data":  [
		{ "type": "BSPP 1/4"},
		{ "type": "BSPP 1/4", "location": "farSide"},
		{ "type": "drill", "diameter": .25, "depth", "through"}
	}
}
The possibility for a check box to split nearside and farside callouts in techdraw might be interesting to help with these threads.

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)
One last thing to add to my wish list.
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)).
Image
Image

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.
chrisb
Veteran
Posts: 53945
Joined: Tue Mar 17, 2015 9:14 am

Re: [Feature Request] Custom Holes Part Design

Post by chrisb »

This looks intriguing, but I haven't made up my mind yet, if making a tool for 1% is worth the effort; both in developing and maintaining it as well as using an even more complicated feature. It may be more suitable to add a groove which would allow for even more special holes such as for internal circlips.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
User avatar
adrianinsaval
Veteran
Posts: 5541
Joined: Thu Apr 05, 2018 5:15 pm

Re: [Feature Request] Custom Holes Part Design

Post by adrianinsaval »

IMO voting here is irrelevant, votes won't make it happen, coding will.
Post Reply