Saturday, January 31, 2009

Starting Iteration 0.0.7

Made a list with the tasks scheduled for the Iteration 0.0.7.

The task list is posted on Sourceforge.
Also the project Roadmap was updated to reflect the new iteration.

The schedule task list is the following:

- Improve the Extrude, 3 days,
- Add code to propagate changes on related entities: when an extrude is applied on a shape if
the shape is changed also the extrude has to be regenerated, 1 day,
- Add a logging mechanism: decide the mechanism, start using it in the application, 1-2 days,
- Finish implementing the selection mechanism that selects a shape when an item is selected in the tree view
(the selection should be stored at the OCAF level, currently it is made only at the visual level), 1 day,
- Add shape constraints, this task may include functionality like center detection, 3 days,
- When shape properties are changed the modification is not undoable, 1 day,
- Code refactoring and cleanup made during development process.

Lower priority tasks:
- Prepare an installer for the application,
- Finish implementing Cut with OCAF, 2 days
- Implement a debug window that displays details about the OCAF data structure, 0.5 days,
- Command line, 1-2 days,
- Extrude real time, 1-2 days,
- Solve the redrawing problems: the redrawing has flickering, there is also a bug that Naro gets the HDC/drawing drivers so that other windows
can't redraw themselves, when the window is double clicked and floating the window handle is lost and redrawing doesn't occur, 4 days.

More details about the tasks are on the Sourceforge task list.

Friday, January 30, 2009

Closed iteration 0.0.6

Today added code that shows a tree list with the objects drawn. Also when an object is selected in the drawing area it is selected also on the tree list and its properties are displayed in the property grid.

On this iteration succeeded to make code that redraws the shapes when their properties are changed, added color property to objects, at the rectangle added width and height, built a layer of objects that handle internally OCAF operations, finished implementing the tree view that shows a list with the objects drawn, improved the property grid, partially implemented also the code that selects drawn objects when they are clicked in the tree view, improved the grid and GUI. Started adding Tango icons at the application, started cleaning up the code.

Tomorrow will prepare the list with the tasks for iteration 0.0.7 also will work at making a document with explanations about knowledge gained until now about OCAF, explanations also about the implemented drivers and the implemented descriptor layer.

Among the tasks that will be included in the next iteration are:
- finish implementing Cut with OCAF,
- improve the Cut and Extrude,
- add code to propagate changes on related entities: when an extrude is applied on a shape if the shape is changed also the extrude has to be redrawn,
- code refactoring and cleanup,
- add a logging mechanism,
- finish implementing the selection mechanism that selects a shape when an item is selected in the tree view (the selection should be stored at the OCAF level, currently it is made only at the visual level).

Thursday, January 29, 2009

Uploaded descriptors

Made fixes and code cleanup at the layer that handles OCAF.
Started implementing the object tee view. Tomorrow will continue with finishing this task by adding some icons and also to implement code that selects the object in the view when selected in the tree and selects in the tree when the object is selected. Will also finish tasks to close the iteration.

Made code cleanup and uploaded the latest version of code.

Wednesday, January 28, 2009

OCAF work

Finished implementing the layer that works internally with OCAF. It simplified the code and also moved the knowledge about OCAF out of the Naro view classes. Integrated these objects in the application and it works well. It needs some improvements at the display in the property table.

Added code that exposes for rectangle the width and height properties (together with the name, color and vertexes properties). The object updates internally the vertexes and the OCAF data.
By implementing this layer of objects the task to add the Name property at the OCAF level is removed because this layer has knowledge about these objects.

Tomorrow will continue with the tasks from the current iteration: improve the object tree view, select the objects when clicked in the tree view.

Monday, January 26, 2009

OCAF work

Implemented the layer that contains objects that internally work with TDF_Label. Started refactoring the existing code and replacing the code that uses OCAF with the new code.

Tomorrow will work at finishing this task and also at finishing tasks from the current iteration: improve the object tree view, select the objects when clicked in the tree view, add the Name property to each property displayed.

Friday, January 23, 2009

OCAF work

Started working at a layer that will hide the OCAF data structure from the application. These objects will expose properties and internally will work with TDF_label. Beside decoupling this layer will also allow adding extra features to the objects. Example: a rectangle object will know how to handle and update a Label hierarchy and will expose as properties the Name, the Color, the Vertexes, a width and a height. Any modifications on these properties will update the OCAF Label hierarchy that it holds internally.

Improved the PropertyGrid, made some refactoring, code cleanup and uploaded everything on SVN.

Thursday, January 22, 2009

The GUI started to look better

Finished several small tasks:

- added color property on the property table. The color info is stored at the data level,
- improved the code that builds the grid, more property grid improvements will be made during next tasks,
- fixed some error at the Sketcher rectangle error,
- studied OCAF: used the TDataStd_IntegerArray attribute to store the RGB color info in the data tree. Found more useful attributes: the TDataStd_Current attribute at the root Label will be used to make some speed improvements, the current selected object/Label will be stored there, the TDataStd_Shape will be used to store some reference to the active shape - another speed improvement, TDataStd_TreeNode - will be studied further, building a custom Label hierarchy might help doing some speed improvements.

Will continue with adding a Name property on each Label so that each Label describes itself. In this way it can be specified what represents. Ex: a value might describe itself as being Radius, Length or Vertex.

Finished OCAF data redisplay

Finally succeeded to finish the code that updates the models when Coordinates are modified from PropertyGrid. It was a problem in my Naro code (I was trying to update the viewer expecting the model to redraw itself instead of redisplaying the object) and I was searching in the wrappers suspecting some pointer loss. It seems that the wrappers passed well also this test.

Will continue now with the other tasks from the current iteration.

Wednesday, January 21, 2009

OCAF topological operations

Spent half of the day investigating with WinDbg at the OpenCascade level if the modified tree structure is good and why the UpdateCurrentViewer() method of the context doesn't propagate the changes made at the OCAF data tree level.

Made a test C# application with OCAF and found that UpdateCurrentViewer() has no effect but redisplaying the objects works well and shows the changes. Will try this on Naro to see how it behaves. Implemented also on the OCAF C++ sample from OpenCascade the code from Naro and there the changes seem to propagate well. Probably I use in a different way the TPrsStd_AISPresentation class that displays the OCAF tree.
Hope to finish this task in 2-3 more hours of work.

Added code that saves the layout of the application at closing and restores it when starting. In this way the user can keep his preferred layout.

Tuesday, January 20, 2009

OCAF topological operations

Found the problem that was causing the coordinate modification: by changing one coordinate the four vertexes of the rectangle are not coplanar. Modified the data structure and the rectangle driver to work only with three coordinates and generate the fourth but still doesn't update on the screen the modification. Made a C++ simple test application to verify the algorithm and that works properly.
Will continue researching on this problem.

Installed AlibreDesignExpress and looked at the GUI layout. It seems that they don't use a property dialog, the main dialog is a tree list with the objects displayed. I will have also to consider creating a mechanism that displays to the user some object properties using the data from the data tree. Ex: In the data tree the coordinates are stored but to the user it is displayed the rectangle width and height, when the user changes these in the data tree the coordinates are updated, there is no need to display to the user the coordinates. This also should consider the fact that more complex properties can't be displayed on a grid, a dialog would be more appropriate.

Monday, January 19, 2009

OCAF topological operations

Spent the day investigating OCAF topological operations made with TNaming_NamedShape. Duplicated the problem that appears at Naro into a C++ test application. I think I am very close to solve the problem.
In parallel with this, rebuilt wrappers and OpenCascade in debug on my local machine in order to enable debugging also in wrappers and OpenCascade.

Saturday, January 17, 2009

Starting iteration 0.0.6

Made the tasks for the iteration 0.0.6, they are posted on Sourceforge and also on the Roadmap.

Uploaded on SVN the updated documentation.

Wrapped the BRepGProp module and rebuilt the wrappers. Verified that Naro works ok with the new wrapper assembly. Uploaded on SVN the wrappers and the newly built library.

Friday, January 16, 2009

Closing the current iteration

Added code improvements at storing and retrieving info about the selected object. Modified the driver classes (rectangle drawing class, ellipse drawing class, extrude, cut, etc) to inherit from a generic class that will be used when propagating modifications made on an object.

Spent the day working at the code that regenerates the model when the data tree is modified. Made a C++ OCAF sample that propagates well the object modifications. When ported the code to Naro it doesn't work properly, it needs more research.

Made code cleanup and uploaded the latest code on SVN. Will continue now with updating the documentation, the new documentation version will be uploaded tonight.

Will close the current iteration (0.0.5) today and tomorrow will establish the tasks for the next iteration (0.0.6). Among that tasks that should be included in the new iteration are:

- finish the code that redraws the model when the data is changed,
- add the object color in the property table,
- move the detailed data tree view in a debug window and display in the tree view only the object name or the operation and an icon,
- improve the property grid look and the info displayed,
- modify the splash to display the current application version.

Lower priority tasks remained from previous iterations:
- Finish implementing the Cut feature with Ocaf,
- Add code that selects the objects when they are selected in the tree view,
- Integrate the command line functionality in NaroCAD,
- Implement code to make the Extrude real time as the mouse moves.

Thursday, January 15, 2009

Coordinate modification from PropertyGrid

Finished the code that updates the object coordinate in the OCAF data structure. After selecting and modifying the coordinates of some objects the modifications remain.
Worked also at propagating the vertex coordinate modifications and regenerate the model but didn't succeed yet to make it work.

Tomorrow will continue with finishing this task, cleanup and upload the code, make documentation and close the current iteration.

Wednesday, January 14, 2009

Object modification from Property Grid

Succeeded to change the selected object's name into the OCAF data tree from the Property Grid.
Started also working at changing the vertex coordinates from the Property Grid. Implemented code but not working yet, two problems appeared: first the user coordinate modification is not properly generated, also it is needed to register and launch some shape regeneration after the data structure modification. If the shape modification is registered with the data structure then the modification can be undone.

Tuesday, January 13, 2009

Property dialog

Reimplemented the code that shows the properties for the selected code, now the code should be able to display any type of object. Implemented some classes that add dynamically the Properties. Currently the code displays the object name and the vertex coordinates.

Will continue working at improving the object property display and also to add code that will modify the object when properties are modified. Will add also some improvements of the OCAF data hierarchy so that each entity (like a coordinate) will identify itself having a Name field.

Monday, January 12, 2009

Property dialog

Worked at displaying the Properties for the currently selected object. The property grid displays currently the selected object category (rectangle, circle). I implemented also a functionality to display the object vertexes and their coordinates but this is not finished yet. Will add also a property for the object color and will add code that updates the model when the properties are changed.

Sunday, January 11, 2009

Added GUI improvements

Improved the docking, redrawing, solved many from the docking problems. Also the Sketcher works properly. The application seems to work well. Will start cleaning the code and uploading on SVN.

Will continue now with populating the Property dialog with the selected object property (task estimated to take 1-2 days), improve the tree list that displays the drawn objects (task estimated to take 1 day). Will also start adding tasks in the Sourceforge and organize iterations.

Friday, January 9, 2009

GUI work

Finally succeeded to make the docking work properly. The redrawing is made well.

Will continue now with populating the Property dialog with the selected object property (task estimated to take 1-2 days), improve the tree list that displays the drawn objects (task estimated to take 1 day). Will also start adding tasks in the Sourceforge and organize iterations.

Thursday, January 8, 2009

GUI work

Spent the day tracking the docking, resize, redraw, update, activate, deactivate events at Naro in different window and control moving scenarios. Added also logging that displays these events to track better the events. Still not working properly.

Wednesday, January 7, 2009

GUI work

Still working at remaking the GUI. Added improvements: the Sketcher can be launched in the same window with the 3D model, two or many windows can exist in the same time, started solving/improving the resizing and redrawing.

Remained to finish adjusting the resizing events, finish displaying the toolbars specific to an active window. After this will continue with adding the object properties in the properties dialog.

Monday, January 5, 2009

GUI work

Today moved the Naro project on the new computer and installed the software needed for development.

Started working at solving the application problems. One problem is caused by the fact that changed the controls with forms and the activate/deactivate events have a different meaning and require a different logic. In one more day of work this problem should be solved. When this is stable I will update the latest sources on SVN.