Let me share with you a couple of simple things that could make your life a bit easier if you use Microsoft Visual Studio for development on Open CASCADE.1. Highlighting Open CASCADE class names in the editorThis will improve your code readability and what is more important, can serve as additional quick check whether you correctly spell a OCC class name before you...
Building from scratch. Part 2
13:34 / BY Roman Lygin
(continued)First, do you know where WOK name comes from ? It’s not just Workshop Organization Kit as named in the documentation. In Chinese cuisine wok is a deep convex pan in which chef cooks food (I’m sure you saw it, right ?) The name was given by a former Matra Datavision employee who was of Chinese origin and initiated it. WOK was used...
Building from scratch. Part 1
13:04 / BY Roman Lygin
As I said in my previous post, we decided to integrate OCC into our team’s app test database at Intel. So I committed to enable that integration and proceeded to the task.In order to get correct data when profiling an application (including using Intel Parallel Amplifier and Inspector), it must be compiled with /Zi option and linked with /DEBUG options to enable symbol...
Open CASCADE inside Intel, or ... Intel inside
12:32 / BY Roman Lygin
Just finished the meeting with my Intel colleagues where we decided that Open CASCADE would be integrated into an internal application database for testing our software products. I am a program manager in the team that is developing new products – Intel Parallel Amplifier and Parallel Inspector, which will be part of the Intel Parallel Studio (www.intel.com/go/parallel). They are approaching public Beta program...
Open CASCADE Handles. Let's handle'em. Part 3
12:54 / BY Roman Lygin
(continued)3. Bypass DownCast() in critical places.Compare:a. Handle(Standard_Transient) aTransient = new OCC_UT_Id(1); for (i = 0 ; i < aNbCycles; i++) { anId = Handle(OCC_UT_Id)::DownCast (aTransient)->Id(); }b. for (i = 0 ; i < aNbCycles; i++) { Handle(OCC_UT_Id)& anIdHTmp = *((Handle(OCC_UT_Id)*) &aTransient); anId = anIdHTmp->Id(); }c. for (i = 0 ; i < aNbCycles; i++) { OCC_UT_Id* anIdPTmp = (OCC_UT_Id*)aTransient.Access(); anId = anIdPTmp->Id(); }a....
Open CASCADE Handles. Let's handle'em. Part 2
23:40 / BY Roman Lygin
(continued)*Standard_Transient and MMgt_TShared*If you are attentive enough, you will likely notice that most handle classes inherit MMgt_TShared, while it does not add any value to Standard_Transient. The comments in the cdl file claims it supports reference counting. Well, reference counter is inside Standard_Transient ! I dove into the source code of Open CASCADE 3.0 (released in 1999, the first open source release) and...
Open CASCADE Handles. Let's handle'em. Part 1
20:22 / BY Roman Lygin
Let me start the first article with something simple yet important if you want to develop on Open CASCADE.You likely noticed that many classes inherit Standard_Transient, directly or via other ancestors, e.g. Geom_Surface or AIS_InteractiveObject, and that in the code that are used as Handle(Geom_Surface).Open CASCADE tries to never use pointers (at least in API). Whenever it needs a shared object it uses...
My first blog post. Introduction
19:49 / BY Roman Lygin
This is my first experience as a blogger. Ever. No idea if it will work out or not. Let's see together.I had been working at Open CASCADE for 7 years till 2004, before moved to Intel where I am now. These were fantastic years, that gave me invaluable experience in software development and project management, customer relationship, and working across multiple geos and...