Hi again

Long time no see

So I spend the last months in a kind of ‘baby leave”. Not fully, I’ve still been doing some work at the FPA and kept an eye on FreeCAD things, but much less.

This was truly an exceptional time and I feel really lucky to have been able to spend these months full-time with Cosmo. Few fathers are able to do that, and that is just plain wrong... Taking care of him at this phase of his life is extraordinary, precious, it makes you reassess all what (your) life is about, and it’s a time you’ll never get back if you loose it. We should have more than the 20 days parental leave fathers have in Belgium and in most parts of the world, when any. It is unfair to both men and women, both should be allowed to take care of babies AND not loose professional advantages.

But back to why we’re here. I’m slowly getting back to action. FreeCAD is fine and healthy, and in case you haven’t seen it, we released version 1.1, I gave a talk at FOSDEM, we published the FPA’s yearly report, there is an ongoing modelling competition, and much, much more. The FreeCAD blog is always a good place to get your info.

LinesCAD

Screenshot of the LinesCAD proof of concept application, showing a 3D view with an IFC model open, and a tree view with the model contents

I am also starting a new side project called LinesCAD. The base idea is more or less a redux version of FreeCAD tailored for BIM and 2D CAD. What you will currently find in the Git repo is a proof-of-concept IFC viewer, that is one single 300-line Python file. It has no other feature than allowing to open IFC files, but it validates the concept of just gluing IfcOpenShell, Pivy (Coin3D) and PySide(Qt). Basically, FreeCAD without OpenCasCade and without C++. It will therefore rely only on IfcOpenShell for managing the geometry. This is already what we’re doing with the NativeIFC mode of FreeCAD’s BIM workbench

Another advantage is that we can bypass FreeCAD’s object structure, and reflect directly the IFC structure in Coin, with immediate advantages such as automatic embedding of objects, placements, visibility, etc. So for example when you move a storey, all objects inside move together, without any code intervention.

And on a more personal note, FreeCAD has become a heavyweight project, where I’m today doing more admin tasks than actual coding. So this is also a way to get back to a more root FOSS experience, with more people and less AI.

I’ll post more updates here about LinesCAD development as it goes on. Hopefully it will attract other architects/developers along the way!

Below is the manifest of LinesCAD:

Manifest for a new FOSS BIM/CAD tool

This manifest describes a new Free and Open-Source BIM and 2D CAD tool, written in Python, based on IFC and as compatible as possible with FreeCAD and Bonsai.

The main need for such a tool arises from the limitations of both FreeCAD (too slow with large files) and Bonsai (too far from a simple "drawing" workflow), and at the same time from the enormous opportunities offered by both these applications (IfcOpenShell-based, easily adaptable tools, much functionality already independent from both applications).

Back to the CAD basics

  • A fast, simple, non-parametric (asides from what IFC supports of course) tool able to handle thousands of objects and load 100Mb files fast, and still open 200Mb files reasonably fast
  • 2D/3D hybrid, all-in-the-model. Can be also used as a good and fast 2D CAD, like in the good old AutoCAD days, and everything in-between
  • Native IFC-based. The model is the IFC file itself, everything is contained in it, even 2D and any other metadata
  • Good and fast DXF import and export with support for layouts. 2D output exportable as good-quality DXF

Rescuing FreeCAD principles

  • Multiplatform and distro-friendly: The code is platform-agnostic, easy to package and not tied to specific versions of external components
  • Modular: a small minimalist core, everything is in modules.
  • Well-known components: Python on the front, powerful libraries behind: IfcOpenShell, Qt, Coin/Pivy
  • Uncompromising backward and forward compatibility
  • Extensibility: The door is open for anything, it's just a matter of adding modules
  • Standard UI: 2D/3D view, toolbars, model tree, properties view. Classical, non-overlapping interface
  • Simple code that is easy to understand and modify

Human crafted

  • Strictly community-based: Multiple ownership/copyright encouraged, development in the open, by users
  • GPL: This is a end-user application, unlikely to be used as a library. Let's enforce FOSSness right from the beginning
  • It's done when it's done: No plan, no schedule, minimal roadmaps, no release plan
  • No AI, no big tech, anywhere, anyhow. Pure FOSS-based and hosted
  • Careful documentation: Together with the code, mandatory with every PR, based on diataxis
  • Magic: Anything done in modules is welcome. Import of FreeCAD and Blender as Python modules is encouraged, or just anything else to play with
  • High community standards to make sure anybody is always welcome to participate, diversity and inclusion are encouraged and no abuse is tolerated
  • Low resouroe usage to use the application and to develop it. No CI, and should run on low-end hardware

Technical challenges

  • Viewer speed: That is the first and main thing to verify: The ability to import and handle (rotate, zoom, select/highlight) large 3D models and large 2D drawings
  • Viewer enhancements: Shadows, ambient occlusion, anti-aliasing, etc. These are possible in Coin, but need to be implemented
  • Missing FreeCAD/Blender functionality: Things such as undo/redo history, copy/pasting, multi-documents support, mouse/user interaction, tasks UI need to be identified and recreated
  • Fast tree view: This is often a choke point
  • DXF support: It needs to be fast, so it needs to be C++. Ezdxf would be the obvious choice but it's slow
  • Packaging and distribution: Offload as much as possible, but need to address Windows and MacOS
  • See how/if FreeCAD's coin extensions can be used
  • Sections: See how Bonsai does

Design intents

  • Simpler, faster drawing paradigm than FreeCAD: no task panel, all task UI, when needed, in the status bar. Editing exclusively via the properties panel or graphical tools
  • Abstract all the viewer and scenegraph interface, so the viewer library could be changed (to vsg for ex, or IfcOpenShell's wip viewer)
  • zero-install, can run directly from its source
  • No workbenches, but toolbars and menus that can be turned on/off like AutoCAD
  • Every PR shows a before/after benchmark. Performance is always trackable
  • 2D views are also Coin (same views with locked rotation)
  • IfcOpenShell, Coin and Qt all maintain their own objects stack. The code only updates one from another, there is **no central document/object structure

I will soon reactivate my crowdfunding tools with a bit expanded proposal, to include LinesCAD. But really at this point it’s more about the fun!

That’s it for today, thanks for reading!

Comment on this post on Mastodon - Show replies