[FreeCAD BIM] development news by Yorik



  • New update from https://yorik.uncreated.net/blog/2023-021-freecad-weekly14

    NativeIFC: Groups

    The NativeIFC add-on now has support for groups. This works basically the same way as in the rest of FreeCAD: You can add groups inside your IFC project, and add objects to these groups. To add a group, right-click any IFC object in the tree, and choose "Create group". To add an object to a group, just drag and drop it into it.

    There is one catch, though: Groups work the same way as other FreeCAD groups: They behave like other FreeCAD objects. You can add groups inside other objects or structures, but if you add an object to a group, that object cannot be part of another group or structure. This kinds of forces a strict "tree-like" structure.

    In IFC, however, groups are a much looser structure. You still keep a strict structure using building containers like storeys or buildings, but any object can be attached to any group, and groups don't need to live inside a structure.

    We could do it that way too, but then our IFC groups would not look like FreeCAD groups anymore, they would become a separate, loose structure on the side and not interfere with the building structure.

    I like the former one, because I've got used to work that way in FreeCAD and use groups a lot to organize things, for example inside a storey. But I understand this is not the way most people use groups within IFC. So this is a point that still needs some debate I think.

    What's your opinion? Do you use IFC groups? How? I'd be interested to know.


    NativeIFC: material properties

    Property sets attached to materials are now properly handled by the NativeIFC module.


    NativeIFC: code refactor

    I seem to have gone (maybe too?) fast and stacked a lot of things in ifc_tools module. This has been working fine up to now, but I begin to meet some bottlenecks. Mainly, the overall complexity begins to pose different problems:

    • The overall performance is becoming hard to control. It is hard to see where the slowdowns and bottlenecks are.

    • Each new feature supported by the NativeIFC brings a new layer of complexity, that must be applied on several parts of the code, which is slowly getting out of control. We need a better plan to handle these complexity increases.

    • There is more and more "stuff" outside the IFC project structure itself: materials, layers, groups... And there will be much more in the future. We need to think of a better system to properly and beautifully handle these.

    So I've started working on a big code refactor, separating code into easier-to-handle structures, and also designing a better structure to accommodate future expansion. Right now there is not much to see yet, the main piece committed is the separation of all shape-generation code into a separate ifc_generator module. So the situation is mow much clearer: FreeCAD objects use this module whenever they need their shape to be calculated or updated, and that's it, nowhere else in the NativeIFC module is a shape recalculation initiated. So when measuring file load performance that's now the only place to look at.

    I've also added a quick-and-dirty performance test that gives the performance data at the end of the README. I'll try to maintain these performance numbers updated and more under control form now on.


    FreeCAD: 0.21 preparations

    The forthcoming 0.21 release of FreeCAD is coming, we are coming to the end of what we call the "feature freeze" time, where we all concentrate on bug fixing. Most of the work is done, and outside a few leftovers we're close to ready for the release. Another important aspect we've been looking into is to better streamline and document the process of building the "official" release packages for the different platforms (Windows, MacOS and Linux).

    Currently, weekly builds are all handled using the conda platform. Release builds too, for MacOS and Linux. Conda is a really interesting open-source, cross-platform system that gathers the capabilities of a build system and a package manager.

    On Windows, though, the FreeCAD executable must be packaged into an installer, so there is an extra step, which is currently done manually, outside the conda platform.

    We're trying to better document all this process, so others can help working on these packages, and also make the official FreeCAD installer packages more seamlessly installable.

    Another issue we have is that main commercial platforms, basically Windows and MacOS, are increasingly trying to restrict the ability for users to install applications not coming from their own stores. More than often, users are nagged by "warning! You are trying to install an unsafe application!" dialogs when trying to install FreeCAD.

    While we're also trying to bring FreeCAD on these stores, it is a pretty complex process which takes big amounts of time and money. So while we're still not there we are also trying to make the current FreeCAD packages a bit more recognized as safe by these platforms, by having them digitally signed. This is another complex problem that also takes a lot of research, as these platforms put a lot of conditions.

    Is all this really bettering the security of these platforms? I have my doubts there, it seems much more like a commercial move to force application developers to use the stores, which generates big revenues (they take about 30% of the developer earnings, without having to do much). Anyway, we're decided to try to get FreeCAD there, as long as it does not harm the open and free nature of FreeCAD and does not cost us a fortune.

    FPA issues

    bruno_perdigaoCoenpaulleetheoryshawengfernandoAcebitacovirGorgiousGerardTDarth_Blenderand 1 other.
  • @paullee said:
    Indeed, it seems there is limitation in time to edit a post :) Probably bitacovir can't revise the topic now.

    The main topic is about Yorik's work on FreeCAD. You don't need to be so specific in the title.

  • Here is this week's update. No significant BIM/IFC contents because of the 0.21 release of FreeCAD, so I'll just post the link: https://yorik.uncreated.net/blog/2023-023-freecad-news-15

  • Can you make one 2D BIM workbenck to work like ARES Commander all to bim function
    BIM Drawings Automation In https://www.graebert.com/cad-software/ares-commander/new-features/ for freecad 1.0 just to Generate floor plans from ifc and 2D fields export to pdf, annotate , draw 2d lines and text , highlight ifc element in some color etc.

  • edited August 2023

    @isain said:
    Can you make one 2D BIM workbenck to work like ARES Commander all to bim function
    BIM Drawings Automation In https://www.graebert.com/cad-software/ares-commander/new-features/ for freecad 1.0 just to Generate floor plans from ifc and 2D fields export to pdf, annotate , draw 2d lines and text , highlight ifc element in some color etc.

    These are the current BIM FreeCAD goals for 1.0
    (maybe a lot of work for one person)

    BIM Goals for FreeCAD 1.0

    I would like very much the 1.0 release of FreeCAD to be a killer release in the BIM area too. So I have this very (or not so much) ambitious goals in my mind:

    • Unification of Arch, BIM and NativeIFC: If we want FreeCAD to be recognized as a mainstream BIM platform, BIM tools should be right there, simply, easily, included, no additional download required
    • Solving of the IFC/non IFC dilemma: Users should be able to use the BIM tools without caring about IFC (for example in other workbenches). But if you work with IFC, everything should work seamlessly, the fact that you are in an IFC environment should be somehow, implicit.
    • Refactor of the window tool: No comments on that one, I think everybody will agree..
    • Moving the IFC export code to IfcOpenShell: This will give IfcOpenShell users much more power to create IFC contents from FreeCAD, which can only benefit the whole open BIM ecosystem.
  • IIRC ares commander is an autocad clone. FreeCAD is mostly focused on 3D. there are apps much more stitable for that, like librecad or qcad. That said, it is already totally possible to draft full 2D drawings with FreeCAD.

  • There is a video in Bim drawnings automation you can see what is an idea. Second ACad or Librecad workflow is general not so suitable for floor-plans I what thinking more like ARchicad so in this first goal add also basic 2d workbench but for arch not general (Unification of Arch, BIM and NativeIFC and 2d modul draw, annotate, paper selection(layouts ))

  • https://yorik.uncreated.net/blog/2023-024-hard-time
    Sending major good vibes to you. Stay strong, @yorik .

    theoryshawMassimobrunopostleNigelyorikcarlopavpaulleevictorklixtowmiCoenand 4 others.
  • edited November 2023

    I hope everything is going to be alright to your loved family member soon, good vibes to you and all your family members, @yorik. Tudo de bom para voces e muita saude!

  • Thanks guys! ?

    victorklixtocarlopavCoenpaulleeShegsbitacovirMoultMassimoGorgiousbrunopostleand 2 others.
  • edited February 16

    NativeIFC module for @FreeCADNews is now officially sponsored by nlnet!

  • Thanks for posting @bitacovir ! Hopefully we're about to resume development!

  • I installed BlenderBIM long time ago (in fact with Moult's help, thanks) but never had time to explore further. FreeCAD Native-IFC was installed and tested more frequently but not had the time to compare it against FreeCAD Arch/BIM Objects, to explore actual workflow etc.

    There once had a roundtrip test between FreeCAD Arch/BIM and BlenderBIM in OSArch forum, right?

    Any study available compare all these available tools ? e.g. on availability and features of IFC objects, how possibly these available tools could works complementary to each other?

    • BlenderBIM IFC Objects
    • FreeCAD Native IFC Objects
    • FreeCAD Arch/BIM Objects

    Hope it is available or some resource is available for it, thanks :D

  • edited February 17

    In fact, user F_Rosa in FreeCAD developed a new Movie Workbench, used Cycles in the FreeCAD Render Workbench, and created a few amazing videos like below without exporting to Blender to my understanding ! Curious to learn more about these and how Blender render could works all together !

    (Some with Exploded Assembly Workbench)

  • edited February 27

    Can be also add easy floor plan navigator , and easy 2D module( like model layout windows) for printing and export with good annotation module ( line, text ) , and block library window so we can make library imports ifc files from Mep content or 3d find it

  • FreeCAD BIM update 16 on https://yorik.uncreated.net/blog/2024-002-freecad-news-16

    Updated coin rendering system

    The plan is to completely remove the dialog you get when opening an IFC file with the NativeIFC importer. Files will be loaded with the fastest settings, and the rest will be loaded on-demand. The first stone of that plan is to offer a decent aspect when loading the IFC file and not loading the shapes (the "coin only" mode in the dialog). That mode will become the new default, and shapes will be loaded automatically when they are needed. Only, we needed that mode to look as good as the shape mode.
    This is now done, that mode now uses the same rendering system as normal FreeCAD shapes, it supports all the display modes, allows to set visual properties like line color or thinckness, etc. Transparency is also supported, but, due to a long-time bug in FreeCAD, objects with both transparent and opaque parts don't render nicely. So for those objects, transparency is at the moment disabled.
    The infamous bug that made containers display the shape of their children (which forced me to introduce the much-hated "1mm cube" workaround in NativeIFC) is now solved in FreeCAD main codebranch, so at last we can now say goodbye to that dirty workaround.
    See commits dc85ff6, 37e3d2c and 3ff1715

    Double-clicking to expand and reveal shape

    Another part of the above plan, if we are going to import IFC files with the fastest possible settings, is to allow to quickly load data when needed. I introduced a new system that seems to me to work amazingly well. It works like this: When double-clicking an IFC object in the tree, if it has expandable children, it expands. If not, it loads the shape and other geometric data.
    So by double-clicking around, you quickly reveal and expand the contents of your IFC file. When you need more data from an object, you double-click again. The icon will turn "filled" to indicate the data has been loaded.
    This gives a super fast and intuitive way to load IFC files and explore their contents. No more decisions to be made before loading and before knowing what there is inside the file.
    A third double-click action still needs to be implemented, that's the editing, to be done grphically inside the 3D view. That's for later :)
    See commit b382938

    IFC-related tree right-click commands are now inside an IFC subtree

    That's a small UX improvement, but there were getting many... The idea here is to keep these individual commands somewhere in case of need (not sure if it will be in the tree) but normally the idea is that you would not need them anymore for day to day work.
    See commit 300d3de

  • Yorik is BAAAAAAACK...

  • hopefully this time we get the thing done and merged in freecad!

  • As you know we are there for you happy return , most needed function in free BIM world is easy MEP modeler but no some crayz stuff just simple mep library and connecting elements in ifc 4 file standard like

  • I'd love to have better MEP tools in FreeCAD. But I lack the expertise... What is sorely needed is people willing to help defining what a good set of MEP tools would look like. Anyone interested? ;)

  • Update 17 on https://yorik.uncreated.net/blog/2024-003-freecad-news-17

    screenshot of UI improvements in the BIM workbench

    BIM views dialog improvements

    We got a nice pull request earlier this week that adds several improvements to the BIM Views tool: Buildings, levels and working plane proxies now appear stacked, and you can directly edit their level there.

    I added a few more things after that: The dialog is now dockable together with the other FreeCAD dock widgets like the tree or task views, and will remember where you docked it last time, so it reappears at the same place next time you open FreeCAD. I'm growing fond of having a "BIM" panel there, there is certainly much more that we can do there. But the idea generally is to have a kind of "simplified" view of the tree, where it's easy to see which level is the active container, where your next objects will be located.

    I also added support for NativeIFC objects there (commit pending), and bettered the display of icons in the BIM Views toolbar.

    * BimViews: remember dock location
    * Use actions in Bim Views
    * Bim views: remember tabbed state

    BIM status bar tools UI improvements

    The BIM tool buttons in the status bar have also been reworked so they look smaller and nicer and show on/off status. I also added extended the system so NativeIFC buttons can be added.

    * Add IFC buttons to status bar
    * Reorganized the status bar

    Lock system

    The main thing I've been working on, though, is the forthcoming lock system of the NativeIFC module. It is basically ready, but I'm waiting for a pending commit against the main FreeCAD repo to publish the new NativeIFC code. So you'll have to wait a few more days to test.

    Basically the idea here is that the whole question of working with IFC objects only (locked), or allowing other FreeCAD, non-IFC objects (unlocked), should be transparent and unobtrusive. In most cases, this is set automatically for you, for example when you open an IFC file you are always in locked mode (IFC objects only), and when you start a normal FreeCAD file you are not locked (unless you set in the preferences that you want to always start in locked mode).

    But you have a "lock" button in the status bar, that indicate if your file is currently locked or not, and you can always, at any time, lock or unlock the current file.

    I'm quite happy with the tool, it is simple and intuitive, it works, and locking/unlocking is undoable. I like both modes, I usually like a lot to have all kinds of non-BIM stuff in my FreeCAD files together with the BIM model, that's IMHO a strength of FreeCAD, but when working in locked mode, you literally turn FreeCAD into a "straight" IFC editor with all the data and only the data.

    One little corner case is still not covered by this tool, which is if you want to turn part of your FreeCAD file into a NativeIFC object. That is easy enough to do by exporting something and reinserting the IFC file, but we could think of a more steamlined way.

  • Update 18 on https://yorik.uncreated.net/blog/2024-004-freecad-news-18

    The lock system

    screenshot of UI improvements in the BIM workbench
    This was merged last week, but I thought I'd explain a bit more how it works.

    Basically you get a new little IFC button in the status bar, when using the BIM workbench. This is the IFC lock button, and it can be ON (locked) or OFF (unlocked). (I still think the icon needs a bit more work, maybe look different when locked or unlocked). It works like this:

    • When locked, your FreeCAD document is the IFC document. Everything you add or change happens directly in the IFC file. If you add non-IFC objects, for example from other workbenches, they get instantly converted to IFC. This is perfect when you are working on existing IFC files and you want total control over the changes you make. You cannot add other projects.
    • When unlocked, everything behaves like it does now in the BIM workbench. You can have IFC and non-IFC objects in the file. Only what's inside an IFC project is saved to IFC. This is great while you are still building your project and want the full modeling powers of FreeCAD at your fingertips. This mode also allows you to insert more than one IFC project, so it is suitable too for building "master" documents or check for interferences between different IFC files.

    Most of the time, locked/unlocked state is set for you automatically, it can be illustrated by the cases below:

    • If you create a new, blank file, you will be asked if you want it locked or not, unless you have set in the preferences that you want to always start new files locked.

    • If you open an IFC file, you are automatically in locked mode. You need to unlock to be able to add non-IFC objects to that file.

    • If you insert an IFC file into an existing FreeCAD document, the document is automatically unlocked, because it would not be possible to insert an IFC file into another one.

    • If you lock an unlocked file, if you have more than one IFC project inside, it cannot be locked. Otherwise, everything inside the file gets converted to IFC. If there is an IFC project in the file already, that project becomes the IFC document.

    • If you unlock a locked file, the file contents go inside an IFC project object, allowing you to add non-IFC objects on the side.

    In a typical workflow, and that's the last piece missing, you mostly start working on a project without caring too much about IFC. At some point when your project is mature enough, and you need to share it with others, you want to go IFC. That does not need you want to get rid of all the FreeCAD stuff around, though. But you'll want to "ifcize" some part of your project.

    So that's what I'll add next, the ability to take a part of your FreeCAD model and say: "Okay, this should become an IFC project. Help me to set things up". After that, you decide if you keep working in locked or unlocked mode. My idea is that you, the original author of that file, will keep working in unlocked mode, while other people will use locked mode to make sure they control the changes they do to the file.

    commits: b739b77, b739b77

    Removal of the file load dialog

    There is now no more dialog when opening or inserting an IFC file. Everything has become implicit. The locked/unlocked is automatically set as above, the rendering mode is always set to Coin (the shape is not loaded), and the strategy is always to expand the minimum possible, basically only the project when inserting, or only the site and buildings when opening.

    All the other choices are kept off, as everything is late-loaded (they get loaded only when double-clicking an object). So now we always have the fastest possible import. Everything else is loaded as needed.

    The dialog is still there though, if you want it. Just turn the option on in the NativeIFC preferences.

    commits: a64871a


    This is not ready because it required a lot of changes to FreeCAD, which take more time to get merged. Basically, when saving your FreeCAD file, all the needed IFC files are saved automatically too. This is almost fully working, only little problem left, in locked mode, you would not need to save the FreeCAD file anymore. Everything is inside the IFC file. I'm still looking at how to achieve that.

  • Update 19 from https://yorik.uncreated.net/blog/2024-005-freecad-news-19
    Short version of what's in the article ( but there is modernist arch porn there FYI ;) )

    • Autosaving - You now just click "Save" and everything IFC-related is saved, no need to worry
    • Support for IfcGroups
    • Conversion of a part of your model to NativeIFC
  • You got me at porn

  • edited March 29

    @knotsruen said:
    You got me at porn

    Definitely I should have made it the title of the article... :)

  • Maybe the subject of the thread should be updated ?

    • [FreeCAD BIM / Native-IFC] development news by Yorik
  • @yorik Finally I've found it! (NSFW...)

  • A couple of loose design notes over what I'm going to work on next - https://yorik.uncreated.net/blog/2024-006-bim-detailsl

Sign In or Register to comment.