Uncategorized

Advanced visualization of BIM models- element colors and filter by property value

A new function has been added to the BIMViewer.
It allows users to filter and visualize the color of model elements according to the value of a selected property.

Advertisements

IFC to COBie Converter

In the past I did some work on converting IFC models into COBie.
The work is still in progress but recently I did some improvments anf thought to share it.
Let me know if you are intersted to join me to finish this task.

The screenshot shows how the results looks like:

Convert IFC models into graph database (Neo4J) based on IFCWebServer.org

We presented at 12.07.2017 in the EG-ICE 2017 conference in Nottingham a workflow for automatic converting of IFC models into Neo4j graph database based on the IFCWebServer.org

The paper can be downloaded here:
Application of graph databases and graph theory concepts for advanced analysing of BIM models based on IFC standard

And the presentation can be downloaded here:

IFC to GraphDB(Neo4j)_EG-ICE_2017

Extract Scheduling Information from IFC Models

This post is related to the following question  by at linkedin.com

Is there any IFC program/viewer that can read(like notepad in windows can) and visualise the:

  • IfcRelAssignTasks
  • IfcTask,
  • IfcScheduletimecontrol,
  • IfcCalenderdate
  • IfcLocactime

When this is possible we can synchronise the (4d) information direct to the IFC model without using other filetypes than IFC, for example to our suppliers: the delivery calenderdates and -time of components on the building site for managing logistics. For Example in this screenshot below we’ve scheduled this wall on 8-3-2017 9:00. After giving this object its date of delivery on construction site we’ve enriched back to the IFC model.

ext

We will use this IFC file: IFC_Schependomlaan_inc_planningsdata.ifc from the open source BIM project at :https://github.com/openBIMstandards/DataSetSchependomlaan

Get a list of IFC classes with basic attributes:

  1. Login into IFCWebServer.org demo account ( username: user1 , password: 123)
  2. select the IFC model Synchro4D.nl-IfcTask-test.ifc
  3. select the IFC classes (IfcRelAssignTasks, IfcTask, etc.) & click “GO” button

IfcRelAssignsTasks:

http://ifcwebserver.org/ifc.rb?q=IFCRELASSIGNSTASKS&ifc_file=IFC_Schependomlaan_inc_planningsdata.ifc

IfcTask

http://ifcwebserver.org/ifc.rb?q=IFCTASK&ifc_file=IFC_Schependomlaan_inc_planningsdata.ifc

IfcRelAssignsToProcess:

http://ifcwebserver.org/ifc.rb?q=IFCRELASSIGNSTOPROCESS&ifc_file=IFC_Schependomlaan_inc_planningsdata.ifc

Write a server script (with 2 simple extensions) for customisation the output format and automate the process:

load_schema_and_extensions
use "IFC_Schependomlaan_inc_planningsdata.ifc"</code>

class IFCDATEANDTIME
def date_time
dateComponent= self.dateComponent.to_obj
timeComponent = self.timeComponent.to_obj
"#{dateComponent.dayComponent}/#{dateComponent.monthComponent}/#{dateComponent.yearComponent} #{timeComponent.hourComponent}:#{timeComponent.minuteComponent}"
end
end

class IFCSCHEDULETIMECONTROL
def detail
res= {}
res["ActualStart"] = self.actualStart if self.actualStart != "$"
res["EarlyStart"] = self.earlyStart.to_obj.date_time if self.earlyStart != "$"
res["LateStart"] = self.lateStart.to_obj.date_time if self.lateStart != "$"
res["ScheduleStart"] = self.scheduleStart.to_obj.date_time if self.scheduleStart != "$"
res["ActualFinish"] = sef.actualFinish.to_obj.date_time if self.actualFinish != "$"
res["EarlyFinish"] = self.earlyFinish.to_obj.date_time if self.earlyFinish != "$"
res["LateFinish"] =self.lateFinish.to_obj.date_time if self.lateFinish != "$"
res["ScheduleFinish"] =self.scheduleFinish.to_obj.date_time if self.scheduleFinish != "$"
res["ScheduleDuration"] =self.scheduleDuration if self.scheduleDuration != "$"
res["ActualDuration"] =self.actualDuration if self.actualDuration != "$"
res["RemainingTime"] =self.remainingTime if self.remainingTime != "$"
res["FreeFloat"] =self.freeFloat if self.freeFloat != "$"
res["TotalFloat"] =self.totalFloat if self.totalFloat != "$"
res["IsCritical"] =self.isCritical if self.isCritical != "$"
res["StatusTime"] = self.statusTime if self.statusTime != "$"
res["StartFloat"] = self.startFloat.to_s if self.startFloat != "$"
res["FinishFloat"] =self.finishFloat.to_s if self.finishFloat != "$"
res["Completion"] =self.completion.to_s if self.completion != "$"
res
end

end

class IFCRELASSIGNSTASKS
def saveTimeForTask
self.relatedObjects.toIfcObject.each { |o,id|
$timeForTask[o] = self.timeForTask.to_obj.detail
}

end
end

$timeForTask={}
#IFCRELASSIGNSTASKS.list
IFCRELASSIGNSTASKS.where("all","o.saveTimeForTask")
IFCWORKSCHEDULE.list "name|Ceation Date:creationDate.to_obj.date_time|Start time:startTime.to_obj.date_time"
IFCRELASSIGNSTOPROCESS.list "BIM Element ID:relatedObjects.gsub('#','').split(',').join('')|Task:relatingProcess.to_obj.name|Time For Task:$timeForTask[relatingProcess.to_obj.line_id]
"
IFCRELSEQUENCE.list "sequenceType|relatingProcess.to_obj.name|relatedProcess.to_obj.name"
IFCTASK.list "description|isMilestone|name|objectType|priority|status|taskId|workMethod"
IFCRELASSIGNSTASKS.list "Task:relatedObjects.to_obj.name|Time for task:timeForTask.to_obj.detail"

The result can be seen at:

http://ifcwebserver.org/scripts/user1/results/Extact_scheduling_information.html

This script is just to demonstrate how to extract the information in a simple way.

It can be enhanced to save the information in other formats (XML, CSV, SQL)in order to integrate them with 4D Viewers or Planning Software.
IFCWebServer.org can already visualise the construction progress of IFC models exported by Synchro Pro.

http://ifcwebserver.org/bim-annotator/?url=/dae/user1/IFC_Schependomlaan_inc_planningsdata.dae&user_id=user1&model=IFC_Schependomlaan_inc_planningsdata