[FreeCAD BIM] development news by Yorik



  • @yorik Would you cross-post in FreeCAD forum - the new Wall tool and associated ideas is interesting for discussion, thanks :)

  • Really looking forward to the upcoming type support in FreeCAD. Types are really fundamental to how BIM works!

  • Development news 20 from https://yorik.uncreated.net/blog/2024-006-freecad-news-20 :

    Upgraded Arch reference

    The Arch Reference tool is used within Arch/BIM workbenches to include parts of models that are saved in other FreeCAD files. There is a mechanism that detects if the file has been modified externally and offers to reload it. The Arch Reference object can also not load the full shape of the objects it references, but only their 3D representation, which speeds up recomputing a lot.

    Now that tool has been received a number of upgrades:

    • Translations are fixed, everything the tool does should now be fully translatable

    • Reference objects can now use whole file contents instead of having to choose a part inside

    • Support for DXF files: A DXF file can be used as a Reference object. In that case, everything the file contains is gathered into one single shape.

    • Support for IFC files. This is only available if NativeIFC is available. With that, the Reference object looks and works exactly like a NativeIFC project, only it cannot be expanded.

    • General code cleanup

    With this, another chapter of our 2024 roadmap is now complete.

    Preparing Arch/BIM/NativeIFC merge

    That merge was scheduled for the last moment, at the end of the road map. However, the work on Toponaming is going fast and is close to completion, which means the lights could become green soon for a feature freeze and a new release of FreeCAD. And we decided it would be really cool to have BIM/NativeIFC merged for FreeCAD 1.0. So I will now work on that first, and the next chapters right after the merge.

  • Development news 21 at https://yorik.uncreated.net/blog/2024-007-freecad-news-21

    Good bye Arch, hello BIM (with built-in NativeIFC)!

    screenshot of the new BIM workbench
    It is finally done, the built-in Arch workbench has been merged with the BIM Workbench and the NativeIFC addon and everything is integrated in FreeCAD.

    That means basically, in the next release, when you open FreeCAD, you will be presented with the BIM workbench, which has all the tools of Arch, plus the NativeIFC functionality enabled. IfcOpenShell is also included by default in all official FreeCAD installers now, so there is basically nothing more to worry about, nothing more to install.

    The BIM workbench is basically and mostly an extended and refined version of Arch, so for Arch users there shouldn't be any disruption. And for the BIM workbench users, well, you'll be at home already, with the comfort of not having to install anything yourself anymore ;)

    If you are wondering, the above screenshot is me playing with a "minimal" tool bars setup. There is an ongoing discussion about reorganizing the BIM menus and tool bars, feel free to participate!

    If you already have the BIM add-on installed, you will see a pop-up window telling you to uninstall the BIM add-on before venturing forth. Unfortunately I couldn't find a way to do it automatically, but it's also a good thing because so will people be aware of the change.

    Just a last note about NativeIFC: We sped up on this Arch/BIM/NativeIFC merge for very good reasons (see below), but the planned work is far from finished and NativeIFC functionality is not complete yet. So tread there with care, and excuse the bugs! Don't hesitate to report them, though, or, even better, help fix them ;)

    Built-in IfcOpenShell updater tool

    That's another piece of our roadmap. Although it might hopefully be obsoleted at birth because IfcOpenShell is not integrated in FreeCAD installers, in the BIM -> Utils menu, there is now a tool that allows you to install and update your version of IfcOpenShell. It uses the add-on manager under the hood, and installs it at the same place where your FreeCAD add-ons get installed, so all the hassle of choosing the right version for you is taken care of automatically.

    This should help fixing and reducing remaining difficulties related to IfcOpenShell, and hopefully help more people start using IFC.

    FreeCAD release 1.0 scheduled

    That's probably the most epic news since a long time, we are finally, after more than 20 years work, ready for the mythical 1.0 release of FreeCAD. The feature freeze should begin on June 1st, 2024, and the release date is estimated around mid-July. Of course, as always, this could delay, as bugs have the nasty habit of appearing at the last minute, and we'll take the necessary time to fix things as best as possible before releasing.

    Although it's just a number, and does not per se mean anything like "FreeCAD is production-ready" (It has been for years already), the 1.0 number means a lot to us. It is a milestone we have since very early in the project, when Jürgen was still there leading the project. It is understood since then that we would reach 1.0 when 1) we have a good, built-in assembly workbench, and 2) Toponaming problems are solved, or at least solved enough. Well, I'm happy to announce that these two goals can now be considered reached.

    The Assembly workbench

    Point 1, a built-in assembly workbench, is now done, we now have a very good, even if still brand-new Assembly workbench in FreeCAD. Did I tell you the incredible story behind that workbench yet? (Sorry if the answer is yes, please skip!) Well, sit and listen, kids:

    Once upon a time, in the years 2000 an something, there were two FreeCAD. Two projects named FreeCAD. One is ours, the other one, that at that time we called "the other FreeCAD", was a kinetic simulation application made by a single person, Dr. Aik-Song Koh. For some time, both were evenly recognized and referenced on the internet, which led to quite some interesting mix-ups and confusions. After a time, our FreeCAD grew a lot bigger, and development on the "other FreeCAD" stopped. It was also not open-source.

    Last year, Sliptonic, a FreeCAD maintainer and also now CEO of Ondsel, bumped into Dr. Koh, and raised the idea: "Say, we need something like that in FreeCAD. wouldn't you be interested in working on it?" Dr. Koh jumped in, and ported his FreeCAD over to our FreeCAD, which is now the "engine" behind the new Assembly workbench. After all these years, in an epic, mythical, sublime move of the universe, the two FreeCAD have united, and our world is no longer the same!

    Although Dr. Koh's kinetic solver was developed for and thanks to Ondsel, and not originally part of the FreeCAD project, it's important to know that it's still fully and totally free and open-source (it uses the same LGPL license as FreeCAD). We wouldn't have it any other way, of course.

    What about the several other assembly add-ons that FreeCAD offers via the add-ons manager then? Well nothing changed there, they still work fine, and you're still more than encouraged to keep using them. So far there is no compatibility between all these and the new built-in assembly, but the new solver/assembly API offers new possibilities and add-on developers are looking at it, so maybe in the future much could be done in that regard.

    Toponaming mitigation

    Point 2, that we got used to call "the Toponaming problem", is a well-known and very old problem of FreeCAD, that I talked a lot about on this blog. When recomputing the shape of an object, the order of its subelements (faces, edges, vertices) might change. Face1 might become Face6, Edge18 might become Edge4, etc. This is due to how many of the underlying components of FreeCAD (the sketcher solver, the OpenCasCade engine) work. These components have a complex way to build their geometry, and that's how both can reach the good results they yield.

    Unfortunately that order is of paramount importance for referencing subparts of a shape. For example, when a sketch is placed on a face of an object, or uses an underlying edge. So if that order changes, the sketch can break, which is a common scenario in FreeCAD.

    Many people have worked and tried to build solutions to the problem in the past, until finally one emerged as a solid and working solution, which is the base of Realthunder's linkstage3 branch, a FreeCAD fork developed by developer Realthunder, where he developed and put to work his Toponaming mitigation algorithm. The linkstage3 version of FreeCAD has now been used for a long time by many people, and the feedback has been excellent. Fro many people, the problem is solved (this is not an absolute truth, more about that below).

    A very long and hard work has been needed by a lot of FreeCAD developers toghether with Realthunder, to bring the Toponaming mitigation functionality of linkstage3 to FreeCAD's main codebase, tie and test everything, and it is now done. Since a few weeks, that functionality is enabled by default and running, and the results we have are thrilling. It works, and the effect on FreeCAD's performance, that we all dreaded, is so far almost negligible.

    It's important to understand how this works: Every shape used in FreeCAD now has a conversion table. Every time a shape is recalculated, the different components are analyzed, and remapped as best as possible. In other words, the engine tries to find which of the new edges is the old Edge4, and remap everything so everything keeps the same name as before. So every time a shape changes, there is a little additional calculation. the result is, when calling for Edge4, you should always get the same edge now.

    A few things are interesting here:

    1) Although we all think the results are excellent so far, the calculation could fail or give wrong results in more specific or rare cases, so there can still be Toponaming problems. There will certainly be refinement and further work needed down the road.

    2) Models don't break only because of Toponaming. Parametric models offer large opportunities for wrongdoing or fragile connections, so good modelling is still important.

    3) The renaming and the conversion table system offer new possibilities: It's now possible to not only use default names like Edge4 or Face6, but also custom names like TopFace. Although this is not yet used by FreeCAD tools, it offers very interesting possibilities, where subcomponents could be referenced not by their order in a list, but by more meaningful characteristics. This might lead to very interesting developments in the future.

    paulleetheoryshawsemhustejemiliotassocarlopavAcebitacovirMassimobrunopostlebruno_perdigaoand 6 others.
  • Development news 22 from https://yorik.uncreated.net/blog/2024-008-frreecad-news-22:
    screenshot of the BIM workbench

    Arch / BIM / NAtiveIFC integration

    The integration is finished, tested, and as far as we can tell, most bugs are killed and you will have a perfectly functional workbench with all Arch and BIM tools working. Native IFC, of course, is still a work in progress. So the idea is to keep it available, but out of your way in FreeCAD 1.0. If you don't need it, you won't see it. If you want to enable it, it's there at your fingertips: You just need to create an IFC project or load an IFC file.
    The main changes for existing Arch users will be:

    • The Arch Project tool is removed and replaced by a new IFC Project tool. There was not much sense in using an Arch Project if you weren't going to go IFC anyway, so better do things right from the start here. When you create an IFC project, it is NativeIFC enabled right from the start, and everything you add to it is NativeIFC. If you don't want to go nativeIFC, you just don't create an IFC project. You can, even so, still export your model to IFC.
    • The "combo" tools of Arch (the Structure tool, the Window tool, the BuildingPart tool...) are still there but now have been split into different more semantic tools: Structure is replaced by Beam, Column and Slab, Window is replaced by Window and Door, and BuildingPart is replaced by Building and Level. Underneath, they are all still the same tool, but they start with different settings and remember their settings individually. At the beginning I thought this overkill, why not have fewer but more powerful tools, but I ended up changing my mind, because in 99% of the time it's actually time-saving to choose the right button and save a few mouse clicks.
    • The menus and toolbars have been reorganized (see more here) and separated into more BIM-like categories. There are more menus, but hopefully things are more instinctive and easier to find. And step by step, we are structuring a true and powerful BIM environment.
    • The pipe tool can now do rectangular sections, so it can be used to build HVAC ducts. There is more to do there, such as adding flanges, etc.. But we are on our way to build HVAC tools in BIM.
    • IfcOpenShell, the engine behind the IFC functionality of the BIM workbench, is now included by default in all official installer packages of FreeCAD on all platforms. This is the most recent version of IfcOpenShell (v0.7), and should be good to go for the lifecycle of FreeCAD 1.0. In other words, if you use one of these packages, you shouldn't have to worry about IFcOpenShell anymore.
      The problem is of course if you use a third-party package, such as snap, flatpack or the FreeCAd packages provided by Linux distributions. Most of these won't include IfcOpenShell, as it is often not available on these platforms. For these, we have included an IfcOpenShell installer tool in the BIM workbench's Utils menu. This tool uses the FreeCAD addons manager (which in turn uses Python's pip tool) to install IfcOpenShell in a private, FreeCAD-only location (among other FreeCAD addons). Hopefully, the world will progrssively adopt IfcOpenShell as it should, and this problem will vanish over time.
      Note also that IfcOpenShell is not at all mandatory to use the BIM workbench. You will only need it if you work with IFC files.

    Preparations for 1.0 (and help needed!)

    Things are going well and fast, and we just entered the second part of our feature freeze. UI and user-visible texts are now frozen, so translators and document writers can now work without the risk that things change while they're working.
    This is also a moment when all help is welcome! We need to do three things now, where you can help: test, translate and write documentation.

    • Testing is easy: Download a development release of FreeCAD (you can run it side-by-side with your current FreeCAD installation), test the BIM tools as much as possible, and report any bug you find on the FreeCAD issues tracker. To not create additional work for the developers, though, make sure:

      1. Your bug is really a bug and not just something you didn't do correctly, or something that wasn't implemented yet. A good rule of thumb is: Something you are sure should be working, but is not. For example: a button that says "This button does XXX", but when you click the button it does not do XXX.
      2. You can reproduce the bug, and provide instructions for other people to reproduce the problem. Ex: 1) press X, 2) press Y, 3) Z should happen but instead, FreeCAD crashes
      3. Since we are close to the release, only critical bug fixes wil be processed at this time. Less urgent things are left for after the release. If you find something annoying but not critical, still report it of course, but keep in mind it won't be processed immediately. Processing means being looked at and verified by the FreeCAD maintainers, it does not necessarily means fixed, as the fix might be complex and take more time.
      4. Make sure you include your FreeCAD version, so we know exactly which version presents the problem.
    • Translating can be done by anybody, jsut head to https://crowdin.com/project/freecad, create yourself an account and start translating! Concretedog wrote a good explanation of how everything works on the FreeCAD blog.

    • Writing documentation: The BIM documentation lives at https://wiki.freecad.org/BIM_Workbench. It still lacks a lot of content (all the red links are missing pages). If you think you can help writing, checking the existing pages for errors or fix inaccuracies, you are more than welcome to help! Editing a wiki is easy. You just need to create yourself a forum account and head to this thread to ask for a wiki account (we disabled self registering on our wiki because there was a lot of spam). Alternatively, ask me directly! ;)
      screenshot of the BIM workbench
    BedsonShegsCSNpaulleebrunopostleMassimoJohncarlopavsteverugiNigeland 6 others.
Sign In or Register to comment.