[Discussion] Typical file size of a house model

Is there any way to estimate how big the file (*.fcstd) will be in megabytes for the typical model of a house? It should include the most common architectural elements: pillars, slabs, walls, roofs, stairs, doors, windows, equipment, pipes, and TechDraw 2D views.

Is there a particular element (walls, windows, precast elements with rebar) that increases the size of the file a lot? Maybe it makes sense to limit the modelling of these elements so as to keep the file size and RAM requirements low. I’m just a hobbyist when it comes to architectural modelling, so I don’t know how much detail a floor plan and 3D model require for actual construction. If it were to me I’d model every single corner of the house, but maybe it’s not really advisable due to the slow performance of the model.

The example models from Yorik are quite nice, have a lot of detail, and vary in size from 7 MB to 21 MB (Wikilab). Is this considered standard? At least in my machine the models take quite a while to load, and even small edits cause a momentary freeze of the user interface. Is this due to the RAM requirements, processor speed, GPU memory, hard drive? What would you consider the typical requirements for modelling residential buildings without sluggish performance? When I was using CATIA it seemed quite responsive on a Core i5, 8 GB RAM laptop, but FreeCAD is noticeable slower.

OS: Ubuntu 18.04.1 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.14979 (Git)
Build type: Release
Branch: master
Hash: 47536dcd3729d3db106af628d62f2bf449e68c49
Python version: 2.7.15rc1
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)

It depends on the number and kinds of details.
If you have large arrays or freeform faces the required space and computation time will be very high.

Because Arch is currently built with Python?

What type of arrays? You mean Draft_Arrays? I’d expect this to not take much space, as it’s basically cloning one part, and then reproducing it many times in different positions.

What do you mean by freeforms? Draft_BezCurves and Draft_BSplines? The models that I’ve made are pretty “blocky”, that is, most elements are rectangular, with straight walls and equipment represented with just cubes; I try to avoid curved lines and surfaces as much as possible. I’d say the model is still very responsive when the file size is about 1 MB, but it starts to become slow once it’s about 3 MB.

I remember reading a thread where Yorik mentioned that using Fusions and other Part_Booleans operations were computational intensive so they should be avoided unless strictly necessary. A list of best practices like this should be mentioned somewhere. For example, now I’ve avoided fusing walls together because I don’t want to introduce a lot of computations in the model. I don’t even know if I’m saving space doing this or not.

Are you 100% certain this is the reason? Or is it just your speculation? Python is not extremely slow except if you need to manipulate a lot of arrays, but many Python structures internally are already coded in C, so I feel they shouldn’t block the interface from working. Maybe it’s the way FreeCAD performs certain operations, or the way it interacts with Qt and OpenCascade.

Hi @vocx

Realistically we haven’t yet implemented much functionality that would deal with huge assemblies. And a typical house is just that. Likely due to the fact assembly effort is still ongoing and things haven’t settled yet. There are few things you can try out. In Preferences → Display there is an option to enable OpenGL Vertex Buffer Object. Try it out to see if you get some additional performance in 3D View when enabled. Right clicking on the document item in the tree view offers some control over recompute routine. Therefore you could for example change more parameters before triggering a recompute. Ideally you would split your project in more files. But FreeCAD by default still doesn’t offer much options to manage cross document geometry. Such support hopefully will materialize in FreeCAD 0.19 development cycle.

The problem is not the clone but the boolean operations with them - for example when you cut 10 windows from the walls.

What do you mean by freeforms? > Draft_BezCurve> s and > Draft_BSpline> s? The models that I’ve made are pretty “blocky”, that is, most elements are rectangular, with straight walls and equipment represented with just cubes; I try to avoid curved lines and surfaces as much as possible. I’d say the model is still very responsive when the file size is about 1 MB, but it starts to become slow once it’s about 3 MB.

Anything what is not planar - fillets, cones, BSplines, Bezier curves, ruled surfaces, lofts sweeps.

I remember reading a thread where Yorik mentioned that using Fusions and other > Part_Booleans > operations were computational intensive so they should be avoided unless strictly necessary. A list of best practices like this should be mentioned somewhere. For example, now I’ve avoided fusing walls together because I don’t want to introduce a lot of computations in the model. I don’t even know if I’m saving space doing this or not.

You will get a feeling how complexity grows when you do some exercises.

100% speculation :slight_smile:

BTW, you may have a look at this link where I had test the ‘Hi-res’ feature and the result in file size and view port performance…
https://forum.freecadweb.org/viewtopic.php?f=23&t=21144&start=20