Difference between revisions of "PartDesign Fillet"

From FreeCAD Documentation
Jump to navigation Jump to search
(enhanced description)
(→‎Options: to save some time...)
Line 55: Line 55:
 
# Click {{Button|OK}} to validate.
 
# Click {{Button|OK}} to validate.
  
=== Options ===
+
==Options==
  
 
* {{MenuCommand|Radius}}: Set the fillet radius either by editing the value or by clicking on the up/down arrows.
 
* {{MenuCommand|Radius}}: Set the fillet radius either by editing the value or by clicking on the up/down arrows.

Revision as of 10:20, 1 June 2022

Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎română • ‎čeština • ‎русский

PartDesign Fillet.svg PartDesign Fillet

Menu location
Part Design → Apply a dress-up feature → Fillet
Workbenches
PartDesign
Default shortcut
None
Introduced in version
-
See also
PartDesign Chamfer

Description

The text-top=Fillet PartDesign Fillet command creates fillets (rounds) on the selected edges of an object. It adds a Fillet object to the document with its corresponding representation in the Tree view.

Usage

Add a Fillet

  1. Optionally activate the Body to fillet (by double clicking the Tree view item).
  2. There are several ways to select edges to fillet:
    • Select one or more edge(s) of the active Body individually.
    • Select one or more face(s) on the active Body to select all surrounding edges at once.
    • Select the whole active Body to select all its edges at once. introduced in version 0.20
  3. There are several ways to invoke the Fillet tool:
    • Press the text-top=Fillet Fillet button.
    • Select the Part Design → Apply a dress-up feature → PartDesign Fillet.svg Fillet option from the menu.
  4. The Fillet parameters dialog will open in the Task panel and allows to set several options.
  5. Click OK to validate.


Remember:
  • For a chain of edges tangential to one another, one single edge can be selected; the fillet will propagate along the chain.
  • Since there must be at least one edge for the feature, the last remaining edge or face in the list cannot be removed.
  • Uncheck the Use all edges checkbox to add or remove edges and/or faces individually.

Edit a Fillet

  1. There are two ways to reopen the Fillet parameters dialog to edit a Fillet:
    • Double-click on the Fillet item in the Tree view
    • Right-click on the Fillet item in the Tree view and select Edit Fillet from the context menu.
  2. The Fillet parameters dialog will open in the Task panel and allows to set several options.
  3. Click OK to validate.

Options

  • Radius: Set the fillet radius either by editing the value or by clicking on the up/down arrows.
  • Add: Add edges to the selection by pressing the Add button and selecting more edges or faces.
    To select all remaining edges right-click in the list and select Add all edges from the context menu. introduced in version 0.20
  • Remove: Choose a way to remove edges from the selection:
    • Select each edge or face in the list of the dialog and press the DEL key or right-click in the list and select Remove from the context menu.
    • Press the Remove button. All edges and faces being previously selected are highlighted in purple. Select each edge or face to be removed.
  • Use all edges: Select all edges by checking the Use all edges checkbox introduced in version 0.20. This deactivates the selection list and the related buttons.

Notes

  • PartDesign Fillet should not be confused with Part Fillet. Unless you know what you are doing, Part Fillet should not be used on a PartDesign Body. See Part and PartDesign.
  • Fillets cannot completely consume the adjacent faces.

Properties

See also: Property editor.

A PartDesign Fillet object is derived from a Part Feature object and inherits all its properties. It also has the following additional properties:

Data

Base

  • DataBase (LinkSub): Base. Sub-link to the parent feature's list of selected edges and faces.
  • DataSupportTransform (Bool): Support Transform. "Include the base additive/subtractive shape when used in pattern features.
If disabled, only the dressed part of the shape is used for patterning. Default: false.
  • Data (hidden)AddSubShape (PartShape): Add Sub Shape.
  • Data (hidden)BaseFeature (Link): Base Feature. Link to the parent feature.
  • Data (hidden)_Body (LinkHidden): _Body. Hidden link to the parent body.


Fillet

  • DataRadius (QuantityConstraint): "Fillet radius". Default: 1,00 mm.
  • DataUseAllEdges (Bool): Use All Edges. "Fillet all edges if true, else use only those edges in Base property.
If true, then this overrides any edge changes made to the Base property or in the dialog". Default: false.


Part Design

  • DataRefine (Bool): "Refine shape (clean up redundant edges) after adding/subtracting". Default: true.

Known issues

Fillets, chamfers, and other features that operate on solid bodies depend on the underlying OpenCASCADE Technology (OCCT) kernel that FreeCAD uses. The OCCT kernel occasionally has difficulty handling coincident sharp edges, where two faces meet. If this is the case FreeCAD may crash without an explanation.

If run from the terminal, FreeCAD may output a log like this one after the crash:

#1  0x7fff63d660ba in BRep_Tool::Curve(TopoDS_Edge const&, TopLoc_Location&, double&, double&) from /usr/lib/x86_64-linux-gnu/libTKBRep.so.7+0x2a
#2  0x7fff63d69546 in BRep_Tool::Curve(TopoDS_Edge const&, double&, double&) from /usr/lib/x86_64-linux-gnu/libTKBRep.so.7+0x46
#3  0x7fff71f4fef5 in ChFi3d_Builder::PerformIntersectionAtEnd(int) from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x3b05
#4  0x7fff71f58307 in ChFi3d_Builder::PerformOneCorner(int, bool) from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x1097
#5  0x7fff71ef6218 in ChFi3d_Builder::PerformFilletOnVertex(int) from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x4e8
#6  0x7fff71ef71d1 in ChFi3d_Builder::Compute() from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0xe31
#7  0x7fff720ad7c3 in BRepFilletAPI_MakeChamfer::Build() from /usr/lib/x86_64-linux-gnu/libTKFillet.so.7+0x33
#8  0x7fff723be48e in PartDesign::Chamfer::execute() from /usr/lib/freecad-daily/lib/_PartDesign.so+0x60e
...

This output references functions located in libTKBRep.so, libTKFillet.so, etc., which are OCCT libraries. If this type of crashes occurs, the problem may need to be reported and solved in OCCT rather than in FreeCAD.

See the forum threads for more information:

The user is also responsible for the integrity of his or her own model. Depending on the model, it may be impossible to perform a fillet or chamfer if the body is not big enough to support that operation. For example, it wouldn't be possible to create a 10 mm fillet if an edge is separated only 5 mm from the next surface. In that case, the maximum radius for a fillet would be 5 mm; trying to use a larger value may result in a shape that doesn't compute, or even a crash. If using the exact limit of 5 mm doesn't work, it may be possible to use a very close approximation, like 4.9999 mm, to produce the same visible result.

Topological naming

Edge numbers are not completely stable, therefore it is advisable that you finish the main design work of your solid body before applying features like fillets and chamfers, otherwise edges could change name and filleted edges would likely become invalid. When the DataUse All Edges property (introduced in version 0.20) is true there is some protection from this. Because in such cases all the edges of the base object are used and there is no dependence on individual edge names.

Read more in topological naming problem.

Scripting

The tool text-top=Fillet Fillet can be used in a macro, and, from the Python console using the following function:

Box = Box.makeFillet(3,[Box.Edges[0]]) # 1 Fillet
Box = Box.makeFillet(3,[Box.Edges[1],Box.Edges[2],Box.Edges[3],Box.Edges[4]]) # for several Fillets
  • 3 = radius
  • Box.Edges[2] = Edge with its number

Example:

import PartDesign
from FreeCAD import Base

Box = Part.makeBox(10,10,10)
Box = Box.makeFillet(3,[Box.Edges[0]]) # pour 1 Fillet
Box = Box.makeFillet(3,[Box.Edges[1],Box.Edges[2],Box.Edges[3],Box.Edges[4]]) # for several Fillets
Part.show(Box)