Thread for Screw Tutorial/pl

Wprowadzenie
Ten poradnik jest zbiorem technik modelowania gwintów śrubowych w programie FreeCAD.

Modelowanie gwintów jest niewskazane ponieważ nakłada duże obciążenie na jądro modelowania, jak również powoduje duże obciążenie po stronie renderingu. Kształty gwintów zajmują dużo pamięci, a posiadanie tylko jednego gwintu w projekcie FreeCAD, może łatwo zwiększyć rozmiar pliku do rozmiarów megabajtów. Są jednak pewne sytuacje, w których konieczne jest modelowanie gwintu do pełnych szczegółów i właśnie dlatego powstał ten poradnik.

Metoda 0. Zdobądź jedną z bibliotek do tworzenia części
Korzystanie z modeli, które opracowały inne osoby, jest wygodne i pozwala zaoszczędzić wiele czasu. Zapoznaj sie z Macro BOLTS, który jest interfejsem do wstawiania standardowych elementów z biblioteki BOLTS.

Metoda 1. Używanie makrodefinicji
Znany jest skrypt Screw Maker, autorstwa ulrich1a, oraz cały Fasteners Workbench przygotowany przez shaise (link do GitHub). Umożliwiają one wygenerowanie gwintu. Są one przeznaczone do tworzenia standardowych profili gwintów (trójkątnych).

Metoda 2. Imitacja przez ułożenie stosu krążków.
Jest to bardzo dobry sposób na wizualizację gwintów, przy jednoczesnym zachowaniu prostoty geometrii.

Ideą jest stworzenie nie-spiralnego gwintu (który jest tylko kształtem zębów wyciągniętych przez obrót, lub stosu krążków o skośnych krawędziach). Taki pozorny gwint trudno odróżnić od prawdziwego gwintu spiralnego, jedynie na niego patrząc. To również może się sprawdzić w przypadku FEM. Jeśli jednak zechcesz go wydrukować za pomocą technologii 3D, nie będzie to działało.



Zamysł
Koncepcja jest dość prosta: narysuj profil gwintu, a następnie rozciągnij go funkcja sweep wzdłuż ścieżki helix. W trakcie wykonania operacji należy zaznaczyć pola Solid i Frenet. Solid jest kluczem do wykonywania na nim operacji union lub cut. Frenet zabezpieczy profil przed skręcaniem (więcej informacji na ten temat można znaleźć w dokumentacji Part Sweep).

W ten sposób otrzymujemy model zwojów gwintu, bez pręta lub otworu. Aby wykonać gwint na pręcie lub otworze, należy funkcją union lub cut połączyć te zwoje z kształtem walca. Wymagane będą dodatkowe operacje logiczne, aby ukształtować surowe, ostre krawędzie uzwojenia.



Tricks to success


Rule 1. The sweep must not self-intersect or touch. A self-intersecting sweep is an invalid solid. Attempts to fuse it or cut it are very likely to fail. Nevertheless, this may be OK for 3d-printing and visualization purposes to leave the coil and the cylinder unfused (intersecting).



Rule 2. Remember that helix in FreeCAD is an imprecise thing. As a consequence, a cylinder made to mate with the thread precisely is very likely to fail to fuse to the thread. In general, avoid geometry coincident to elements of the sweep, such as tangent faces, edges tangent to faces they are not connected to, coincident and tangent edges, etc.

Tip 1. The radius of the helix does not matter (unless the helix is tapered). All that matters is the pitch and the height of the helix. This means that you can use a generic helix to generate a number of threads with equal pitch.

Tip 2. Keep it short (low number of turns). Long threads tend to fail in Boolean operations. Consider stacking the thread from short pieces using Draft Array, if a long thread proves problematic.

Pros and cons
+ Very natural way of defining thread profile

+ easy to understand

+ no problems with mesh generation, unlike method 4

- due to invalidity of self-intersecting sweeps, it is next to impossible to generate a gapless thread (that is, with no cylindrical faces at the outer or inner sides of the thread)

- Boolean operations are required to obtain meaningful results. These take long time and fail often.

- Threads with high number of turns are problematic.

Idea
The idea is to sweep a horizontal cross-section of the thread along the helix. The main problem here is figuring out, what profile to use to obtain a certain thread.



If one uses a circle as a horizontal profile (the circle has to be placed off the origin, that offset defines the depth of the thread), thread profile will be sinusoidal.

To obtain a standard sawtooth profile, a pair of mirrored archimedean spirals need to be fused into a wire. The resulting figure is a heart shape, which becomes barely distinguishable from a circle when the depth of the thread is small compared to its diameter (this is why such a "thick" thread is shown on the picture above).

Generating the profile
Figuring out, what the horizontal profile needs to be made for obtaining a certain vertical profile is not easy. For simple cases like triangular or trapezoidal, it can be constructed manually. Alternatively, it can be constructed by creating a short thread with method 3, and getting a slice of it by doing a common between a horizontal plane face and the thread.

Profile for triangular thread

 * 1) Create a spiral (archimedian) in XY plane.
 * 2) Set number of turns to 0.5,
 * 3) the radius to the inner radius of the thread (outer radius will be this + depth of cut)
 * 4) and growth to double the depth of cut of the thread.
 * 5) Part Mirror the spiral against XY plane
 * 6) Part Union the spiral and the mirror to obtain a closed wire, shaped like a heart. Done!

Profile for arbitrary cross-section


You are done.
 * 1) make a (vertical) cut profile. Make sure that the height of the sketch matches the pitch of the thread you need.
 * 2) make a helix1 with height identical to the pitch and the pitch identical to the thread pitch and a helix radius of 0.42*nominal diameter of the thread.
 * 3) Sweep the cut profile along the helix1. Set make solid and frenet to true.
 * 4) Make a circle with nominal radius of the thread in the x-y-plane.
 * 5) Make a face from the circle. (Part-workbench: advanced utility to create shapes, or Draft Upgrade then MakeFace = true)
 * 6) cut the face with the sweep profile
 * 7) make a clone from the cut (Draft workbench)
 * 8) Downgrade the clone in order to get a wire. (Draft workbench) This wire is the horizontal profile needed for this method.
 * 9) Make a helix with radius of nominal radius of the thread and a pitch of the thread and the height of the needed thread.
 * 10) Sweep the wire along the helix. Set solid and frenet to true.

Credit: step-by-step guide from a forum post by Ulrich1a, slightly modified.

The steps are also shown in action on this video by Gaurav Prabhudesai: http://www.youtube.com/watch?v=fxKxSOGbDYs

Pros and cons
+ A ready-to-use thread-on-a-rod solid shape is created by the sweep directly.

+ Less or even no Boolean operations required, generation speed is very high compared to Method 3.

+ Thread ends are nicely cut straight away

+ Long threads are not a problem, unless a Boolean operation is needed. Otherwise, it is not going to be much better than Method 3.

+ Gapless threads are not a problem.

- Defining thread profile is complicated.

- Standard mesher generates ugly meshes, which can lead to problems. Other meshers are better, Mefisto seems to give the best results.

- large memory footprint

Idea
Helical splines will extrude coaxial faces that are able to be lofted, while FreeCAD's parametric helix won't.   It takes two helical splines to define a thread. Those two can be scaled from a library spline, then located and extruded appropriately to get the form right.

FreeCAD's parametric helixes aren't truly helical, but helical b-splines aren't difficult to lay out. One manual method is to array dodecagons (12-sided polygons) with 5mm radius/10mm diameter at 1/12mm (0.08333.mm) z intervals and trace splines from vertex to vertex in ascending and rotating order, and to consider doing it once with, say, 10 turns, so that that spline can be re-used as a library file for import and reuse. It's convenient to use 10mm diameter/1mm pitch for ease of scaling. If you are doing it manually, drawing a Dwire and then converting it to a b-spline is easier than drawing a spline. Dwires don't have curvature computed while being drawn, so they follow the cursor and snap more obediently.

Once the splines are scaled to the right size and located so that the loft will have the right included angle between the thread flanks, they're extruded along their axis, a pitch length's worth for the inner spline, the outer pitch/8.



ISO and other threads have relieved, ie flat, inner and outer edges rather than sharp, which suits FreeCAD users with this method, because we can loft to the helical face at the nominal fastener size, while an inner face can't be lofted to an outer edge spline because a face is a closed profile, a spline is open. ISO standard says the nominal size of external threads have a face width pitch/8. The picture shows how the geometry is arranged, and the helical faces that result. Then, loft between the faces, and then a cylinder that gives the inner helical face, which ISO puts at pitch/4 width, is added to the threads.



This method produces reliable solids that boolean properly. While it doesn't produce "parametric" screw threads in standard sizes in the sense of having simple access to form by fastener size, it's an easy way of producing an accurate library for reuse, and models of specialised forms like ACME, or Archimedian screws, are also uncomplicated as one-offs.