Archive for category Engineering
It has been a while since I last posted anything on this blog, and I really should try and post at least once a week. Will try to do so in weeks to come. Since the last time I wrote anything I graduated from University of Ljubljana Slovenia in civil/structural engineering. My final thesis was called: Development of a software tool for creating integrated models in Sketchup.. I defended it on June 29th in Ljubljana, and received a top grade for it. Basically the thesis was written about two software programs I made and shared on this blog. One is OnTime scheduling tool made with Adobe Flex 3.0 Framework and second is OnTime5D, a plugin for Google Sketchup for creating 5D animations of building process inside Sketchup according to a selected building schedule. I would love to enhance both of this programs in the future, so if anyone out here is interested in doing something in this way please drop me a line!
Secondly I would like to share some words on iOS development. I started developing applications for the iPhone and iPad almost a year ago. It was the first time I used any traditional programming language where you actually have to take care of the memory yourself. But I have to say that I like iOS SDK a lot, and was quickly able to build some very interesting applications. The most recent one will soon be sent to Apple for their approval, and hopefully it will be on the App store in about 1 month.
Hopefully see ya in a week 🙂
For the last couple of months, I have been building a Sketchup plugin, that in conjecture with a scheduling software (in this case connected to the schedule maker made in Flex – OnTime) that allows users to create 5D animation of the building process, according to the schedule and the financial data that was inputted in the program. (You can check out 2 videos below that are posted on YouTube)
Let’s just for a second talk about 4D animation in construction. 3D Building Information Model (referred to as BIM) is a rather new paradigm, that is seeing rapid growth in the construction industry. Building Information Modeling is the process of generating and managing building data during its life cycle and Building Information Model encompasses building geometry, spatial relationships, geographic information, and quantities and properties of building components. What that really means is that we are attaching a lot of data or information directly to the 3D model itself. For example, for a given wall in a project we would attach the following information: composition of the wall, how the wall will be built (recipes), all the quantities (area, depth…) as well as connection of the wall to the construction schedule, so we can see when the wall will be build (its start and finish date, duration and so on).
A 4D model incorporates time as added 4th dimension and hence improves quality and accuracy of the entire building life cycle management. Below are listed some of the benefits of using 4D model during construction planning: (as written in this article: Benefits of 4D modeling during construction planning)
- improved reliability and scheduling efficiency: 4D model enables a project team to easily visualize time constraints and opportunities of improvement in the project schedule
- 4D model allows the team member to more easily understand the scope of work and access to various resources over a period of time, this allows the member to visually review and evaluate whole construction plan and optimize the resources and labor accordingly
- Improved communication: During construction phase potential spatial conflict may arise between building components, these can be hard to indentify when coordination is performed using 2D or 3D layouts
4D model provides graphically rich and animated illustration of construction sequence against time.
To get to 5D animation all we do is add money or cost as our 5th variable, so we can track how much money is being spent as the project progresses through its construction process.
OnTime program for project scheduling is located on this URL: http://www.tdteam.com/ontime/
In couple of previous posts, I was talking about a program I made in Flex for project scheduling and financial analysis of any kind of building project.
This week I added two more things to the program about which I want to talk about in this post. There were 2 connections possible when connecting two tasks together. First one was FS – Finish Start and other one was FF – Finish Finish. Now program also supports SS connection – Start Start.
The other thing that was added is the ability to add lag with connections, so for example if we have 3 tasks: Task 1, Task 2 and Task 3, we can do the following:
- connect Task 2 with Task 1, so that Task 2 will start 3 days after Task 1 is started, we do this by: 1 SS (3)
- connect Task 3 and Task 2, so that Task 3 starts the same day as Task 2, we do this by: 2 SS
As you can see from the short example above it is optional to put lag into any connection, if however we want to add it, we have to specify it within brackets, where the number between the brackets will be set as lag in days (so connection 2 (8) will mean we want to connect current task with task with id 2, with connection FS (default connection) and lag of 8 days).
If anyone has any comments about the program, or what you miss in it, please let me know 🙂
In the previous two posts I have been talking about a program I build for project scheduling, and I would like to point some other things out about it.
Program itself can be found on: http://www.tdteam.com/ontime/
On the bottom of the screen there is a dock with the following buttons (starting from the left):
- Save project – name says it all
- Export as XML – a new window will open and XML data will appear
- Import from MS Project – this is in testing mode, and it only loads a sample XML project saved in MS Project
- Show/Hide Columns – you can select which columns you want to see in the scheduling table
- Show graphical data – you can view Flow Chat and Pie Chart of financial data
- History – this is a list of all things that changed during the project scheduling
- Notifications – a popup opens with data about latest user actions and other notifications
When you save a project, all the data associated with the project will be saved, that means that next time you open the project all the Undo, Redo functionality will remain active, all the history and notifications are also saved.
One thing to note about History pop up is that every history input also has a Boolean value automatic associated with it. All the history inputs that have automatic set to false or NO, means that that is the action the user did, the ones with automatic set to true or YES are changes made by the program. For example, if we change finish date of a child task beyond the finish date of the parent, along with child’s finish date being changed there will also be automatic change of finish date of the parent and that change will be noted as automatic = YES.
In this post I would quickly like to introduce two types of connections that you can make with tasks in OnTime scheduling tool. There are four types of connections that you can have in project management and those are:
- FS – Finish Start
- SS – Start Start
- FF – Finish Finish
- SF – Start Finish
I have made two of these four options possible in OnTime program. Finish Start is the default connection type, which means that if we connect two tasks and we don’t specify a type it is assumed that you meant FS type, which is the most commonly used connection. It just means that when one task will finish the other one will begin. Below is the visual representation of two elements connected with FS connection.
The other type of connection that is enabled in the program is FF – Finish Finish. That means that if we connect two tasks with FF connection we are saying to the program, that both tasks have to finish at the same time. Again in the figure below we can see the FF type connection.
Having more than one connection
It is possible that you link one task with as many other tasks you like, connections can be either FS or FF. So valid connection of one task would be: 1, 2, 3 FF, 4 FS, 6.
The start date of a task with multiple connections will be calculated and set in such a way that a connection that will result in the latest finish date will prevail. (that will mean that all of the connections will be observed and the critical one will set the start and finish date of connected task). Of course anytime, you change any of the tasks (in our example 1,2,3,4 and 6) all will be calculated again and the critical connection will once prevail once again.
Program is located on this URL: http://www.tdteam.com/ontime/
I would like to show you a project I made using Flex. It is a project scheduling program that allows you to make a full building or any other construction schedule. Features of the program include:
- Creating new tasks and modifying them
- Create connections between tasks (with options of FS – Finish Start and FF – Finish Finish)
- Indenting tasks – creating WBS tree structure (WBS – Work Breakdown Structure)
- Full undo and redo functionality
- Import projects from Microsoft Project
- History for every task performed
- Input of financial data
- Cash Flow diagrams based on financial data and schedule
- Pie chart diagrams showing financial data per task bases
- Exporting data as XML (with full history for each task)
- Customizing columns
- and some more…
So now let’s do a quick intro of the features and functions of the program. When you first load the program (URL is provided above). You are welcomed by a login screen shown below.
Fields for the test login are already provided, so we can just go ahead and click Login button.
After the server authenticates us as a valid user we are presented with a new screen, where we have a list of all the projects saved under our login. For each available project we have the date and time of the last save and number of tasks project has.
On the second screen we have the following options:
- Start a new project
- Open an existing project
Now let’s go and create a new project, so we can see what we can actually do with the scheduling program. When we click the button labeled Open New Project we are first greeted by a input box that is asking us about the name of the project. For example let’s call it Test Project – 3 story building and click OK.
Depending on the size of your browser window the program will try to adjust itself and show you the maximum number of columns you can view without a horizontal slider. Three columns are always on: Id, Task Name and Gantt Chart (others can be turned on or off by clicking on Show/Hide columns icon at the bottom of the program).
Now let’s take a look at the environment of the program. In the top bar we have program name (OnTime) and back button to go to list of all projects. In the middle is the project name (which we can change by clicking on it), and on the right side is the user data (first and last name) and feedback button, with which you can send me any thoughts you have about the program, and I would encourage everyone to do so 🙂
Just below the header bar we have a set of 7 buttons that provide functionality for our scheduling program in the table below. On the image below you can see what each one of those buttons does.
Just below function buttons we have meat of the program, actual tasks and data associated with it. Below is the list of available columns:
- Id – number of the task (starts from 1 and inrements by one in each row)
- Guid – Global Unique Identifier, every task has it’s own Guid that distinguishes it from all the others
- Task Name
- WBS – Work Breakdown Structure
- Outlinelevel – 1 is the lowest possible level
- Duration – in days, difference between start date and finish date
- Percent Complete – how much of the task is already completed, values range from 0 to 1
- Start Date – start date of a task
- Finish Date – finish date of a task
- Connections – with it we can set predecessors and successors for each task
- Gantt Diagram
- Financial data – expenses
Again if you don’t see any of the columns listed above and would like to see and change them, just click Show/Hide columns button in the lower right corner of the screen.
Let’s now input some data into the program. Name the first task already on the screen Site Preparation, set its duration to 10 and start date to 3rd of March 2010.
Now lets click the first functional button that enables us to create a new task. Let’s call it Foundations. Now create two new tasks, calling the first Excavate foundations and the second one Form and cast foundations.
Now select Excavate foundations task and indent it to the right. It’s WBS will turn from 3 to to 2.1, and it will become a subtask of Foundations task. Do the same with Form and cast foundations (it’s WBS should be 2.2). Set the duration of Excavation to 8 days and Form and cast foundations to 15 days.
The program should look like the image below.
Now let’s do some connections. First we know that we cannot begin forming and casting foundations before we excavate a hole where foundations will stand. So we connect task nr. 4 (Form and Cast foundations) to task nr. 3 (excavate foundations), we do this by inputing value 3 into the field connections for the task nr. 4. If we don’t specify type of connections it is assumed that you meant FS connection (so when task nr. 3 will finish task nr.4 will start). We could also inputed 3 FS or even 3 FF if we wanted both tasks to be completed at the same time. Now we also set connection of Foundatins Task (task nr. 2) to be started right after task nr. 1 is completed.
Once we set up connections we don’t have to worry about tasks being completed as we specified, for example if we than change finish date of Site preparation task, than start date of foundations will be changed accordingly.
Again you can see what happens in the image below.
Now let’s create 4 new tasks and name them as follows (and change their durations)
- Structure Concrete Shell with floor plates
- 1st floor (duration 31 days)
- 2nd floor (duration 31 days)
- 3rd floor (duration 31 days)
Now indent 1st 2nd and 3rd Floor under Structure Concrete Shell with floor plates and set the following connections. 3rd floor to 2nd floor, 2nd floor to 1st floor, and Structure Concrete Shell with floor plates with foundations.
You can help yourself with the picture below if I didn’t make myself clear enough 🙂
OK, now let’s finish this schedule up, let’s add 6 more new tasks:
- Roof (duration: 42 days)
- Outside envelope (duration: 56 days)
- Interior work (duration: 93 days)
- Final Clean-up and Occupancy
- Remove debris from building (duration: 6)
- Final completion (duration: 0 – making this task a Milestone, you will notice how the representation of the task is changed in gantt chart)
Indent Remove debris from building and final completion under Final Clean-up and Occupancy, and connect Roof with Structure Concrete Shell with floor plates, Outside envelope with Roof, Interior work with Outside envelope and Final Clean-up and Occupancy with Interior work.
Completed schedule should look similar to the picture below.
Our project thus begins on 3rd of March 2010 and is expected to be finished on 19th of February 2011, so just a little under a year. Now let’s go ahead and click the last functional button (above the schedule) that will hide Gantt chat and show us Financial data or expenses.
Input the following data under expenses column (these values (as is the whole schedule) are fictional and only here for purposes of showing what this program can do)
- Site preparation – 33.000$
- Foundations – 480.000$
- Structure Concrete Shell with floor plates – 320.000$
- Roof – 140.000$
- Outside envelope – 900.000$
- Interior work – 485.000$
- Final Clean-up and Occupancy – 12.000$
Now that we have schedule and financial data we can generate cash flow diagram based on values inputted into the program. Click on the 3rd button on the bottom right side of the screen (Show Graphical Data). You will be presented with a cash flow diagram, that is calculated based on the cost of a given task and when it is going to be performed. It is assumed that money for every task is distributed evenly from start to finish of that task.
In the bottom right corner of the pop up window select Show per task (show together is default value). This time cash flow diagram is presented in a different way, now we can see which of the tasks are contributing to what part of the total cash flow…pretty cool huh
Now let’s click Pie Chart button on the top of the pop up window. This time we are presented with a pie chart, where all the tasks are presented as part of the whole cake (the whole cake being the whole project). If we select any of the tasks from the drop down menu on the bottom right side we can expose that task.
One last thing I will mention in this quick introduction of scheduling program is the information that you can see if you select a row in the schedule, and then click the Information button (6th one from the left). You can see what was happening to the given task since the beginning. For example let’s select Final Clean-up and occupancy and click Information. In the list than opens below the schedule we can see the entire history of this task. From the moment it was created, and it’s name changed to the expense we added at the end. It is also noted if the user (that is us using the program) was responsible for the change or was the change done automatically (example shown in the image below).
Try the program out, let me know what you think of it and please provide some feedback about what you like, what you dislike, what you would want to see changed or added.
I have developed one simple program for calculating moments in rectangular plates. As opposed to circular plates, we do not have exact equations for calculating rectangular plates. There have been a lot of experimental work done that have produced tables with which one can calculate moments in rectangular plates, depending on the boundary conditions (how is each of the 4 sides of the plate supported).
One of this kind of tables were made by Czerny, and which this program uses. User has to input the following:
- uniform load on the plate – q
- shorter dimension of the plate -lx
- longer dimension of the plate – ly
According to the table selected in the top (which takes into account how the plate is supported) the program calculates moments Mx, My, Mxy, Mex and Mey.
When this is done, we can also select the type of concrete and steel, deformation of concrete and steel and thus calculate the minimum depth of the plate. Program also yields coefficients for Kd and Ks, from which we can determine how much steel we need for the plate to be safe (according to EC2).
Why would anyone need to use this program if we have so many computer programs for structural analysis? Well, we sometimes have to check if the results given by a sophisticated program is within values that we predicted. So if we know what the boundary conditions and the load of one plate is we can check what values we get with this program and compare the two results, if they both yield similar results than we can be assured that calculations by structural analysis were done correctly (i.e. everything was properly inputted into the program).