Feature list: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
Line 5: Line 5:
* [[Release notes 011|Release 0.11]]
* [[Release notes 011|Release 0.11]]
* [[Release notes 012|Release 0.12]]
* [[Release notes 012|Release 0.12]]
* [[Release notes 013|Release 0.13]]


== Key features ==
== Key features ==


* [[Image:Feature1.jpg|left]] A complete [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE Technology]-based '''geometry kernel''' allowing complex 3D operations on complex shape types, with native support for concepts like brep, nurbs, boolean operations and fillets {{clear}}
* [[Image:Feature1.jpg|left]] A complete [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE Technology]-based '''geometry kernel''' allowing complex 3D operations on complex shape types, with native support for concepts like brep, nurbs curves and surfaces, a wide range of geometric entities, boolean operations and fillets, and built-in support of STEP and IGES formats {{clear}}
* [[Image:Feature3.jpg|left]] A full '''parametric model'''. All FreeCAD objects are natively parametric, which means their shape can be based on [[Property|properties]] or even depend on other objects, all changes being recalculated on demand, and recorded by the undo/redo stack. New object types can be added easily, that can even be [[Scripted objects|fully programmed in Python]]{{clear}}
* [[Image:Feature6.jpg|left]] A '''modular architecture''' that allow plugins (modules) to add functionality to the core application. Those extensions can be as complex as whole new applications or as simple as [[Scripting|Python scripts]] or self-recorded [[macros]] {{clear}}
* [[Image:Feature4.jpg|left]] A '''modular architecture''' that allow plugins (modules) to add functionality to the core application. Those extensions can be as complex as whole new applications programmed in C++ or as simple as [[Scripting|Python scripts]] or self-recorded [[macros]]. You have complete access from the '''Python''' built-in interpreter, macros or external scripts to almost any part of FreeCAD, being [[Topological data scripting|geometry creation and transformation]], the 2D or 3D representation of that geometry ([[scenegraph]]) or even the [[PyQt|FreeCAD interface]] {{clear}}
* [[Image:Feature3.jpg|left]] A full '''parametric model''' allowing any type of parameter-driven custom objects, that can even be [[Scripted objects|fully programmed in Python]]{{clear}}
* [[Image:Feature5.jpg|left]] Import/export to '''standard formats''' such as [http://en.wikipedia.org/wiki/ISO_10303 STEP], [http://en.wikipedia.org/wiki/IGES IGES], [http://en.wikipedia.org/wiki/Obj OBJ], [http://en.wikipedia.org/wiki/STL_%28file_format%29 STL], [http://en.wikipedia.org/wiki/Dxf DXF], [http://en.wikipedia.org/wiki/Svg SVG], [http://en.wikipedia.org/wiki/STL_(file_format) STL], [http://en.wikipedia.org/wiki/COLLADA DAE], [http://en.wikipedia.org/wiki/Industry_Foundation_Classes IFC] or [http://people.sc.fsu.edu/~jburkardt/data/off/off.html OFF], [http://en.wikipedia.org/wiki/NASTRAN NASTRAN], [http://en.wikipedia.org/wiki/VRML VRML] in addition to FreeCAD's native [[Fcstd file format]]. The level of compatibility between FreeCAD and a given file format can vary, since it depends on the module that implements it.{{clear}}
* [[Image:Feature4.jpg|left]] Complete access from '''Python''' built-in interpreter, macros or external scripts to almost any part of FreeCAD, being [[Topological data scripting|geometry creation and transformation]], the 2D or 3D representation of that geometry ([[scenegraph]]) or even the [[PyQt|FreeCAD interface]] {{clear}}
* [[Image:Feature5.jpg|left]] Import/export to '''standard formats''' such as [http://en.wikipedia.org/wiki/ISO_10303 STEP], [http://en.wikipedia.org/wiki/IGES IGES], [http://en.wikipedia.org/wiki/Obj OBJ], [http://en.wikipedia.org/wiki/Dxf DXF], [http://en.wikipedia.org/wiki/Svg SVG], [http://en.wikipedia.org/wiki/STL_(file_format) STL], [http://en.wikipedia.org/wiki/COLLADA DAE], [http://en.wikipedia.org/wiki/Industry_Foundation_Classes IFC] or [http://people.sc.fsu.edu/~jburkardt/data/off/off.html OFF], in addition to FreeCAD's native [[Fcstd file format]].{{clear}}
* [[Image:Feature7.jpg|left]] A [[Sketcher Workbench|Sketcher]] with constraint-solver, allowing to sketch geometry-constrained 2D shapes. The sketcher currently allows you to build several types of constrained geomerty, and use them as a base to build other objects throughout FreeCAD.{{clear}}
* [[Image:Feature7.jpg|left]] A [[Sketcher Workbench|Sketcher]] with constraint-solver, allowing to sketch geometry-constrained 2D shapes. The sketcher currently allows you to build several types of constrained geomerty, and use them as a base to build other objects throughout FreeCAD.{{clear}}
* [[Image:Feature9.jpg|left]] A [[Robot Workbench|Robot simulation]] module that allows to study robot movements. The robot module already has an extended graphical interface allowing GUI-only workflow.{{clear}}
* [[Image:Feature9.jpg|left]] A [[Robot Workbench|Robot simulation]] module that allows to study robot movements. The robot module already has an extended graphical interface allowing GUI-only workflow.{{clear}}

== In development ==

* [[Image:Feature8.jpg|left]] A [[Drawing Module|Drawing sheets]] module that permit to put 2D views of your 3D models on a sheet. This modules then produces ready-to-export SVG or PDF sheets. The module is still sparse but already features a powerful Python functionality.{{clear}}
* [[Image:Feature8.jpg|left]] A [[Drawing Module|Drawing sheets]] module that permit to put 2D views of your 3D models on a sheet. This modules then produces ready-to-export SVG or PDF sheets. The module is still sparse but already features a powerful Python functionality.{{clear}}
* [[Image:Feature-raytracing.jpg|left]] A [[Raytracing Module|Rendering]] module that can export 3D objects for rendering with external renderers. Currently only supports [http://en.wikipedia.org/wiki/POV-Ray povray], but is expected to be extended to other renderers in the future.{{clear}}
* [[Image:Feature-raytracing.jpg|left]] A [[Raytracing Module|Rendering]] module that can export 3D objects for rendering with external renderers. Currently only supports [http://en.wikipedia.org/wiki/POV-Ray povray], but is expected to be extended to other renderers in the future.{{clear}}
* [[Image:Feature-arch.jpg|left]] An [[Arch Module|Architecture]] module that allows [http://en.wikipedia.org/wiki/Building_Information_Modeling BIM]-like workflow, with [http://en.wikipedia.org/wiki/Industry_Foundation_Classes IFC] compatibility. The making of the Arch module is heavily discussed by the community [http://sourceforge.net/apps/phpbb/free-cad/viewtopic.php?f=10&t=821 here].{{clear}}
* [[Image:Feature-arch.jpg|left]] An [[Arch Module|Architecture]] module that allows [http://en.wikipedia.org/wiki/Building_Information_Modeling BIM]-like workflow, with [http://en.wikipedia.org/wiki/Industry_Foundation_Classes IFC] compatibility. The making of the Arch module is heavily discussed by the community [http://sourceforge.net/apps/phpbb/free-cad/viewtopic.php?f=10&t=821 here].{{clear}}
* [[Image:Feature-assembly.jpg|left]] An [[Assembly project|Assembly]] module that allows to work with multiple shapes, multiple documents, multiple files, multiple relationships...{{clear}}


== General features ==
== General features ==

=== Base application ===

[[Image:Freecad09-thumbnail.jpg|300px|right]]


*'''FreeCAD is multi-platform'''. It runs and behaves exactly the same way on Windows Linux and Mac OSX platforms.
*'''FreeCAD is multi-platform'''. It runs and behaves exactly the same way on Windows Linux and Mac OSX platforms.
Line 42: Line 34:


* '''a modular MSI installer''' allows flexible installations on Windows systems. Packages for Ubuntu systems are also maintained.
* '''a modular MSI installer''' allows flexible installations on Windows systems. Packages for Ubuntu systems are also maintained.

=== Document structure ===

[[Image:Freecad-vista01.jpg|300px|right]]


* '''Undo/Redo framework''': Everything is undo/redoable, with access to the undo stack, so multiple steps can be undone at a time.
* '''Undo/Redo framework''': Everything is undo/redoable, with access to the undo stack, so multiple steps can be undone at a time.
Line 54: Line 42:


* '''Compound (ZIP based) document save format''': FreeCAD documents saved with .[[fcstd file format|fcstd]] extension can contain many different types of information, such as geometry, scripts or thumbnail icons.
* '''Compound (ZIP based) document save format''': FreeCAD documents saved with .[[fcstd file format|fcstd]] extension can contain many different types of information, such as geometry, scripts or thumbnail icons.

=== User Interface ===


* '''Fully customizable/scriptable Graphical User Interface'''. The [http://www.qtsoftware.com Qt]-based interface of FreeCAD is entirely accessible via the python interpreter. Aside from the simple functions that FreeCAD itself provides to workbenches, the whole Qt framework is accessible too, allowing any operation on the GUI, such as creating, adding, docking, modifying or removing widgets and toolbars.
* '''Fully customizable/scriptable Graphical User Interface'''. The [http://www.qtsoftware.com Qt]-based interface of FreeCAD is entirely accessible via the python interpreter. Aside from the simple functions that FreeCAD itself provides to workbenches, the whole Qt framework is accessible too, allowing any operation on the GUI, such as creating, adding, docking, modifying or removing widgets and toolbars.
Line 68: Line 54:


* '''Thumbnailer''' (Linux systems only at the moment): The FreeCAD document icons show the contents of the file in most file manager applications such as gnome's nautilus.
* '''Thumbnailer''' (Linux systems only at the moment): The FreeCAD document icons show the contents of the file in most file manager applications such as gnome's nautilus.

== Application specific features ==

The functionality of FreeCAD is separated in modules, each one dealing with special data types and applications:

===[[Image:Workbench_Mesh.png]] [[Mesh Module|Meshes]] ===

[[Image:Screenshot_mesh.jpg|300px|right]]

* The [[Mesh Module]] deals with 3D meshes. It is intented primarily for import, healing and conversion of third-party generated mesh geometry into FreeCAD, and export of FreeCAD geometry into mesh formats. But FreeCAD itself also features much more advanced geometry types than meshes.


* '''Primitive creation''' (box, sphere, cylinder, etc), '''offset''' (trivial or after Jung/Shin/Choi) or '''boolean operations''' (add, cut, intersect)
* '''Primitive creation''' (box, sphere, cylinder, etc), '''offset''' (trivial or after Jung/Shin/Choi) or '''boolean operations''' (add, cut, intersect)

* '''Import''' of the following formats: ASCII or binary [http://en.wikipedia.org/wiki/STL_%28file_format%29 STL (Stereo lithography format)] ('''*.stl, *.ast'''), the [http://en.wikipedia.org/wiki/Obj OBJ format] ('''*.obj'''), limited [http://en.wikipedia.org/wiki/NASTRAN NASTRAN] support ('''*.nas'''), [http://en.wikipedia.org/wiki/Open_Inventor Open Inventor] meshes ('''*.iv'''), and FreeCAD native mesh kernel ('''*.bms''')

* '''Export''' of the following formats: ASCII or binary [http://en.wikipedia.org/wiki/STL_%28file_format%29 STL (Stereo lithography format)] ('''*.stl, *.ast'''), the [http://en.wikipedia.org/wiki/Obj OBJ format] ('''*.obj'''), limited [http://en.wikipedia.org/wiki/NASTRAN NASTRAN] support ('''*.nas, *.brl'''), [http://en.wikipedia.org/wiki/VRML VRML] meshes ('''*.wrl'''), FreeCAD native mesh kernel ('''*.bms'''), mesh as Python module ('''*.py''')


* '''Testing and repairing''' tools for meshes: solid test, non-two-manifolds test, self-intersection test, hole filling and uniform orientation.
* '''Testing and repairing''' tools for meshes: solid test, non-two-manifolds test, self-intersection test, hole filling and uniform orientation.

* '''Extensive [[Mesh Scripting|Python scripting API]]'''.

===[[Image:Workbench_Draft.png]] [[Draft Module|2D Drafting]] ===


* Graphical creation of '''simple planar geometry''' like lines, wires, rectangles, arcs or circles in any plane of the 3D space
* Graphical creation of '''simple planar geometry''' like lines, wires, rectangles, arcs or circles in any plane of the 3D space
Line 96: Line 64:


* Graphical '''modification operations''' like translation, rotation, scaling, mirroring, offset or shape conversion, in any plane of the 3D space
* Graphical '''modification operations''' like translation, rotation, scaling, mirroring, offset or shape conversion, in any plane of the 3D space

* '''Import''' and '''Export''' of the following formats: Autodesk's Drawing Exchange Format ('''*.dxf'''), Open Cad Format ('''*.oca, *.gcad''') e SVG ('''*.svg''')

===[[Image:Workbench_Part.png]] [[Part Module|CAD]] ===

[[Image:Part_BooleanOperations.png|300px|right|An example of union, intersection and difference]]

* The [[Part Module]] deals with everything around CAD modeling and the CAD data structures. The CAD functionality is under heavy development (see the [[PartDesign_project]] and [[Assembly_project]] in the [[Development_roadmap]]). The [[Part Module]] works with high-level [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE] geometry.


* '''Parametric primitive shapes''' like box, sphere, cylinder, cone or torus.
* '''Parametric primitive shapes''' like box, sphere, cylinder, cone or torus.
Line 113: Line 73:
* '''[http://en.wikipedia.org/wiki/Constructive_solid_geometry Boolean operations]''' like '''union''', '''difference''' and '''intersection'''.
* '''[http://en.wikipedia.org/wiki/Constructive_solid_geometry Boolean operations]''' like '''union''', '''difference''' and '''intersection'''.


==In development==
* '''Extensive [[Topological_data_scripting|Python scripting API]]'''.

* '''Import''' and '''Export''' of the following formats: [http://en.wikipedia.org/wiki/Standard_for_the_Exchange_of_Product_model_data STEP] parts and assemblies ('''*.stp,*.step'''), [http://en.wikipedia.org/wiki/IGES IGES] models ('''*.igs, *.iges''') and BRep ('''*.brp'''), the native format of our [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE] CAD kernel.

=== [[Raytracing Module|Raytracing]] ===

* The [[Raytracing Module]] permits the export of FreeCAD geometry to '''external renderers''' for generation of high-quality images. Currently, the only supported render engine is [http://en.wikipedia.org/wiki/POV-Ray POV-Ray]. The module currently permits the creation of a render sheet, and adding geometry to that render sheet for export to a POV-Ray file.

=== [[Drawing Module|Drawing]] ===

* The [[Drawing Module]] allows to export projected views of your 3D geometry to a '''2D SVG document'''. It allows the creation of a 2D sheet with an existing svg template, and the insertion of projected views of your geometry in that sheet. Then the sheet can be saved as a SVG file.

=== [[Cam Module|CAM]] ===

* The [[Cam Module]] is dedicated to mechanical machining like milling. This module is at the very beginning and at the moment mostly dedicated to [http://en.wikipedia.org/wiki/Incremental_sheet_forming Incremental Sheet Forming]. Although there are some algorithms for toolpath planing they are not usable for the end-user at the moment.


* [[Image:Feature-assembly.jpg|left]] An [[Assembly project|Assembly]] module that allows to work with multiple projects, multiple shapes, multiple documents, multiple files, multiple relationships...{{clear}}
* [[Image:Feature-CAM.jpg|left]] A [[Cam Module]] dedicated to mechanical machining like milling, and will be able to output, display and adjust [http://en.wikipedia.org/wiki/G-code G code]. This module is currently in planning state.{{clear}}


{{docnav|About FreeCAD|Install on Windows}}
{{docnav|About FreeCAD|Install on Windows}}

Revision as of 18:43, 8 December 2012

This is an extensive, hence not complete, list of features FreeCAD implements. If you want to look into the future see the Development roadmap for a quick overview the Screenshots are a nice place to go.

Release notes

Key features

  • A complete Open CASCADE Technology-based geometry kernel allowing complex 3D operations on complex shape types, with native support for concepts like brep, nurbs curves and surfaces, a wide range of geometric entities, boolean operations and fillets, and built-in support of STEP and IGES formats
  • A full parametric model. All FreeCAD objects are natively parametric, which means their shape can be based on properties or even depend on other objects, all changes being recalculated on demand, and recorded by the undo/redo stack. New object types can be added easily, that can even be fully programmed in Python
  • A modular architecture that allow plugins (modules) to add functionality to the core application. Those extensions can be as complex as whole new applications programmed in C++ or as simple as Python scripts or self-recorded macros. You have complete access from the Python built-in interpreter, macros or external scripts to almost any part of FreeCAD, being geometry creation and transformation, the 2D or 3D representation of that geometry (scenegraph) or even the FreeCAD interface
  • Import/export to standard formats such as STEP, IGES, OBJ, STL, DXF, SVG, STL, DAE, IFC or OFF, NASTRAN, VRML in addition to FreeCAD's native Fcstd file format. The level of compatibility between FreeCAD and a given file format can vary, since it depends on the module that implements it.
  • A Sketcher with constraint-solver, allowing to sketch geometry-constrained 2D shapes. The sketcher currently allows you to build several types of constrained geomerty, and use them as a base to build other objects throughout FreeCAD.
  • A Robot simulation module that allows to study robot movements. The robot module already has an extended graphical interface allowing GUI-only workflow.
  • A Drawing sheets module that permit to put 2D views of your 3D models on a sheet. This modules then produces ready-to-export SVG or PDF sheets. The module is still sparse but already features a powerful Python functionality.
  • A Rendering module that can export 3D objects for rendering with external renderers. Currently only supports povray, but is expected to be extended to other renderers in the future.
  • An Architecture module that allows BIM-like workflow, with IFC compatibility. The making of the Arch module is heavily discussed by the community here.

General features

  • FreeCAD is multi-platform. It runs and behaves exactly the same way on Windows Linux and Mac OSX platforms.
  • FreeCAD is a full GUI application. FreeCAD has a complete Graphical User Interface based on the famous Qt framework, with a 3D viewer based on Open Inventor, allowing fast rendering of 3D scenes and a very accessible scene graph representation.
  • FreeCAD also runs as a command line application, with low memory footprint. In command line mode, FreeCAD runs without its interface, but with all its geometry tools. It can be, for example, used as server to produce content for other applications.
  • FreeCAD can be imported as a Python module, inside other applications that can run python scripts, or in a python console. Like in console mode, the interface part of FreeCAD is unavailable, but all geometry tools are accessible.
  • Plugin/Module framework for late loading of features/data-types. FreeCAD is divided into a core application and modules, that are loaded only when needed. Almost all the tools and geometry types are stored in modules. Modules behave like plugins, and can be added or removed to an existing installation of FreeCAD.
  • Built-in scripting framework: FreeCAD features a built-in Python interpreter, and an API that covers almost any part of the application, the interface, the geometry and the representation of this geometry in the 3D viewer. The interpreter can run single commands up to complex scripts, in fact entire modules can even be programmed completely in Python.
  • a modular MSI installer allows flexible installations on Windows systems. Packages for Ubuntu systems are also maintained.
  • Undo/Redo framework: Everything is undo/redoable, with access to the undo stack, so multiple steps can be undone at a time.
  • Transaction management: The undo/redo stack stores document transactions and not single actions, allowing each tool to define exactly what must be undone or redone.
  • Parametric associative document objects: All objects in a FreeCAD document can be defined by parameters. Those parameters can be modified on the fly, and recomputed anytime. The relationship between objects is also stored, so modifying one object also modifies its dependent objects.
  • Compound (ZIP based) document save format: FreeCAD documents saved with .fcstd extension can contain many different types of information, such as geometry, scripts or thumbnail icons.
  • Fully customizable/scriptable Graphical User Interface. The Qt-based interface of FreeCAD is entirely accessible via the python interpreter. Aside from the simple functions that FreeCAD itself provides to workbenches, the whole Qt framework is accessible too, allowing any operation on the GUI, such as creating, adding, docking, modifying or removing widgets and toolbars.
  • Workbench concept: In the FreeCAD interface, tools are grouped by workbenches. This allows to display only the tools used to accomplish a certain task, keeping the workspace uncluttered and responsive, and the application fast to load.
  • Built-in Python console with syntax highlighting, autocomplete and class browser: Python commands can be issued directly in FreeCAD and immediately return results, permitting scriptwriters to test functionality on the fly, explore the contents of the modules and easily learn about FreeCAD internals.
  • User interaction mirroring on the console: Everything the user does in the FreeCAD interface executes python code, which can be printed on the console and recorded in macros.
  • Full macro recording & editing: The python commands issued when the user manipulates the interface can then be recorded, edited if needed, and saved to be reproduced later.
  • Thumbnailer (Linux systems only at the moment): The FreeCAD document icons show the contents of the file in most file manager applications such as gnome's nautilus.
  • Primitive creation (box, sphere, cylinder, etc), offset (trivial or after Jung/Shin/Choi) or boolean operations (add, cut, intersect)
  • Testing and repairing tools for meshes: solid test, non-two-manifolds test, self-intersection test, hole filling and uniform orientation.
  • Graphical creation of simple planar geometry like lines, wires, rectangles, arcs or circles in any plane of the 3D space
  • Annotations like texts or dimensions
  • Graphical modification operations like translation, rotation, scaling, mirroring, offset or shape conversion, in any plane of the 3D space
  • Parametric primitive shapes like box, sphere, cylinder, cone or torus.
  • Topological components like vertices, edges, wires and planes (via python scripting).
  • Modeling with straight or revolution extrusions, sections and fillets.

In development

  • An Assembly module that allows to work with multiple projects, multiple shapes, multiple documents, multiple files, multiple relationships...
  • A Cam Module dedicated to mechanical machining like milling, and will be able to output, display and adjust G code. This module is currently in planning state.
About FreeCAD
Install on Windows
Available translations of this page: Template:Cn Template:Jp Template:Se