Thursday, October 30, 2008

Status report October 30

Solved the casting problem from wrappers. Could extract from the selected interactive object the Face, Surface, Plane, Direction. It worked well.
One more problem appeared: In order to make an Extrude I need to use the BRepFeat_MakePrism class that is located in a package that is not wrapped. I will continue with wrapping this package and hopefully this will the last step on building the extruded shape. The BRepFeat package is important it contains many useful functions for 3D modeling, it has to be wrapped anyway. This task is estimated to take one day of work.

Wednesday, October 29, 2008

Status report October 29

Isolated the wrapper classes that needed cast into a test project to allow faster testing and compiling. Succeeded to find a solution with generics that allows casting an InteractiveObject into child classes like AISShape. Made some tests and everything looks ok, will use this solution into wrappers and see if it works properly in Naro.

Tuesday, October 28, 2008

Status report October 27

Because it is needed when getting a selected shape to get the AIS_Shape from it through a cast and because that cast is implemented explicitly for Handles I worked at implementing a similar mechanism at the wrapper level. Didn't succeed until now to make a proper cast, still having some compiling problems. Hope to solve in one more day the casting problem and after that continue with the tasks allocated for the release 0.0.1 version.

Sunday, October 26, 2008

Status report October 26 (2)

Installed and looked at two free modeling applications: the CoCreate Modeling personal Edition created by the Pro/Engineer team and also looked at the Alibre Design Express. At the first view the Alibre version looks better and looks more user friendly. Also it has many interesting usability ideas.

Status report October 26

Added the Extrude functionality code, implemented the extruding code. The functionality doesn't work because had some problem:
if I read the currently selected object: OCAIS_InteractiveObject selectedInteractive = context.Current();
and try to get the underlying shape of the interactive object: OCAIS_Shape shape = selectedInteractive as OCAIS_Shape;
the cast fails even if the OCAIS_Shape class is derived from the OCAIS_InteractiveObject class. Need to investigate further how this cast works at the internal native handle and maybe also implement a DownCast method (or some equivalent) that exists at the OpenCascade header level.

Started adding on Sourceforge bugs at the Wrapper category.

Saturday, October 25, 2008

Status report October 25

Succeeded to solve the selection problem. Will continue working now at the Extrude feature implementation. This feature will be applied on a selected rectangle drawn with the sketcher.

Thursday, October 23, 2008

Status report October 23 (2)

Worked at implementing the Extrude feature. Added code in the application to draw only objects from the Ocaf tree. Also made some code to detect the selected object. Will connect this code with a Dictionary that connects the shapes with the TreeNodes in order to select both of them when one of them is selected.
Added also some code to draw Planes and a Trihedron to be used as drawing helpers.

Still have the problem that the drawn Ocaf shapes are not selectable by mouse. Will continue working at this issue.

Status report October 23

Implemented the Ocaf tree display, useful for looking at the data structure.

Wednesday, October 22, 2008

Status report October 22

Worked at implementing the Extrude feature application needed to build a 3D model from a shape. Had some problems with the drawn shape that it was unselectable.

Added a tree list control on the modeling module that is registered at application startup. I could represent some of the data elements in the tree view. The algorithm needs some improvements to show user friendly info. Will finish this code and use it in the application, it is useful to monitor what happens with the data tree during the application usage.

Tuesday, October 21, 2008

Status report October 21

Finally succeeded to implement a rectangle drawing operation with the Sketcher that adds the shape drawn to the Ocaf data tree and when changing back to the 3d view the shape is drawn from the Ocaf tree.

Implemented also the message display service that will be used in the application when messages will be displayed to the user.

Will continue with the tasks remained to make for the 0.0.1 release. The biggest problem that remained to be solved is the "Extrude" feature that raises the 2D shape into a 3D model.

An estimation of the tasks from Sourceforge remained to make for the 0.0.1 release is:
- add an Extrude feature to the application, task estimated to take 16 hours,
- make an architecture explanation document, estimated to take 3 hours,
- finish the toolbar layout improvement, 2 hours,
- more tuning is needed for the application Gui/functionality - the open cascade drawing windows don't fit exactly in the windows form, the resizing doesn't work properly, task estimated to take 1 day of work,
- make the architecture explanations document 2 - 3 hours.

As a low priority tasks that would be nice to make:
- on the Sketcher window make the projection of the 3D solid to show the user where is the sketching plane located, estimated to take 3-6 hours (this task will be probably left out),
- display the Ocaf tree on the left side of the wiew, estimate to take 2 - 4 hours.

The risks that might delay the tasks:
- the extrude feature was never used until now, there might appear wrapper problems, it can cause delays of 1-3 days.

In order to finish all these tasks 4 more days of work are needed. It seems until now that the initial estimation accuracy was half the time the real implementation needed.

Saturday, October 18, 2008

Status report October 17-18

Finally found the problem that was causing the stored data in the Ocaf tree to be 0 at reading: the vertex array used had no overloads for the = operator and somewhere in the code I used an assignment.
One more problem found: in order to display the data added in the Ocaf tree there is an TPrsStd_AISPresenter that works only for 3D contexts and I would like to use it also for 2D contexts to display AIS2D_InteractiveObjects. I will have to implement some code to duplicate that functionality. Task estimated to take 2-3 hours, hoping to appear no other problems on this.

Thursday, October 16, 2008

Status report October 16

Finished adding the Ocaf content. Added drivers for building an Ocaf rectangle and a box, added code to launch draw using Ocaf and to build the Ocaf command. The wrappers behaved well, no crashes. There is one problem to investigate: when adding to a Label from the data structure the rectangle vertex coordinates as attributes it happens at the reading back operation the coordinates to be 0.0. Task estimated to take 2-3 hours. After this task will continue with the tasks from the task list.

Wednesday, October 15, 2008

Status report October 15

Fixed the toolbar layout when changing between Sketcher and 3D View. Fixed the crash that appeared at exit on the 2d/3d WorkItems sharing the same view.
Started adding the Ocaf content at the application: implemented an Ocaf application class on the Ocaf module stored the application in the common context, added code to create an Ocaf document for each modeling started, the document and the Root label are stored in a local context. Started implementing the Ocaf functionality at drawing.

An estimation of the tasks from Sourceforge remained to make for the 0.0.1 release is:
- finish adding OCAF content, task 50% made, remained to work about 4 more hours to finish it,
- add an message display mechanism, estimated to take 1-2 hours,
- refine the Sketcher functionality, integrate Ocaf into it and make transitions with the 3d window, estimated to take about 6 - 8 hours,
- add an extrude feature to the application, task estimated to take 16 hours,
- make an architecture explanation document, estimated to take 3 hours,
- finish the toolbar layout improvement, 1 hour,

As a low priority tasks that would be nice to make:
- on the Sketcher window make the projection of the 3D solid to show the user where is the sketching plane located, estimated to take 2-4 hours,
- display the Ocaf tree on the left side of the wiew, estimate to take 2 - 3 hours.

The risks that might delay the tasks:
- the extrude feature was never used until now, there might appear wrapper problems, it can cause delays of 1-3 days,
- integrating Ocaf problems might introduce 1 day delay.

It seems that in order to finish all these tasks there are needed 4-5 working days. A realistic deadline might be set for Tuesday October 21.

Tuesday, October 14, 2008

Status report October 14 (2)

During the past days investigated why the Naro builds on Vista but doesn't run.

The problem explanation is the following:
- because the C++/CLI wrapper dll is built using some CRT components it needs to have the vcredist installed on the system. The version uploaded on SVN is built with VisualStudio2005 SP1 and needs vcredist 2005 SP1. Will think if the wrappers should be compiled with VS2005 or 2008 and will prepare a Release version to be distributed,
- it seems that there are different redists for VS2005 and VS2005 SP1, so the proper vcredist version needs to be installed,
- currently the project is linked against the debug version of the wrappers assembly, this will not work on systems with no VS2005 because the debug version of the CRT is not distributed with vcredist. To make it work replace the debug dll with an release dll.

Status report October 14

Finally suceeded to make the new workflow function properly. When a Sketched or a 3d surface is enabled the Toolbars are changed automatically, when working in two windows and changing between the windows the Toolbars also change. The import works properly, the shape is inserted in the active window. There is some problem with the Toolbars that their position changes when showing and hiding other toolbars and the layout looks strange. This will be fixed.

From this point I will continue making the tasks proposed for the revision 0.0.1 and also reevaluate the time needed to finish it.

Monday, October 13, 2008

Status report October 12

Worked at fixing the event and command functionality affected by the refactoring.
A lot of tasks remained to be finished: integrate the OCAF functionality, finish the toolbar display when changing the views, add the extrude feature, polish all the added functionality.

It is obvious that I will not succeed releasing on Monday 13th. At the end of Monday will reevaluate the tasks remained to be done and make an estimation of the schedule slip. Probably the delay will be around two days.

Saturday, October 11, 2008

Status report October 11

Finished refactoring the module arrangement and the 2d/3d modeling workflow. Will continue with adding OCAF for keeping the modeling data and also work at finishing the other proposed tasks.

Friday, October 10, 2008

Status report October 10

Worked at refactoring the application. Inserted the modeling manager module that handles the 3d/2d modeling modules, inserted the layout module with the tree view on left and the drawing area on right, improved the working flow. The modules seems to fit properly and worked well. Two more hours are needed to fit properly also the Sketcher and finish the toolbar hiding showing mechanism. Planning to finish this tomorrow and insert also the OCAF functionality.
It will be difficult to finish in time the 0.0.1 release but will try to keep the schedule.

Thursday, October 9, 2008

Status report October 9

Created a new module at the application that will have as childs a 2D and a 3D module. This makes easier to build the use cases in which the users switch from 2D to 3D and this will also manage the interactions between the two use cases.
From tomorrow will continue finishing the tasks for the Release 0.0.1 planned for Monday.

Wednesday, October 8, 2008

Status report October 8

Implemented services to manage the application toolbar.
Started making a module that contains a child WorkItem that will contain and manage a 2D and 3D WorkItems. This will be useful for keeping common data for the two use cases and will simplify having multiple operations in the same time (like drawing two Parts in the same time each in its own window). Task estimated to be finished tomorrow.

Tuesday, October 7, 2008

Status report October 7

Worked at updating the wrapper functions that pass references from managed to native code. Because the task is time consuming updated only the functions needed for 2D drawing and built an assembly with these. Uploaded the assembly on Sourceforge.

Started working at improving the toolbar display, implemented a service at the application that shows and hides Toolbars. Will use this to show and hide only the Toolbars used in the active view. To finish this task around 2 more hours are needed.

The task list made for the Release 0.0.1 is posted on Sourceforge.

Monday, October 6, 2008

Status report October 6

Finished porting the Sketcher: a 2D rectangle can be drawn, the manipulation tools are working (zoom, pan, grid, snap). The code needs some cleanup and optimizations.
Moved the code from trunk to branch and moved the latest code made wit SCSF on trunk.

Verified that the trunk builds properly and also updated references. Will continue with making the project more stable and compatible with Visual Studio Express and Sharp Develop.

Made updates on the wrappers, solved some errors on passing parameters by reference from wrappers to the native code. Tomorrow will build a new version of wrappers and upload them on SVN.

Started making on Sourceforge a list of tasks to be made until Monday October 13 when planning to finish the Release 0.0.1. That version should allow drawing with the Sketcher a rectangle on a 2D plane (selected on the face of an object) and raise the rectangle in the 3D space to build a solid object (apply an extrude feature), the operations should be made with OCAF and will be undoable. Hope to have no problems with the wrappers on applying an extrude, this feature is untested until now.

Friday, October 3, 2008

Status report October 3

Started uploading on SVN the latest wrappers, by tomorrow everything should be uploaded. Started uploading also the compiled dlls. Ported all the source codes (including the Naro from trunk) on OpenCascade 6.3.0 wrappers.

Ported the Sketcher module, added the code that registers dynamically the Sketcher in the menu and makes the toolbars, implemented half of the Sketcher commands. Remained to implement the mouse events, the rectangle 2D commands and make code cleanup.

Tomorrow will work at finishing the Sketcher and make a code cleanup. Over the weekend will establish the remaining tasks to make the 0.0.1 release. Will see if the release can be scheduled for the end of next week.

Thursday, October 2, 2008

Status report October 2

Finished modifying the wrappers. Started working at porting the 2d drawing code. Finished the Rectangle2d class that is drawn properly. Started working at integrating the OCAF code in the application and make a drawn rectangle to be stored in the data tree.

Tomorrow will update the tasks on Sourceforge and reschedule the deadlines. Estimate to finish porting the 2D drawing code on 2 days. Will continue with the tasks established last week. While porting, if new issues will be found will also update the wrappers.

Wednesday, October 1, 2008

Status report October 1

Rebuilt a new version of wrappers for OpenCascade 6.3.0 where solved the problems that appeared when started porting and continued porting the previous applications to these wrappers. Ported successfully the SCSF Naro application from branch.

The previously C# Naro from trunk crashes after porting because it contains OCAF code. Found and solved the problem at OCAF wrappers and started recompiling the wrappers.

Tomorrow will continue with rebuilding the wrappers and finish porting the previous version of Naro from trunk. This task should take half a day. When this task is finished will continue with the tasks scheduled last week.

The problem at OCAF was caused by some pure virtual functions from native code that are designed to be implemented by the user, functions that are used internally. In order to duplicate this functionality at the wrappers I had to implement some code that forwards the native function calls into the managed wrappers equivalent functions using function pointers connected to managed delegates.