[Plugin] bim-tools 0.13.4(june 22, 2015)
-
@brewsky said:
@dan rathbun said:
So.. would your project be a pay-for plugin, or a free open source project?
Currently I have put in a reference to the GPL in the header of the script ... I want to make it open source. ..., so MIT does not seem the best choice.
There is also the Artistic License 2.0
For more: Various Licenses and Comments about Them
-
@brewsky said:
How do you keep class instances through multiple sketchup sessions?
Data files saved to disk. (It's easiest, if the data is linked to a certain model object, to save it within the SKP file, as attributes attached to the object. Trying to keep any 2 or more files in sync, has proven problematic IMHO.)
@brewsky said:
Is it possible to create a class "wall", fill an instance with properties, and make a sketchup object "part" of the instance
Sort of.. the Sketchup object would be referenced by the class instance, using an instance variable. Also the Properties would be loaded from the attribute dictionary attached to the SKP object(s), (either a component or a group,) into the class instance's properties Hash (or Ostruct.)
@brewsky said:
(or vice versa)?
NO. The SKP file's DOM, does not support creating custom Drawingelement subclasses. There are rigid methods for adding only the defined object classes into the model DOM. (see the Entities class methods.)
Afterall.. the application needs to know how to draw the model object classes. Allowing a infinate number of them would "open Pandora's box."This is why your IFC objects will really be Groups (or Components) "owning" primitives or other nested Groups (or Components.)
@brewsky said:
And still be able to call methods from that class after restarting sketchup without recreating the class-instance from the sketchup geometry (and attributes)?
NO. When restarted, even Sketchup has to recreate the Ruby Sketchup API objects after loading the Ruby Interpreter, and then it's C++ model objects (which are exposed to Ruby via the API,) by reading in a SKP file from disk.
-
@dan rathbun said:
This is why your IFC objects will really be Groups (or Components) "owning" primitives or other nested Groups (or Components.)
@dan rathbun said:
NO. When restarted, even Sketchup has to recreate the Ruby Sketchup API objects after loading the Ruby Interpreter, and then it's C++ model objects (which are exposed to Ruby via the API,) by reading in a SKP file from disk.
Ok very clear, thanks!
I thought about it because I heard Java can write full class-instances to disk... -
@dan rathbun said:
I didn't think it was worth it.. as IFC is an XML data file. Ruby already has libraries to work with XML files, that are cross platform.
Do you advise using IFC XML? I read somewhere that using the original "step" variant was faster...
-
Oh and another question pops into my mind.
it seems regular practice to host source files her on the forum.
Woudn't it be easier to use google code or sourceforge to manage all the different versions? -
@brewsky said:
Oh and another question pops into my mind.
it seems regular practice to host source files her on the forum.When it is a code snippet, or a relatively small, stand alone plugin, it's just easier to post a zip file here.
@brewsky said:
Woudn't it be easier to use google code or sourceforge to manage all the different versions?
For a project like yours... during the development, a google code site, github site, or a project site at RubyForge may be needed.
-
@brewsky said:
@dan rathbun said:
I didn't think it was worth it.. as IFC is an XML data file. Ruby already has libraries to work with XML files, that are cross platform.
Do you advise using IFC XML? I read somewhere that using the original "step" variant was faster...
Well pehaps (I didn't know of STEP, until you said this,)...
Wikipedia says that the STEP files are the most widely used, so support for them would be a good idea. Unfortunately, ISO wants 180 euros (I think,) for the a copy of 10303-21.On the other hand the IFC XML Schema was a free download.
Personally I can more easily read and understand the XML. (The Step files look like a nasty crossbreed between C and COBOL.)
-
@chrisglasier said:
In other words your main focus is essentially on paperwork type processes.
Not essentially, but all my experiences and day-to-day "annoyances" are related to the "paperwork type process". So the first ideas that come to mind are very practical and probably narrow-minded ways to improve the existing process.
When modelling a building it's very important to create an interlinked relational model instead of a "loose" collection of walls and floors.
Probably the most effective way would be to write a long list of relations(following a list of demands) and have a piece of software generate the "best" building.
But also a reversed(intuitive) process should work. In the old-school-way draw lines, define them as walls/spaces. Think about the "why" of every element and link all parts together. The greatest difficulty here is that because the plan originated from an intuitive process it can be hard to figure out exactly why you chose to place an element in a specific place. Although i'm confident that there is allways a reason AND a relation in the choice.@chrisglasier said:
You know it just might be site owners demand use of OOIT for its transparency and accountability, and designers have to comply.
I spoke about this subject with some architects and they thought it could be "fun" designing by setting relations and let the computer solve the puzzle. They liked to see if it would find the same solution.
@chrisglasier said:
"Buy this; put it here"
I do think that "a picture is worth a thousand words". "Buy this; put it here" would create an immense list for even the simplest building. An interesting visualized variation could be to create LEGO-like building instructions(I believe the guys at LDraw.org have nicely automated that!)
Chris, thanks for your replies, every one of them gives me something to think on
-
@dan rathbun said:
For a project like yours... during the development, a google code site, github site, or a project site at RubyForge may be needed.
I've set up a repository at google-code
http://code.google.com/p/bim-tools/And spent a couple of evenings figuring out what-the-heck this Mercurial thing was. And found out I've been using it partly myself way earlier while trying to merge linux config files
I've uploaded my plugin. Now on to something usefull...
-
@brewsky said:
@chrisglasier said:
"Buy this; put it here"
I do think that "a picture is worth a thousand words". "Buy this; put it here" would create an immense list for even the simplest building. ...
The reverse is also true as you suggest with your immense lists - it takes a thousand words to make a picture. And this is the real point immense lists are needed (I know I have been responsible for many.) They won't go away but the question is who makes them and how.
From the very start a designer starts to build lists, mentally or physically, names of spaces, elements, services and so on. If these can be captured many people can help to expand the lists of names and attach key/value pairs to describe each of them - kind of collective thinking out loud.
As the names represent physical objects they can be arranged in hierarchical relationships and if there are components with the same names can display alternative models backed up with data. This cannot be achieved with paperwork type processes, it needs machines that can communicate over the Internet. Rather than create walls from edges I want (and have done) to make machines from names.
-
IMO the difference between building the moon landing vehicle, and a house. Is that the first has a complex, but easily stated mission. Go to the moon, and get the astronauts back to earth. A house on the other hand, is fairly simple, yet accomplishes the complex mission required to shelter, and advance the institution family.
It was Louis Kahn that taught the difference between art and architecture. An Artist can express the futility of war by drawing a cannon with square wheels, an Architect must make them round. He poetically mused that a brick "wants to be an arch". That ultimately Architecture has a immutable unseen form that fixes it's place in human culture.
A fork has an essential form that makes it a fork. It matters little that it is baroque, or modern in style. The Architect's skill is to deduce this essential form.
-
@dan rathbun said:
I didn't think it was worth it.. as IFC is an XML data file. Ruby already has libraries to work with XML files, that are cross platform.
Hi Dan,
It seems no ruby XML libraries are included with SketchUp, is this correct?
Is there an easy way to add, for example, REXML to my plugin directory instead of requiring a full ruby install for every user?-Jan
-
@brewsky said:
@dan rathbun said:
I didn't think it was worth it.. as IFC is an XML data file. Ruby already has libraries to work with XML files, that are cross platform.
Is there an easy way to add, for example, REXML to my plugin directory instead of requiring a full ruby install for every user?
Correct. SU does not distribute the Ruby Libraries, only the interpreter.
Distro'ing Ruby libs in your plugin folder can cause version problems. You'll also likely find that those libs have dependancies on other libs, and so on... and so on...
Some coders have done it for single lib files.. but in that case, it's always best to first try and load from the user's full install by just requiring a lib file normally (wrapped in begin .. rescue LoadError block), if the rescue clause gets executed then you can load your copy from your plugin subfolder. That way if the user later installs full Ruby or updates to a newer version your plugin can take advantage of it.
But really... what we need to move toward, is every user having a special full Ruby install beneath the Sketchup program folder, "tweaked" just for use with Sketchup. Then the "system" Ruby install can be left alone to do other non-Sketchup things.
-
I have made a first attempt at an export-to-IFC script for the walls plugin I posted earlier.
The method used to generate the required IFC data is quite "crude", and it's still only simple walls, but is't a start!I've been able to open the resulting files in a couple of viewers:
- Nemetschek IFC Viewer
- Solibri Model Viewer
- TNO IFC Engine Viewer
Check out the google-code page for download and brief tutorial:
http://code.google.com/p/bim-tools/Maybe there's someone with the ability to try the exporter on one of the big BIM programs?
I would love to hear what they make of it!- Jan
-
Jan,
I renamed the topic "[Plugin] bim-tools" so this plugin will appear in the Index (and to bump it in case anyone missed it.)
-
It was under the impression that this was in the Alpha stage, still very much a work in progress.
Why was it moved to the Plugins forum? It's not ready for 'prime' time.
-
@dan rathbun said:
Why was it moved to the Plugins forum? It's not ready for 'prime' time.
Mostly to raise awareness of the plugin.
-
Guys, I think this is a great idea with huge potential. I'm really interested in the direction this might take.
-
Thanks Jim!
Although a lot of work needs to be done before it can handle a full building model, I'm trying to add small functional pieces to the program so it can be used without being complete.
I just figured I have been updating the google-code project without reporting back here, I will try to post my progress more often!
I recently added the ability to provide some IFC meta-data(such as project name and description), and improved the menu so sections can be folded, to remove some of the noise/clutter.
Currently I'm working on a wall-opening function.
When that's finished(and has a functional IFC-exporter), I think it's a good demo of the idea, and maybe even usefull for some people(simple building interior walls?). -
I think need change this name bim-tools to skp2ifc ,BIM is very very big !
Advertisement