This is the official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler

Overview

Logo

Your own 3D parametric modeler

WebsiteDocumentationForumBug trackerGit repository

Release Master Crowdin Gitter Language grade: Python Language grade: C/C++ Liberapay

screenshot

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 (installable) packages are available for Windows and macOS on the Releases page.

On most Linux distributions, FreeCAD is directly installable from the software center application.

Other options are described at the wiki Download page.

Build Status

Master 0.19 Translation
Master 0.19 Crowdin

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:

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.

Comments
  • Sketcher: Element widget rework.

    Sketcher: Element widget rework.

    See discuss here : https://forum.freecadweb.org/viewtopic.php?f=8&t=72239

    Thank you for creating a pull request to contribute to FreeCAD! To ease integration, we ask you to conform to the following items. Pull requests which don't satisfy all the items below might be rejected. If you are in doubt with any of the items below, don't hesitate to ask for help in the FreeCAD forum!

    • [ ] Your pull request is confined strictly to a single module. That is, all the files changed by your pull request are either in App, Base, Gui or one of the Mod subfolders. If you need to make changes in several locations, make several pull requests and wait for the first one to be merged before submitting the next ones
    • [ ] In case your pull request does more than just fixing small bugs, make sure you discussed your ideas with other developers on the FreeCAD forum
    • [ ] Your branch is rebased on latest master git pull --rebase upstream master
    • [ ] All FreeCAD unit tests are confirmed to pass by running ./bin/FreeCAD --run-test 0
    • [ ] All commit messages are well-written ex: Fixes typo in Draft Move command text
    • [ ] Your pull request is well written and has a good description, and its title starts with the module name, ex: Draft: Fixed typos
    • [ ] Commit messages include issue #<id> or fixes #<id> where <id> is the issue ID number from our Issues database in case a particular commit solves or is related to an existing issue. Ex: Draft: fix typos - fixes #4805

    And please remember to update the Wiki with the features added or changed once this PR is merged.
    Note: If you don't have wiki access, then please mention your contribution on the 1.0 Changelog Forum Thread.


    WB Sketcher 
    opened by PaddleStroke 122
  • Smesh upgrade and occ6 compatibility

    Smesh upgrade and occ6 compatibility

    This branch updates SMESH to version 7 and makes it compatibel with OCC version 6 builds. It adopts FreeCAD to the new SMESH behavior. It is the rebased version after latest FEM merges.

    opened by ickby 89
  • [0.20] PartDesign: Add true threads to the Hole feature

    [0.20] PartDesign: Add true threads to the Hole feature

    This PR adds possibility to make true threaded holes with the Hole feature (possible to e.g 3D print).

    Forum discussion: https://forum.freecadweb.org/viewtopic.php?f=34&t=54240

    It should work for all supported thread types both_direction_demo demo

    Todo

    • [x] Give the user possibility to tweak the clearance of the thread (important for 3D printing)
    • [x] Turn off auto-recompute when Model Thread is active. It is too slow if there are large hole patterns.
    • [x] Rename "Model Actual Thread" to simply "Model Thread" in the Ui
    • [x] Default threading depth to 3.5 x P from the hole bottom.
    • [x] Add UI support for specifying thread depth
    • [x] Add backend support for specifying thread depth
    • [x] Remove column 2 from hreadClass_ISOmetric_data
    • [x] Fix donovaly bug A
    • [x] Fix donovaly bug B
    • [x] Fix donovaly bug C
    • [x] Wait for PR #4134
    opened by davidosterberg 77
  • Sketcher: Constraint widget rework (issue #7518)

    Sketcher: Constraint widget rework (issue #7518)

    Problem : constraint widget is very large and ui is hard to understand.

    Discussions on the forum : https://forum.freecadweb.org/viewtopic.php?f=34&t=71595&start=20

    Offered solution : rework the ui to make it cleaner and easier to use.

    (Edit: No longer up to date. Please build to see end result.) PR content: video presenting result : https://forum.freecadweb.org/viewtopic.php?f=8&t=72238

    Thank you for creating a pull request to contribute to FreeCAD! To ease integration, we ask you to conform to the following items. Pull requests which don't satisfy all the items below might be rejected. If you are in doubt with any of the items below, don't hesitate to ask for help in the FreeCAD forum!

    • [ ] Your pull request is confined strictly to a single module. That is, all the files changed by your pull request are either in App, Base, Gui or one of the Mod subfolders. If you need to make changes in several locations, make several pull requests and wait for the first one to be merged before submitting the next ones
    • [ ] In case your pull request does more than just fixing small bugs, make sure you discussed your ideas with other developers on the FreeCAD forum
    • [ ] Your branch is rebased on latest master git pull --rebase upstream master
    • [ ] All FreeCAD unit tests are confirmed to pass by running ./bin/FreeCAD --run-test 0
    • [ ] All commit messages are well-written ex: Fixes typo in Draft Move command text
    • [ ] Your pull request is well written and has a good description, and its title starts with the module name, ex: Draft: Fixed typos
    • [ ] Commit messages include issue #<id> or fixes #<id> where <id> is the issue ID number from our Issues database in case a particular commit solves or is related to an existing issue. Ex: Draft: fix typos - fixes #4805

    And please remember to update the Wiki with the features added or changed once this PR is merged.
    Note: If you don't have wiki access, then please mention your contribution on the 1.0 Changelog Forum Thread.


    WB Sketcher 
    opened by PaddleStroke 71
  • [Sketcher] Constrain B-spline knots like any other point

    [Sketcher] Constrain B-spline knots like any other point

    These changes allow for B-spline knots to be treated like any general point in Sketcher. Thus, they can be dragged around and constrained.

    This PR is part of the B-spline constraint project.

    Testers Needed WB Sketcher 
    opened by AjinkyaDahale 64
  • [Sketcher] Constraint tangent at B-spline knot

    [Sketcher] Constraint tangent at B-spline knot

    With these changes, a line segment can be made tangent to a B-spline at a given knot. It also contains commits from #7484 since we need to constraint knot on to the line segment.

    This PR is part of the B-spline constraint project.

    See known issues here.

    WB Sketcher 
    opened by AjinkyaDahale 55
  • Sketcher: Split more curves

    Sketcher: Split more curves

    Supercedes PR #6494. I expect to make some major changes to the method for a bit more code-reuse, ~so it's best to keep that PR as is~.

    UPDATE [2 July 2022]: After the recent removal of DrawSketchHandlers from CommandCreateGeo.cpp into their own classes, I chose to drop #6494 and only rebase this one.

    Solves #5835.

    Known issues:

    1. Splitting parabolas makes constraints malformed. See issue #6969.
    WB Part WB Sketcher 
    opened by AjinkyaDahale 55
  • [macOS] Adding QuickLook feature

    [macOS] Adding QuickLook feature

    • [x] Your pull request is confined strictly to a single module. That is, all the files changed by your pull request are either in App, Base, Gui or one of the Mod subfolders. If you need to make changes in several locations, make several pull requests and wait for the first one to be merged before submitting the next ones

    The code is located in src/MacAppBundle/QuickLook so it does not interfere with other platforms or macOS command line builds

    • [x] In case your pull request does more than just fixing small bugs, make sure you discussed your ideas with other developers on the FreeCAD forum

    This PR is in relation to Forum: New feature: Quicklook for macOS

    • [x] Your branch is rebased on latest master git pull --rebase upstream master
    • [x] All FreeCAD unit tests are confirmed to pass by running ./bin/FreeCAD --run-test 0

    This commit has no impact on the actual app. Also I will need hep at some point to build a full app on macOS Monterey.

    • [x] All commit messages are well-written ex: Fixes typo in Draft Move command text
    • [x] Your pull request is well written and has a good description, and its title starts with the module name, ex: Draft: Fixed typos

    And please remember to update the Wiki with the features added or changed once this PR is merged.
    Note: If you don't have wiki access, then please mention your contribution on the 1.0 Changelog Forum Thread.

    Will do.

    Feature OS: macOS 
    opened by MatthiasWM 48
  • Path: Block operation recompute on task panel cancel [Bug]

    Path: Block operation recompute on task panel cancel [Bug]

    This fix applies to standard operations and most dressups. I think that the fix applied here must be applied to all other ViewProvider enabled actions if the cancel button is to block a recompute for those actions. The implementation is fairly simple. This implementation is triggers the cancel only on the GUI side. There is not really an intended use for cancelling recomputes in scripting or command-line usage of FreeCAD.

    This fix effectively flags the execute() method of the Proxy to return prematurely before updating any obj properties, leaving the source obj unchanged from its state prior to the aborted edit transaction started and ended in the task panel.

    This is a long-standing bug or nuisance, especially with the often long-lasting 3D Surface computations.

    Forum mention at:

    Again, this PR does not fix the issue for all actions in Path workbench, just the standard operations based on PathOp & PathOpGui modules. Dressups and other actions will have to be fixed individually.

    Thanks to @J-Dunn, @mlampert, and many others for mentioning this bug on numerous occasions. I think this PR will be the beginning of the end for recomputes on cancel in task panels!

    Steps to reproduce bug:

    • Create a big part, or small part if you have 3D Surface active.
    • Create an operation (3D Surface or Adaptive work great for this) that takes a while (10 - 30 seconds) to compute, and save it.
    • Double click on the operation in the object tree to edit using the task panel.
    • Make changes if you like and apply them, but that might take some time (haha!). ... Or do not for this example.
    • Click the Cancel button.
    • The operation will recompute upon exiting the task panel.

    Thank you for creating a pull request to contribute to FreeCAD! To ease integration, we ask you to conform to the following items. Pull requests which don't satisfy all the items below might be rejected. If you are in doubt with any of the items below, don't hesitate to ask for help in the FreeCAD forum!

    • [x] Your pull request is confined strictly to a single module. That is, all the files changed by your pull request are either in App, Base, Gui or one of the Mod subfolders. If you need to make changes in several locations, make several pull requests and wait for the first one to be merged before submitting the next ones
    • [x] In case your pull request does more than just fixing small bugs, make sure you discussed your ideas with other developers on the FreeCAD forum
    • [x] Your branch is rebased on latest master git pull --rebase upstream master
    • [x] All FreeCAD unit tests are confirmed to pass by running ./bin/FreeCAD --run-test 0
    • [x] All commit messages are well-written ex: Fixes typo in Draft Move command text
    • [x] Your pull request is well written and has a good description, and its title starts with the module name, ex: Draft: Fixed typos
    • [ ] Commit messages include issue #<id> or fixes #<id> where <id> is the issue ID number from our Issues database in case a particular commit solves or is related to an existing issue. Ex: Draft: fix typos - fixes #4805

    And please remember to update the Wiki with the features added or changed once this PR is merged.
    Note: If you don't have wiki access, then please mention your contribution on the 0.20 Changelog Forum Thread.


    WB Path 
    opened by Russ4262 46
  • Next31TechDrawTools

    Next31TechDrawTools

    Thank you for creating a pull request to contribute to FreeCAD! To ease integration, we ask you to conform to the following items. Pull requests which don't satisfy all the items below might be rejected. If you are in doubt with any of the items below, don't hesitate to ask for help in the FreeCAD forum!

    • [ ] Your pull request is confined strictly to a single module. That is, all the files changed by your pull request are either in App, Base, Gui or one of the Mod subfolders. If you need to make changes in several locations, make several pull requests and wait for the first one to be merged before submitting the next ones
    • [ ] In case your pull request does more than just fixing small bugs, make sure you discussed your ideas with other developers on the FreeCAD forum
    • [ ] Your branch is rebased on latest master git pull --rebase upstream master
    • [ ] All FreeCAD unit tests are confirmed to pass by running ./bin/FreeCAD --run-test 0
    • [ ] All commit messages are well-written ex: Fixes typo in Draft Move command text
    • [ ] Your pull request is well written and has a good description, and its title starts with the module name, ex: Draft: Fixed typos
    • [ ] Commit messages include issue #<id> or fixes #<id> where <id> is the FreeCAD bug tracker issue number in case a particular commit solves or is related to an existing issue on the tracker. Ex: Draft: fix typos - fixes #0004805

    And please remember to update the Wiki with the features added or changed once this PR is merged.
    Note: If you don't have wiki access, then please mention your contribution on the 0.20 Changelog Forum Thread.


    WB TechDraw 
    opened by edi271 44
  • [PD] add feature to create tapered Pad / Pocket

    [PD] add feature to create tapered Pad / Pocket

    This PR adds support for tapered extrudes.

    This was from time to time requested in the forum since other CAD programs and also Pad's Extrusion provides this feature.

    Forum thread to discuss it: https://forum.freecadweb.org/viewtopic.php?f=17&t=65124

    Here is it in action: FreeCAD_phD8DANHBv

    The PR treats Pad and Pocket the same way, so Pocket has the same feature: FreeCAD_fzqdB1cbDr

    WB PartDesign 
    opened by donovaly 43
  • [Sketcher] Delete check for OCC >= 6.9.0

    [Sketcher] Delete check for OCC >= 6.9.0

    The oldest version we plan to support is 7.0.0 (which comes with Ubuntu 20.04).

    See https://forum.freecadweb.org/viewtopic.php?f=10&p=650487#p650487.

    WB Sketcher 
    opened by AjinkyaDahale 0
  • FreeCad 0.20 locking up generating circular parts

    FreeCad 0.20 locking up generating circular parts

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Forums discussion

    No response

    Version

    0.20 (Release)

    Full version info

    [code]
    OS: Windows 10 Version 1909
    Word size of FreeCAD: 64-bit
    Version: 0.20.1.29410 (Git)
    Build type: Release
    Branch: releases/FreeCAD-0-20
    Hash: f5d13554ecc7a456fb6e970568ae5c74ba727563
    Python 3.8.10, Qt 5.15.2, Coin 4.0.1, Vtk 8.2.0, OCC 7.6.3
    Locale: English/United States (en_US)
    Installed mods: 
      * 3D_Printing_Tools
      * FCGears
    [/code]
    

    Subproject(s) affected?

    Part

    Issue description

    I'm not sure exactly if the issue lies with FreeCad or something in Windows, actually; but I figure I would start here.

    Issue:: Any part generated in Part Workbench that includes any type of circle (ie sphere, toroid, cone, cylinder) will lock FreeCad up for about 5-10 minutes. During the lock, memory usage crawls up at about 5MB/s, until the part is finally placed into the workspace. Moving the view around is very sluggish with any of these objects on the screen, but seems fine with rectangles and the like. The issue arose last weekend on this particular machine, on 0.18. I installed 0.20 hoping that the issue was something that had been fixed with the update, with no joy. The problem does NOT affect the desktop. The only item that has changed since the last time FreeCad worked without issue was a RAM stick. The machine with the issue is a laptop (specs below) that shipped with 2x8GB sticks. One of the slots recently failed, so I moved it to 1x16GB. I'm not sure if that might cause this or not. I swear FreeCad worked just fine on this machine just a few months ago, but I have no evidence to verify that. The laptop has had it a bit rough, as it used to be my automotive tuning laptop, and recently got upgraded to print server. Any more information required will have to be requested in baby talk, as I'm most decidedly NOT a software person.

    Specs: Laptop:: ASUS TUF706IU CPU: Ryzen 7 4800H with Radeon Graphics, 2900 Mhz, 8 Core(s), 16 Logical Processor(s) RAM: 1x16GB (Corsair Vengence I believe) Video: Nvidia 1660Ti Mobile Windows: Pro 10.0.18363 Build 18363

    Desktop:: Custom Built CPU: FX-8350 4.8GHz "8"core RAM: 32GB Ripjaws Video: ASUS Strix 1060 6GB Windows: Same as above

    Anything else?

    No response

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    opened by imtheman0313 0
  • [Issue] Segmentation fault when right clicking Sketcher constraint list

    [Issue] Segmentation fault when right clicking Sketcher constraint list

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Forums discussion

    No response

    Version

    0.20 (Release)

    Full version info

    [code]
    OS: Arch Linux (X-Cinnamon/cinnamon)
    Word size of FreeCAD: 64-bit
    Version: 0.20.2.29603 (Git)
    Build type: Release
    Branch: makepkg
    Hash: 930dd9a76203a3260b1e6256c70c1c3cad8c5cb8
    Python 3.10.8, Qt 5.15.7, Coin 4.0.1, Vtk 9.1.0, OCC 7.6.3
    Locale: English/United States (en_US)
    [/code]
    

    Subproject(s) affected?

    Sketcher

    Issue description

    Steps to reproduce:

    1. Create a new empty project
    2. Open the Sketcher workbench
    3. Create a new sketch
    4. Click "Create Line"
    5. Right click on the empty constraints list
    6. FreeCAD has now segfaulted

    Sorry I do not have debug symbols, but hopefully this is easy to reproduce. It happens every time for me.

    Backtrace:

    Program received signal SIGSEGV, Segmentation fault.
    #0  /usr/lib/libc.so.6(+0x38a00) [0x7fc19fa51a00]
    #1  0x7fc1571688ca in SketcherGui::ConstraintView::contextMenuEvent(QContextMenuEvent*) from /usr/lib/freecad/lib/SketcherGui.so+0x8ca
    #2  0x7fc1a0fafab9 in QWidget::event(QEvent*) from /usr/lib/libQt5Widgets.so.5+0xe99
    #3  0x7fc1a105d823 in QFrame::event(QEvent*) from /usr/lib/libQt5Widgets.so.5+0x23
    #4  0x7fc1a028cc02 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x92
    #5  0x7fc1a0f78b0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x8c
    #6  0x7fc1a0f7d342 in QApplication::notify(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x3b2
    #7  0x7fc1a2648cb1 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x91
    #8  0x7fc1a028cf98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x128
    #9  /usr/lib/libQt5Widgets.so.5(+0x1cddf4) [0x7fc1a0fcddf4]
    #10  /usr/lib/libQt5Widgets.so.5(+0x1cf15e) [0x7fc1a0fcf15e]
    #11  0x7fc1a0f78b1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x9c
    #12  0x7fc1a2648cb1 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x91
    #13  0x7fc1a028cf98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x128
    #14  0x7fc1a073f15c in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /usr/lib/libQt5Gui.so.5+0x6ec
    #15  0x7fc1a07289a5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Gui.so.5+0xb5
    #16  /usr/lib/libQt5XcbQpa.so.5(+0x64710) [0x7fc19a9e6710]
    #17  /usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x19b) [0x7fc19e71687b]
    #18  /usr/lib/libglib-2.0.so.0(+0xacc89) [0x7fc19e76dc89]
    #19  /usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x32) [0x7fc19e715132]
    #20  0x7fc1a02d7c4c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Core.so.5+0x6c
    #21  0x7fc1a028573c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Core.so.5+0x12c
    #22  0x7fc1a0290269 in QCoreApplication::exec() from /usr/lib/libQt5Core.so.5+0x99
    #23  0x7fc1a25c34f4 in Gui::Application::runApplication() from /usr/lib/freecad/lib/libFreeCADGui.so+0x2064
    #24  freecad(+0x3990) [0x556a2bb64990]
    #25  /usr/lib/libc.so.6(+0x23290) [0x7fc19fa3c290]
    #26  /usr/lib/libc.so.6(__libc_start_main+0x8a) [0x7fc19fa3c34a]
    #27  freecad(+0x4a55) [0x556a2bb65a55]
    

    Anything else?

    No response

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    WB Sketcher Crash Help Wanted 
    opened by ion201 0
  • [Issue] FreeCAD hangs generating Vcarve path for a ShapeString

    [Issue] FreeCAD hangs generating Vcarve path for a ShapeString

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Forums discussion

    No response

    Version

    0.21 (Development)

    Full version info

    OS: Fedora Linux 37 (Workstation Edition) (X-Cinnamon/cinnamon)
    Word size of FreeCAD: 64-bit
    Version: 0.21.0.31445 (Git)
    Build type: Release
    Branch: master
    Hash: 8b0df1dc936b544091f6a2d68df1c1a14ae3de5b
    Python 3.11.0, Qt 5.15.7, Coin 4.0.0, Vtk 9.1.0, OCC 7.5.0
    Locale: English/United States (en_US)
    

    Subproject(s) affected?

    Path

    Issue description

    Path::orthognalProjection() generates nan values for the "proj" variable when the segment length is zero, causing FreeCAD to hang. To reproduce this: Start FreeCAD; open "carvetest.FCStd" Activate Path workbench In the Model tree select Job...Model...Model-31/64 Select the Engraving...Vcarve tool Click OK FreeCAD hangs (with a spinning cursor on my system)

    carvetest.zip

    Attaching to the hung process:

    $ gdb -p 1789953
    <snip>
    0x00007f788436a8b3 in gp_XYZ::Reverse (this=<optimized out>, this=<optimized out>) at /usr/src/debug/opencascade-7.5.0-7.fc37.x86_64/src/gp/gp_XYZ.lxx:228
    228       x = - x;
    Missing separate debuginfos, use: dnf debuginfo-install qt5-qtwebengine-freeworld-5.15.10-4.fc37.x86_64
    (gdb) where
    #0  0x00007f788436a8b3 in gp_XYZ::Reverse()
        (this=0x7ffeb1432070, this=<optimized out>)
        at /usr/src/debug/opencascade-7.5.0-7.fc37.x86_64/src/gp/gp_XYZ.lxx:228
    #1  gp_Dir::Reverse() (this=0x7ffeb1432070, this=<optimized out>)
        at /usr/src/debug/opencascade-7.5.0-7.fc37.x86_64/src/gp/gp_Dir.lxx:225
    #2  Geom_Conic::Reverse() (this=0x61de110)
        at /usr/src/debug/opencascade-7.5.0-7.fc37.x86_64/src/Geom/Geom_Conic.cxx:29
    #3  0x00007f7884387e71 in Geom_TrimmedCurve::Reverse() (this=0x61de210)
        at /usr/src/debug/opencascade-7.5.0-7.fc37.x86_64/src/Standard/Standard_Handle.hxx:130
    #4  0x00007f7867d06fed in Part::GeomArcOfParabola::setRange(double, double, bool) ()
        at /data/build/FreeCAD/build/Mod/Part/Part.so
    #5  0x00007f78ecf12ff0 in Path::VoronoiEdgePy::toShape(_object*) ()
        at /data/build/FreeCAD/build/Mod/Path/PathApp.so
    #6  0x00007f78ecf0d884 in Path::VoronoiEdgePy::staticCallback_toShape(_object*, _object*) () at /data/build/FreeCAD/build/Mod/Path/PathApp.so
    #7  0x00007f79193d8228 in cfunction_call
        (func=0x7f78c9184450, args=<optimized out>, kwargs=<optimized out>)
        at /usr/src/debug/python3.11-3.11.0-1.fc37.x86_64/Objects/methodobject.c:553
    #8  0x00007f79193b9b13 in _PyObject_MakeTpCall
        (tstate=0x7f79197200d8 <_PyRuntime+166328>, callable=0x7f78c9184450, args=<optimize--Type <RET> for more, q to quit, c to continue without paging--q
    Quit
    (gdb) frame 5
    #5  0x00007f78ecf12ff0 in Path::VoronoiEdgePy::toShape(_object*) ()
       from /data/build/FreeCAD/build/Mod/Path/PathApp.so
    (gdb) x/i $pc
    => 0x7f78ecf12ff0 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6124>:     lea    -0x5b0(%rbp),%rax
    (gdb) x/20i $pc-60
       0x7f78ecf12fb4 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6064>:     cmp    %bh,%ah
       0x7f78ecf12fb6 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6066>:     (bad)  
       0x7f78ecf12fb7 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6067>:     decl   -0x73(%rax)
       0x7f78ecf12fba <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6070>:     test   %edx,-0x6(%rax)
       0x7f78ecf12fbd <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6073>:     (bad)  
       0x7f78ecf12fbe <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6074>:     decl   -0x77(%rax)
       0x7f78ecf12fc1 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6077>:     (bad)  
       0x7f78ecf12fc2 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6078>:     mov    %rax,%rdi
       0x7f78ecf12fc5 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6081>:
        call   0x7f78ece09940 <_ZN4Part17GeomArcOfParabola9setHandleERKN11opencascade6handleI13Geom_ParabolaEE@plt>
       0x7f78ecf12fca <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6086>:     movsd  -0x40(%rbp),%xmm0
       0x7f78ecf12fcf <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6091>:     mov    -0x38(%rbp),%rdx
       0x7f78ecf12fd3 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6095>:     lea    -0x5b0(%rbp),%rax
       0x7f78ecf12fda <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6102>:     mov    $0x0,%esi
       0x7f78ecf12fdf <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6107>:     movapd %xmm0,%xmm1
       0x7f78ecf12fe3 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6111>:     movq   %rdx,%xmm0
       0x7f78ecf12fe8 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6116>:     mov    %rax,%rdi
       0x7f78ecf12feb <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6119>:     call   0x7f78ece23470 <[email protected]>
    => 0x7f78ecf12ff0 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6124>:     lea    -0x5b0(%rbp),%rax
       0x7f78ecf12ff7 <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6131>:     mov    %rax,%rdi
       0x7f78ecf12ffa <_ZN4Path13VoronoiEdgePy7toShapeEP7_object+6134>:     call   0x7f78ece09e70 <[email protected]>
    (gdb) x/fg $rbp-0x40
    0x7ffeb14327e0: nan(0x8000000000000)
    (gdb) x/fg $rbp-0x38
    0x7ffe50ad27b8: nan(0x8000000000000)
    (gdb) q
    
    Path::VoronoiEdgePy::toShape() is passing nans to Part::GeomArcOfParabola::setRange()
    

    Further investigation revealed the nan comes from orthognalProjection() in Path/App/VoronoiEdgePyImp.cpp when the 2nd argument, the segment, has zero length. Applying the following patch resolves the problem:

    $ git diff
    diff --git a/src/Mod/Path/App/VoronoiEdgePyImp.cpp b/src/Mod/Path/App/VoronoiEdgePyImp.cpp
    index efe68022bd..e5fa98d2c2 100644
    --- a/src/Mod/Path/App/VoronoiEdgePyImp.cpp
    +++ b/src/Mod/Path/App/VoronoiEdgePyImp.cpp
    @@ -67,7 +67,9 @@ namespace {
         // calculate the orthogonal projection of p onto s
         // ((p dot s) / (s dot s)) * s (https://en.wikibooks.org/wiki/Linear_Algebra/Orthogonal_Projection_Onto_a_Line)
         // and it back by original offset to get the projected point
    -    double proj = (p.x() * s.x() + p.y() * s.y()) / (s.x() * s.x() + s.y() * s.y());
    +    double proj = 0;
    +    if (length(segment) != 0)
    +      proj = (p.x() * s.x() + p.y() * s.y()) / (s.x() * s.x() + s.y() * s.y());
         Voronoi::point_type pt;
         {
           pt.x(offset.x() + proj * s.x());
    

    Anything else?

    No response

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Bug WB Path has workaround 
    opened by br4243 2
  • [Issue] AddonManager Gui tests fail with 'Qt has caught an exception thrown from an event handler.'

    [Issue] AddonManager Gui tests fail with 'Qt has caught an exception thrown from an event handler.'

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Forums discussion

    No response

    Version

    0.21 (Development)

    Full version info

    OS: Ubuntu 22.04.1 LTS (KDE/plasma)
    Word size of FreeCAD: 64-bit
    Version: 0.21.0.31390 +92 (Git)
    Build type: Debug
    Branch: MyBranch
    Hash: 02c5bcc0b2bff1a3a6811faa816d3ec3a325c201
    Python 3.10.6, Qt 5.15.3, Coin 4.0.0, Vtk 7.1.1, OCC 7.5.2
    Locale: French/France (fr_FR)
    

    Subproject(s) affected?

    Addon Manager

    Issue description

    AddonManager Gui tests fail with a Qt error message. In some circumstances it can just stuck the unit tests (which is a problem for the CI at least). To reproduce :

    • Start FC
    • Got to Test Framework WB
    • Click "Self-test"
    • Choose "TestAddonManagerGui"
    • Start

    At some point it fails with some Qt has caught an exception thrown from an event handler. Throwing exceptions from an event handler is not supported in Qt. You must not let any exception whatsoever propagate through Qt code. If that is not possible, in Qt 5 you must at least reimplement QCoreApplication::notify() and catch all exceptions there.

    Anything else?

    @chennes I didn't investigated much on this, but I'm not sure it's actually directly linked to test code, but may show an underlying issue in the AddonManager itself.

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Addon Manager 
    opened by 0penBrain 5
  • Adding info to hand over the copyright to the FPA

    Adding info to hand over the copyright to the FPA

    Addition to the contribute guide to explain how to attribute copyright to the FPA

    Thank you for creating a pull request to contribute to FreeCAD! Place an "X" in between the brackets below to "check off" to confirm that you have satisfied the requirement, or ask for help in the FreeCAD forum if there is something you don't understand.

    • [x] Your Pull Request meets the requirements outlined in section 5 of CONTRIBUTING.md for a Valid PR

    Please remember to update the Wiki with the features added or changed once this PR is merged.
    Note: If you don't have wiki access, then please mention your contribution on the 1.0 Changelog Forum Thread.


    opened by yorikvanhavre 4
Releases(0.20.2)
Owner
FreeCAD
The FreeCAD project
FreeCAD
The whole design is modular, parametric (cost and others), field repairable, and super extensible

Easy-Transceiver The whole design is modular, parametric (cost and others), field repairable, and super extensible. It is almost trivial to add suppor

Dhiru Kholia 8 Oct 2, 2022
free template opensource with minimal depends library flutter & dart

Project Name Sosial Media Donate ID: Jika Anda Menyukai karya saya dan ingin memberikan dana untuk saya membeli beberapa snack silahkan donasi seberap

Azka Full Snack Developer:) 34 Dec 23, 2022
RoboMaster2021 Infantry Vision OpenSource Code of Foshan University

佛山科学技术学院醒狮战队2021赛季步兵视觉开源 致谢 首先感谢各高校开源代码为本套代码提供的参考,以及感谢2018、2019、2020赛季算法组师兄们的努力。秉承着开源精神,促进各战队间技术交流提升,我队决定本赛季开源本套代码,希望对其他战队提供一定的参考价值。 说明 本套代码是佛山科学技术学院醒

null 28 Aug 30, 2022
Official Vanguard Anti-Cheat source code.

Vanguard Official Vanguard Anti-Cheat source code. Using the compiled binary For ease, an unprotected compiled version of Vanguard is available. Downl

Riot Vanguard 435 Jan 5, 2023
SMARTmBOT - a new, customizable, scalable, and fully opensource mobile robot platform

The goal of this repository is to introduce a new, customizable, scalable, and fully opensource mobile robot platform, called SMARTmBOT. This repository provides a guide, and all design files and source codes so that you can build your own SMARTmBOT. SMARTmBOT can be useful for studying the basics of robotics, especially mobile robotics. It can also be used to study advanced topics such as swarm robotics.

SMART Lab at Purdue University 39 Jan 2, 2023
A repository to contribute and learn OpenSource

HacktoberFest 2021 ?? An opensource intiative organised by DigitalOcean and Intel SO this is an An Open Source repository to Teach people How to contr

BreadBoard Coding Society 19 Nov 13, 2022
Serial Data Monitor is a multiplatform (Windows, Linux, Mac, ...) tool to interactively receive/edit/monitor data and send commands to an embedded system via the serial bus

See wiki for full documentation Serial Data Monitor Description Serial Data Monitor is a multiplatform (Windows, Linux, Mac, ...) tool to interactivel

monnoliv 4 Oct 29, 2021
A multiplatform C++ library for common and basic system functionalities.

axl.cm A multiplatform C++ library for common and basic system functionalities. Platforms Linux Windows C++ standard minimum: C++98 target: C++11 maxi

Axel 2 Apr 4, 2022
Allwinner V3S Opensource

KS_V3S • Bilibili Video Introduction:https://www.bilibili.com/video/BV17z4y1S7D6 I have designed this PCB, because the sheer power of this SoC, at ver

Kevincoooool 195 Dec 29, 2022
ORBION the OpenSource Space Mouse 3D

Orbion The OpenSource Space Mouse To ensure greater precision and fluidity it is recommended to put a foam ring under the knob (see photo above) and d

FaqTotum 314 Jan 7, 2023
RV-Debugger-BL702 is an opensource project that implement a JTAG+UART debugger with BL702C-A0.

BL702 is highly integrated BLE and Zigbee combo chipset for IoT applications, contains 32-bit RISC-V CPU with FPU, frequency up to 144MHz, with 132KB RAM and 192 KB ROM, 1Kb eFuse, 512KB embedded Flash, USB2.0 FS device interface, and many other features.

Sipeed 100 Jan 1, 2023
sipeed opensource mechanical keyboard make with BL706

sipeed_keyboard sipeed opensource mechanical keyboard make with BL706 矽π 开源双模机械键盘 目录结构 ./ ├── LICENSE ├── README.md ├── firmware // 存放键盘固件 ├── hardwar

Sipeed 58 Dec 23, 2022
PyAerotech: An Opensource Python Library or interfacing directly with the Aerotech A3200 Controlle

PyAerotech: An Opensource Python Library or interfacing directly with the Aerotech A3200 Controller pyAerotech is an additional Opensource Python libr

Dr Luke Parry 3 Aug 22, 2022
This is the second genereation of my fully opensource Spacemouse called SpaceRat

SpaceRat This is the second genereation of my fully opensource Spacemouse called SpaceRat. With the help of this you can navigate in your 3D CAD softw

null 255 Jan 1, 2023
Modern & multiplatform game engine in C++17

RaZ Modern & multiplatform 3D game engine in C++17 Linux Windows macOS WebAssembly Compilation Unit tests No CI yet No CI yet N/A Codacy Coveralls Sum

Romain Milbert 366 Dec 24, 2022
C++ Multiplatform Modular Toolkit Template

C++ Multiplatform Modular Toolkit Template Nativium Philosophy: Write Once And Compile Anywhere About Write a single code in C++ and compile for any p

Nativium 28 Dec 26, 2022
Project is to port original Zmodem for Unix to CP/M and provide binaries and source code for platform specific modification as needed. Based on 1986 C source code by Chuck Forsberg

Zmodem-CP-M This repository is intended to foster a RetroBrewComputers community effort to port the original Zmodem source code for Unix to CP/M so ev

null 11 Aug 31, 2022
Project is to port original Zmodem for Unix to CP/M and provide binaries and source code for platform specific modification as needed. Based on 1986 C source code by Chuck Forsberg

Zmodem4CPM This repository is intended to foster a RetroBrewComputers community effort to port the original Zmodem source code for Unix to CP/M so eve

null 11 Aug 31, 2022
Notepad++ is a free source code editor and Notepad replacement that supports several programming languages and natural languages

Npp / Notepad++ is my customized text editor highly enhanced for coding such as insta-run, much more file extensions made self-recognizable, logically colored syntax highlighting for nearly every programming language and designed for very easy customizability -- from the toolbar, context menu, syntax coloring, plug-ins for optional increased capabilities and much more

SkyN9ne 1 Jan 23, 2022