OCC 6.5.4 missing CDL files

Hello OCC,

We have noticed that in the latest occ version 6.5.4 there are cdl files missing for new classes.
For example : Image_AlienPixMap and TopTools_MutexForShapeProvider.

However, the existing cdl-files, where the new classes are used, are updated:
For example: BRepMesh_FastDiscretFace::Add is using TopTools_MutexForShapeProvider as described in BRepMesh_FastDiscretFace.cdl

Since we are using the cdl files, with MS_MetaSchema, for generating code, we have problems generating code for the new classes in occ 6.5.4.
We are wondering if the missing cdl files are just forgotten in the distribution, or that occ is leaving the cdl methodology?

Thank you for your answer,

Guido van Hilst

Andrey BETENEV's picture

Hello Guido,

You are right, almost all new developments in OCCT done during last years use plain C++ (hxx/cxx) instead of CDL. Getting rid of CDL is in our plans, but it is still used in existing CDL classes and packages.

If you are using CDL for generation of some derived code, you will have to either reconstruct CDL or analyze C++ code directly. For instance, we use SWIG for wrapping OCCT classes to C#.

Best regards,

Guido van Hilst not specified's picture

Hi Andrey,

Thank you for your reply.

I have always found that cdl that was one of the strong points of occ development methodology. My I ask what the reason is to drop CDL?

If you plan to abandon cdl would it not better then to abandon it all in once? Now occ have a broken system: In old CDL the new classes are used, but the new classes itself are not described anymore in cdl?
The CDL only make sense to me if all is described, or none.

About c# wrappers:
For our wrappers we relay on some features that we have build in our wrapper generator. for example: .net streams.

We also rely on .net style casting:
For example Geom_Geometry g = Geom_Point.Copy() gives us an wrapper instance of type Geom_Point. We can do .net style casting like:
Geom_Point p = g as Geom_Point;
Does the c# wrappers, you have generated with SWIG, support .net style casting and .net.streams??

Thank you for your time.


Andrey BETENEV's picture

Hello Guido,

The main reason to prefer plain C++ to CDL for new classes is to be able to use modern C++ techniques (templates etc.) for OCCT development, as well as more straighforward development process (no need to convert CDLs to HXX). The need to use WOK to make changes in OCCT code causes serious inconvenience for new users and potential contributors who need to learn and use this additional tool.

Unfortunately, dropping CDL for us is not a one-step action. We do not want to loose control over a huge amount of files which are currently generated by WOK, thus we need first to modify WOK to eliminate these extra files and provide good replacements to WOK-supported features (such as Handles) with plain C++.

As far as I know, our current C# wrapper does not operate with .Net streams, and Geom_Point.Copy() would return instance of Geom_Geometry wrapper, just following C++ declaration. However, I am pretty sure these features can be implemented if there is a demand for that.


Shockwave's picture

could you add the C# wrapper to the OpenCascade Package?

Sergey ZERCHANINOV's picture


OPEN CASCADE SAS offers a C# wrapper for Open CASCADE Technology as a paid component. You may find some initial information about this tool at http://www.opencascade.org/support/products/advsamples/.