Release notes 0.20: Difference between revisions

From FreeCAD Documentation
(Add constraint filter)
(Move Addon Manager details to AM page (will replace with shorter section later))
Line 222: Line 222:


The Addon Manager was modified to support the distribution of Preference Packs, and to display information found in an addon's metadata (for Workbenches and Preference Packs this is the package.xml file, and for macros it is the metadata embedded in the main macro file itself). The Addon Manager also includes improved support for Addons whose source code is located at four directly-supported hosting locations: GitHub, Gitlab, Framagit, and salsa.debian.org. Networking support was improved to provide more robust handling of SSL connections and support for proxies requiring authentication.
The Addon Manager was modified to support the distribution of Preference Packs, and to display information found in an addon's metadata (for Workbenches and Preference Packs this is the package.xml file, and for macros it is the metadata embedded in the main macro file itself). The Addon Manager also includes improved support for Addons whose source code is located at four directly-supported hosting locations: GitHub, Gitlab, Framagit, and salsa.debian.org. Networking support was improved to provide more robust handling of SSL connections and support for proxies requiring authentication.

<table>
<tr>
<td>[[File:AddonManager_relnotes_0.20.png|500px]]</td>
<td> <ol><li> "Condensed" and "Expanded" views available. "Expanded" view is shown here.</li>
<li> Three different types of addons are now supported: Workbenches, Macros, and Preference Packs. You can choose to show just one type, or all of them in a single list.</li>
<li> The list can be limited to show just installed packages, just packages with available updates, or just packages that are not yet installed.</li>
<li> The list can be filtered, searching for a keyword in the title, description, and tags (description and tags must be specified by the addon developer in their addon's metadata). The filter can even be a regular expression, for fine-grained control of the exact search term.</li>
<li> The expanded view shows available version information, description, maintainer information, and installation version information, for packages that provide a [[Package_Metadata]] file (or for macros with embedded metadata).</li>
<li> Metadata and icons are cached locally, with a variable cache update frequency set in the user preferences.</li>
<li> Update checks may be set up to be automatic, or done manually via a button click. Configured in user preferences.</li>
</ol>
</td>
</tr>
<tr>
<td>[[File:AddonManagerOptions_relnotes_0.20.png|500px]]</td>
<td>
The Addon Manager's preferences have been moved to the main FreeCAD preferences dialog. Several new preferences are available, and several existing preferences have modified behavior.
<ol>
<li>Automatic update checking is available, but not enabled by default. This check happens only when Addon Manager is launched, it is not a "background" update. The GitPython library is required to use the update check feature for workbenches (note that this also requires git to be installed, it is not included with FreeCAD).</li>
<li>Most macros contain extensive metadata describing their contents. This metadata can optionally be downloaded for display in the Addon Manager's main addon listing. This data is cached locally.</li>
<li>The addon availability and metadata information is cached locally: this cache can be updated either manually, or at set intervals.</li>
<li>Three different types of checks are available for automatically hiding certain addons, depending on information maintained at the FreeCAD Addons repository and/or in the addon's internal metadata. As addons in these categories are unlikely to work in your version of FreeCAD, these options are on by default.</li>
<li>Custom repositories may be configured, and should include the name of the branch you intend to use (typically "master" or "main", depending on the developer, but it is not limited to these options).</li>
<li>The Addon Manager includes experimental support for proxies requiring authentication, set up as user-defined proxies.</li>
<li>The Addon Manager now supports automatic pip-based installation of Python package dependencies, offered as an option when installing an Addon with the appropriate metadata set in either a "requirements.txt" or "metadata.txt" file. To support this the Addon Manager attempts to determine the Python executable that should be used. To override this selection, the user preference can be set here.</li>
<li>For developers and beta-testers, the Addon Manager can provide an interface on the addon's details screen that allows switching which git branch is currently checked out. This is intended for advanced users only, as it is possible that a non-primary-branch version of the Addon may result in instability and compatibility issues. Use with caution.</li>
</ol>
</td>
</tr>
</table>


== Arch Workbench == <!--T:23-->
== Arch Workbench == <!--T:23-->

Revision as of 04:25, 24 February 2022

This page tracks new features as they are added to the development version of FreeCAD, which is currently 0.20. When the 0.20 feature freeze happens, delete these messages, and don't add more features to this page. FreeCAD 0.20 is expected to be released in 202x.
!!! All images on this page must use the _relnotes_0.20 suffix !!!

Are features missing? Mention them in the Release notes for v0.20 forum thread.

See Help FreeCAD for ways to contribute to FreeCAD.


FreeCAD 0.20 was released on DD Month 202x, get it from the Download page. This is a summary of the most interesting changes. The complete list of changes can be found in the MantisBT bugtracker FC 0.20 changelog.

Older FreeCAD release notes can be found in Feature list.

Highlights

General

Compilation

Since this release FreeCAD can only be compiled using Qt 5 and Python 3.

To compile FreeCAD under Windows, there are different Libpacks (prepackaged libraries) available:

  • Libpack for Windows with Qt xx, OCC yy, and Python zz

Lowest supported Python version is 3.6.9 according to this FC forum thread.

Supported operating systems:

  • Windows 7, 8 and 10
  • Linux Ubuntu Bionic Beaver (18.04) and Focal Fossa (20.04)
  • MacOS minimum version 10.12 Sierra

Documentation

Known limitations

User interface

The navigation cube was reworked to enable these new features:
  • There are now edge faces to view the scene at angles of 45°.
  • The new preferences option Rotate to nearest allows to view the scene at the nearest sensible state. When it is off, clicking to a cube face will end up always to the same position, no matter in what cube state you were when you clicked the face. See the animation at the left to understand what this means. Try the same click sequence as in the animation without the option Rotate to nearest to experience the difference.
  • By clicking at the dot at the upper right of the cube you can quickly see the backview of the current scene.
  • The size of the cube can be adjusted by the preferences option Cube size.

Forum discussion, Pull request #4502 .

Tooltips now display the command name in the title, making it easier for new users to look for help. At the end of the tooltip the "internal" command name is added in parentheses: (Std_WhatsThis). This is also the name of the page that documents the command in the Wiki. Forum discussion, Pull request #4978 .
The new Std UserEditMode command allows the user to choose an edit mode that will be used when an object is double-clicked in the Tree view. Click the image at the left so see an animation of the selection. If a selected edit mode is not applicable, the object's default edit mode is used instead. Pull request #5110.
The Tree view context menu has the new entry Add dependent objects to selection.
Forum discussion, Pull request #4133.

In the image the Hole001 object was selected by the user and then
its dependencies were added to the selection via the context menu.

Further user interface improvements

Core system and API

Core

When using Edit → Copy or Edit → Duplicate selection for an object with dependencies there is a new Use Original Selections button in the object selection dialog. Click this button to copy/duplicate only the objects you originally selected prior to opening the dialog, ignoring dependencies and ignoring any actions you might have taken while the dialog was open, such as checking or unchecking some of the checkboxes. The effect is the same as if you had unchecked all the checkboxes next to the objects you did not originally select and pressed OK. Note: special care should be taken when copying/duplicating TechDraw Pages. It is recommended to also copy/duplicate all of the children of the Page (Templates, Views, Dimensions, etc.). Otherwise changes to one of the Pages will also impact the other page, for example, deleting one of the Views in one Page also removes it from the other Page. Deleting one of the pages will also remove all the content from the other Page if copies of the content are not also made.
A new type of add-on called a Preference Pack was added, allowing a subset of a user preferences (user.cfg) file to be saved, distributed, and easily applied by other users. Preference Packs can be use to distribute "Themes," for example, by allowing a developer to include both a Qt stylesheet for widgets as well as a set of other colors and styles for items in the user interface that cannot be set using a stylesheet (e.g. text colors in the Python editor or report view, etc.). Anything that can be configured via a user.cfg file can be set using a Preference Pack. Forum discussion
The "Workbenches" preference panel was modified to support the ability to "autoload" workbenches on FreeCAD startup.

API

New Python API

  • Circle2dPy::getCircleCenter: Gets the circle center defined by three points. commit 3dc91fa2
  • ComplexGeoDataPy::applyRotation: Applies an additional rotation to the placement. commit 32592de8
  • ComplexGeoDataPy::applyTranslation: Applies an additional translation to the placement. commit 32592de8
  • ComplexGeoDataPy::countSubElements: Returns the number of elements of a type. commit 32592de8
  • ComplexGeoDataPy::getElementTypes: Returns a list of element types. commit 32592de8
  • ComplexGeoDataPy::getFaces: Returns a tuple of points and triangles with a given accuracy. commit 32592de8
  • ComplexGeoDataPy::getLines: Returns a tuple of points and lines with a given accuracy. commit 32592de8
  • ComplexGeoDataPy::getLinesFromSubelement: Returns vertexes and lines from a sub-element. commit 32592de8
  • ComplexGeoDataPy::getPoints: Returns a tuple of points and normals with a given accuracy. commit 32592de8
  • ComplexGeoDataPy::transformGeometry: Applies a transformation to the underlying geometry. commit 32592de8
  • DocumentPy::clearDocument: Clears the whole document. commit 526dc1a0
  • DocumentPy::getFileName: For a regular document it returns its file name property. For a temporary document it returns its transient directory. commit 526dc1a0
  • DocumentPy::getProgramVersion: Gets the program version that a project file was created with. commit 526dc1a0
  • DocumentPy::isClosable: Checks if the document can be closed. commit 526dc1a0
  • DocumentPy::isSaved: Checks if the document is saved. commit 526dc1a0
  • DocumentPy::isTouched: Checks if any object is in touched state. commit 526dc1a0
  • DocumentPy::mustExecute: Checks if any object must be recomputed. commit 526dc1a0
  • DocumentPy::purgeTouched: Purges the touched state of all objects. commit 526dc1a0
  • DocumentPy::setClosable: Sets a flag that allows or forbids to close a document. commit 526dc1a0
  • HLRBRep_AlgoPy: To access Part's hidden line removal (HLR). commit 73a98671
  • HLRBRep_PolyAlgoPy: To access Part's poly hidden line removal (HLR). commit ea85cf5e
  • HLRToShapePy: To access Part's hidden line removal (HLR). commit 73a98671
  • PolyHLRToShapePy: To access Part's poly hidden line removal (HLR). commit ea85cf5e
  • PrecisionPy: To access the precision defined by the OpenCascade kernel. commit 20b86e55
  • PropertyContainerPy::setDocumentationOfProperty: Sets the documentation string of a dynamic property of this class. commit 8cf3cf33
  • PropertyContainerPy::setGroupOfProperty: Set the name of the group of a dynamic property. commit 8cf3cf33
  • PythonWorkbenchPy::reloadActive: Reload the active workbench after changing menus or toolbars. commit 0bbc253d
  • RotationPy::fromEuler: Sets the Euler angles of a rotation or gets the Euler angles in a given sequence for a rotation. commit 951a0be9
  • RotationPy::toEulerAngles: Gets the Euler angles in a given sequence for this rotation.. commit c1454dfb
  • UnitsApi::sToNumber: Converts a quantity or float to a string. commit befbd95d
  • View3DInventorPy::getCornerCrossSize: Returns current corner axis cross size. commit 9d15df29
  • View3DInventorPy::setPopupMenuEnabled: Enables popup menu. commit 9def811a
  • View3DInventorPy::isCornerCrossVisible: Returns current corner axis cross visibility. commit 9d15df29
  • View3DInventorPy::isPopupMenuEnabled: Returns if popup menu is enabled. commit 9def811a
  • View3DInventorPy::projectPointToLine: Projects the given 2d point to a line. commit b6527a70
  • View3DInventorPy::setCornerCrossSize: Defines corner axis cross size. commit 9d15df29
  • View3DInventorPy::setCornerCrossVisible: Defines corner axis cross visibility. commit 9d15df29

Changed API

  • MeshObject::trim(base, normal) was changed to MeshPy::trimByPlane(base, normal): Trims the mesh with a given plane. commit 837de28e

Addon Manager

The Addon Manager was modified to support the distribution of Preference Packs, and to display information found in an addon's metadata (for Workbenches and Preference Packs this is the package.xml file, and for macros it is the metadata embedded in the main macro file itself). The Addon Manager also includes improved support for Addons whose source code is located at four directly-supported hosting locations: GitHub, Gitlab, Framagit, and salsa.debian.org. Networking support was improved to provide more robust handling of SSL connections and support for proxies requiring authentication.

Arch Workbench

Draft Workbench

  • A Global checkbox was added to the task panel of many drafting commands. Checking it allows input of coordinates in the global coordinate system even if the working plane is not aligned with the global XY plane.
  • The Draft Hatch command was introduced. It creates hatches on the faces of a selected object using patterns from AutoCAD PAT files.
  • Work on the Draft SetStyle command, still in progress in FreeCAD version 0.19, was completed.
  • A double-click edit option was added for Draft Texts. It opens the same edit task panel used when creating a text.
  • For Draft Dimensions the arch ViewUnit Override for imperial architectural dimensions was introduced.
  • Draft Shape2DView objects now have an DataAuto Update property. Setting it to false can be useful if there are many Draft Shape2DViews in a document or if they are complex.

Further Draft improvements

FEM Workbench


Effect of Mesh Size From Curvature; left: set to 12, right: deactivated
There is a new property for the Gmsh mesher. The number of mesh elements per times the radius of the curvature can be specified. The default is 12 and to get a finer mesh at small corners or holes, this value can be increased for better results. This feature requires Gmsh 4.8 or newer.

Forum discussion, Pull request #4596


Effect of the rcombination algorithm; left: using Simple, right: using Simple full-quad
FreeCAD allows now to select an algorithm as well as 3D mesh recombination for the Gmsh mesher. For more details about the mesh element recombination see FEM MeshGmshFromShape.

Pull request #4706

Further FEM improvements

Import

Material handling

Mesh

Improved support for NASTRAN GRID elements

The Mesh import tool now supports the high-precision "GRID*" element. The standard-precision "GRID" element was also improved, now supporting both space-delimited numeric input as well as fixed-field-width input, per the NASTRAN95 format documentation.

Further Mesh improvements

Fixed false negatives during self-intersection tests when facets are coplanar: Pull request #5002.

OpenSCAD Workbench

Interoperability with OpenSCAD has been improved, adding support for several operations missing from earlier versions (linear extrude with rotations, rotational extrusions). Several operations are modified to provide improved FreeCAD object equivalents, particularly for twisted extrusions. Surface generation from discrete data was modified to give more OpenSCAD-like results, rather than splined surfaces.

Add OpenSCAD element - now has additional options

Load    - load a scad file
Save    - save a scad file
Refresh - Update FreeCAD view
Clear   - Clear text input

There is also a text box for feedback of OpenSCAD errors.

Part Workbench


Tapered extrusion of a sketch with an inner structure.
A tapered extrusion of inner structures now creates usable results. Previously, inner structures were extruded as if they were stand-alone and not part of a structure.

Pull request #5367

Further Part improvements

  • The dialog to edit Cylinders now allows to specify an angle relative to the normal of the chosen attachment plane. This way one can create skew cylinders. Pull request #4708

PartDesign Workbench


Padding along an edge from the model.
Click on the image to show the animation.
There is a new option to pad along the direction of an edge in the 3D model.

Pull request #4685

When Distance and Angle is specified in the Chamfer tool and faces are selected, the distance will be applied along the selected faces. Likewise if two distances are specified then Size 1 will be applied along the selected face.

This behaviour can be swapped to the other face using the flip direction button. Forum discussion, Pull request #5039


A loft with multiple sections whereas the final one is a vertex.
It is now possible to create an Additive or Subtractive Loft, or an Additive or Subtractive Pipe towards, or from, a Vertex of either a sketch or a body. This allows for example to create pyramids.
Note: New vertices in sketches are by default construction geometry. To use them as endpoint of lofts, you must first toggle from construction mode.

Pull request #5170 (for lofts), Pull request #5193 (for pipes)


A tapered pocket within a non-tapered pad.
The dialog for Pad and Pocket offers to set a taper angle for the extrusion.

Pull request #5357


Pocketing along different directions.
Click on the image to show the animation.
It is now possible to specify the direction for the pocket extrusion.

Pull request #5164

* The dialog to edit Cylinders (additive and subtractive) now allows to specify an angle relative to the normal of the chosen attachment plane. This way one can create skew cylinders. Pull request #4708
The Helix feature has the new mode Height-Turns-Growth to create flat spirals.

Forum thread Pull request #4590


A single Pad and a single Revolution with nested profiles. The base block is only there to assure that the part is a single solid.
All PartDesign features that can extrude sketches can now handle sketches with nested profiles that form islands. For example it is possible to revolve a sketch consisting of 3 circles nested with all the same center point. Note: Extruding nested profiles only works when the result is still a single body.

request #6381


Effect of the new option Length along sketch normal.
Click on the image to show the animation.
There is a new option to pad a certain length along the direction. The length is either measured along the sketch normal or along the custom direction.

Forum discussion, Pull request #3893

Further PartDesign improvements

  • In the Helix feature one can now also use the sketch normal as axis. Pull request #5199
  • The Sprocket feature can now also create ISO-normed sprockets. Forum thread Pull request #4478
  • The Loft and Pipe features now allow using the body's faces for sections. Pull request #5155
  • It is now possible to select several faces before calling the Pad or Pocket dialog. In this case the first selected face will be used to determine the default padding/pocketing direction. commit d34a5616
  • In the Chamfer and Fillet dialogs all edges of a body can be selected via the context menu while in Add mode. Pull request #5269
    When you selected a 3D object before clicking the icon to create a fillet or chamfer, all object edges will automatically be selected. Pull request #5328
  • Chamfer and Fillet dialogs now each have a new Use all edges checkbox, which is connected to the Use All Edges property for these objects. When the box is checked the property is set to True, when unchecked the property is set to False. When Use All Edges is True there is protection against the topological naming problem because then all of the edges of the base object are used regardless of how many edges there are. Pull request #5340
  • Plane selection when adding a new sketch can now be achieved with a single-click in the 3D View. Pull request Forum discussion

Path Workbench

Render Workbench

Sketcher Workbench

New Split function to split existing lines or arcs.

Forum discussion Pull request #4420

New Rounded rectangle tool to create rectangles with rounded corners.

Forum discussion Main Pull request #4835

New Centered rectangle tool to define rectangles via a center point.

Main commit

New Radiam function to automatically assign weight on B-spline pole, diameter on complete circle, or radius on arc. Support multi-selection as diameter/radius tools.

Forum discussion Main Pull request #4855

New Remove Axes Alignment constraint tool to remove axes alignment while trying to preserve the constraint relationship of the selection.

Main commit

Sketcher CreateSlot can be constrained horizontally or vertically either by snapping it manually with the Ctrl key, or by using the Auto constraints option of Sketcher.

Pull request #5200

New Insert Knot tool to insert a knot in an existing B-spline.

Pull request #5311

Further Sketcher improvements

Spreadsheet Workbench

The workbench now has Preferences. They are used by the Spreadsheet Import and Spreadsheet Export commands.

Pull request #5073

  • It is now possible to select in the row/column context-menu at what positions new rows/columns will be inserted. Pull request #4704.

Further Spreadsheet improvements

  • Import XLSX (used by Std Import): Added support for floor and ceil functions. Pull request #5015.
  • Cell binding: instruct a set of cells to display the contents of another set of cells. Part of Pull request #2862.
  • Improved navigation using the Tab and Enter keys.
  • Improved interface for cutting and pasting blocks of cells.

Start Workbench

Surface Workbench

TechDraw Workbench

More than 30 new tools, so-called Extensions, are now available. They offer new cosmetic features to enhance drawings.

Further TechDraw improvements

Web

External workbenches

Note: these are the new workbenches created in this development cycle, or older workbenches that received updates. See external workbenches for more workbenches that can be installed, and which cover a wide variety of topics. If you want to see your workbench added, join the forum and present your code.

3D Printing Tools

A2plus

Assembly3

Assembly4

ArchTextures

BOLTSFC

CurvedShapes Workbench

Dodo (formerly Flamingo)

Fasteners

FCGear

The FCGear Workbench received a couple of improvements

  • For involute gears, the outside (aka tip) and root diameter are exposed as properties (details)
  • Gear objects are now attachable (details)
  • Gear objects can now be used as additive features in PartDesign Bodies (details)
  • The creation of gear objects now appears in the undo stack (details)

MeshRemodel Workbench

MOOC Workbench

NodeEditor (PyFlow)

Trails, PyTrails, Turns, pivy_trackers, and Geomatics