BIM Module addition ideas

Here's the place for discussion related to coding in FreeCAD, C++ or Python. Design, interfaces and structures.
kemeniru
Posts: 65
Joined: Sat Feb 05, 2011 1:53 pm
Location: Parkville, MD, USA

BIM Module addition ideas

Postby kemeniru » Sun Feb 13, 2011 9:41 pm

Hello Yorik and all others working on the BIM module:

I have just started working on the module and as a take-off point I am adding and updating information on the Parametric Building Ideas page. Here is a modification to the second section (bullet paragraph). My ideas precede walls so I figure to start there. I meant to insert the following text in the page but want to run it here first so I am sure it is in context.

Building Information Modeling (BIM) is a concept that had its origins in a concept called Building Product Model that was used frequently in academia but made popular as BIM by design software vendors, especially Autodesk. It means the generation and management of building data throughout its life cycle. BIM as is currently implemented in available tools is limited. It does not take into consideration the fundamental issue of building design which is the creation of spaces and the relationships between them. This information, which is embedded in a sketch, is totally ignored by current available tools which focus on modeling walls and other graphic components. A system that is unaware of the reason why components are being created will provide less support or assistance in the creation, manipulation and visualization of such components.

Building information or knowledge can be represented as containers. A container can be described as an area that has boundaries in which something is contained or secluded. The area within the container can be filled with a type of material or it can provide an environment in which an activity can happen. The boundaries of containers are themselves containers (forms) containing some characteristic. This is necessary to make the containment or seclusion possible for different uses or situations. See the object diagram below for a more detailed description of the possible objects and relationships involved in describing the knowledge in a building. There is a special side called share which makes it possible for spaces that share boundaries to communicate.

Image

The building site is the overall container with setbacks and building levels. The levels in turn contain the building systems one of which is the architecture specific container called building spaces. The architect configures spaces using object spaces (fixtures, furniture, etc.) and of course forms. When containers are created initially their boundaries should be depicted as single line graphic elements but become archeTypes (walls, ceilings, floors, etc.), when their parameters are clearer. This transition (from boundary containers to archeTypes) should be done through parametric modeling.

Kene
Last edited by kemeniru on Mon Feb 28, 2011 3:12 am, edited 1 time in total.
Kene
Guest

Re: BIM Module addition ideas

Postby Guest » Tue Feb 15, 2011 4:20 pm

Eh.. OK. Silence is not good but I totally understand. It may sound too experimental for now but it has been done with what I consider dumber language (POVRay SDL) so I have much hope for python. I will forge ahead privately and hopefully merge with the main development later.

In my review of tasks from the parametric building ideas page there were a couple of things I saw that could be solved if the BIM module began with an overview of the objects like I have suggested. For example this comment suggests the need to build a relationship between the components
For example a wall is nothing else than a simple extrusion, but it must connect to other walls, or take a hole when a window is inserted into it. How to build that relationship model and how/where to store it is the big problem.
Perhaps an overview is already existing. I apologise if this is the case and please somebody point me to the right direction.

Also, to help build relationships, it is important to establish an orientation object (better due to inheritance) or methodology. There is a need for all components to know their orientation in the model. If this is so then it will be possible for "walls" to connect cleanly with each other. I have done this in POVRay and considering that python is an object-oriented environment I have confidence that it should be possible too. Assuming this is not accomplished yet, I will happy to pass on my documentation for implementing it in POVRay.

Kene
User avatar
jriegel
Site Admin
Posts: 3369
Joined: Sun Feb 15, 2009 5:29 pm
Location: Ulm, Germany
Contact:

Re: BIM Module addition ideas

Postby jriegel » Wed Feb 16, 2011 12:27 pm

Hi,
sorry for not answering. The main developers are busy at the moment to crank out the 0.11 release. Especially yorik which
is in charge for the BIM.

Its interesting you think already in a data model (seldom seen nowadays). But I think the discussion
at the moment is to use the IFC data model, which is a extension of the STEP ISO standard.
I think yoriks plan for the Arch module is to provide FreeCAD features for the entries in the IFC
data model. The work is mainly in the Arch module:

http://free-cad.svn.sourceforge.net/vie ... /Mod/Arch/
Stop whining - start coding!
kemeniru
Posts: 65
Joined: Sat Feb 05, 2011 1:53 pm
Location: Parkville, MD, USA

Re: BIM Module addition ideas

Postby kemeniru » Wed Feb 16, 2011 1:36 pm

Yeah I am glad Yorik is working towards using the IFC model but my ideas are towards implementation not storage.

I read a couple of posts and kinda figured you guys are busy now. In any case I will always post any progress I make here so hopefully Yorik will know and comment on my effort. Also thanks for the link. It will come in useful when I start coding.

Kene
Kene
User avatar
yorik
Site Admin
Posts: 11458
Joined: Tue Feb 17, 2009 9:16 pm
Location: São Paulo, Brazil
Contact:

Re: BIM Module addition ideas

Postby yorik » Tue Feb 22, 2011 2:33 pm

Oh sorry, I didn't see this thread... (Sometimes you miss stuff with phpBB boards...)
Great to see your ideas. But beware, though, that the conceptual part of all this is beginning to become huge,
and at the moment there is only me coding something... I'm actually much more worried about how I will
manage to intersect objects cleanly while keeping them separated objects, than the whole "organization"...

Sorry, this sounds probably a bit feet-on-the-ground, but practical problems begin to appear already :geek:

Anyway, keep posting, it's always good to discuss the theoretical aspects. About the whole BIM concept, I
have very mixed feelings. The more I discover the IFC format I think it contains a lot of bullshit... They
present it like the new architecture concept for the 22th century, but it actually looks more of a derivate
of some autodesk format than anything else. It contains only very basic and dumb relationships between
elements, a lot of things are duplicate information (for example a wall has a line describing its "centerline",
another giving its width, and a third one which is a 4-point polyline descibing its footprint, absolutely
independent of the former lines. So what if the width information doesn't correspond to the polyline?
And until now I couldn't find anything that would allow walls like these:

Image

Image

These are projects of Zaha Hadid, built, contemporary, and pretty much the kind of stuff
I would want to do with a BIM software. That is, be able to describe, thoroughly and precisely,
these concrete elements, with all their details, and have them treated as walls, not "dumb"
solid geometry.
So I think IFC will need to be considered as a mere exchange medium, and definitely not a base.
The embryo of wall that is in the Arch module now already has more capabilities, you can make it
on top of an "axis" line or wire (the traditional way), or on top of a face, or even on top of a solid.
You can also add and subtract shapes to/from them, and now I'm working on make them intersect
gracefully.

Talking about that, here goes a question for Jürgen and/or Werner, maybe you'll have more ideas than me:

The problem: how to make 2 walls intersect and appear as if they were one? like this:

Image

The difficulty is of course to keep both walls independents (it would be problematic later to treat several walls of a
house as one. They must stay separated). The shapes are easy to generate (one for wall 1 and one for wall 2 subtracting wall 1)
The problem is with the edges. How to decide which edges must be shown and which not? Until now I couldn't
find a good idea... Not only some edges must be turned off, but other edges must even be cut...

Probably I'll need to implement a whole special calculation mechanism, but maybe you guys would have some good blessing idea ;)

*EDIT* Another interesting approach would be to not care at all about that in the 3D model itself, but simply solve everything at
the time of putting things on a Drawing sheet... Much, much easier :)
kemeniru
Posts: 65
Joined: Sat Feb 05, 2011 1:53 pm
Location: Parkville, MD, USA

Re: BIM Module addition ideas

Postby kemeniru » Tue Feb 22, 2011 3:50 pm

Hey Yorik:

I must say that I am glad you are trained in architecture. The future of FreeCAD in architecture is really exciting.

OK. My feeling is that the sooner you think of the whole picture the easier you will be able to sort the details more effectively. If you come to a solution without understanding the full picture (or concept) you will probably hit bottle-necks. But again I have limited practical experience with coding, especially with Python.

I am still grappling with my heavy teaching load this semester but hang in there. I am itching to join you fully and will do so by middle to late May :(. Once I am in the process it will be much easier to work all the time. So you will not be alone for too long.

You are totally right. IFC format should be for exchange purposes only. That format will probably change when the AEC/FM starts becoming more integrated. I am going for a conference in two weeks and I already see a paper that is suggesting just that i.e. that the IFC needs an update (additional schemas) to better help capture design information.

With the walls you posted this is how I was going to solve that type of situation with Kobldes. First of all my implementation is based on creating spaces with walls as a configuration issue. The walls are like the boundaries to the space, you add more boundaries when you need them. The user can define the angle and length for the boundaries but when it comes to the form of the boundary, the user can either leave the forms as linear, curved or complex. For complex, they can go into a special environment that allows them to define the complex form. A complex form is basically one that has a combination of linear and curved forms in a 3D space. Only cross sections and path can be defined but mutlple definitions can be used at points along an already defined path. Once defined, it becomes the guide for the space to describe that boundary. Boundaries are of 3 types: sides (wall), bottom (floor) and top (ceiling) this means that a wall must end at the point it meets the ceiling and also at the point where it meets the floor. However they can be designed to meet so that the curve is maintained like in your picture. I did not get a working code but I was coming along nicely until I saw FreeCAD. FreeCAD is important because of the interactive environment and of course many other things like exporting to DXF, etc.

I am not sure if this will help but what I am really saying is maybe not to try to allow the creation of a complex object all at once by the user. But to allow the user to define the separate parts which are then brought together and managed by another object (container object). This way, the container object manages the drawing of the outlines (only drawing where there are intersections for example), etc.

I think it is important to show the intersections correctly in the 3D so that you are not surprised with the extracted data for the sheets.

Concerning missing posts, I was wondering if there is a way to call someone's attention to your post (within the active developers)?

Also, I just want to say that the object diagram I posted in my prior message is not showing because I brought my site down due to hosting issues. Is there anyway to modify the address or perhaps post it again? Just wondering. Next time I will just upload to here.
Kene
User avatar
yorik
Site Admin
Posts: 11458
Joined: Tue Feb 17, 2009 9:16 pm
Location: São Paulo, Brazil
Contact:

Re: BIM Module addition ideas

Postby yorik » Tue Feb 22, 2011 5:17 pm

If that diagram serves the purpose, you can also add it to the wiki and then link it here...
kemeniru
Posts: 65
Joined: Sat Feb 05, 2011 1:53 pm
Location: Parkville, MD, USA

Re: BIM Module addition ideas

Postby kemeniru » Tue Feb 22, 2011 5:40 pm

OK. I will transfer my notes to another page or section in the Parametric Building Ideas page soon.
Kene
wmayer
Site Admin
Posts: 14604
Joined: Thu Feb 19, 2009 10:32 am

Re: BIM Module addition ideas

Postby wmayer » Wed Feb 23, 2011 8:47 am

The problem: how to make 2 walls intersect and appear as if they were one? like this:
Maybe it can be done this way:
1. First identify all edges that can actually be removed. These are all edges that are shared by exactly two faces and the underlying geometry are planes with the same normal direction.
2. To recreate the shape I guess the BRepTools_ReShape class can be used for this. However, I don't know exactly how to use this class.
User avatar
yorik
Site Admin
Posts: 11458
Joined: Tue Feb 17, 2009 9:16 pm
Location: São Paulo, Brazil
Contact:

Re: BIM Module addition ideas

Postby yorik » Wed Feb 23, 2011 2:20 pm

Hmm very good idea. Indeed if I fuse the 2 shapes, then it's easy to know which edges to remove. I could then recreate the edges inside the coin representation manually... Now I just need to sort which edge belongs to which "original" shape, but that's already a much easier problem to solve.
Now I'll have a look at how BRepTools_ReShape works. Thanks for the input!