Jump to content

Part JoinEmbed

From FreeCAD Documentation

Part JoinEmbed

Menu location
Part → Join → Embed Shapes
Workbenches
Part
Default shortcut
None
Introduced in version
0.16
See also
Part JoinConnect, Part JoinCutout, Part Boolean, Part Thickness

Description[edit | edit source]

The Part JoinEmbed tool embeds a walled object (e.g. a pipe) into another walled object.

Usage[edit | edit source]

  1. Select the base object first, then the object to be embedded. The order of selection is important. It is enough to select one sub-shape of each object (e.g. faces).
  2. There are several ways to invoke the tool:
    • Press the Embed Shapes button.
    • Select the Part → Join → Embed Shapes option from the menu.
  3. A Part JoinFeature object is created, with Mode set to 'Embed'. Original objects are hidden, and the result of embedding is shown in the 3D View.

Properties[edit | edit source]

Base

  • DataBase: Reference to base object (the one the other object is to be embedded into). The object should be a single solid.
  • DataRefine: Sets whether to apply Refine operation or not, to the final shape. The default value is determined by a 'Automatically refine model after boolean operation' checkbox in Part/Part Design Preferences.
  • DataTolerance: "fuzziness" value. This is an extra tolerance to apply when searching for intersections, in addition to tolerances stored in the input shapes.
  • DataTool: Reference to tool object (the object to be embedded). The object can be a single solid, or a valid compound of solids.

Example[edit | edit source]

  1. Create a pipe by applying thickness to a cylinder:
  2. Create another, smaller diameter pipe, and place it so that it pierces the wall of the first pipe:
  3. Select the first pipe, then the second pipe (order of selection is important), and click the 'Embed Shapes' option from the Join tools dropdown toolbar button.
  4. Use some cross-section tool (Clipping plane, Arch Section Plane, Arch Cut Plane) to reveal internals. On the picture below, Arch Section Plane is used.

Algorithm[edit | edit source]

The algorithms behind Join tools are quite simple, and understanding them is important to use the tools correctly.

1. Base object is boolean-cut with Tool object. The resulting shape is a set (compound) of non-intersecting solids (typically, two).

2. The resulting compound is filtered: only the largest solid is kept.

3. That largest solid is boolean-fused with Tool object.

4. If Refine property is true, the resulting shape is refined.

Notes[edit | edit source]

  • If after step 1, the object remains in one piece, the result of Embed will be equivalent to union of Base and Tool, but taking longer to compute.
  • Now, the tool will produce unexpected result, if a compound is supplied as Base. This may be changed in the future.
  • Because the largest piece is determined by comparing volumes of pieces, the tool can only work with solids. This may be changed in the future.

Scripting[edit | edit source]

The Join tools can by used in macros and from the Python Console by using the following function:

JoinFeatures.makePartJoinFeature(name = 'Embed', mode = 'Embed')
  • Creates an empty Embed feature (or other Join feature, depending on mode passed). The properties Base and Tool must be assigned explicitly, afterwards.
  • Returns the newly created object.

Example:

import JoinFeatures
j = JoinFeatures.makePartJoinFeature(name = 'Embed', mode = 'Embed' )
j.Base = FreeCADGui.Selection.getSelection()[0]
j.Tool = FreeCADGui.Selection.getSelection()[1]

The tool itself is implemented in Python, see /Mod/Part/JoinFeatures.py (Github link) under where FreeCAD is installed.