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.
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:
- Login into IFCWebServer.org demo account ( username: user1 , password: 123)
- select the IFC model Synchro4D.nl-IfcTask-test.ifc
- select the IFC classes (IfcRelAssignTasks, IfcTask, etc.) & click “GO” button
IfcRelAssignsTasks:
http://bimviewer.com//ifc.rb?q=IFCRELASSIGNSTASKS&ifc_file=IFC_Schependomlaan_inc_planningsdata.ifc
IfcTask
http://bimviewer.com//ifc.rb?q=IFCTASK&ifc_file=IFC_Schependomlaan_inc_planningsdata.ifc
IfcRelAssignsToProcess:
Write a server script (with 2 simple extensions) for customisation the output format and automate the process:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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://bimviewer.com//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.