PartDesign Fillet: Difference between revisions

From FreeCAD Documentation
(PartDesign Fillet is not to be confused with '''Part Fillet''' of the Part Workbench)
(Updated Docnav.)
 
(52 intermediate revisions by 11 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<translate>
<translate>

<!--T:38-->
<!--T:38-->
{{Docnav
{{Docnav
|[[PartDesign_Scaled|Scaled]]
|[[PartDesign_MultiTransform|Create MultiTransform]]
|[[PartDesign Chamfer|Chamfer]]
|[[PartDesign_Chamfer|Chamfer]]
|[[PartDesign_Workbench|PartDesign]]
|[[PartDesign_Workbench|PartDesign]]
|IconL=PartDesign_MultiTransform.svg
|IconL=PartDesign_Scaled.svg
|IconC=Workbench_PartDesign.svg
|IconR=PartDesign_Chamfer.svg
|IconR=PartDesign_Chamfer.svg
|IconC=Workbench_PartDesign.svg
}}
}}


Line 14: Line 15:
{{GuiCommand
{{GuiCommand
|Name=PartDesign Fillet
|Name=PartDesign Fillet
|MenuLocation=Part Design → Apply a dress-up feature → Fillet
|Workbenches=[[PartDesign Workbench|PartDesign]]
|MenuLocation=PartDesign → Fillet
|Workbenches=[[PartDesign_Workbench|PartDesign]]
|SeeAlso=[[Part Fillet|Part Fillet]]
|SeeAlso=[[PartDesign_Chamfer|PartDesign Chamfer]]
}}
}}


Line 22: Line 23:


<!--T:28-->
<!--T:28-->
This tool creates fillets (rounds) on the selected edges of an object. A new separate Fillet entry (followed by a sequential number if there are already existing fillets in the document) is created in the Project tree.
The [[Image:PartDesign_Fillet.svg|24px]] '''PartDesign Fillet''' tool 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|Tree view]].

<!--T:29-->
[[Image:PartDesign_Fillet-01.png|thumb|left|Select edges on the object before starting the tool.]]
[[Image:PartDesign_Fillet-02.png|thumb|left|Set the fillet radius in the Fillet parameters.]]
[[Image:PartDesign_Fillet-03.png|thumb|left|A Fillet object is added in the Project tree.]]


== Usage == <!--T:22-->
== Usage == <!--T:22-->

=== Add a fillet === <!--T:52-->


<!--T:30-->
<!--T:30-->
# Optionally [[PartDesign_Body#Active_status|activate]] the Body to fillet.
* Select a single or multiple edges or a face on an object, then start the tool either by clicking its icon or going into the menu. In case you selected a face all its edges are respected for filleting.
# There are several ways to select edges to fillet:
* In Fillet parameters in the [[Task_panel|Task panel]], set the fillet radius either by entering the value, or by clicking on the up/down arrows. The applied fillet is shown in real time.
#* Select one or more edges of the Body individually.
* If you want to add more edges or faces click first the '''Add ref''' button and then select the edge or the face.
#* Select one or more faces of the Body to select all their edges.
* If you want to remove edges or faces click the '''Remove ref''' button. All edges and faces being previously selected are highlighted in purple. Select the edge or the face to be removed.
#* Select a feature (usually the last feature) of the Body to select all its edges. {{Version|0.20}}
* Click OK to validate.
* For a chain of edges tangential to one another, one single edge can be selected; the fillet will propagate along the chain.
# For a chain of tangentially connected edges only a single edge needs to be selected, the fillet will propagate along the chain.
# There are several ways to invoke the tool:
* To edit the fillet after the function has been validated, either double-click on the Fillet label in the Project tree, or right-click on it and select '''Edit Fillet'''.
#* Press the {{Button|[[Image:PartDesign_Fillet.svg|16px]] [[PartDesign_Fillet|Fillet]]}} button.
#* Select the {{MenuCommand|Part Design → Apply a dress-up feature → [[Image:PartDesign_Fillet.svg|16px]] Fillet}} option from the menu.
# If there is no active Body, and there are two or more Bodies in the document, the {{MenuCommand|Active Body Required}} dialog will open and prompt you to activate one. If there is a single Body it will be activated automatically.
# The {{MenuCommand|Fillet parameters}} [[Task_panel|task panel]] opens. See [[#Options|Options]] for more information.
# Press the {{Button|OK}} button to finish.

=== Edit a fillet === <!--T:53-->

<!--T:54-->
# Do one of the following:
#* Double-click the Fillet object in the [[Tree_view|Tree view]]
#* Right-click the Fillet object in the [[Tree_view|Tree view]] and select {{MenuCommand|Edit Fillet}} from the context menu.
# The {{MenuCommand|Fillet parameters}} [[Task_panel|task panel]] opens.See [[#Options|Options]] for more information.
# Press the {{Button|OK}} button to finish.

==Options== <!--T:55-->

<!--T:56-->
* To add edges do one of the following:
** Press the {{Button|Add}} button to start selecting edges and/or faces in the [[3D_view|3D view]].
** To select all remaining edges do the following:
**# If required press the {{Button|Add}} button.
**# Use the {{KEY|Ctrl}}+{{KEY|Shift}}+{{KEY|A}} keyboard shortcut, or right-click the list and select {{MenuCommand|Add all edges}} from the context menu. {{Version|0.20}}
* To remove edges do one of the following:
** Press the {{Button|Remove}} button to start deselecting edges and/or faces in the [[3D_view|3D view]]. Selected elements are highlighted in purple.
** Select one or more elements in the list and press the {{KEY|Del}} key, or right-click the list and select {{MenuCommand|Remove}} from the context menu.
* Set the {{MenuCommand|Radius}} of the fillet.
* Check the {{MenuCommand|Use all edges}} checkbox to select all edges of the previous feature. This deactivates the selection list and the related buttons. {{Version|0.20}}

== Notes == <!--T:50-->

<!--T:51-->
* PartDesign Fillet should not be confused with [[Part_Fillet|Part Fillet]]. Unless you know what you are doing, [[Part_Fillet|Part Fillet]] should not be used on a PartDesign Body. See [[Part_and_PartDesign|Part and PartDesign]].
* Fillets cannot completely consume the adjacent faces.

==Properties== <!--T:57-->

<!--T:58-->
See also: [[Property_editor|Property editor]].

<!--T:59-->
A PartDesign Fillet object is derived from a [[Part_Feature|Part Feature]] object and inherits all its properties. It also has the following additional properties:

===Data=== <!--T:60-->

<!--T:61-->
{{Properties_Title|Base}}

<!--T:62-->
* {{PropertyData|Base|LinkSub}}: Link to the selected edges and faces of the parent feature. Can be a link to only the parent feature if {{PropertyData|Use All Edges}} is {{TRUE}}.
* {{PropertyData|Support Transform|Bool}}: If {{TRUE}} the filleted shape of the additive/subtractive parent feature will be used when the fillet object is included in a [[PartDesign_Workbench#Transformation_tools|pattern]], else only the shape of the fillet itself will be used. The default is {{FALSE}}.
* {{PropertyData|Add Sub Shape|PartShape|hidden}}
* {{PropertyData|Base Feature|Link|hidden}}: Link to the parent feature.
* {{PropertyData|_ Body|LinkHidden|hidden}}: Link to the parent body.

<!--T:63-->
{{Properties_Title|Fillet}}


<!--T:64-->
==== PartDesign Fillet vs. Part Fillet ==== <!--T:26-->
* {{PropertyData|Radius|QuantityConstraint}}: The fillet radius. The default is {{value|1 mm}}.
* {{PropertyData|Use All Edges|Bool}}: If {{TRUE}} all edges of the feature are filleted, and the edges specified by {{PropertyData|Base}} are ignored. The default is {{FALSE}}.


<!--T:65-->
[[Image:PartDesign_Fillet.svg|24px]] [[PartDesign_Fillet|PartDesign Fillet]] is not to be confused with '''[[Image:Part_Fillet.svg|24px]] [[Part_Fillet|Part Fillet]]''' of the [[Part_Workbench|Part Workbench]]. Although they share the same name, they are not the same, and are not used the same way.
{{Properties_Title|Part Design}}


<!--T:66-->
Here is how they differ from each other:
* {{PropertyData|Refine|Bool}}: If {{TRUE}} redundant edges are removed from the result of the operation. The default value is determined by the {{MenuCommand|Automatically refine model after sketch-based operation}} preference. See [[PartDesign_Preferences#General|PartDesign Preferences]].
* The PartDesign Fillet is ''Parametric''. After a fillet has been applied, its radius can be edited; this is not possible with the Part Fillet.
* Edges must be selected on an object before activating the PartDesign Fillet. With the Part Fillet, the tool can be started, then a solid is selected, then edges.
* The PartDesign Fillet creates a separate Fillet entry (followed by a sequential number if there are already existing fillets) in the Project tree. The Part Fillet becomes the parent of the object it was applied to.
* The PartDesign Fillet offers a live preview of the fillet applied to the object before validating the function.
* The Part Fillet supports variable radii (with a start radius and an end radius). The PartDesign fillet doesn't.
{{clear}}


== Known Issues == <!--T:27-->
== Known issues == <!--T:27-->


<!--T:31-->
<!--T:31-->
Fillets, chamfers, and other features that operate on solid bodies depend on the underlying OpenCASCADE Technology (OCCT) kernel that FreeCAD uses.
Fillets, chamfers, and other features that operate on solid bodies depend on the underlying [[OpenCASCADE|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.
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.


<!--T:32-->
<!--T:32-->
If run from the terminal, FreeCAD may output a log like this one after the crash:
If run from the terminal, FreeCAD may output a log like this after a crash:

{{code|code=
</translate>
{{code|lang=text|code=
#1 0x7fff63d660ba in BRep_Tool::Curve(TopoDS_Edge const&, TopLoc_Location&, double&, double&) from /usr/lib/x86_64-linux-gnu/libTKBRep.so.7+0x2a
#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
#2 0x7fff63d69546 in BRep_Tool::Curve(TopoDS_Edge const&, double&, double&) from /usr/lib/x86_64-linux-gnu/libTKBRep.so.7+0x46
Line 71: Line 125:
...
...
}}
}}
<translate>


<!--T:33-->
<!--T:33-->
This output references functions located in {{incode|libTKBRep.so}}, {{incode|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.
This output references functions from OCCT libraries. If this type of crash occurs, the problem may need to be reported and solved in OCCT rather than in FreeCAD.


<!--T:34-->
<!--T:34-->
See the forum threads for more information:
See the forum threads for more information:
*[https://forum.freecadweb.org/viewtopic.php?p=263818#p263818 Bug Chamfer bigger than 2mm crashes freecad]
*[https://forum.freecadweb.org/viewtopic.php?p=263818#p263818 Bug Chamfer bigger than 2mm crashes freecad]
*[https://forum.freecadweb.org/viewtopic.php?p=264827#p264827 Segfault when using part desgin fillet]
*[https://forum.freecadweb.org/viewtopic.php?p=264827#p264827 Segfault when using part design fillet]


<!--T:35-->
=== Topological naming === <!--T:49-->
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 === <!--T:36-->
<!--T:36-->
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.
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 names and filleted edges would likely become invalid. When the {{PropertyData|Use All Edges}} property ({{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.


<!--T:42-->
<!--T:42-->
Read more in [[topological naming problem|topological naming problem]].
Read more in [[Topological_naming_problem|topological naming problem]].


==Scripting== <!--T:23-->


<!--T:37-->
The tool {{KEY|[[File:PartDesign_Fillet.svg|16px|text-top=Fillet|link=PartDesign_Fillet]] [[ PartDesign_Fillet|Fillet]]}} can be used in a macro, and, from the Python console using the following function :
</translate>
{{Code|code=
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
}}
<translate>

<!--T:24-->
*3 = radius
*Box.Edges[2] = Edge with its number


<!--T:25-->
Example :
</translate>
{{Code|code=
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)
}}

<translate>
<!--T:39-->
<!--T:39-->
{{Docnav
{{Docnav
|[[PartDesign_Scaled|Scaled]]
|[[PartDesign_MultiTransform|Create MultiTransform]]
|[[PartDesign Chamfer|Chamfer]]
|[[PartDesign_Chamfer|Chamfer]]
|[[PartDesign_Workbench|PartDesign]]
|[[PartDesign_Workbench|PartDesign]]
|IconL=PartDesign_MultiTransform.svg
|IconL=PartDesign_Scaled.svg
|IconR=PartDesign_Chamfer.svg
|IconC=Workbench_PartDesign.svg
|IconC=Workbench_PartDesign.svg
|IconR=PartDesign_Chamfer.svg
}}
}}

<!--T:40-->
{{PartDesign Tools navi}}

<!--T:41-->
{{Userdocnavi}}


</translate>
</translate>
{{PartDesign Tools navi{{#translation:}}}}
{{clear}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 13:38, 8 June 2022

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 PartDesign Fillet tool 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.
  2. There are several ways to select edges to fillet:
    • Select one or more edges of the Body individually.
    • Select one or more faces of the Body to select all their edges.
    • Select a feature (usually the last feature) of the Body to select all its edges. introduced in version 0.20
  3. For a chain of tangentially connected edges only a single edge needs to be selected, the fillet will propagate along the chain.
  4. There are several ways to invoke the tool:
    • Press the Fillet button.
    • Select the Part Design → Apply a dress-up feature → Fillet option from the menu.
  5. If there is no active Body, and there are two or more Bodies in the document, the Active Body Required dialog will open and prompt you to activate one. If there is a single Body it will be activated automatically.
  6. The Fillet parameters task panel opens. See Options for more information.
  7. Press the OK button to finish.

Edit a fillet

  1. Do one of the following:
    • Double-click the Fillet object in the Tree view
    • Right-click the Fillet object in the Tree view and select Edit Fillet from the context menu.
  2. The Fillet parameters task panel opens.See Options for more information.
  3. Press the OK button to finish.

Options

  • To add edges do one of the following:
    • Press the Add button to start selecting edges and/or faces in the 3D view.
    • To select all remaining edges do the following:
      1. If required press the Add button.
      2. Use the Ctrl+Shift+A keyboard shortcut, or right-click the list and select Add all edges from the context menu. introduced in version 0.20
  • To remove edges do one of the following:
    • Press the Remove button to start deselecting edges and/or faces in the 3D view. Selected elements are highlighted in purple.
    • Select one or more elements in the list and press the Del key, or right-click the list and select Remove from the context menu.
  • Set the Radius of the fillet.
  • Check the Use all edges checkbox to select all edges of the previous feature. This deactivates the selection list and the related buttons. introduced in version 0.20

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): Link to the selected edges and faces of the parent feature. Can be a link to only the parent feature if DataUse All Edges is true.
  • DataSupport Transform (Bool): If true the filleted shape of the additive/subtractive parent feature will be used when the fillet object is included in a pattern, else only the shape of the fillet itself will be used. The default is false.
  • Data (hidden)Add Sub Shape (PartShape)
  • Data (hidden)Base Feature (Link): Link to the parent feature.
  • Data (hidden)_ Body (LinkHidden): Link to the parent body.

Fillet

  • DataRadius (QuantityConstraint): The fillet radius. The default is 1 mm.
  • DataUse All Edges (Bool): If true all edges of the feature are filleted, and the edges specified by DataBase are ignored. The default is false.

Part Design

  • DataRefine (Bool): If true redundant edges are removed from the result of the operation. The default value is determined by the Automatically refine model after sketch-based operation preference. See PartDesign Preferences.

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 after a 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 from OCCT libraries. If this type of crash occurs, the problem may need to be reported and solved in OCCT rather than in FreeCAD.

See the forum threads for more information:

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 names 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.