Added a "User parameter:BaseApp/Preferences/PythonConsole/ProfilerInterval" int property which sets how often (in milliseconds) the Python profiler runs while Python code is running. Setting this value to zero will totally disable it. Also added a preference in the Python console screen which allows the user to set the value of this property to between 0 (disabled) and 5000 (once every 5 seconds). (+1 squashed commits) Squashed commits: [cca88ac633] Made the Python profiler only run when the console is running code This has two purposes. First, it prevents a performance impact from running the profiler whenever Python code is running. Second, it prevents crashes caused by Qt's process events function being called too frequently. When the Python code is running in the console, it monopolizes the main thread and prevents events from being processed. Therefore, causing events to be processed in the callback should not force events to be processed too frequently, because the normal loop is being prevented by the Python code. (+1 squashed commits) Squashed commits: [45f86917e6] Made long-running Python code not freeze the GUI without multithreading Removed the background thread running Python code and replaced it with a custom profiler which the Python interpreter runs frequently (at every Python opcode I believe) on the main thread whenever Python code is running. The profiler will make Qt process any new events every 200 ms, preventing "App not responding" messages and making sure any Ctrl+C keypresses will be processed. This prevents the previous issue where running anything GUI-related from Python would crash the program (because Qt isn't thread-safe). (+1 squashed commits) Squashed commits: [0ef7d810b3] Made the process of getting thread IDs cross-platform compatible Instead of using <threads.h>, now the standard <thread> header from C++ 11 is used to find the thread ID, since <threads.h> is apparently not available on Windows. (+1 squashed commits) Squashed commits: [74c7b867f2] # This is a combination of 2 commits. Python from the console now runs in the background In a nutshell, all Python code which is input from the interactive console now runs in a seperate QThread which runs in the background, instead of on the UI thread. This means that long operates operations will no longer cause the app to display an "App not responding" message, because the UI thread is now free to keep running unencumbered. However, it is still not possible to run multiple Python statements at the same time. If the user tries to run some Python while a previous statement is still being processed, instead it will display an error message in the console stating that the previous command is still being processed. I also added a seperate QTimer which runs once every 100ms to flush any output from the Python code back to the console. I can't flush the output to the console from the background thread because the relevant Qt5 code is not thread-safe (it causes random segfaults). So I added this timer as a work-around, since it runs in the main UI thread. Implemented Ctrl+C keyboard interrupts in the console This is implemented by detecting a Ctrl+C key event in the Python console in the main Qt UI thread, and sending a keyboard interrupt to the background thread that runs the Python code.
Your own 3D parametric modeler
Website • Documentation • Forum • Bug tracker • Git repository • Blog
Overview
-
Freedom to build what you want FreeCAD is an open-source parametric 3D modeler made primarily to design real-life objects of any size. Parametric modeling allows you to easily modify your design by going back into your model history to change its parameters.
-
Create 3D from 2D and back FreeCAD lets you to sketch geometry constrained 2D shapes and use them as a base to build other objects. It contains many components to adjust dimensions or extract design details from 3D models to create high quality production-ready drawings.
-
Designed for your needs FreeCAD is designed to fit a wide range of uses including product design, mechanical engineering and architecture, whether you are a hobbyist, programmer, experienced CAD user, student or teacher.
-
Cross platform FreeCAD runs on Windows, macOS and Linux operating systems.
-
Underlying technology
- OpenCASCADE A powerful geometry kernel, the most important component of FreeCAD
- Coin3D library Open Inventor-compliant 3D scene representation model
- Python FreeCAD offers a broad Python API
- Qt Graphical user interface built with Qt
Installing
Precompiled packages for stable releases are available for Windows, macOS and Linux on the Releases page.
On most Linux distributions, FreeCAD is also directly installable from the software center application.
For development releases check the weekly-builds page.
Other options are described at the wiki Download page.
Compiling
Compiling FreeCAD requires installation of several libraries and their development files such as OCCT (Open Cascade), Coin and Qt, listed in the pages below. Once this is done, FreeCAD can be compiled with CMake. On Windows, these libraries are bundled and offered by the FreeCAD team in a convenient package. On Linux, they are usually found in your distribution's repositories, and on macOS and other platforms, you will usually have to compile them yourself.
The pages below contain up-to-date build instructions:
Reporting Issues
To report an issue please:
- First post to forum to verify the issue;
- Link forum thread to bug tracker ticket and vice-a-versa;
- Use the most updated stable or development versions of FreeCAD;
- Post version info from eg.
Help > About FreeCAD > Copy to clipboard; - Post a Step-By-Step explanation on how to recreate the issue;
- Upload an example file to demonstrate problem.
For more detail see:
The FPA offers developers the opportunity to apply for a grant to work on projects of their choosing. Check jobs and funding to know more.
Usage & Getting help
The FreeCAD wiki contains documentation on general FreeCAD usage, Python scripting, and development. These pages might help you get started:
The FreeCAD forum is also a great place to find help and solve specific problems you might encounter when learning to use FreeCAD.
This project receives generous infrastructure support from
and KiCad Services Corp.