BIM for SketchUp - again?
-
Translating data in theory is easy enough. It depends on the amount of the data, how well the standards are documented, and how easy it is to format the data. The more complex it is the more likely it is to create problems.
Even translating dwg data between different packages is not always 100% consistent. Sure the lines work, but things like viewports, dimensions, symbols and attributes (particularly when these two are linked) are more complex and don't always translate neatly.
The point about BIM is that you need confidence in the validity/consistency of your data after translation. The true benefits of BIM can only be realised if the whole design team make use of it. If one wants to use this type software in a meaningful and flexible way, it needs compatibility with as many other apps as possible.
Only IFC will do this with 3d data. What other open BIM formats are there?
-
I'm very exited about the possibility to "sketch" BIM in SU and export it to Revit (which is our companys software of choice for the future).
For me the most important feature is a working exporter so we can start using what's been done already and find what features we "really" need.
Haven't seen any exporter yet though... -
@pbacot said:
For my own purposes and I think for many users, the front-end promises of BIM will be more important:
- Parametric or systematic creations of building elements (walls, floors, foundations etc.) that can be modified later based on intrinsic qualities of each.
- Placement of elements (windows doors equipment) based on defaults that make sense for those elements. Ease in revisions for these.
Agree with this. I don't need parametric components, push/pulling will do for me, as long as the modified objects retain their 'intelligent' properties.
@pbacot said:
- Ability to work in plan view, adding or editing elements and have automatic model updates.
- Schedules for rooms, doors, windows,and equipment. Hot linked details. Automated notation systems.
- Generation of structural elements inside model based on designated assemblies.
I wouldn't personally do schedules in SU. It's not good enough for 2d documentation. Your CAD application is better for this, and should already have competent scheduling and reporting tools. Also - why would you want to work in 2d views in SketchUp? It kinds of defeats the object
@pbacot said:
I am less concerned with the high-end details for "real" buildings (skyscrapers, museums etc.) than some features close to Chief Architect, for example. I don't need to make take-offs or maintenance schedules, or show all piping and wiring for the types of projects I do. I know this is important in large projects and in some cases the architect or designer must do more of this. I think it is true of most of the US, architects don't provide a bill of materials. That's the contractors' job. And few contractors in our milieu even use CAD. I understand it is different in Europe.
Actually SU is currently fundamentally unsuited to being a fully developed BIM app. It simply can't handle a massive polygon count. It's essentially a design & modelling application and that's where its real strengths lie. The main BIM apps just don't have SketchUp's ease of use and flexibility for 3d modelling, but are good at 2d drawing, scheduling and reporting.
Making it a high end BIM app is misguided in my opinion. I would just settle for the ability to model the basic structure/layout in SketchUp, and transfer it to a true BIM app for 2d drawings and reporting once the basic design is done.
In the UK at least architects produce schedules, but don't do take-offs. We have a whole profession devoted to cost management in construction. Quantity Surveyors are responsible of Bills of Quantities and Cost-planning. During construction they are responsible for financial management of the contract.
Contractors and subcontractors are starting to use BIM more and more for larger or more complex projects. This is certainly the case with my Β£20m school.
-
@unknownuser said:
Also - why would you want to work in 2d views in SketchUp? It kinds of defeats the object
IDK. Seems obvious to me. If I am working on a model for a house, for example, I would rather plug in windows in plan where the horizontal dimension and relationships are critical. The default is already set for window height, the types of windows are easily chosen etc. Why fiddle with this in 3d? I've seen others do this in Chief Architect. They also just pick parameters for a roof, siding etc. It's all there when they go 3d.
I wouldn't expect schedules to be created inside the SU drawing. That would have to be Excel or some other program linked to reports from SU.
As for my CAD, it sounds like you are saying that should be my BIM. I don't have Revit and probably never will. I am just discussing the interest here in BIM for SU, not other programs. I have a pretty good working setup otherwise, between 2d CAD and SU. I am addressing the previous question, and saying that I think for many people the ease in creating "smart" building models is the first desire, but it will probably be more complex than that.
@unknownuser said:
Making it a high end BIM app is misguided in my opinion.
I agree. Different tools for different tasks. But something is happening in the plugin level and it could lead to third party integration. I wouldn't anticipate the basic program changing, except higher poly count. (I hope!)
-
@pbacot said:
IDK. Seems obvious to me. If I am working on a model for a house, for example, I would rather plug in windows in plan where the horizontal dimension and relationships are critical. The default is already set for window height, the types of windows are easily chosen etc. Why fiddle with this in 3d? I've seen others do this in Chief Architect. They also just pick parameters for a roof, siding etc. It's all there when they go 3d.
Surely not? You have to switch to whatever storey you need to modify, hide the rest and switch to a plan view. It's got to be faster to position in 3d with the right inferencing. The 2d multiple view way of working is old-fashioned to me. It's one of the reasons a lot of us love SU, everything is 3d, you seldom use the 2d views.
@pbacot said:
As for my CAD, it sounds like you are saying that should be my BIM. I don't have Revit and probably never will. I am just discussing the interest here in BIM for SU, not other programs. I have a pretty good working setup otherwise, between 2d CAD and SU. I am addressing the previous question, and saying that I think for many people the ease in creating "smart" building models is the first desire, but it will probably be more complex than that.
Yup, that's exactly what I'm saying. I think that making SU the BIM tool (as opposed to adding BIM-friendly features to enable it to work effectively with the existing BIM apps) would be extraordinarily complicated, time-consuming and expensive. Way too much for one or two guys. This would be a Linux-like community coding effort!
-
I think SketchUp is at its most powerful in the design process when the building is still simply a hollow shell. No thickness in walls and all openings as self-cutting-components.
The best addition to basic SketchUp for me I think, would be "thick-faces". This would make parametric elements a whole lot easier to make, and in the process exporting to meaningful building parts. The greatest difficulty lies in how these faces connect...
Making building parts in that way could be
- draw a building as a hollow shell.
- Select faces that need thickness, and start the "thick-faces" function.
- Label the thick elements "wall" or "floor"(and holes as window/door).
- Export to IFC(or maybe even better, sync with bimserver.org)
Wouldn't this workflow be really SketchUp like?
This is how I'm trying to build the next version of my bim-tools plugin. I've got something basic working, but it will still be a hell-of-a-lot-of-work to make it fully functional
Topic: http://forums.sketchucation.com/viewtopic.php?t=34007I also think IFC really is the key! Although it does have it's weaknesses, I think it's the only really open and interchangeable solution we've got.
Cheers!
Jan -
@bigstick said:
Recently I have experienced an interesting situation which gives me reason to hope (again) that someone will implement a BIM framework for SketchUp using IFC.
I've been thinking on this BIM-framework.
The most simple(simple to implement, simple to agree on to get to a sketchup wide standard) way for cross-plugin usage of BIM data would just be to use Attributes to label SketchUp-objects in a uniform way. This uniform way should lie as close as possible to the official IFC notation.By example:
you could give every BIM object an AttributeLibrary called "ifc". And then fill it with IFC properties.
The AttributeLibrary for the bim-project(Sketchup.active_model) could get all properties as officially available in the IFC specs http://buildingsmart-tech.org/ifc/IFC2x4/alpha/html/ifckernel/lexical/ifcproject.htmAttributeLibrary "ifc" for Sketchup.active_model could contain:
- IfcProject_GlobalId = Globally unique id number for the project(even after exporting en importing)
- IfcProject_Name = Test Project name
- IfcProject_Description = Test Project description
http://buildingsmart-tech.org/ifc/IFC2x4/beta1/html/ifcsharedbldgelements/lexical/ifcwallstandardcase.htm
AttributeLibrary "ifc" for a wall group(or component) could contain something like:- IfcWallStandardCase_Name = Wall name
- IfcWallStandardCase_Description = Wall description
- IfcWallStandardCase_IfcQuantityLength_width = 300.mm
Every BIM-plugin can then add and read possible labels according to the agreed standard.
Please comment....
-
I think the 'thick faces' approach sounds great!
There are a number of ways you could create them though. Tools which specifically create the wall and slab objects would automatically set up the relevant tags/labels sound to me to be the most efficient solution.
However - ultimately there may be more complex wall types to build though. Angled, curved, stepped, tapering walls are all not that unusual. It may be that the 'thick faces' approach won't quite work with stepped, angled or tapering walls. If you could maybe allow each wall to be created in native SU geometry, and made into a group and tagged with an attribute, it gives you the benefit of modelling however you want, with flexibility to do pretty much what you want.
If you extended the attribute tagging principle and defined an open schema, any of the plugin authors here could build an integrated set of tools for all sorts of BIM elements, based on some of the plugins that they already have. A true community approach!
Someone would need to create an IFC export script though.
I have just checked out bimserver, sounds great! Would it work with large/complex models?
-
@bigstick said:
I think the 'thick faces' approach sounds great!
There are a number of ways you could create them though. Tools which specifically create the wall and slab objects would automatically set up the relevant tags/labels sound to me to be the most efficient solution.
However - ultimately there may be more complex wall types to build though. Angled, curved, stepped, tapering walls are all not that unusual. It may be that the 'thick faces' approach won't quite work with stepped, angled or tapering walls. If you could maybe allow each wall to be created in native SU geometry, and made into a group and tagged with an attribute, it gives you the benefit of modelling however you want, with flexibility to do pretty much what you want.
You are right, for new geometry a button "create wall" would be best, that could create the geometry AND add the labels. But the reason I think the approach of selecting faces would also be great is with complex shapes and for upgrading an existing design to BIM. Check the example image(made with my demo plugin, still need to solve corners)
@bigstick said:
If you extended the attribute tagging principle and defined an open schema, any of the plugin authors here could build an integrated set of tools for all sorts of BIM elements, based on some of the plugins that they already have. A true community approach!
I would like that very much! Some opinions from other plugin developers or IFC experts would come in handy!
@bigstick said:
Someone would need to create an IFC export script though.
I'm also working on that, the previous version of my plugin DOES IFC export, but it only makes walls and windows.
For the future version I would like to work together with http://ifcopenshell.org/, if that works we don't have to build the full IFC framework in sketchup/ruby but just the translation to SketchUp! And even better, all contributions to that project would also be usable in blender and the like!@bigstick said:
I have just checked out bimserver, sounds great! Would it work with large/complex models?
bimserver.org is a great project! I think it does work on large models because the principle is simple, as far as I understand it.
-
To make separate 'solid' 3d sides look at the shell tools by Jim and Thomthom [also Fredo's JointPP].
You'll get the two 'shells'.
Then you find all of the vertices of one and find the nearest corresponding vertex of the other Draw edges between them and add faces to the internal partitions.
[JointPP can do this for you with appropriate settings].
Then separate out each pair of faces and their edges as '3d facet - distorted cuboids' - each in their own groups/instances...
Erase the original geometry. -
@tig said:
To make separate 'solid' 3d sides look at the shell tools by Jim and Thomthom [also Fredo's JointPP].
Thanks! I'll check them out.
The way I'm building it right now(even the parts in the image are no push-pulls)is:
Get the plane of the "base"-face, offset this to bottom and top, calculate a perpendicular plane for every edge(and I need to improve this to "half the angle" between this and the connecting face). Then intersect the planes and create vertices(and faces) on the intersection points. That way I think I can generate the entire geometry in one go.What do you think? (I hope my ramblings make sense )
-
JointPushPull copes with adding thickness to a 'shell'. It can also copes with adding internal partitions ['sides'].
You just need a way to extract the 'parts'...
Good luck -
brewsky and others
Based on your comments, there are two possible pathways:
BIM as in: be able to attach BIM properties and parameters to an entity. That's it, these parameters do not influence the entity when changed.
BIM as in: when changing IFC parameters/properties teh entity is changed accordingly, even more, when adjectent entities are influenced they also change if needed (bit like Revit)As you can see, the first option is easy, but what is the added value?
brewsky, can you pm me your contact info, I'm located in Belgium, maybe we can have a chat.
-
@pout said:
Based on your comments, there are two possible pathways:
BIM as in: be able to attach BIM properties and parameters to an entity. That's it, these parameters do not influence the entity when changed.
BIM as in: when changing IFC parameters/properties teh entity is changed accordingly, even more, when adjectent entities are influenced they also change if needed (bit like Revit)I agree, the more information you've got, the more usable it becomes...
This goes for every bim-plugin, but also for a basic common framework...But even if you just have 4 labels; "width=100", "length=6000", "height=3000", ifctype="IfcWallStandardcase" AND the default sketchup information of a group/component; "placement point" and "placement vector", can tell you a whole lot about the wall!
The more "standard definitions" we as plugin builders can agree on, the better it gets. You could even agree on a basic Sketchup::Ifc module that contains a few classes for maybe ifc-export/import, generating globally unique id's(guid) and managing ifc-units...
-
The added value of the first approach, is that SU can be integrated into an existing (or new) BIM workflow.
So users can use SU in conjunction with Revit, Microstation, Archicad, Vectorworks etc.
-
On the question of 'GUID'... like
af8f4bfc-2604-43ec-acf1-489b153db0d6
To make a unique GUIDs I'd use a method that does something like this:def new_guid() guid='' (0..35).to_a.map{|a| rand(16).to_s(16) }.each_with_index{|e,i| e='-' if[8,13,18,23].include?(i) guid << e } return guid end
The reference you get from
guid=new_guid()
is now a unique GUID following recognized standards for any GUID...
You should never get two the same! -
@tig said:
You should never get two the same!
That sounds great! When i saw the guid guidelines for IFC it looked like a difficult thing to get to work on both Mac and PC... There seems to be some kind of standard, made by "open group"?
http://buildingsmart-tech.org/implementation/get-started/ifc-guid
http://buildingsmart-tech.org/ifc/IFC2x4/alpha/html/ifcutilityresource/lexical/ifcgloballyuniqueid.htmBut if your method is equally random(and i don't really see the difference between one random string of characters and another) it should not be a high priority task to try and make an "official" guid...
-
My GUID example was a general one [as required for Revit .addin files etc] - a typical type of 'Standard' [DWF] GUID.
DWF GUID = 60f91daf-3dd7-4283-a86d-24137b720ed1
IFC GUID = 1W_HslFTT2WwXj91DxSWxHThe IFC GUID is 'identical' to the DWF GUID in Revit.
It is simply encoded in a different format to create a shorter text representation to save a few bytes in a text-based IFC file.The simplest way of making a random compliant IFC GUID text string is this:
guid='';22.times{|i|guid<<'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$'[rand(64)]}
giving you id's like
puts guid >>> O8lUvCXkuWi1_9ntMidtBk
or perhaps
Y25qn6yMgfCFj9yD$nPhgY 7FBtUWbd28V7Xn3D_20fCm _Rjg3mwn1Ev_PHtYfByEQh
etc
Note also how IFC uses_$
and not the expected+/
Base64 standard as the last two possible 'numerals'...
You can invent a way of translating between the two... BUT I can't see why you need to [at this stage] if the IFC format is the intended medium used to swap data - use the same code for both the SKP guid's and the IFC ones ? Comparing 'strings' is slower in Ruby than numbers, so converting a number SKP guid to an IFC one might be preferable ?
So convert the 16 digit integer [perhaps made from((rand+Time.now.to_f)*1000000).to_i
?] [Bignum] SKP guid to a string, then an array, then pack it using 'm' to make it base64 [string], adjust non-compliant characters in it to suit IFC_$
.
(eval):155
` ifcguid=2223334441110009.to_s.to_a.pack('m')[0..21].gsub(/[^0-9A-Za-z]/,'_')MjIyMzMzNDQ0MTExMDAwOQ
In the other direction reverse adjust the IFC base64 string and then unpack that string again as 'm' back into an integer [Bignum]...
skpguid='MjIyMzMzNDQ0MTExMDAwOQ'.unpack('m')[0].unpack('q*')[0].to_s[0..15].to_i
3761687883756483` finally adjusting it back to 16 didigts...
Or something along these lines ?
-
@pout said:
Based on your comments, there are two possible pathways:
BIM as in: be able to attach BIM properties and parameters to an entity. That's it, these parameters do not influence the entity when changed.
BIM as in: when changing IFC parameters/properties teh entity is changed accordingly, even more, when adjectent entities are influenced they also change if needed (bit like Revit)@brewsky said:
I agree, the more information you've got, the more usable it becomes...
This goes for every bim-plugin, but also for a basic common framework...But even if you just have 4 labels; "width=100", "length=6000", "height=3000", ifctype="IfcWallStandardcase" AND the default sketchup information of a group/component; "placement point" and "placement vector", can tell you a whole lot about the wall! The more "standard definitions" we as plugin builders can agree on, the better it gets. You could even agree on a basic Sketchup::Ifc module that contains a few classes for maybe ifc-export/import, generating globally unique id's(guid) and managing ifc-units...@bigstick said:
The added value of the first approach, is that SU can be integrated into an existing (or new) BIM workflow. So users can use SU in conjunction with Revit, Microstation, Archicad, Vectorworks etc.
-
The solution is to associate "parametric modeling" with the "generic 3D modeling" offered in SketchUp. And then, maintaining a "behind-the-scene" analytical model with SketchUp's graphical model. In this case, the "parameters" associated with the SketchUp entities can be stored internally with the entity. When you change the entity, these parameters are adjusted automatically using entity observers etc. and visa-versa, the graphical output is adjusted if these parameters are changed.
-
Then, when you import/export IFC data into the SketchUp model, you can simply modify these internal parameters, hidden inside the SketchUp entities; which will consequently and automatically change the graphical model in SketchUp.
-
To me, changing adjacent entities is the next natural step in the development cycle. It is an enhancement to the above work-flow; but first, (1) and (2) need to be bolted in solid!
Dex
http://forums.sketchucation.com/viewtopic.php?f=323&t=41840 -
-
The problem with parametric modelling is that you are adding another layer of complexity, which may never have been part of the original plan. The big drawback to it, is that implementing complex features such as curved, tapered or sloping walls becomes almost impossible unless you create typologies for them, together with mechanisms to connect them. It's worth remembering that even Revit didn't have these things in the first couple of versions!
In addition, let's say you have even a simple shape as a rectangular room with a curved bay, it's easy to model the slab and ceiling, but making these both parametric and associative with the adjacent elements is a really huge undertaking. Much, much bigger than simply tagging geometry or building some tools to create appropriately tagged geometry.
There are so many examples of this kind of complexity (floors with holes for staircases are another example) that it is easy to see how the project could get bogged down with making a very complex plugin that can deal with associative geometry, but can only deal with the very simplest of building types! In that respect, it could have very little usability in real world situations. When I played around with version 2 of Revit, before Autodesk bought it out, I found that this was the case for me.
One could deal with some things (partition walls, doors, windows, arrays of joists and framing) with dynamic components, but other elements could be created by plugins, and others built from scratch and tagged. It seems to me to make sense to have more than one way to make geometry, for flexibility.
Advertisement