(January 2020) FreeCAD was originally designed to work with Python 2. Since Python 2 reached end of life in 2020, future development of FreeCAD will be done exclusively with Python 3, and backwards compatibility will not be supported.
The Python console is a panel that runs an instance of the Python interpreter which can be used to control FreeCAD processes, and create and modify objects and their properties.
The Python console in FreeCAD has basic syntax highlighting, able to differentiate with various styles and colors, comments, strings, numeric values, built in functions, printed text output, and delimiters like parentheses and commas. These properties of the console can be configured in the Preferences editor.
The Python console showing messages when FreeCAD has just started.
For absolute beginners, see: Introduction to Python, and Python scripting tutorial.
See also: FreeCAD scripting basics, and Scripted objects.
The Python console can perform basic code completion when a dot is written after an object; it will show public methods and attributes (variables) of the current object (class), for example,
The console is also able to show the documentation string of a particular function when the opening parenthesis is written, for example,
Example Python code that produces objects in the 3D view.
The FreeCAD initialization scripts automatically load some modules, and define some aliases. Therefore, in the Python console these are available
App = FreeCAD
Gui = FreeCADGui
Therefore these are equal
Note: these pre-loaded modules and aliases are only available from the Python console embedded inside the FreeCAD program. If you use FreeCAD as a library in an external program, you must remember to load the
FreeCADGui modules and define the necessary aliases if you wish.
Right click on the Python console shows some commands:
- Copy: stores the selected text in the clipboard for later pasting; it is disabled if nothing is selected.
- Copy command: stores the selected command in the clipboard for later pasting; it is disabled if nothing is selected.
- Copy history: copy the entire history of Python commands entered in this session.
- Save history as: save the entire history of Python commands entered in this session to a text file.
- Paste: paste previously copied text in the clipboard to the Python console.
- Select all: selects all text in the Python console.
- Clear console: erases all commands entered into the Python console. This is useful if the Python console is full of messages and previously entered commands that may be distracting when testing a new function. This is merely aesthetic, as this command doesn't delete existing variables nor clears the imported modules in the session.
- Insert file name: opens a dialog to search for a file in the system, then it inserts the full path of the file. This is useful to test functions that process an input file, without having to write the entire name in the console, which is error prone. This command does not run the file, and does not import it as a Python module, it just returns the full path of that file.
- Word wrap: wrap very long lines that exceed the horizontal dimension of the Python console.
- Preferences Editor, Interface Customization
- Main window: Standard menu, Main view area, 3D view, Combo view (Tree view, Task panel, Property editor), Selection view, Report view, Python console, Status bar, DAG view, Workbench Selector
- Auxiliary windows: Scene inspector, Dependency graph
- File: New, Open, Close, Close all, Save, Save as, Save a copy, Save all, Revert, Import, Export, Merge project, Project information, Print, Print preview, Export PDF, Recent files, Exit
- Edit: Undo, Redo, Cut, Copy, Paste, Duplicate selection, Refresh, Box selection, Box element selection, Select all, Delete, Placement, Alignment, Toggle Edit mode, Preferences
- View: Create new view, Orthographic view, Perspective view, Fullscreen, Standard views (Fit all, Fit selection, Isometric, Dimetric, Trimetric, Front, Top, Right, Rear, Bottom, Left, Rotate left, Rotate right), Freeze display (Save views, Load views, Freeze view, Clear views), Draw style (As is, Flat lines, Shaded, Wireframe, Points, Hidden line, No shading), Bounding box, Stereo (red/cyan, quad buffer, interleaved rows, interleaved columns, Stereo off, Issue camera position), Zoom (Zoom In, Zoom Out, Box zoom), Document window (Docked, Undocked, Full screen), Toggle axis cross, Clipping plane, Texture mapping, Visibility (Toggle visibility, Show selection, Hide selection, Select visible objects, Toggle all objects, Show all objects, Hide all objects, Toggle selectability, Toggle measurement, Clear measurement), Toggle navigation/edit mode, Appearance, Random color, Workbench, Toolbars (File, Workbench, Macro, View, Structure, Navigation), Panels (Report view, Tree view, Property view, Selection view, Combo view, Python console, DAG view), Tree view actions (Sync view, Sync selection, Sync placement, Pre-selection, Record selection, Single document, Multi document, Collapse/expand, Initiate dragging, Go to selection), Status bar
- Tools: Edit parameters, Save picture, Scene inspector, Dependency graph, Project utility, Measure distance, Text document, View turntable, Units calculator, Customize, Addon manager
- Macro: Macro recording, Stop macro recording, Macros, Execute macro, Debug macro, Stop debugging, Step over, Step into, Toggle breakpoint
- Windows: Next, Previous, Tile, Cascade, Arrange icons, Windows
- Help: Help, FreeCAD Website, Users documentation, Python scripting documentation, Automatic Python modules documentation, FreeCAD forum, FreeCAD FAQ, About FreeCAD, What's This
- Installation: Linux/Unix, Windows, Mac, Docker, AppImage; Getting started
- Basics: About FreeCAD, Workbenches, Preferences, Document structure, Interface Customization, Properties, Mouse Model; Tutorials, Video tutorials
- Workbenches: Std Base; Arch, Draft, FEM, Image, Inspection, Mesh, OpenSCAD, Part, PartDesign, Path, Plot, Points, Raytracing, Reverse Engineering, Robot, Ship, Sketcher, Spreadsheet, Start, Surface workbench, TechDraw, Test Framework, Web
- Scripting: Introduction to Python, FreeCAD scripting tutorial, FreeCAD Scripting Basics, How to install macros, Gui Command, Units Modules: Builtin modules, Workbench creation, Installing more workbenches Meshes: Mesh Scripting, Mesh Module Parts: The Part Module, Topological data scripting, PythonOCC, Mesh to Part Coin scenegraph: The Coin/Inventor scenegraph, Pivy Qt interface: PySide, Using the FreeCAD GUI, Dialog creation Parametric objects: Scripted objects Other: Code snippets, Line drawing function, Embedding FreeCAD, FreeCAD vector math library, Power users hub, Python, Macros, FreeCAD Scripting Basics, Topological data scripting