# NOPE002: FreeCAD holder strap from STL Non-Obvious Practical Examples 002: Modelling a thin strap that wraps around the STL model of a drone. ## Starting Materials FreeCAD Version: 0.21.1 STL model: https://www.printables.com/model/325938-dji-mavic-3-drone Reference product: https://www.amazon.de/dp/B0CJDDCBCB ![image](https://hackmd.io/_uploads/BknKqlPpa.png) ### Initial Steps - Mesh import - Mesh_scale 10.0 - move z + 10.5 mm to center on fisheye lens - Mesh_CrossSections at +20,+10,0,-10,-20,-25,-30 mm ![image](https://hackmd.io/_uploads/HkiE2xwpT.png) - orthographic view - Sketcher > new Sketch at offset corresponding to cross section - Sketcher_CompCreateBSpline half of the cross-section, skipping features that will later be subtracted (optical components, ribs) - select spline and vertical axis, Sketcher_Symmetry to create mirrored copy ![image](https://hackmd.io/_uploads/SJ_rCgDaa.png) - repeat often ![image](https://hackmd.io/_uploads/ByLxRgwpa.png) Offset contours: With hindsight, the inside surface will be wrinkly and warp inward, so some extra clearance is needed. The overall thickness should be below 2mm to reduce weight. - create Part 2D Offsets +0.3 mm - create Part 3D Offsets +2.0 mm ![image](https://hackmd.io/_uploads/rySXbbPaT.png) ## Failed Workflows ### Part Design Thickness with end faces selected - Create new body - drag Part Loft into Body to create a Base Feature - select faces - Thickness ![image](https://hackmd.io/_uploads/H1VCYGDTT.png) ![image](https://hackmd.io/_uploads/B1KMj-w66.png) From here on - no more PartDesign WB attempts. ### Part Loft from all 2D Offset contours refusal to work / crash ![image](https://hackmd.io/_uploads/rJvPyWDTp.png) ### Part Loft from pairs of 2D Offset contours boundaries don't line up / have incompatible geometry. Very long processing time. ![image](https://hackmd.io/_uploads/r1uWMWva6.png) ### Redraw all 14 Offset contours (also needed for Best Effort Workflow) Whatever the output of Offset is (polylines?), it does not play nicely with any subsequent steps. One would think that the offset of a spline can again be represented by a spline? - 14x sketch at offset - 14x manual spline to trace the offset - 14x mirror copy ### Part Loft of offset drawn splines - Part Loft from inner 7 sketches - Part Loft from outer 7 sketches - Part Cut outer - inner to get a shell with thickness What could possibly go wrong? ![photo_2024-03-05_18-31-01](https://hackmd.io/_uploads/HkhCHWD6T.jpg) Result is sagging inward, voiding clearances. ![image](https://hackmd.io/_uploads/B1l3Q-PaT.png) 3D printed drone mock-up and strap printed with a 1 mm slit subtracted so it can be installed and removed shows the extent to which the clearances have been violated: ![image](https://hackmd.io/_uploads/HycVEbwaa.png) ### Part 3D Offset - section-wise or as a whole - Normal vectors make edges bend in all directions ![photo_2024-03-07_10-39-28](https://hackmd.io/_uploads/S1yJhWP6p.jpg) ### Add Draft_BSpline rails + Curves Gordon surface (also needed for Best Effort Workflow) - hide mirror spline copies in all 7 inner sketches by toggling to construction geometry - draw Draft_BSpline rails connecting sketches to define ridges, transitions - select sketchs and BSpline items - Gordon Surface ![image](https://hackmd.io/_uploads/B1C3VbvTp.png) From here on however, it is not possible to derive a well-formed skin from the surface itself. ### From Gordon to Part 3D Offset to solid Thickness positive: inward? With negative values outward, but in both cases there are defects: ![photo_2024-03-07_10-19-00](https://hackmd.io/_uploads/rJhCLWwaa.jpg) ?!?! :P ![photo_2024-03-07_10-19-18](https://hackmd.io/_uploads/HkiewWD6p.jpg) Negative thickness: ![image](https://hackmd.io/_uploads/SySYnZv66.png) ### Loft Between Gordon surfaces - hide mirror spline copies in all 7 _outer_ sketches by toggling to construction geometry - repeat drawing Draft BSpline rails for outer surface - Curves Gordon outer sketches + outer BSpline rails ![image](https://hackmd.io/_uploads/rkB3PZDpp.png) This gets us close: - Part Mirror ![image](https://hackmd.io/_uploads/HkT4uZDTT.png) Ends should be flush? - No ![photo_2024-03-06_23-01-38](https://hackmd.io/_uploads/SJG-YbP6p.jpg) ## Best Effort Workflows Gordon surfaces are the most labor-intense way to reconstruct offsets twice and turn them into surfaces. With Part Loft between two nested surfaces, one arrives nearly at the desired geometry. Finally, - add a cube - Part Cut - mirror copy - select edges - Part Shape Builder: Faces from edges ![image](https://hackmd.io/_uploads/ryLwKbPTT.png) - Part Loft between pairs of faces to fill gaps - Boolean to combine pieces ![image](https://hackmd.io/_uploads/B1EnFZwTa.png) A core principle of FreeCAD seems to be to unusable-ify intermediate steps, either by producing results with defects that need to be rectified with additional steps, or by directly generating objects (like offset from a sketch) that are themselves unsuitable for further use, prompting the need to redraw contours manually, which means losing the ability to make the offset parametric.