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.
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.
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:
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.
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
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.
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! ;)
The BIM Views panel is a handy task panel to see a summary of your model, instead of the full tree. The basic idea of it is to offer a good context view of your model: What is the structure of your model, and where you are currently working. You can switch the BIM Views panel on/off with the corresponding button on the status bar.
I have now finished the rework of the tool. It is still not merged in FreeCAD because FreeCAD is in feature freeze for the coming 1.0 release, but it will done as soon as we are out of it. It might sound disappointing not to have this in 1.0, but we have to put the limit somewhere, otherwise the release never happens, someone always has an interesting new feature to add. Also, this is still rough from the code oven and needs testing.
If you want to test for yourself already, though, check the pull request.
The general idea here is twofold: One part is to allow to more easily "switch" between one context and another, for example between different levels of a building, or between the model and a 2D view. Another part is to help streamlining the BIM Model -> Draft 2D view -> TechDraw page workflow.
2D views were usually done until now with a simple group. This still works, but we now have a new tool that uses a BuildingPart. This gives many additional advantages, such as automatic working plane, the ability to move the objects inside, and other interaction possibilities.
The following improvements have been added to the BIM Views panel:
The panel now stays docked together with other side panels, and remembers on/off status and position across FreeCAD sessions
A new section that includes 2D views has been added below the model structure view
The tool buttons have become context tools. Just right-click an item to rename, activate, delete, isolate or turn off anything
The panel now shows building structure and WP proxies with elevations in the top part of the panel, and 2D views and TechDraw pages in the bottom part
Double-clicking a level or 2D view activates that item. The different Interaction properties of BuildingParts apply: If the "Double click activates" property is on, the BuildingPart becomes active: All next Draft or BIM objects added to the model will automatically be added to it. Active containers are shown in bold text, both in the BIM panel and in the model tree. If the BuildingPart has stored Camera settings, that view will be recalled.
Double-clicking a TechDraw view opens that page
Double-clicking a level hides all other levels
Double-clicking a building shows all levels inside
A new preferences under Arch -> Defaults allows to change the 3D view background to plain color when activating a 2D view
Support for NativeIFC projects:
NativeIFC building structures (buildings, storeys...) can be an active container too
"Add Level" creates IfcBuildingStoreys when invoked on an IfcBuilding
Objects added to an active NativeIFC container are automatically converted to IFC
"Add proxy" is disabled when right-clicking a NativeIFC object
Activated NativeIFC levels set the working plane
Activated NativeIFC levels hide other levels
Related, additional changes also occur in other objects/tools:
BuildingPart are now used as 2D drawing containers. Their IFC type is then set to IfcAnnotation with Object Type as DRAWING. This matches how it is done in BlenderBIM, and paves the way for integration in IFC files, and seamless interchange with BlenderBIM. When used as a 2D drawing container, some properties of BuildingParts specific to levels are hidden.
A new "Create 2D Drawing" tool has been added to the BIM annotation tools. That tool creates a BuildingPart as described above, to serve as a container for 2D elements such as projection views (see below), dimensions, annotations and other line work
If a section plane is selected when creating a 2D Drawing, shape2D views are created automatically: One view and one cut if the section plane crosses the model, or only one view if not.
"Shape-based view" is renamed to "Section view"
A new "Section cut" tool has been added. It also creates a Shape2DView, but sets it in "cut faces" projection mode, so it shows only cut lines (and fillings). Typically, you create both a section view and a section cut to create a 2D view like a plan or section view.
The "View" tool has been renamed to "Insert view" which is more coherent with what it actually does
The sequence of the annotations menu becomes: Section plane -> 2D drawing -> Section view -> Section view -> Page -> Insert view. This reflects the recommended workflow: First you create a section plane, then you set up a 2D drawing container, then you add viewed and cut geometry to it, then you create a TechDraw page, then you place your 2D drawing on it.
We are almost there. I talked quite a lot here already about FreeCAD 1.0 and what you can expect to find in it. Well, the community has been incredibly busy, and last tasks have now been done, last bugs have been squashed, latest translations are in, and release candidates are ready. Release candidates are 1.0 installers, but not the "official ones". They are there for you to test, and help us find last-minute bugs that have manage to pass under the radar.
Many people already started downloading and trying the RC builds, and we already received a fair amount of bug reports, and developers are fixing as fast as hell. Depending on how that process goes, we expect to have the final, official builds out in a couple of weeks.
People are also starting to use NativeIFC seriously, and I'm quite relieved pleased to say it seems to hold quite well so far.
I will of course also write something more official when the time has come, but in the meantime, if you have a moment to spare, please give the RC build a test spin!
Specific icons for NativeIFC objects
This is a trivial thing but also I think a welcome change from the old Arch/BIM objects: Up to now, all NativeIFC objects had the same icon. With this change, they will get a specific icon based on their IFC class. So if you change the class of an object from wall to beam, the icon will change too.
This wasn't something I wanted to do with the old Arch/BIM objects, because these objects all used a different "engine". So if you changed the IFC type of a wall to beam, it would export to IFC as a beam, but would still use the wall engine. So it made sense to keep the wall icon because it is an important information.
Now with NativeIFC, all objects use the same engine (IfcOpenShell, in fact). So the above is no longer valid, and it makes more sense for the icon to reflect the class.
This will be merged right after the 1.0 release, but in the meantime you can already test this pull request.
New example models
As I wrote earlier, the default, built-in Arch/BIM example that you get on the FreeCAD start page has already been changed to a more proper, standard BIM model (which is the one used in this course (in portuguese). However, it's a pity the old Arch detail example vanished, as I believe it's a really nice feature of FreeCAD over other BIM solutions, that by happily permitting mixing of 3D and 2D elements, it's a very good platform for detailing. So I rescued one of the old models we did at OpeningDetail and formatted as a new detail example. This will be added to FreeCAD right after the 1.0 release. As all OpeningDetail models, it relies a lot on parametricity, and all the descriptions are automatically generated from the materials. There is much more improvement to be done on that kind of workflow, though, hopefully this example will help sparking some new ideas.
Apart from that, the collection of BIM example models that is available via the Help menu in the BIM workbench got one addition, a project I've just been working on that was graciously donated by Luc Nelles Architectes, that contains the model plus a whole set of 2D drawings generated from it.
IfcOpenShell 0.8 support
IfcOpenShell, the IFC engine that supports IFC functionality in FreeCAD, is in constant evolution, and its next version, v0.8, is around the corner and already available on some platforms. I'm happy to report that FreeCAD will support it right from day one. This is still being worked on, but will be ready in the coming days, hopefully in time for the 1.0 release.
Comments
@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)!
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.
Development news 22 from https://yorik.uncreated.net/blog/2024-008-frreecad-news-22:
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 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:
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.
Update 23 from https://yorik.uncreated.net/blog/2024-009-frreecad-news-23
A new BIM Views tool
The BIM Views panel is a handy task panel to see a summary of your model, instead of the full tree. The basic idea of it is to offer a good context view of your model: What is the structure of your model, and where you are currently working. You can switch the BIM Views panel on/off with the corresponding button on the status bar.
I have now finished the rework of the tool. It is still not merged in FreeCAD because FreeCAD is in feature freeze for the coming 1.0 release, but it will done as soon as we are out of it. It might sound disappointing not to have this in 1.0, but we have to put the limit somewhere, otherwise the release never happens, someone always has an interesting new feature to add. Also, this is still rough from the code oven and needs testing.
If you want to test for yourself already, though, check the pull request.
The general idea here is twofold: One part is to allow to more easily "switch" between one context and another, for example between different levels of a building, or between the model and a 2D view. Another part is to help streamlining the BIM Model -> Draft 2D view -> TechDraw page workflow.
2D views were usually done until now with a simple group. This still works, but we now have a new tool that uses a BuildingPart. This gives many additional advantages, such as automatic working plane, the ability to move the objects inside, and other interaction possibilities.
The following improvements have been added to the BIM Views panel:
Related, additional changes also occur in other objects/tools:
Update 24 from https://yorik.uncreated.net/blog/2024-010-freecad-news-24
Release 1.0
We are almost there. I talked quite a lot here already about FreeCAD 1.0 and what you can expect to find in it. Well, the community has been incredibly busy, and last tasks have now been done, last bugs have been squashed, latest translations are in, and release candidates are ready. Release candidates are 1.0 installers, but not the "official ones". They are there for you to test, and help us find last-minute bugs that have manage to pass under the radar.
Many people already started downloading and trying the RC builds, and we already received a fair amount of bug reports, and developers are fixing as fast as hell. Depending on how that process goes, we expect to have the final, official builds out in a couple of weeks.
People are also starting to use NativeIFC seriously, and I'm quite relieved pleased to say it seems to hold quite well so far.
I will of course also write something more official when the time has come, but in the meantime, if you have a moment to spare, please give the RC build a test spin!
Specific icons for NativeIFC objects
This is a trivial thing but also I think a welcome change from the old Arch/BIM objects: Up to now, all NativeIFC objects had the same icon. With this change, they will get a specific icon based on their IFC class. So if you change the class of an object from wall to beam, the icon will change too.
This wasn't something I wanted to do with the old Arch/BIM objects, because these objects all used a different "engine". So if you changed the IFC type of a wall to beam, it would export to IFC as a beam, but would still use the wall engine. So it made sense to keep the wall icon because it is an important information.
Now with NativeIFC, all objects use the same engine (IfcOpenShell, in fact). So the above is no longer valid, and it makes more sense for the icon to reflect the class.
This will be merged right after the 1.0 release, but in the meantime you can already test this pull request.
New example models
As I wrote earlier, the default, built-in Arch/BIM example that you get on the FreeCAD start page has already been changed to a more proper, standard BIM model (which is the one used in this course (in portuguese). However, it's a pity the old Arch detail example vanished, as I believe it's a really nice feature of FreeCAD over other BIM solutions, that by happily permitting mixing of 3D and 2D elements, it's a very good platform for detailing. So I rescued one of the old models we did at OpeningDetail and formatted as a new detail example. This will be added to FreeCAD right after the 1.0 release. As all OpeningDetail models, it relies a lot on parametricity, and all the descriptions are automatically generated from the materials. There is much more improvement to be done on that kind of workflow, though, hopefully this example will help sparking some new ideas.
Apart from that, the collection of BIM example models that is available via the Help menu in the BIM workbench got one addition, a project I've just been working on that was graciously donated by Luc Nelles Architectes, that contains the model plus a whole set of 2D drawings generated from it.
IfcOpenShell 0.8 support
IfcOpenShell, the IFC engine that supports IFC functionality in FreeCAD, is in constant evolution, and its next version, v0.8, is around the corner and already available on some platforms. I'm happy to report that FreeCAD will support it right from day one. This is still being worked on, but will be ready in the coming days, hopefully in time for the 1.0 release.