Jump to content

Part JoinCutout

From FreeCAD Documentation

Part JoinCutout

Menu location
Part → Join → Cutout Shape
Workbenches
Part
Default shortcut
None
Introduced in version
0.16
See also
Part JoinConnect, Part JoinEmbed, Part Boolean, Part Thickness

Description[edit | edit source]

The Part JoinCutout tool creates a cutout in a walled object (e.g. a pipe) to fit another walled object.

Usage[edit | edit source]

  1. Select the base object first, then the object to define the cutout. 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 Cutout Shape button.
    • Select the Part → Join → Cutout Shape option from the menu.
  3. A Part JoinFeature object is created, with Mode set to 'Cutout'. Original objects are hidden, and the result of cutting is shown in the 3D View.

Properties[edit | edit source]

Base

  • DataBase: Reference to base object (the one to make the cutout in). 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 that is to fit into the cutout). 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 'Cutout Shape' option from the Join tools dropdown toolbar button.

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. 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 Cutout will be equivalent to boolean cut of Base with Tool.
  • 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 = 'Cutout', mode = 'Cutout')
  • Creates an empty Cutout 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 = 'Cutout', mode = 'Cutout' )
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.