Friday, May 17, 2013

Working version with the new wrappers

Yesterday I finished the changes for the new wrappers and we have a working version of Naro, using the new wrappers. I've tested it in Release mode and also as an installed application. I fixed some of the bugs and am working on fixing the others, and aside from some small speed issues, the application behaves as it did before the wrappers port.

I am working on a test plan that will include all the cases I mentioned in the previous post, as well as everything I added during today's testing and I will post it when it's done.


Monday, May 13, 2013

Fix for Release differences and testing

Today we found the cause for the differences we had between Release and Debug builds, the Optimization property value set in NaroOccCore.vcproj. The Debug value was set to 4 and the Release to 2. Changing it to 4 in Release caused the .dll to be slightly bigger, but the behavior was correct and the methods returned correct values.

After making these changes, I tested the Release version of the application and the following operations and tools were ok:
- Extrude on default sketch, on sketch created on the face on an extruded shape and on sketch shape resulted after Trim
- Cut through all - through one extruded solid and through two superimposed extruded solids
- Cut to depth
- Array pattern with a 3D shape and a solid resulted after two extrudes and one cut through all
- Circular pattern with a 3D shape
- Basic Hinter and Solver logic
- Trim
- Draw 3D shapes
- Revolve line around line
- Fillet and Chamfer 2D and 3D
- New file, Save and Open saved file
- Dimension
- Arc (SER and CSE)
- Fuse, Intersect and Substract extruded solids
- Undo and Redo

There are still some problems with the selection of the drawn shapes and solids - the program crashes in IdentifyShapesUnderMouse.

Tuesday, April 23, 2013

Extrude fixes for Release mode

Over the past few days I investigated the issues we have with release mode and found that in some cases, in release mode, the IsNull property of a TopoDS_Shape was true, even if the shape was valid and the other properties were correct. Another property that had wrong values was context.HasOpenedContext.

Here is a short demo with Extrude performed on complex shapes, ran in Release mode:



The next issue to fix is the selection: when selecting a circle in release mode, the center point is returned as selected - this could be because the Context's selection is wrongly set, or the comparison method is incorrect.

Wednesday, April 17, 2013

Code changes integration finished and demo

Yesterday I finished the integration of code changes up to NaroCAD 1.7.6 into the solution containing the new wrappers and today I started testing.
The application works well in Debug mode, but there is a bug causing selection not to work in Release mode. Here is a small demo ran in Debug mode:



I will continue investigating the cause for the differences between Release and Debug mode and test it to make sure that the new version has the same functionality as 1.7.6.

Wednesday, April 10, 2013

NaroHost improvements

Today I worked on improving NaroHost and including the additional scripts I used into it, so there'll be fewer steps when we want to generate new wrappers. I also set the main structure for a tutorial on how to generate new wrappers, which will be published when all the code changes are done.

Monday, April 8, 2013

New wrappers built successfully

Today I successfully built the new wrappers in Debug and Release mode, ran NaroCAD using these new wrappers without crashes, and created the installer and ran it:



and here is the Process Explorer view, where we can check that no debug dlls are used:



The next step is to clean up the generation code, include all the external scripts I used into NaroHost and prepare a tutorial on how to generate the wrappers and how to add new wrappers.

Wednesday, April 3, 2013

Building wrapper on old .api file

Over the past few days I've tried to build the NaroOccCore.dll file using the files generated by the old OccWrappers.api file, to make sure that the base classes used by Naro are correct and that the build process is correct, and when I have an identical .dll file, build from that to create the new .dll file.

Unfortunately, even if the built dll file seems to be the same as the one found in the repository, there are some differences that cause it to crash.

Things I checked:

- the exports from both files using dumpbin: /exports, /imports and /dependents and they are the same, only the /rawdata results are different.
- the other files are the same and that replacing only the dll file causes the application to work correctly or crash, depending on the dll version.
- other versions of the code from different revisions, to make sure there weren't any changes that were used when building, but were commited later
- other branches for changes that weren't added to the main branch
- Qt version and install

I am now checking if there are differences in the compile options or other settings that might have remained uncommited.