Power users hub/hr: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 25: Line 25:


===General===
===General===

* [[Introduction_to_Python|Introduction to Python]] - See also other Python tutorials at the bottom of this page
* [[Introduction_to_Python|Introduction to Python]] - See also other Python tutorials at the bottom of this page
* [[Python_scripting_tutorial|FreeCAD scripting tutorial]] - A general look at python scripting in FreeCAD
* [[Python_scripting_tutorial|FreeCAD scripting tutorial]] - A general look at python scripting in FreeCAD
Line 40: Line 41:


====Working with Meshes====
====Working with Meshes====

* [[Mesh Scripting|Mesh Scripting]]: How to interact with the [[Mesh Module|Mesh Module]]
* [[Mesh Scripting|Mesh Scripting]]: How to interact with the [[Mesh_Workbench|Mesh Workbench]]


====Working with Parts====
====Working with Parts====

* [[Part Module|The Part Module]]: How [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE Technology] tools and structure is used in FreeCAD
* [[Part_Workbench|The Part Workbench]]: How [http://en.wikipedia.org/wiki/Open_CASCADE Open CASCADE Technology] tools and structure is used in FreeCAD
* [[Topological data scripting|Topological data scripting]]: How to interact with the Part Module
* [[Topological data scripting|Topological data scripting]]: How to interact with the Part Module
* [[PythonOCC|PythonOCC]]: How to unleash the whole Open CASCADE power
* [[PythonOCC|PythonOCC]]: How to unleash the whole Open CASCADE power
Line 49: Line 52:


====Accessing the Coin scenegraph====
====Accessing the Coin scenegraph====

* [[Scenegraph|The Coin/Inventor scenegraph]]: How the FreeCAD scene representation works
* [[Scenegraph|The Coin/Inventor scenegraph]]: How the FreeCAD scene representation works
* [[Pivy|Pivy]]: How to access and modify the scenegraph
* [[Pivy|Pivy]]: How to access and modify the scenegraph


===Controlling the Qt interface===
===Controlling the Qt interface===

* [[PySide|PySide]]: How to access the interface, and modify its contents
* [[PySide|PySide]]: How to access the interface, and modify its contents
* [[Embedding FreeCADGui|Using the FreeCAD GUI]] in another Qt application with PyQt
* [[Embedding FreeCADGui|Using the FreeCAD GUI]] in another Qt application with PyQt
Line 64: Line 69:


===Examples===
===Examples===

* [[Code snippets|Code snippets]] : A collection of pieces of FreeCAD Python code, to serve as ingredients in your scripts...
* [[Code snippets|Code snippets]] : A collection of pieces of FreeCAD Python code, to serve as ingredients in your scripts...
* [[Line drawing function|Line drawing function]]: How to build a simple tool to draw lines
* [[Line drawing function|Line drawing function]]: How to build a simple tool to draw lines
* [[Dialog creation|Dialog creation]]: How to construct dialogs with Qt designer, and use them in FreeCAD
* [[Dialog creation|Dialog creation]]: How to construct dialogs with Qt designer, and use them in FreeCAD
* [[Embedding FreeCAD|Embedding FreeCAD]]: How to import FreeCAD as a Python module in other applications
* [[Embedding FreeCAD|Embedding FreeCAD]]: How to import FreeCAD as a Python module in other applications
* The [[Draft Module|Draft Module]] adds basic 2d drawing functions to freecad. It is written entirely in Python, so it can be a good example if you want to write your own modules.
* The [[Draft_Workbench|Draft Workbench]] adds basic 2d drawing functions to freecad. It is written entirely in Python, so it can be a good example if you want to write your own modules.
* [[FreeCAD vector math library|FreeCAD vector math library]] : A couple of handy functions to manipulate FreeCAD vectors. This library is also included in the Draft module.
* [[FreeCAD vector math library|FreeCAD vector math library]] : A couple of handy functions to manipulate FreeCAD vectors. This library is also included in the Draft module.


Line 90: Line 96:


'''Python'''
'''Python'''
* [https://docs.python.org/2.7/tutorial/index.html Official python tutorial] - A very complete tutorial for discovering python
* [https://docs.python.org/3/tutorial/index.html Official python tutorial] - A very complete tutorial for discovering python
* [http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python Non-programmer tutorial for python] - an excellent wikibook
* [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non-programmer tutorial for python] - an excellent wikibook
* [http://npt.cc.rsu.ru/user/wanderer/ODP/Python_for_Newbies.htm Python for newbies] - one big tutorial covering all the basics
* [http://npt.cc.rsu.ru/user/wanderer/ODP/Python_for_Newbies.htm Python for newbies] - one big tutorial covering all the basics


Line 116: Line 122:


* [[Scientific_literature|Scientific literature]]: articles that reference or use the FreeCAD system in different ways.
* [[Scientific_literature|Scientific literature]]: articles that reference or use the FreeCAD system in different ways.



{{Powerdocnavi{{#translation:}}}}
{{Powerdocnavi{{#translation:}}}}

Revision as of 01:27, 22 August 2021



This is the place to come if you are an experienced user and want to learn more about customizing and extending FreeCAD.

FreeCAD is extensible by Python code that is run directly in the Python console, or that is loaded from modules at startup. This means that you can modify FreeCAD without needing to recompile the program. For example, you can:

  • Create and modify geometry: you can create a new object type, either from scratch or by adapting an existing type.
  • Create custom tools and commands: add your own set of tools that run your code.
  • Modify the interface: create toolbars to put your tools, create special windows, panels, or interfaces for interacting with your tools.
  • Modify the scenegraph representation: FreeCAD has separate processes for building up the geometry and displaying that geometry on screen. You have full access to the way the scene contents are displayed on screen, therefore you can modify that representation, interact with it, or add custom behaviour to it. You can also add custom screen widgets, like information, draggers, anchors or temporary entities.

If you'd like to contribute content to these pages, request a wiki account with editor permissions in the forum, and read the WikiPages for the general guidelines that you should follow. For other ways to contribute with the project, see the Help FreeCAD page.

Customizing FreeCAD

Scripting in FreeCAD

General

Modules

The functionality of FreeCAD is separated in Modules which deal with special data types and applications. FreeCAD has built-in modules and Extension Modules (plug-ins). Once plugin modules are installed, they become availible to you as easily as the built-in modules. The modules described below are the default modules, includeed in every FreeCAD installation.

  • The Builtin modules are the principal FreeCAD modules. They contain tools for manipulating general FreeCAD configurations, documents and their contents.
  • Workbench creation shows you how to create your own workbench

Working with Meshes

Working with Parts

Accessing the Coin scenegraph

Controlling the Qt interface

Working with parametric objects

Examples

  • Code snippets : A collection of pieces of FreeCAD Python code, to serve as ingredients in your scripts...
  • Line drawing function: How to build a simple tool to draw lines
  • Dialog creation: How to construct dialogs with Qt designer, and use them in FreeCAD
  • Embedding FreeCAD: How to import FreeCAD as a Python module in other applications
  • The Draft Workbench adds basic 2d drawing functions to freecad. It is written entirely in Python, so it can be a good example if you want to write your own modules.
  • FreeCAD vector math library : A couple of handy functions to manipulate FreeCAD vectors. This library is also included in the Draft module.

API Functions

The complete API documentation of FreeCAD is located at http://www.freecadweb.org/api/ . It contains both C++ and Python APIs, and is not totally well formatted yet, which can be confusing when looking for python-only code. An easier to browse version can be found here. Note that it can be incomplete, since it is updated manually. For more accurate information, browse the modules directly from FreeCAD's Python console.

Related: Exposing C++ to Python

Advanced modification

Python tutorials

These are good generic tutorials, not specific to FreeCAD, that might interest you if you are totally new to python.

Python

PySide - How to create and manage FreeCAD's Qt UI interface from python

The following two references are PyQt specific (not PySide) but may offer some information of use:

Pivy - How to interact with FreeCAD's 3D scenes

Community projects

On the Community portal, you can find other FreeCAD-based projects run by the FreeCAD users community. If you are starting a new FreeCAD project, be sure to list it there! We also have a page with things you can do if you would like to Help FreeCAD.