This is the November edition of our monthly report about the development of BIM tools for FreeCAD. As you know already if you read last month's report, we are (increasingly) busy preparing FreeCAD for its next 0.18 release, which is scheduled to happen before the end of this month/year. So far so good, we are busy ironing out the last bugs and getting everything ready.
By the way, one of the areas that always needs a lot of help from the community of FreeCAD users, is translation. With each release, we achieve a bigger number of languages in which FreeCAD is fully translated. This year, we have many that are above 90% already, and a couple of others that lag behind, that would really deserve some care. Do you know any of the languages on our translations framework? Please help! Just create yourself an account there and you are ready to go. No need to compromise yourself to reach any goal, if you just have 5 minutes and can translate 5 sentences, you will already have helped the project a lot! (And if you reach 500 sentences, you will have your name in the credits in FreeCAD -> Help -> About FreeCAD )
Last month I announced I would spend more time on the BIM workbench itself this month, as it is not tied to the pre-release "feature freeze" in which FreeCAD is at the moment. I did that, but I also underestimated the amount of bug-fixing needed in FreeCAD, so I ended up still spending a lot of time on FreeCAD bug fixing. In any case, one thing is as important as the other, and I think with this release the whole BIM ecosystem inside FreeCAD is reaching a level of maturity and stability that we never had before, and that it is becoming ready to enter the big player's courtyard.
As always, many, many thanks to all of you who contributed to this effort by donating money on Patreon, Liberapay or Paypal so I can spend more time working on FreeCAD. Next month, since it will be the last report of 2018, I'll do a small recap of these nearly two years of "campaign", it has been steadily increasing over the time, and so far it is a really motivating and, I hope, productive experience.
So, enough boring bla-bla already, let's go to what interests us:
This month's video is about the expressions engine of FreeCAD:
This is a small change, but curiously something I never really gave some thought before. As I am working more on the User Experience (UX) side of things with the BIM workbench, these questions take more importance. Until now, I tried to fit all the new interface panels inside the Task panel of FreeCAD. This is the good old idea that interface elements should not block your 3D view, and stop you from working. However, some tasks do require you to stop working and work on the task only. These should not be squeezed into the sidebar but get a larger dialog that occupies the central part of your screen. So the Project setup dialog now has a nicer and more comfortable dialog and it works much better.
The other BIM tools from the Manage menu should, I think, stay in the Task area, as they allow you to interact with the contents of the model. I think we have a good rule from now on to decide what should be in the Task area and what should get its own separate, blocking dialog. I will try to assess which areas of FreeCAD are not following this rule correctly.
This was one of the first ideas I had for the BIM workbench, and the system is now implemented and running, although the tutorial itself is still incomplete. The concept is largely used in games: After you install it and start a new game, you are often offered to take a tutorial first, to familiarize with how the game works. That tutorial is often itself the first chapter of the game, so you play a first chapter that is specially designed to help you learn what needs to be learned, and you are guided through it by tips boxes, explanations, small "goals" you need to achieve, etc.
I find that brilliant, very different than a video or text tutorial. You are already playing, and the game explains you how to play it. After you finish the tutorial chapter, you are on your way.
The idea here is to do as much as possible the same: Have a tutorial that "unfolds" right inside your FreeCAD window, and that guides you through a series of steps designed to show you how things work. Each page of the tutorial explains you something, and has goals to be achieved.
The tutorial is entirely written on the FreeCAD wiki, so it is easy to get fixed and bettered by community members. Each goal has a simple, one-line python test, that returns True or False. I hope this will become a killer feature that no other BIM application has, and might also be of a big help to overcome the steep learning curve of FreeCAD.
You can now change the working units on-the-fly, directly in the status bar.
The BIM workbench documentation is finally complete. Although many of the tools can still evolve, we now have an up-to-date documentation, which is a very fundamental piece of the game too.
I also started a parity table which I believe will be a very precious resource to learn FreeCAD and its BIM workbench when coming from another application. Please help me to complete it with other concepts and applications!
The BIM workbench now has what we in FreeCAD call Task Watchers, which takes place inside the Task panel when no command is active. These watchers can change according to the context, so we can really use them to guide the user through logical sequences of actions. At the moment, they will simply display creation tools when no object is selected, and modification tools when something is selected. However, I plan to refine that when we see opportunities for it.
I also spent some time fixing a few issues in the IFC importer and exporter, and we begin to get a satisfying experience when exchanging models between Revit and FreeCAD. It is now possible to model in FreeCAD with a reliable 100% of your exported objects appearing correctly in Revit and being editable, by 1) using only extrusions (Part Extrude, Arch Structure or Arch Wall) and 2) Setting the IFC role of all exported objects to "Undefined", which will export them as IfcBuildingElementProxy, which imports into Revit as Generic Components. This is not mandatory, of course, all IFC types are supported, but the reason is that some other types have additional rules that sometimes override the way the object is stored inside the IFC file. To say it another way, if some object doesn't appear correctly in Revit, set its IFC role to "Undefined" in FreeCAD. Although not ideal (yet), at least it is reliable.
That's it for this month, I'm not listing here the small bugfixes and polishes I've been doing a bit everywhere, be sure to check the commit log of FreeCAD and the BIM workbench if you are interested in the details. Thanks for reading!
High time for a new article about what I've been doing this month with FreeCAD related to BIM development. Sorry for being late! This month again, there are not many new features, basically because 1) I've been to the Google Summer of Code mentors summit at Google, in San Francisco Bay Area, and 2) FreeCAD has entered "feature-freeze mode", that is, a special time scheduled before an official release, where everybody agrees to not introduce any new feature (which might always introduce new bugs), and instead, solve all possible bugs to make the release as bug-free as possible.
That is no less important, of course. Bug fixing is an important part of the development cycle, even if less enjoyable. Developers always prefer to code new stuff, which is far more exciting, and, as any other human being, tend to leave the boring stuff for later So it's good to have a time where we force ourselves to concentrate on bugs. Also, it makes it much more enjoyable and motivating when your friends are also busy fixing bugs, it turns the whole thing into a kind of game.
Once again, thanks a lot to all of you who contribute to this whole effort by sponsoring me on Patreon or Liberapay or who directly sent some bucks on my PayPal account. Sorry for leaving you probably hungry for new features this month, but I'm sure everybody understands the importance and necessity of this bug-fixing phase. Since the BIM workbench is not part of the FreeCAD code base, though, it is also not part of the feature freeze. So expect some new stuff there in the coming months anyway, as soon as I get the bulk of the bug-fixing effort done.
The plan is to have a new release of FreeCAD ready for the end of this year or early 2019, in time for the next Debian freeze cycle (they also have one, during which they don't accept any new package). This is important because if we get the new version of FreeCAD into Debian in time, it will cascade back on Ubuntu and all other derivative distributions such as Mint or Elementary, and all the next versions of these distributions will automatically get that new version.
This release will not bring a very big amount of new features, but rather be dedicated to stability. We've been busy this year with porting FreeCAD to the latest versions of Python (Python3) and Qt (Qt5). This makes FreeCAD basically future-proof for a reasonable time. Not that FreeCAD still supports Python2 and Qt4, so it can still safely be built on older platforms. We will probably continue to support these until they get really obsolete.
Another reason to make this release is that we have big things coming in. The new Assembly3 workbench is close to completion, but it represents a big change to the FreeCAD code, and introduces a lot of new bugs. However, while it is not merged into the main FreeCAD code, very few people actually test it, and therefore bugs are slow to get spotted. And the Assembly3 code is so huge that it has become very difficult to assess and split into more easily manageable parts. So we are pondering if it would not be best to merge it and let the bugs happen, and fix them as they come. In any case, for that, we need to have an official release just before, so people can stay with a stable version until things calm down.
By the way, if you haven't seen it, we now also have a third way to makes assemblies in FreeCAD, with a new plugin workbench called A2Plus which is now an official FreeCAD add-on](https://github.com/kbwbe/A2plus) that can be installed via the Addons Manager. So now we are starting to have a whole family of solutions to deal with assemblies in FreeCAD. Choose what suits you best!
This month's video is about producing 2D drawings from your model, and placing dimensions, hatches and annotations.
As I mentioned above, I've this year again attended the GSOC Mentors Meeting, which happened at Google headquarters in California. Since we participated to the GSOC program this year again, together with our FOSS CAD friends, we earned a couple of slots to go to California. This year, I went to represent FreeCAD, together with Sean Morrison and Daniel Rossberg from BRL-CAD.
The mentors summit is an incredible experience, unlike any other open-source-oriented event I've been lucky to go. A part of the Google campus is open during one weekend, to receive around 300 developers from the whole world. There is plenty to eat, drink, do and watch at any time of day and night, plenty of goodies for you to grab, and they provide several spaces for people to gather and discuss what they like. That's basically it. And it works amazingly. You end up talking a lot to everybody else, contacts are made, brains work, ideas are discussed, projects get born.
This year I had pretty long discussions with both Sean and Daniel, about two interesting subjects: Integration of FreeCAD and BRL-CAD, and a general effort to do more integration with all other FOSS CAD projects.
The BRL-CAD and FreeCAD integration is something we've been discussing with Sean for some time: BRL-CAD is in need of a better modelling interface, which FreeCAD can provide, and on the other hand the BRL-CAD system is a very powerful modelling engine, and it would only serve FreeCAD to make use of it. Besides, FreeCAD being so modular and extensible, we made an habit to try to plug anything we can into it..
We are still thinking as to how this integration would/could happen, but it would likely be on the form of an additional FreeCAD workbench/addon, a bit like the OpenSCAD workbench. BRL-CAD has a nice C++ API, to which Daniel is one of the main contributors, which is very likely what we would use. The aim would be first to be able to use FreeCAD to model and save the result as a BRL-CAD file, then see all we can get from this that could benefit FreeCAD. One of the big advantages of BRL-CAD is its capacity to manage extremely large models. And it can do all the important parts that we need in FreeCAD: Geometry calculations and triangulation.
The other idea is actually a series of ideas we have been discussing, to encourage the interaction between all the different FOSS CAD projects out there, such as LibreCAD, STEPcode,OpenSCAD, LinuxCNC ro Slic3r. There are many others specially in the BIM area (IfcOpenShell, IfcPlusPlus or BIMServer for example), that could be interested in this as well. Unlike the commercial world, where each similar application to yours is seen as a concurrent, that you should try to beat (or buy, or kill, or, even better, both), in the open-source world we can help each other, and help users with a family of tools that work well with each other. Each individual application benefits from this, as it integrates and can count on a more solid ecosystem.
Our ideas ranged from a common forum, structures to be able to collect and redistribute donations, definition and sponsoring of common projects, etc. There is much to be defined and done there yet, but we now have several people committed to make this happen. As soon as we have something ready, you'll be the first to know
Ah, as usual, there was an impressive table of chocolates that everybody brought from all corners of the world. I had also brought a load of FreeCAD stickers (very poor ones that I made at the last minute, will do a new batch of better quality ASAP) that got entirely distributed. Quite a lot of people know FreeCAD nowadays!
Besides this, I've also added another feature to the Arch Reference, which is the support for colors. When reading an object that has individual face colors defined, the Reference object will adopt those colors (and, if its UpdateColors property is set, will keep those in sync if the base file changes). The Arch BuildingPart has also be updated to store the colors of its children, so from now on you can create a whole BuildingPart made of several objects, reference it in another file, and have its aspect look exactly like in the referenced file.
I am already experimenting with the next step, which is to introduce a "lightweight" mode, which will allow us to work with way larger models. This will probably only be merged after the 0.18 release, but we'll make sure to have everything ready by then.
That's it for this month, expect more focus on the BIM workbench itself next month, thanks for reading, and thanks again to everybody who supports this effort!
Time for one more of our monthly posts about the development of BIM tools for FreeCAD. This month unfortunately, since I was taking some holiday, travelling (and sketching) for the biggest part of the month, I have less new stuff than usual to show. To compensate, I tried a longer and more detailed video. Looking back at it, I think this is a bit too long, though, so next time I'll get back to a shorter format.
As usual, many thanks to everybody who is backing me up on Patreon, Liberapay, or donated directly to my Paypal account, this is a really amazing experience, I hope you guys feel as thrilled as I do about the progresses we're doing here, each month we have a new layer of paint on the wall, and it begins to form a very solid and coherent compound. I sincerely think some parts of the job are now almost done (basically, BIM modelling itself) and already work as well or even better than many commercial BIM applications. What I am going to concentrate more and more on, in the next months, is the 2D output, ie. how to generate good quality drawings from our BIM models.
I have several threads to explore there, one being of course TechDraw, where we need to optimize things to be able to work with larger models, and integrate better the native TechDraw tools with BIM models, and another thread is the 3D view itself, in order to obtain a more "WYSIWYG" (What You See Is What You Get) workflow, that is, have the 3D view really give you good and useful 2D views of your model. Finally, see how we can tie both these threads. Our OpenInventor-based 3D view has several tools for offline rendering, that is, produce a "copy" of the 3D view that can be used for other purposes, such as saving an image. This could offer us a blind-fast way to generate 2D documents, and could be a very interesting path to explore too.
This month the video is a generic tutorial that shows how to get started with BIM modelling in FreeCAD:
I've also started working on the documentation of the BIM workbench. As you know, the main effort behind the BIM workbench is to offer a good user experience. This is therefore a very important point. There is still some work to do, but it is there already and usable. It is also something I wanted to do to advocate other Addon workbench developers to use the FreeCAD wiki to write their documentation. The new Start workbench, that has landed in FreeCAD last month, will display links to specific workbench pages on the wiki, so this would be very useful.
I also gathered all the development news articles I wrote so far on the github page of the BIM workbench, inside the "wiki" section. Some might find them easier to find and read there than on my blog...
The big, new feature that has landed this month in Arch (and therefore BIM) workbench is the new [External Reference] tool. It basically works like an Xref in AutoCAD, or File Link in Revit (I'm not sure how it's called in other apps...). To resume, it allows to include the contents of one file in another. If the contents of the first file change, what's included in the second file changes too.
Working with reference files has a lot of advantages: One person can work on a part of a model, while others can work on other parts, and everyone can keep working on a separate file. Or you can split big files into smaller, more manageable chunks.
In FreeCAD, it has also a big extra advantage: Like in most parametric modellers, having a lot of individual objects in your model document makes FreeCAD run significantly slower. The 3D view of FreeCAD is capable of rendering several millions of faces without much slowdown (yes we tested), and the OpenCasCade engine is actually very efficient at managing very complex geometry. The problem is the logic. Each new document object created inserts a load of relationships with other parts of FreeCAD, because there are many mechanisms that must run every time you touch an object. Often, these mechanisms need to scan all the objects of the model.
It is interesting to compare this with games. A couple of years ago, the biggest part of the CPU computing occuring when you were playing a modern, resource-intensive game, was to compute the 3D graphics. Now, in some recent games like Kingdom Come (my favourite of the moment), the Artificial Intelligence uses more computing power than the 3D rendering! This is because each character in the game has its own "program" running, all interacting with each other, creating exponentially long chains of computation. Basically the same happens in FreeCAD. Such is the price of parametricism, that you'll have to pay one day, mister Schumacher! (Architects joke, don't worry about it)
By using reference files (I'm not sure the name is really good... Any other idea?) in FreeCAD, you can include the whole content of one file (several objects) as one object in the host file. This reduces dramatically computing time, and allow us to work with increasingly bigger models.
When you create a reference object, you give it a path to another FreeCAD file, then you can choose one of the included shape-based objects inside the file. The implementation is very simple: The Reference object doesn't open the included file. It just unzips the stored brep data of the object you specified. Any object with a shapecan be included, including, and that's the interesting point, BuildingParts. As I explained last month, internally, the BuildingPart always keeps a shape that is a compound of all the shapes of its children. Compound shapes in FreeCAD are very cheap and fast to produce (no boolean operation involved). So you can group anything you want, a whole storey, a whole building, etc... inside a BuildingPart, then include that BuildingPart as one single object inside another model.
The referenced object is a fully valid shape object, that you can move, rotate, duplicate, clone, project in 2D, and snap to it like any other. At the moment, it will be exported to IFC as one monolithic IfcBuildingElementProxy object, that's something to work further on in the future.
If you follow FreeCAD's latest developments, you might be asking yourself why this was not based on Realthunder's Assembly3 branch, which provides about the same functionality? There are a couple of reasons to that, basically because I wanted to try a very simple implementation, while his is rather complex, and also the aim is different: The Assemby3 functionality aims at pretty complex models, with not so much geometry, but with complex hierarchies and relationships. In BIM, we are aiming at very large models with very little or no relationships at all between the included parts. In any case it can certainly be interesting to have both approaches in FreeCAD.
Further immediate development will be the retrieval of colors. At the moment only the shape of included objects is gathered by the reference tool, we need to make the BuildingPart store not only the shapes of its children, but also the face colors, like the Part Compound does. Then we can read that as well when we include an object from another file.
Next, I'll also add an option to have the BuildingPart also store an OpenInventor representation. This will allow us to load only that representation from the included file, not the shape itself. This "lightweight include" would give blind-fast imports, and would have virtually no limit in terms of model complexity. There are a couple of caveats to solve, that I already experimented with the "Hi-Res" mode of Arch objects (snapping and selecting and everything else based on element names doesn't work correctly), which is something realthunder has been able to solve much better in his branch, but there is no reason to not be able to make it work.
Finally, Sliptonic, a long time FreeCAD developer and main brain behind the Path workbench, has written a new FreeCAD e-book called FreeCAD for Inventors. It is available for purchase on Amazon and Kobo. It uses the same basic structure of the FreeCAD manual, that is, a general walk through the different parts and workbenches of FreeCAD, with a series of pretty interesting exercises. Sliptonic has also paid close attention to the usual requests and difficulties reported by newcomers to FreeCAD, and tries to address them in the book. Definitely a very good entry path into FreeCAD, if you are new to it.
That's it for this month, next month I'll attend the Google Summer of Code Mentors summit in San Francisco (and spend a couple of days in Mexico City on the way back). I'll be sure to dutifully report here.
One month passes bloody fast, doesn't it? So here we are again, for one more report about what I've been coding this month in FreeCAD. Looking at the text below (I'm writing this intro after I wrote the contents) I think we actually have an interesting set of new features.
None of this open-source BIM journey would be possible without the help of everybody who contributes to my Patreon or Liberapay campaigns, and therefore allow me to spend a good amount of working hours per month on FreeCAD. Thanks a million to all of you, it is really making a difference for FreeCAD, we're well on our way to a good, open-source BIM application.
The house illustrated in this post is a famous house built by architect Vilanova Artigas in São Paulo and was modelled by Wilson Melo.
So let's have a look at this month's features, but first, here goes our monthly video:
In FreeCAD, like in most other BIM applications, many 3D objects are based on 2D objects: Walls are based on a line, columns and beams on a 2D profile, etc. In most cases, you are not forced to draw that 2D object yourself: You can draw a wall directly in the 3D view, or you can place a structural component by selecting a preset profile from a list. However, all these objects can also be made from a custom 2D object that you draw yourself. There are many ways to do that in FreeCAD, this video will give you a quick overview of the available options.
As announced last month, we are reaching the first goal I have defined on Patreon, which is, a place where we can discuss BIM ideas and features to be implemented in FreeCAD, and you guys can vote for them, and I would do my best to implement the most voted ones. I had a look at the different (open-source and not) solutions available to do that efficiently, but unfortunately the results of this search are not very good. Most "feature voting" applications are very old and unmaintained, or require a heavy web infrastructure to be put in place, and you will certainly agree that our time should be spent better than in maintaining heavy web infrastructures just for that purpose...
So I thought, why not simply use the Github issues system? It is possible to vote there, submit new ideas, etc. Most open-source projects hosted on Github use it. It might not be the ideal (given the fact that Github is now owned by Microsoft, etc..) but at least it's easy to use, anybody can add new ideas, vote for existing issues (give it a "thumbs up", etc.
I am starting to put some ideas on the BIM workbench Github page, have a look there under the "issues" tab, I'll add more in the coming weeks. Don't hesitate to add your own ideas there, or comment as much as you like on the existing ones.
I discovered a small but bright IFC trick recently that might not be "proper" IFC behaviour, but that is definitely improving our FreeCAD workflow a lot: Groups, in IFC, are handled by an object called IfcGroup. However, groups are not really part of the standard way to use IFC, which is to use spatial structures (Buildings, Storeys, Spaces, etc..). As far as I could see, they are just offered as an additional way to create relationships between objects, if anyone really wants to. You will rarely see an IFC file that contains groups. Revit and ArchiCAD, although both offer the functionality, don't use groups much.
In FreeCAD, however, groups are a very important feature. All the objects of your model are appearing in the tree view, so it is very important to organize them. Grouping is an extremely powerful way to organize your model, and, unlike other methods such as using storeys or layers, it is completely free from any "meaning". You, the user, decide how you want to organize your model. Will you group all your walls under a "Walls" group? will you make sub-groups for different types of walls? Will you not use the materials system at all, and instead group all your objects by material? The model is yours, the choice is yours. Also, every project is different, it makes little sense to force users into one kind of arrangement. An office tower model should definitely not be organized the same way as a house.
In FreeCAD, you can mix everything together: Have groups inside levels (which are now handled by the BuildingPart object), levels inside groups, groups of buildings, anything your wild imagination (or very concrete requirements) dictates. But this was all lost when exporting to IFC.
Now I discovered that IfcGroups are actually derived from the same base entity as other IFC grouping features such as Storeys or Buildings, and, as such, they share some functionality. More important, it is possible to stack groups as part of these other entity types.
So from now on, you can export your wild model structure to IFC, re-import it, it will come back exactly as it was. Most of our BIM competing applications might still not be able to cope with such a complex model structure, poor them, but hopefully they will do their homework at some point.
Forgive me for the quite exaggerated last sentence, but I couldn't resist
Another IFC feature I've implemented in the last month, is support for IfcElementAssembly, which is the standard IFC way to define an element made of several other building elements. For example a truss system, or a bathroom unit. It is a bit like grouping, with the difference that the assembly is not just a group but a real, physical, manipulable object.
In FreeCAD, any BIM object can be an assembly of any kind of geometry or other BIM objects. You just need to add them to its "Additions" property. However, until now, if the host object was a wall, it will be exported as a wall.
Now, if you change the Ifc Role of any BIM object to Element Assembly, it will be exported as such. But even better, BuildingParts will also be exported as IfcElementAssembly when its Ifc Role is set as such. And it is much easier to add objects to a BuildingPart, as you can drag/drop objects into it in the tree view, and is a much more "intuitive" way to construct an assembly.
When importing an IFC file containing IfcElementAssembly entities, they will be rendered as a BuildingPart, so all their components will be available and manipulable.
On our way to a full roundtrippable IFC <-> FreeCAD workflow!
Finally we now have preliminary support for quantities. I say preliminary, although it works well already, because I'm still not sure about the future direction of this.
Basically, the IFC format supports defining objects by quantities. Together with the geometry of an object, for example a wall, you can also attach quantities to it, for example a height value of 3 meters, or a thickness value of 20 cm. This is all arbitrary, you can decide yourself what name you will give to these quantities (it it "thickness" or "width"? "largeur" maybe? or "??"?) and, even more problematic, you can make them lie (the "thickness" value you give is not the same thickness as the geometry you provide).
So it is complicated to trust these values. However, the point is not there. The idea is that an application that doesn't have geometry support, for example a spreadsheet application, would be able to open an IFC file and build a list of quantities of all the elements in the file, without the need to have very complex geometry tools to extract that information from the geometry.
The idea is brilliant of course. Imagine "opening" your IFC model in Excel?
So here is how it works in FreeCAD now. The IFC Elements Manager (sorry, the documentation is not there yet at the time of writing, will work on it in the coming days) of the BIM workbench now has gained a new tab that shows available quantities for BIM objects. So far, I only considered objects that had standard, universally recognizable quantities such as width or length. This will be developed further along the way.
For any of them, you can now mark if you want those quantities to be exported to IFC. That screen will also show a warning sign when such a value is zero, which probably indicate a problem somewhere that you should look at before exporting.
These quantities are then exported to IFC and attached to the corresponding object. When reading back an IFC file, the quantities are not read, as we prefer to get them from the geometry, which is more trustworthy. In the future, we could think of comparing what the geometry says with the given quantities (FreeCAD as a lie detector for IFC files?), but I can't think of much use for that.
I had been busy with this for some time, and it's finally ready. The old start page, which appeared when you opened FreeCAD, was something a bit clumsy and not very usable nor interesting. Now we have something that is much more useful, both for newcomers and experienced users. There are three tabs, one for your files, one for documentation, and one to have a quick peek at the recent activity in the FreeCAD world (latest changes to the source code and latest posts on the forum), which is a feature many users liked in the previous version.
All of this is customizable, translatable and themable, and you can even replace the start page by any HTML file of your own. That can be useful for example in companies or schools so they can display additional content.
There is also a "notes" area, that you can enable in the Start preferences, where you can write text that is saved across FreeCAD sessions. This could be useful as a kind of "FreeCAD to-do list".
There are still some small hiccups depending on the platform, but we'll address them on the way. Don't be scared about the colors in the images above, I adapted the start page colors to my desktop theme (you can do that in Edit->Preferences->Start), but by default it looks like this:
This was not done by me but by FreeCAD user AR795, with the help of many others, bu have you seen the gorgeous new FreeCAD website? Next we'll adapt the rest of the FreeCAD web universe (wiki, etc..) to the same aspect.
Until now, the BIM workbench featured, among its 3D tools, the standard Part Box tool. Using boxes is very practical in BIM, more than half of the geometry we create is usually made of these rectangular shapes, and the Part Box is a very simple and versatile tool that has 101 utilities. The way it is created, however, is often annoying: A 10mm x 10mm x 10mm box appears at the origin point when pressing the button, which requires several additional operations to move it to the correct location and set its length, width and height dimensions. Most of the time I was using a Draft Rectangle that I then extruded, which was faster.
Now I rescued an existing macro and turned it into a full new BIM Box command (sorry, no doc yet) command, that still creates a Part Box, but graphically in the 3D view. You give two points to define the base line (length), a third point to define the width, and a fourth to define the height. You can also enter length, width and height manually in the Task panel, but you still need to click the two first points to define the position and orientation of your box.
These boxes can be used as walls (just press the wall button with one selected), beams, columns or any other BIM object, or as a subtraction to any of them (select the box, CTRL+ select the host object, press the Remove button).
The Section Plane tool has also gained a series of improvements. First, when you create one, if you have objects selected, for example a building, the section plane will automatically be placed at the center point of the building and resized to encompass it.
Then, by double-clicking the section plane to enter its edit mode, you now have several controls to flip it in other directions and resize it to fit. So it is now much easier and faster to create multiple views and sections.
With Wandererfan, we are working on having proper support for Section Planes in TechDraw, which is the FreeCAD workbench used to produce ready-to-print sheets. At the moment, you must still use the TechDraw ArchView tool, which is the only one that supports Section Planes. However, that tool has many limitations, because it produces its view through SVG, and therefore looses many of the TechDraw features such as the ability to add hatches and dimensions.
But while proper support is not ready, I already experimented with caching. The contents of the TechDraw ArchView is now cached, and only recalculated if the objects seen by the section plane change. So you can now move, rescale, change thicknesses, etc... of ArchViews without redoing the heavyweight calculations, which makes it much faster.
This seems to work pretty well, so that might be a good idea to implement further in TechDraw later on.
Finally, I built this little macro the other day that builds a whole Site object out of a series of contour lines, that you can for example import from a DXF file. Your contour lines can be organized in any way you want, grouped in different layers, and don't need to be connected into wires (they can be a series of simple lines). The macro solves it all.
Internally, it breaks everything into separate edges, re-joins everything into wires, turns the wires into b-splines, sorts them by elevation, then builds ruled surfaces between the contours, then builds a shell object out of the surfaces. Finally, that shell is used as the Terrain property of a site.
There will be many situations where it won't work correctly (for example the sorting by elevation will produce wrong results if there is more than one contour with a certain elevation), which we can adjust later on, until it is good enough to become a real FreeCAD tool.
But the results are quite good already, and of a much better quality than the point cloud-based method I used some time ago. Plus, it is easily editable by editing the b-splines.
That's it for this month, see you in September!