Sketcher Exemples

From FreeCAD Documentation
Revision as of 13:42, 8 May 2023 by David69 (talk | contribs) (Created page with "{{Caption|Esquisse maître et charnière du film final animé (cliquez sur l'image si l'animation s'est arrêtée après quelques répétitions)}}")

Cette documentation n'est pas terminée. Merci de nous aider et de contribuer à la documentation.

Modèle GuiCommand explique comment les commandes doivent être documentées. Parcourez Category:UnfinishedDocu pour voir d'autres pages incomplètes comme celle-ci. Voir Category:Command_Reference pour toutes les commandes.

Voir Écrire une page Wiki pour apprendre à éditer les pages du wiki, et aller à Contribuer à FreeCAD pour apprendre d'autres façons de contribuer.
Other languages:

Introduction

Je pense que l' atelier Sketcher a besoin de quelques exemples qui ne sont pas des tutoriels détaillés ou des vidéos...

Charnière film=

Une charnière film est le petit morceau de plastique pliable qui relie les deux côtés d'un objet moulé par injection, tel qu'un conduit avec un couvercle, ou les deux moitiés d'un boîtier de bouchon protégeant de la poussière.

Cet exemple utilise une sorte d'esquisse principale pour empiler des esquisses dépendantes. Il montre également comment attacher et animer un simple clip basé sur les fonctions de PartDesign et les contraintes de Sketcher. L'utilisation des expressions comme décrit ci-dessous nécessite FreeCAD V 0.21 ou plus.

Esquisse de base

En général, un objet est modélisé dans un environnement fermé. Plus tard, la partie mobile doit être retournée de 180° pour être moulée à l'état ouvert.
La bande pliable est représentée par un arc de cercle pour l'état fermé et par une ligne droite pour l'état ouvert, les deux ayant le même point de départ.
Le point médian d'une ligne reliant les deux extrémités indique la position de l'axe de retournement, qui est normal au plan de l'esquisse. (Il est placé sur l'origine de l'esquisse afin que l'axe global normal au plan de l'esquisse puisse être utilisé comme axe de basculement).

(Quelques explications supplémentaires cachées et une description du flux de travail peuvent être développées ici. -->

Esquisse maître et charnière du film final animé (cliquez sur l'image si l'animation s'est arrêtée après quelques répétitions)

For a semi circle, the arc length is the radius multiplied by Pi (l = r * Pi). The radius is named NeutralRadius and the line is called DevelopedLength. An expression for the DevelopedLength relates both values: .Constraints.NeutralRadius * pi

Within the same sketch an expression starts with a . followed by ValueType.ValueName to address another value.

Intermediate sketch

The arc of this film hinge has a constant length and a variable radius. One input is the NeutralRadius of the basic sketch; to have it at hand in this sketch, it is linked as external geometry having a reference dimension called ReferenceRadius

A pie segment of construction geometry displays the relation between the arc and the radius for a given angle.
InputLength = ReferenceRadius * Pi
and
ArcLength = DynamicRadius * Pi * ArcAngle / 180°
with constant length results in:
ReferenceRadius * Pi = DynamicRadius * Pi * ArcAngle / 180°
And with Pi eliminated we get:
ReferenceRadius = DynamicRadius * ArcAngle / 180° or DynamicRadius = ReferenceRadius * 180° / ArcAngle

The expression for the DynamicRadius value: .Constraints.ReferenceRadius * 180 ° / .Constraints.ArcAngle

A film hinge is usually symmetric and so another arc with the same center point called HalfArc is used for the output and represents one half of the hinge arc.

The expression for the HalfArc value: .Constraints.ArcAngle / 2

Intermediate sketch showing the DynamicRadius of the hinge arc of 4 (mm) at a given angle of 45° (and the half arc for output)

Film hinge sketch

This sketch defines the thickness and the adjacent geometry of the film hinge. Therefore we load the half arc of the intermediate sketch as external geometry to use it as the base for the film part. (a fraction of 180° in this case)

This film hinge is intended to keep the connected parts touching each other when closed. This can be achieved by calculating a circular arc of the needed length then create a strip with constant thickness and finally apply fillets where the strip meets the object halves. The last step somehow shortens the loop, but in the real world this is not a problem, because the arc will never be circular and so the fillets have an influence on the arc's curvature but not on its functionality.

Hinge sketch showing the outline of the hinge based on the external geometry from the half arc of the intermediate sketch


Left: padded half hinge with sketch visible. Right: half hinge with added fillet


Half hinge with selected mirror plane → mirrored film hinge


Hint: Part Mirror only accepts the three basic planes and so can not be used in such a case.

(In retrospect it was a wise decision to start this example with the combination of PartDesign and Sketcher.)


Finally two parameters define the size of the film hinge:

  • the NeutralRadius of the basic sketch
  • the thickness value of the intermediate sketch

Bending the film hinge

The bend angle is controlled by the constraint ArcAngle of the intermediate sketch and can be altered in its property editor.
But we are proper designers and have named our sketches constraints and dimensions properly and so can address the controlling angle via Python.
Some basic lines of code to be embedded in a GUI context could look like this:

doc=App.ActiveDocument
sketch=doc.getObjectsByLabel('IntermediateSketch')[0]
 ...
sketch.getDatum('ArcAngle')
 ...
sketch.setDatum('ArcAngle',App.Units.Quantity('50.000000 deg'))
doc.recompute(None,True,True)

A short explanation:

  • doc = App.ActiveDocument: To address the active document by an alias called doc
  • sketch = doc.getObjectsByLabel('IntermediateSketch')[0]: To address the relevant sketch by the alias sketch.
    The method getObjectsByLabel() returns a list of objects and we have to suffix index 0 to pick the first object in the list. (We do not expect any other object having the same label and so do not have to care about other items in the list.)
  • sketch.getDatum('ArcAngle'): Returns the current value of the dimensional constraint ArcAngle (to the Report view)
  • sketch.setDatum('ArcAngle', App.Units.Quantity('50.0 deg')): Sets the value of ArcAngle to 50°
  • doc.recompute(None,True,True): To update the whole document to show the changes of dependant geometry as well.

Connecting geometry

Two halves of a clip stuff are waiting to get attached to the hinge, one on the static side and one on the movable side.

Two halves of a simple clip

The static side is easy:

  1. Activate the body and adjust the position and orientation properties in the properties editor until it matches with the film hinge.
  2. Activate the hinge body.
  3. Select the PartDesign Boolean tool with the (default) Fuse option.
  4. In the dialog press the Add body button.
  5. select the body of the static half of the clip.
  6. Press OK to finish and close the dialog.

Film hinge and static half in modelling position → film hinge with relocated and fused static half

But the moving side is different: The related half of the clip geometry has to move into the right position before a (re-) calculation of a Fuse operation gets started.

At this point I'm missing an "Attachment with offset" function like that of Assembly3 to attach the clip geometry to one of the moving faces. But after a bit of experimenting and tweaking I found out:

While it is possible to use Attachment to align them, the attachment won't be parametrically linked.
  • Attachment can be applied to a PartDesign feature. This and features depending on it are repositioned according to the base geometry. But!:
    • Independent PartDesign features won't move and so it will change the resulting shape and break it in the end.
    • We are advised to keep features independent to avoid impacts due to the Topological naming problem.
  • PartDesign Clone creates a body with a single feature that can be use with Attachment.


With that in mind, a workflow could look like this:

  1. Select the body of the movable half.
  2. Use the Create a clone command.
  3. In the new body select the Clone object in the Tree view.
  4. Use the Part Attachment tool to add attachment properties to the Clone object.
  5. The Attachment dialog opens.
    • Select a vertex for the origin.
    • Select an edge for the first direction.
    • Select an edge for the second direction.
    • Probe the attachment modes to find the best fitting one.
    • Tweak rotation and coordinate values until until the geometry is in modelling position again.
  6. Press OK to close the dialog.
  7. With the hinge body still active select the PartDesign Boolean tool.
  8. In the dialog press the Add body button.
  9. select the body of the movable half .
  10. Press OK to finish and close the dialog.

The movable half will be attached to a corner of the movable hinge side (Map Mode OXZ: vertex, edge, edge)

In retrospect it would have been wiser to provide the attachment geometry with the IntermediateSketch to avoid another source of the Topological naming problem.

The clip so far and the movable half in modelling position → finished clip with attached and fused movable half

Now the result should be a single solid clip, that can be closed and opened by changing the ArcAngle of the film hinge. Allowed angles: 0.1° to 180°, the film section must not get straight, and more than closed doesn't make sense. (At 180° the object may get fused at tangent or overlapping areas, but a little extra gap could help if that is not acceptable.)

Clip almost closed → Clip half closed → Clip in mould condition