Monday, June 30, 2008

Work progress 30 june

Built a generator script that generates files for about 15 packages. Generated the code and worked at compiling the generated code. Isolated two packages for compiling study.

Hope tomorrow to succeed compiling a library.

Friday, June 27, 2008

Work progress 27 june

Improved the wrapper code generator to cover the situations when a parameter should be a wrapped object, improved the package generated structures using namespaces.

Will start generating source codes to see if I can succeed compiling C++/CLI wrappers for some independent packages together with some C# code.

Thursday, June 26, 2008

Work progress 26 june

Built a CDL parser project that generates OpenCascade .h header files. Modified the cpp generation files templates to generate c++/CLI wrappers.

Succeeded to parse an OpenCascade package and generate some wrappers that hold internally a pointer to the native object, creates the native object in the constructor and releases it in the destructor, all the function calls are passed to the internal native object. The inheritance is also generated properly.

It remains to refine the code generation to handle situations like: when native and CLI parameters are incompatible some conversion code needs to be generated, have to verify other types of code if they are generated properly: code for transient objects, persistent objects, pointers, handles, consts, etc.

Will continue improving the code generator one more day and see if the results will improve a lot. It is good that for the moment a big part of the code can be generated automatically.

Wednesday, June 25, 2008

Work progress 25 June

Worked at understanding the CDL parsing and cpp file generation. Understood how the cpp files are generated.
Started working at modifying the cpp description templates to generate c++/cli files.

Tuesday, June 24, 2008

Work progress 24 June

Suceeded to use a CDL file parser and generated the complete cpp source files and header files for the Geom2d package.
The next step would be to modify the cpp generator to generate in the cpp files also the c++/cli wrapping code.

Monday, June 23, 2008

Work progress 23 june

Worked at wrapping the OpenCascade library. It seems that all the wrappers can be generated from the .cdl files using some code generator.

Found also some project that generates C++ code from the OpenCascade CDL files.
Studied the CDL specifications from OpenCascade and started playing with the CDL generator.

Friday, June 20, 2008

Work progress 20 june

Worked at developing C++/CLI wrappers for OpenCascade. Analyzed first the existing wrappers to see the class hierarchy and also to understand future problems that might appear problems like threading, exceptions thrown by OpenCascade, native pointer access, marshaling.

Thursday, June 19, 2008

Work progress 19 june

Added code that changes the selection mode (enables selecting vertexes, edges, solids).
Added code that applies a fillet on a cube selected as a solid. Encountered problems when trying to select only a few edges caused by wrapper limitations.

Started making OpenCascade wrappers with C++/CLI. I hope to succeed in 3-4 days to make Naro using the wrappers.

Wednesday, June 18, 2008

Work progress 18 june

Added code that changes the selection mode (like selecting vertexes, edges, solids). Added a fillet transformation on a shape. There is one missing function in the wrapper so the only way to create an edge with fillet was to rebuild the shape, delete the previous shape from the context and draw the new shape. That's not very good.

Analyzed the Sofa wrappers. It seems that they provide some access to the interior pointer. Having the interior pointer make possible to integrate new packages like the visualization packages and the ocaf package and pass them the interior/native pointer. Probably from tomorrow will start making a minimal version of wrappers, task estimated to take 2-4 days.

Tuesday, June 17, 2008

Work progress 17 june

Improved the application functionality and uploaded the code:
- when resizing or at layout change also the open cascade view resizes,
- the menu commands work like the toolbar ones,
- the mouse events are sent to the proper controller, when a new command is launched over another view the view is automatically selected.

Studied the OCAF architecture, looked also for open source projects for OpenCascade samples.

Tasks to be done:
- refactor the existing code,
- add a toolbar with selection mode change (vertex, edge, face),
- work at the tree view,
- start porting the sketcher code form the old code.

Encountered problems: the missing OCAF package somehow stops the architecture work (integrating the OCAF drawing with Undo/Redo). Will continue working at the current features and if in a few days will not receive the OCAF module will probably start wrapping OpenCascade.

Monday, June 16, 2008

Work progress 16 june

Uploaded the code that changes the number of views. Also uploaded the zoom window code and the selection code. Loading shapes works properly with the latest dlls.

Started tuning the application and solving functionality problems: added redrawing at resizing, added toolbar commands also at the menu, added code that allows working at many workspaces in the same time.

Tasks to be done tomorrow:
- finish and upload the code made today,
- start working at the tree view feature,
- review the architecture,
- think at the tasks to be made in their priority order.

Saturday, June 14, 2008

Work progress

Ported the project to the previous wrapper version. Investigated with my colleague the dll wrapper errors and succeeded to make the project work.

A good side effect is that with this versions of dlls the load from files works properly.

Tasks to be made:
- upload the selection code and also the code that allows to change the active view number,
- review the architecture and analyze the plugin architecture integration.

Friday, June 13, 2008

Work progress

Partially implemented the layout change (to display 1, 2, 3, 4 views in the same time).
Partially implemented the window selection functionality.
Reviewed the plugin architecture and discussed about the integration in the system.

Next tasks that I will make:
- port the project to a previous wrapper version that (probably) works on most systems and prepare a build environment for developers,
- merge and upload the latest codes.

Thursday, June 12, 2008

Work progress

Spent the day investigating the COM wrapper that fails registering on several systems.
It seems that on some XP with IE6 the COM registration works, on a XP wit IE7 it fails, on a Windows2003 with IE7 it fails, on a clean Vista with redistributables installed it fails and on another Vista with development tools installed it works.
On the tested systems tried with VS2005 installed, also with VS2008, tried also with installing VS2005 and 2008 redistributable.

Investigated also with dependency walker the missing libraries but no clear result obtained yet. Tried also copying the missing dll files in the application folder but obtained no solution yet.

Wednesday, June 11, 2008

Work progress

Spent the first part of the day analyzing OCAF and functionalities needed from it.

Added at the application structure a GDI handler class that handles mouse events that result in GDI drawing (like selection rectangle, window zoom). This handler combined with a command handler implements visual representation of commands like showing the selection area with a rectangle, window zooming.

Tuesday, June 10, 2008

OCAF wrappers

Yesterday updated the design document with some explanations about the actual code structure.

Started analyzing the OCAF package and methods to wrap it.

Today spent the day looking for wrapping possibilities. Looked at Swig for automatic wrapper generation, looked at the interfaces of the existing .net wrappers and possibilities to integrate with them. Didn't choose yet a solution, probably will start wrapping with C++/CLI only a few classes needed for work with a minimal set of methods. If everything works ok I hope to have some working code in two days.

Saturday, June 7, 2008

Work progress

Made GUI improvements, solved usage bugs: selection handling, mouse event handling.

Finished the loading from file code but it seems that there is some internal wrapper incompatibility and it doesn't work.

Prepared the source codes for uploading on SVN, reorganized the SVN structure and uploaded everything.

Next tasks that will be made:
- reanalyze the application design, refactor if needed, make a design document with explanations,
- currently the commands are launched from toolbars, implement the same commands also on the main menu,
- solve the load from file problem,
- implement the window zooming,
- analyze OCAF wrapping and decide how to wrap the missing OCAF module,
- implement code that changes the view number to 1,2,3,4,
- add code that allows changing the selection mode: selecting faces, edges, vertexes.

Will have also to improve at current functionalities:
- when resizing the draw area is not recalculated,
- if one view selected if mouse move happens over an unselected window the unselected window is selected but the rotation happens on the first view,
- on child window close release the Controller,
- when the child window is changed (the Controller is changed) the mouse events are sent to the first Controller and should be sent to the second one,
- check if objects that hold event listeners are released also the listeners should be released to be properly released by the garbage collector.

Next identified risks that are stopping the progress:
- the OCAF module may be difficult to implement and integrate with the existing wrappers,
- the load from file might have some incompatibilities with the other modules.

Friday, June 6, 2008

Work Progress

Implemented the user action handler class and added the Dynamic Pan, Dynamic Zooming, Wireframe Drawing etc. Added also selecting. All the icons from the manipulation toolbar (except window zoom) are now working.

Added code that highlights the selected view from the multiview, added code that selects the model from OpenCascade.

Added file loading but it's not working yet more coding is needed.

Next tasks to do:
- finish load from file,
- finish window zoom,
- add code that allows changing the selection mode,
- implement code that allows changing at multiview from 1 view to 4 views and back,
- think at the OCAF wrapper and implement it.

There are also two bugs to solve:
- when resizing the draw area is not recalculated,
- if one view selected if mouse move happens over an unselected window the unselected window is selected but the rotation happens on the first view.

Thursday, June 5, 2008

Work Progress

Implemented redrawing, added also mouse events to be supported on the Controller that listens to the View events. Added also rotation and perspective change like top, left, bottom, ...
Started thinking at the architectural design of user actions. Will implement an user action class that listens to mouse events and executes the requests. The same will happen for any other functionality like a rectangle drawing class, it will listen to mouse events and execute the request. This system looks like a plugin system.

Wednesday, June 4, 2008

Work Progress

Suceeded renedering 4 OpenCascade views in the same time. Will continue with implementing commands like zoom, rotate (and also the designs associated with it). Will also add code that loads from files.

Tuesday, June 3, 2008

Work Progress

Implemented a C# application with dockable toolbars, with multi view support. Integrated succesfully the OpenCascade wrappers in it and added code to create a View, a Viewer, a graphic device; also added code that connects OpenCascade with the multi view window.

Probably in one more day will succeed rendering something with OpenCascade on the .Net View.

The next development steps:
- render with OpenCascade on the View,
- add code to load models from files,
- analyze OCAF wrapping in C#.