-
Notifications
You must be signed in to change notification settings - Fork 151
Thoughts on hooks #1701
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Have you looked on printables to see if anybody has posted any hooks that we haven't thought of? I wonder about the idea of a mixed ribbon - wire hook form where you have a ribbon side to screw on to something and a wire side to hold something with a small hole. |
There are many hook configurations. I just wanted to start out with a basic class of 2D hooks because they are versatile and easy to print. I thought a general-purpose module (or two) would cover most of the use cases for this class of hooks. They can be made into wall hooks, shelf hooks, coat hooks, door hooks, towel hooks, etc. This hook library on Thingiverse is way more complicated than it needs to be, with many different dimensions defined (mostly to accommodate spacing between screws and features of the hook), as you can see by scrolling through the images. If you get a Google vignette, just hit your back button and go forward again. Printables and Thingiverse have lots of different kinds of hooks, especially caribiners, which I think we should avoid unless we can come up with a superior design. I saw YouTube videos testing the strength of these, and they almost always fail at the latch, even when the latch is trapped with a collar. This surprised me because I expected the hinge to shear first, if the design included a hinge for the latch (some of them just flex). |
I took a look at the hook library. I agree that all the stuff about screws is extra. We should provide a few anchors and users can position mounting holes using those as needed. The one interesting feature that code shows is the thickened bottom area with hole to strengthen the hook. Regarding the interface, so we have two hook ends. It seems like the hook top (mounting) options are flat, to be mounted to something, what that code calls (square) "bracket", and then rounded "bracket" which could also have a circle that comes around more than 180 deg so it snaps onto a rod. The last option is to have no mounting at all---the hook is attached directly to some other part of the model. I think there are basically two ways to do the API here. One is the direct way, so we have top="flat" and then top_length= and if you select top="bracket" (or whatever better name) then you have top_height and also bracket_width? Whatever parameters you need. The other API option is to do like offset_sweep and have parameters come in using a structure and have helper functions to make the structure. It seems like laying out a list of what the minimal parameter set looks like is a good way to get an idea if this helper function idea makes sense or not. One reason I did it that way is because I had two ends that needed the same interface and quite a lot of parameters and I wanted a way you could specify the ends to be the same, for example. Are hooks symmetric from to to bottom? Or is the bottom different than the top? |
I think a hook API could give a choice of hook shapes for either end. There are times when you'd want a round hook on both ends, or a square-ish hook on both ends, or a pegboard-like hook on the top, or a hook or loop only on one end. As I indicated with my sketch above, there seems to be two basic types: single bend and double bend, with an extra bend if the hook is centered on the shaft, like dan-p3rry's coat hanger hook above. Thickening the bottom to strengthen the hook is pointless if you don't also strengthen the top, which experiences the same force in the other direction and is subject to similar bending loads. |
No, if you screw the hook to a wall, or mount it directly in your model (especially the latter because it enormously increases the mounting area) then strengthening the bottom of the hook will make a big difference. If you think a symmetric API makes sense that may suggest the helper-function with structures API approach as a better method. Another advantage of that scheme is that it's pretty easy to expand it to include other geometries if someone comes up with them. As far as I can tell, @dan-p3rry's hook fits into the framework of the original post, being a circular hook that is centered. Isn't that the case? |
I've been thinking about a possible new file hook-n-ring.scad (or some similar name) that the code in #1687 could be merged into.
It occurs to me that there's a fairly large class of 2D wire hooks and 2D ribbon hooks, both of which are made by extruding a 2D profile upward, or sweeping a cross-section along a 2D path.
Here are some thoughts I sketched about the different common hook profiles. The hook itself could be on either end of the wire, and can be configured with a single bend or double bend (not counting the bend from centering the hook with respect to the "body"), and the bend can be enough to close the hook into a loop.
I have a "ribbon" hook on the door of a closet. The hook is just on one end, and a hole for fastening is on the other end. A bit thicker and plastic would work fine for this.
I've already written the code for the cross section of the "wire" or "ribbon". It respects $fn, $fa, and $fs. Radius of the rounding self-adjusts depending on the width and height, maintaining a 40° angle from the build plate.
That code produces these three example profiles:
I was wondering what the API for wire hooks would look like. I envision two modules:
The text was updated successfully, but these errors were encountered: