Hello, new user testing FreeCAD for Architecture/BIM

Hi there & cheers,

I thought I’d give FreeCAD a spin to see how (or if at all) it could be used for Architecture/BIM modelling. OSS is not a new topic for me. Whenever possible, I try to avoid a vendor lock-in (and so far it did pay off or I am/was painfully reminded when a vendor managed to lock me in).
So it’s Gimp, Inkscape, LibreOffice instead of their commercial counterparts whenever possible.

While I lack the skills to help out with programming itself, I thought at least some feedback could be useful. As a new user I may lack lots of things, but then again in my experience it is this unspoiled “white paper” that can give a project good feedback, when most of the experienced staff went “project blind” already. :wink:

So I like Revit, but their subscription licensing model is unsustainable for me, so looking for alternatives. Long term alternatives…
For now I’m still in the usability evaluation phase, i.e. determining if FreeCAD is usable at all. I mean it evidently must be (for some) as I see great projects made with it already. For me, after installing 0.18.4 and then the AppImage it’s still

Traceback (most recent call last):

Crash time … most of the time. So trying to get a grip on that and aproaching the usability eval with a good share of benevolence.
Will try to read here as much as possible to provide Feedback “in the apropriate way”, although my 1st feedback would be that there’s a large pile of boilerplate that’s being thrown at the user as requests/warnings what to do before providing feedback. I do suspect that some users may be intimidated by that or simply scoff at it. In any case while I understand the need to filter Feedback, the current filter setting might be too stern.

So:

DWG import. 0.18.4 works, albeit with scaling problems
0.19dev

17:04:41 Converting: “/usr/bin/oda-file-converter” “/path/foobar/anonymous” “/tmp/tmppdlv2xmv” “ACAD2000” “DXF” “0” “1” “xxx.dwg”
17:04:41 Conversion successful
17:04:41 Traceback (most recent call last):
File “”, line 1, in
File “/tmp/.mount_FreeCAk8BnpN/usr/Mod/Draft/importDWG.py”, line 108, in insert
doc = importDXF.insert(dxf, docname)
File “/tmp/.mount_FreeCAk8BnpN/usr/Mod/Draft/importDXF.py”, line 2817, in insert
Import.readDXF(filename)
<class ‘RuntimeError’>: BRep_API: command not done

Hmm. Could be the AppImage FS kludge-something. Well, at least the AddOn manager works in 0.19dev, because
in 0.18.4

Traceback (most recent call last):
  File "/usr/lib/freecad/Mod/AddonManager/addonmanager_macro.py", line 147, in fill_details_from_wiki
    code = code.replace(b'\xc2\xa0'.decode("utf-8"), ' ')
AttributeError: 'list' object has no attribute 'replace'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/freecad/Mod/AddonManager/AddonManager.py", line 852, in run
    self.macro.fill_details_from_wiki(url)
  File "/usr/lib/freecad/Mod/AddonManager/addonmanager_macro.py", line 149, in fill_details_from_wiki
    FreeCAD.Console.PrintWarning(translate("AddonsInstaller", "Unable to clean macro code: ") + code + '\n')
TypeError: can only concatenate str (not "list") to str
Killed

¯_(ツ)_/¯

While we’re at the financially unsustainable subscription model. I recently heard Qt wants to establish something similar.
If so, I certainly hope they use the surplus money to fix HiDPI scaling. FreeCAD, as many other Qt apps, constantly gets it wrong on my 4k screen.
e.g. the AppImage looks quite ok (proportionally-wise), but way too big. What FreeCAD thinks are 32px icons looks more like 128x128 paintings.

QT_AUTO_SCREEN_SCALE_FACTOR=1 FreeCAD_0.19-23058-Linux-Conda_glibc2.12-x86_64.AppImage

and setting them to 16px makes the UI a little bit more bearable. I suppose one can live with this hack, but

Hi and welcome to the forum!

Please switch completely to 0.19. Errors in 0.18 will no longer be fixed, as we are shortly before the 0.19 release.

You should remove your version info from the signature. Although it is convenient, the same signature is shown in ld posts too, and will set them in the future out of context.

Please post the DXF/DWG you are having problems with.

As for files with problems: The easier question would be “which files do not exhibit problems?” As these are in the absolute minority :wink:
Some examples:

http://openifcmodel.cs.auckland.ac.nz/

Just browsing and tried the “Convenience Store” IFC which you probably see on the main page already.
(http://openifcmodel.cs.auckland.ac.nz/Model/Details/348)
It seems to be a more complex model made with Renga. Unfortunately, when trying to import (FreeCAD 0.19.23058 (Git) AppImage on Arch Linux), FreeCAD crashes hard with a SEGV:

After a ton of


No Base, return without a rebar shape for Rebar623.
No Base, return without a rebar shape for Rebar623.
No Base, return without a rebar shape for Rebar624.

it gets this final blow:

Program received signal SIGSEGV, Segmentation fault.
#0  /usr/lib/libc.so.6(+0x3d6a0) [0x7fe4cb9a66a0]
#1  0x7fe3b37ff445 in IfcGeom::Kernel::get_decomposing_entity(IfcUtil::IfcBaseEntity*, bool) from /tmp/.mount_FreeCAk8BnpN/usr/lib/python3.8/site-packages/ifcopenshell/_ifcopenshell_wrapper.so+0x535
#2  0x7fe3b38c1ffc in IfcGeom::BRepElement<double, double>* IfcGeom::KernelIfc4::create_brep_for_representation_and_product<double, double>(IfcGeom::IteratorSettings const&, Ifc4::IfcRepresentation*, Ifc4::IfcProduct*) from /tmp/.mount_FreeCAk8BnpN/usr/lib/python3.8/site-packages/ifcopenshell/_ifcopenshell_wrapper.so+0x1ac
#3  /tmp/.mount_FreeCAk8BnpN/usr/lib/python3.8/site-packages/ifcopenshell/_ifcopenshell_wrapper.so(+0xa403f6) [0x7fe3b28933f6]
#4  /tmp/.mount_FreeCAk8BnpN/usr/lib/python3.8/site-packages/ifcopenshell/_ifcopenshell_wrapper.so(+0xa43801) [0x7fe3b2896801]
#5  /tmp/.mount_FreeCAk8BnpN/usr/lib/python3.8/site-packages/ifcopenshell/_ifcopenshell_wrapper.so(+0xa43c38) [0x7fe3b2896c38]
#6  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(PyCFunction_Call+0xf7) [0x7fe4cdbdf2e7]
#7  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyObject_MakeTpCall+0x250) [0x7fe4cdb95890]
#8  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x4ea2) [0x7fe4cdc23e62]
#9  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x2e2) [0x7fe4cdb92022]
#10  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyFunction_Vectorcall+0x1e3) [0x7fe4cdbd2393]
#11  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x484c) [0x7fe4cdc2380c]
#12  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x2e2) [0x7fe4cdb92022]
#13  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyFunction_Vectorcall+0x1e3) [0x7fe4cdbd2393]
#14  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x484c) [0x7fe4cdc2380c]
#15  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x7ef) [0x7fe4cdb9252f]
#16  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyFunction_Vectorcall+0x1e3) [0x7fe4cdbd2393]
#17  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x484c) [0x7fe4cdc2380c]
#18  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x2e2) [0x7fe4cdb92022]
#19  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(PyEval_EvalCodeEx+0x44) [0x7fe4cdb92de4]
#20  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(PyEval_EvalCode+0x1c) [0x7fe4cdc4869c]
#21  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(+0x219ecf) [0x7fe4cdc66ecf]
#22  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(+0x252c44) [0x7fe4cdc9fc44]
#23  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libpython3.8.so.1.0(PyRun_StringFlags+0x7d) [0x7fe4cdc9fcdd]
#24  0x7fe4cd49d11a in Base::InterpreterSingleton::runString[abi:cxx11](char const*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADBase.so+0x6a
#25  0x7fe4ce23a418 in Gui::Command::_runCommand(char const*, int, Gui::Command::DoCmd_Type, char const*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x98
#26  0x7fe4ce23a602 in Gui::Command::_doCommand(char const*, int, Gui::Command::DoCmd_Type, char const*, ...) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x102
#27  0x7fe4ce15a546 in Gui::Application::importFrom(char const*, char const*, char const*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x1a6
#28  0x7fe4ce251fdc in StdCmdImport::activated(int) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x5bc
#29  0x7fe4ce243536 in Gui::Command::invoke(int, Gui::Command::TriggerSource) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x336
#30  0x7fe4cbed90d2 in QMetaObject::activate(QObject*, int, int, void**) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Core.so.5+0x780
#31  0x7fe4cc6e896e in QAction::triggered(bool) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0x32
#32  0x7fe4cc6ea249 in QAction::activate(QAction::ActionEvent) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0xcb
#33  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5(+0x2643a8) [0x7fe4cc7dd3a8]
#34  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5(+0x268fc3) [0x7fe4cc7e1fc3]
#35  0x7fe4cc7e2754 in QMenu::mouseReleaseEvent(QMouseEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0xc6
#36  0x7fe4cc718c23 in QWidget::event(QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0x135
#37  0x7fe4cc7e3e9b in QMenu::event(QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0x2d1
#38  0x7fe4cc6ed83a in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0xde
#39  0x7fe4cc6f20a9 in QApplication::notify(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0x79d
#40  0x7fe4ce2070b9 in Gui::GUIApplication::notify(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x89
#41  0x7fe4cbec2a9c in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Core.so.5+0x88
#42  0x7fe4cc6f1553 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0x283
#43  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5(+0x1af010) [0x7fe4cc728010]
#44  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5(+0x1b03d2) [0x7fe4cc7293d2]
#45  0x7fe4cc6ed83a in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0xde
#46  0x7fe4cc6f3405 in QApplication::notify(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Widgets.so.5+0x1af9
#47  0x7fe4ce2070b9 in Gui::GUIApplication::notify(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x89
#48  0x7fe4cbec2a9c in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Core.so.5+0x88
#49  0x7fe4cc269724 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Gui.so.5+0x684
#50  0x7fe4cc26a2f7 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Gui.so.5+0x175
#51  0x7fe4cc257020 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Gui.so.5+0x64
#52  /tmp/.mount_FreeCAk8BnpN/usr/plugins/platforms/../../lib/libQt5XcbQpa.so.5(+0x5b1ea) [0x7fe4c7c861ea]
#53  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/./libglib-2.0.so.0(g_main_context_dispatch+0x2cb) [0x7fe4c8e5cdeb]
#54  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/./libglib-2.0.so.0(+0x55031) [0x7fe4c8e5d031]
#55  /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/./libglib-2.0.so.0(g_main_context_iteration+0x2e) [0x7fe4c8e5d0be]
#56  0x7fe4cbef1d23 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Core.so.5+0x63
#57  0x7fe4cbebf4d7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Core.so.5+0x187
#58  0x7fe4cbec334f in QCoreApplication::exec() from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libQt5Core.so.5+0x105
#59  0x7fe4ce17d4f2 in Gui::Application::runApplication() from /tmp/.mount_FreeCAk8BnpN/usr/bin/../lib/libFreeCADGui.so+0x15a2
#60  /tmp/.mount_FreeCAk8BnpN/usr/bin/freecad(+0x37cd) [0x56342cd427cd]
#61  /usr/lib/libc.so.6(__libc_start_main+0xf2) [0x7fe4cb991152]
#62  /tmp/.mount_FreeCAk8BnpN/usr/bin/freecad(+0x4521) [0x56342cd43521]

Contrary to that the Ando House (http://openifcmodel.cs.auckland.ac.nz/Model/Details/331) seems to work ok.
A few warnings here and there, but all in all works.


Then I tried to import 3D model data (DWG) for my house project from the local municipality (Prague)
here: https://www.geoportalpraha.cz/cs/data/otevrena-data/44EE8B0A-641A-45E8-8DC9-CF209ED00897
In my case the BD3_Prah52: https://opendata.iprpraha.cz/CUR/D3M/BD3/S_JTSK/BD3_Prah52_dwg.zip
A dinner later on my Xeon Notebook, no crash but I seem to get only a massive line out of this, but that could be the problem of the ODA converter.

The DWG contains a whopping 100k+ polyface meshes! Sadly FreeCAD cannot import these and other 3D objects in a DXF. Only 2D objects can be imported.

There is an add-on workbench that can import DXF files with 3D solids:
https://forum.freecadweb.org/viewtopic.php?f=22&t=20575
But I do not know if it can also handle polyface meshes.

You should start a new topic for the IFC issues. There is a dedicated IFC forum:
https://forum.freecadweb.org/viewforum.php?f=39