Is OCC good value?

I've spent the past couple of weeks evaluating Open Cascade. At the outset I thought that, because of its price, it would be a fantastic way to add solid modeling capabilities to our product. Now, I'm starting to believe that although it is inexpensive, some of the competitors may provide better value.

To start with, I tried to sign up for an e-learning course. This is something that should be quick and easy. I expected to fill out a web form, provide a credit card number, get a password in the mail, and be up an running within hours. Instead two weeks have passed and I'm still not enrolled. For some reason OCC wants payment via wire transfer rather than credit card. Ugh. The process has been slow and difficult and so (for now) I've withdrawn my request and am not pursuing the e-learning course.

Instead, I decided to write a little toy program to get a feel for the API. Ugh again. The documentation is mostly missing. The parts that are documented are (IMHO) poor quality and not well organized. I was unable to find simple things, like the difference between BRepAlgo_Cut and BRepAlgoAPI_Cut.

And I can't quite put my finger on it (the macros?), but the library feels very dated. Almost like it hasn't been updated since the late '90s when many popular compilers (*ahem* VC6) worked poorly with templates.

I did manage to get my toy app running and it works well, but it took way longer than it should have. This is the main reason I believe the more costly competitors may be a better value.

I'd be very interested in hearing from other people who evaluated OCC and its competitors and ended up going with OCC. Are there non-financial reasons for selecting OCC?

-cory

Paul Jimenez's picture

I haven't tried any other alternatives, but I agree with you in many things. The API is for sure very dated, bugs abound, documentation is mediocre, the learning curve is very steep, doing some slightly advanced things are either difficult or you have to do them yourself, the visualization framework is slow and buggy (hopefully NIS will solve these problems), trying to delve into the code is frustrating, the forums have way more people with lots of questions than people with answers willing to give them.

I've been using OCC for 4 months now, and it's been really difficult to get a nicely working program with it. Sure they offer support, but the price and conditions couldn't convince my boss.

Sorry for the bad publicity, but all you need to do is check the forums to realize it's true.

Hoping for a version 7 that breaks all compatibility, but that is a bless to use,

Paul.

Forum supervisor's picture

Hello Gentlemen,

We are happy to hear that you managed to get non-zero results with our software making just zero investments - usually this scheme does not work in business, so you should be very lucky! Perhaps our documentation seems to be not enough profound for beginners and perhaps the API of our software looks messy to people not used to work with such huge libraries like ours... so we give it all for free and we hope that, if one is about to create anything serious with our software and is not just playing around, he would consider our professional services. Our customers (http://www.opencascade.com/customers/) made their choice and their names can be a good proof of usability and quality of our software and services.

Cheers,
Forum Supervisor

Paul Jimenez's picture

Hello Forum Supervisor,

Actually, I expected a post from someone involved with OCC, and even some sarcasm in the answer. Please don't take the comments in an offensive way or anything like that.

It's true that making investments is necessary in business, but, sometimes, it's not easy. In my specific case, as I already commented, the pricing and conditions didn't convince my boss. Besides, what I'm using OCC for is just a little add-on to the software the company sells and profits from. Also, I'm the only developer involved in it. No other developments are being considered that would benefit from OCC in the near future. I would be glad to get a deeper knowledge of the library, but I'm, let's say, forced to do it the hard way.

The technical documents are a good starting point. They explain many important things, but they're still far from complete (for completeness one would need an e-learning course, like the one you offer, but, once again, not everyone can get access to it). However, no one here who is not supporting you has the right to ask for better documentation. That doesn't mean we cannot give our opinion about the one that is freely available. Also, for a beginner, the documentation looks really messy at first, but it starts making more sense when you have used it for some time. Still, the reference documentation needs a little bit more improvement, but I cannot ask for it since I'm not supporting you.

The library is huge, I won't deny it. It does tons of things, and you did your best trying to make it really good and as well organized as possible. The problem here is that most of it still uses very old techniques better implemented using current ones widely available in recent C++ compilers. Another such example is wxWidgets. What makes a bigger difference here is that "upgrading" OCC would take a lot of time and effort while surely introducing more bugs in the process. Once again, I have not the right to ask for it, but I think it's fine to suggest it. If you still want to blame our point of view in the size of the library and the 'inexperience' you implied on us, do so. I understand your intention to defend and protect this software from these kind of comments.

In conclusion, we are judging OCC from the perspective of the Open Source community. I'm really grateful for your having released this software also under such 'free' terms, giving people the chance to fiddle around with it. For this community I try to help here in the forums giving answers when I can, and I'm also not the only one trying to push OCC forward, and open source development in general. As a matter of fact I'm a developer of an open source project. Unfortunately, I don't have enough time to work on it lately.

Thanks again for what you've done and provided.

Best wishes,

Paul.

Forum supervisor's picture

Hello Paul,

And thank you for your honest reply!
We really appreciate your comments most of which we consider quite correct and reasonable. Please believe that we value all the feedback that the community members post here and we try to follow your suggestions to make our software better for everyone, for as much as we can without sacrificing our commercial activity. We do not at all blame your comments, perhaps we just like them to be more constructive sometimes... So thank you very much for participating in this Forum and good luck in all your projects!

Respectfully yours,
Forum Supervisor

Pierre Juillard's picture

Hi all,

Dear Paul, I don't know the aim of your developments with OCC, but you might be interested in considering the FreeCAD software, which is most notably based on the OCC library.
http://juergen-riegel.net/FreeCAD/Docu/index.php?title=Main_Page

It is a rather advanced CAD software, even if not in a final state.
As it is an open source project, you may find intersting ideas and tracks about how to use the OCC library by having a look at its sources.

Also, the forum is very reactive.
I really like this project and its team.

Finally, the other active open source project making use of OCC is the jCAE project (meshing software in java).
http://jcae.sourceforge.net/index.html

But I don't know very much the soft: GMSH is the best for meshing!

Cheers,

Yoh

jelle's picture

I think its true that the learning curve of OCC is pretty steep.

Perhaps not so much due to the library itself, but before you've got a graph in the back of your mind of how OCC is organized, you're quite a bit further down the road.

What helped me immensely using PythonOCC.
Because of the dynamic nature of Python, its easy to fire up an interpreter and simply play with the objects on the interpreter as you go. That way its very productive to experiment and get a working app up and running quickly.

Actually I do think the doxygen documentation is quite nice, but there is perhaps little granularity in the documentation. There are quite a few samples that are nice, but between the relatively easy examples and the detailed doxygen documentation there's a pretty big gap. I suppose the e-learning course fills in this gap?

I would not be able to say anything on the state of the OCC code, but what I do find somewhat demoralizing is the lack of a public SVN code repository for the OCC project. Psychologically this is a big deal I think: for developers it becomes very difficult to contribute to the project, bugs are only fixed in release cycles. Lack of a code repository to me suggest a disinterest in the potential of open source developers. All in all an open source project with no code repository seems less credible than one that has.

An open source community finally revolves around code. There's only one way to facilitate this in an efficient manner, so I'm really puzzled in this sense why there isn't such a SVN? Is there a valid argument against a repository?

Let me join Paul in thanking all the OCC dev's for sharing their project! This is an immense contribution.

Best,

-jelle

c-riddell's picture

Hello Forum Supervisor-

Others in this thread have mentioned "secret documentation". Is there more complete documentation available to paying customers?

I installed OCCTDocumentation6.3.0 which is the doxygen generated documentation and there are lots of classes that have little or no documenation (e.g. BRepBlend_Line). People who have been working with OCC for a long time know which classes are deprecated and what the replacements are. A newcomer doesn't have this knowledge and it doesn't seem to be available anywhere unless you are lucky enough to discover the information here in the forums. So, I think I would say that the documentation isn't good enough for beginners. Do you disagree?

As for the API, I don't think I called it messy, just dated. It doesn't take advantage of (or look like) the standard C++ library. This worries me because it suggests that OCC has slipped into eternal maintenance mode and is no longer being aggressively developed. I sincerely hope this isn't true.

I hope I didn't offend you or anybody at OCC with my initial post. I am glad to see some defenders come forward.

P Dolbey's picture

A long time ago, in almost a different lifetime (well at least a different job), I took a Matra Datavision foundation training course in CAS.CADE 1.5. I still have the training materials in a thick, Diamond logo'd, lever arch folder - but most of this is still covered in 6.3.0 pdfs. If things are the same now, it not so much that there's secret documentation, although I still have some useful papers that aren't published elsewhere, but that it was organised and annotated during the course and linked to working examples (anyone remember building "beans"). It was the the instructors insights that were obtained during the sessions which contained the true secrets - but there are gurus on this site who now offer similar insights.

In the open source world, very few projects provide sufficient documentation - Qt perhaps is the exception, setting a very high standard. However, this is something we (the OCC community) could fix ourselves - Roman has started blogging, Stephen Leary has provided a wiki at http://www.opencascadeforum.org/wiki which hasn't been exploited. If anyone has developed more insights into this library, or can see better ways of presenting information to newcomers, then there are plenty of opportunities for publishing it. To misquote a famous US president "Think not of what Open Cascade can do for you, think of what you can do for Open Cascade".

Pete

Roman Lygin's picture

Nice thread to start a new year with. I think it must be put into some FAQ section, as it regularly pops up here.

My 2 cents on the subject, hopefully unbiased despite some closer relationship to the OCC company...

To answer the original question of the thread whether OCC has a value I’d suggest we look from multiple perspectives.

First things first. Measure your TCO (total cost of ownership). You have to invest your time (learning curve is steep as people rightfully claim) but apart from that there is nothing you are obliged to pay. Compare that to run-time fees or royalties other similar libraries bound you to. Would you choose in their favor ? In developing financial crisis when cost cutting will be (or already is) dramatic, financial aspects will be top priority. Managers will be more inclined to spend personnel’s hours than dollars. Any senior managers of the companies using other geometric kernels I spoke with in the past claimed they suffered from permanent license fees they had to pay to licensors.

Open Source. I am personally a strong believer that future of software is open source. More control, more security, better portability, whatever. It’s becoming mainstream. If your software is open source, it does not automatically grant you competitive advantages but you can convert it to such. OCC does use it, in my opinion.
Is OCC ready to use out of the box by any average developer ? No, it is not. By why would you expect it to be? I feel that the global trend in the world is that software is becoming a commodity, and people expect that there is already software able to solve their problems whatever they are. It’s almost already the case for information which is available from any spot in the world thanks to internet – google, wikipedia, youtube,… Everything is at your finger tips. With raise of Open Source wave, Linux, Sourceforge people raise similar expectations to software. I think we’ll be there but not in short term and/or not for any kind of software.

Why then doesn’t OCC company try to improve user’s experience and to shorten its learning curve ? Well, actually it does (check their regularly updated documentation sections and samples, detailed Release Notes, etc). But again, let’s look deeper. What would be company’s motivation ? Would would *you* do if you were its CEO (that’s an interesting perspective my former Intel manager taught me to think from) ? There is no direct revenue from OCC licenses and spending staff hours to improve usability would undermine operating profit and would not make shareholders happier, right ? That’s why we normally see improvements stemming from OCC own commercial projects. Does that mean OCC is closed to community claims and requests ? No. They simply receive lower priority.

E-learning. If you did not get the service you requested, just contact the customer service team. Check what went wrong and ask for a service. Contacts on the site should normally work. And don’t hesitate to remind if you feel there was no timely response. But don’t expect too much from e-learning. At least, that it will give you secret documentation not available in the product releases.

So, does OCC offer a competitive value ? Absolutely. Does it require zero investments ? No. You still have you have to pay in your hours, and/or service fees should you decide so. Are there rooms for improvements ? Countless. The point is their priorities, for the community and for the company, and its shareholders. These priorities may often not match.

My recommendation would be to discuss with the OCC team what could be possible business model between your company and theirs. Talk to your manager about budget constraints for your project and how to work within them best regardless if you use OCC or not.

Roman
---
opencascade.blogspot.com - blog on Open CASCADE
Join the Open CASCADE Group at LinkedIn

c-riddell's picture

Hi Roman-

I think my beliefs align very closely with yours. I'm also a big believer in the importance of free (libre) software. I'm just struggling with finding the best value for my employer. A developing financial crisis can actually make this easier to do. Companies that are still spending money have tremendous bargaining power right now. Even in a crisis, there are great opportunities.

In your TCO discussion, you say "you have to invest your time [...] but apart from that there is nothing you are obliged to pay." Well every hour that I spend working on solid modeling capabilities is an hour I'm not doing something else. It's that opportunity cost that is the real killer and what could ultimately determine which product is the best value.

You pointed out something that I haven't considered. Improving the (free) documentation would reduce the need for (paid) support. Keeping the software hard to use and poorly documented is beneficial to the OCC corporation. Yikes! I hope this isn't true.

My experience with trying sign up for e-learning was definitely not good. I should be able to pay with a credit card and get access to the materials the same day. Make it easy for me to pay! Remove all the barriers.

I originally posted this because I haven't evaluated anything else and I don't assume the non-free competitors are automatically better. I was looking for input from OCC fans. I was hoping to hear technical reasons why OCC is a good choice or things I should look out for when I do look at something else. It would have been great to get a pointer to a CVS repository where I can check out v7 - the one made for modern compilers. (Writing something like "Handle(foo) = new foo();" is an abomination IMHO). So far I didn't get that, but I'm going to keep watching this thread.

Cory

Roman Lygin's picture

Hi Corey,

Well, from technical perspectives I don't have recent comparative analysis, and would be as interested as you. So, if you find anything please share. I did have data for 2001 (from research by Cadalyst, Cadence, etc) but the links are now broken :-(. That time OCC was quite competitive from technical point of view, and I would not expect it would lag behind today. I checked articles on the other kernels last month and it seems there was no significant progress in them. OCC is well structured, and its C++ API is an advantage. You may be overwhelmed by its Doxygen documentation (generated from CDL) but if you start from its User's Guides, you would have a better clue. The Getting Started page (http://www.opencascade.org/org/gettingstarted/) which we created a few years ago for newbies should still be helpful.

CVS (SVN) was discontinued for several reasons. It was an overhead for the company, and did not provide substantial benefits for the community. The code was sometimes unstable forcing people to raise claims and to distract the OCC support team. Instead, the release cycle was reduced offering more frequent maintenance releases (though restricted to the paying support customers).

Concerning poor documentation and paid support. I think there can be some truth in your assumption. This conflict of interests (perfect documentation = less need for support) is still in place, and its root cause is in a business model in my opinion. As Peter Dolbey already mentioned, Qt sets a high bar for the documentation. Trolltech (now Qt Software, after acquisition by Nokia) claimed on their site is that it's their intent to offer an excellent documentation to eliminate eventual need for support. They could do so due to the dual license model around Qt. I was closely watching Trolls at that time as for me they were a role model. OCC did (could) not follow that path. So, that contradiction has not been fully resolved, and OCC still has to find a balance between its own interests and those of community. The company still courteously does many things for the sake of supporting community (recent new features, and documentation on them) it does not really have to.
So, instead of direct spending $$, you can have an option to invest your time which is worth $$ and at the expense of other activities you might want to do. You are perfectly correct in that.

As for credit card payment, I guess their infrastructure is simply not set up for that. They may deal through bank transfers, and that's why they asked about that.

Hope this will be helpful.
Roman
---
opencascade.blogspot.com - blog on Open CASCADE
Join the Open CASCADE Group at LinkedIn

Rob Bachrach's picture

Cory,

I have been using OCC for nearly 8 years and am not yet anywhere near an expert in all its functionality. When I first looked at CASCADE, it was still a commercial product and not yet open. I was comparing it to ACIS and Parasolid.

At the time, OCC was not quite as powerful as the others, but the C++ API made it much better organized that the C APIs of the others. Unfortunately, due to budget constraints, none of the packages were adopted. When OpenCASCADE was released, it became a no-brainer. I did take the eLearning several years ago. Although it was oddly structured, it was well worth the time and money.

I will qualify my comments as I only use OCC for its solid modeling capabilities. I do not utilize the visualization or selection mechanisms. Primarily due to historical reasons (but also for the extra functionality), I use HOOPS for those capabilities.

Overall, I have found OCC to be very powerful. There are some things it does not do as well as the commercial tools, primarily that boolean operations tend to be slow and somewhat unreliable, but there are workarounds for most problems.

Granted, the documentation is not as good as it used to be. Although doxygen is an excellent tool, the OCC header files are not well structured to use it at its best. The original documentation shipped with OCC 5 was much better, and I wish it was still available. I do suggest that new users read all of the introduction material and do the tutorials before continuing.

Although it does get much easier as you experience more of the library, I have found that the CDL files are much easier to use than the doxygen reference documentation. A few years ago, I wrote a perl script to convert the CDL files to HTML with a searchable index. You can check out this thread for more information:

http://www.opencascade.org/org/forum/thread_10470/

I don't know if the site is still available. It is blocked by my company's firewall.

So, although it was a purely financial decision, OCC is a pretty good product once you learn it. However, as with all complex solid modelers, it does have a pretty steep learning curve.

Good luck,
Rob

Roman Lygin's picture

Rob,
Great reply, thanks!
What is missing in 6.x doc comparing to 5 ? I still see all User's Guides. Could you please elaborate ?
Thanks.
Roman

---
opencascade.blogspot.com - blog on Open CASCADE
Join the Open CASCADE Group at LinkedIn

Rob Bachrach's picture

Roman,

Unfortunately, I no longer have the old versions for reference (I wish I did). I do remember them being more step-by-step in nature. In addition, they contained better descriptions of all the packages and the facilities within each package. Since there were no reference docs, the reference doc information was incorporated into the documentation.

I remember being able to begin using OCC directly from those documents, without a tutorial or separate reference document. I'm not sure I could do the same with the current documentation.

Sorry I can't be of more help, but its been a few years.

Rob

P Dolbey's picture

Rob et al,

You can still get 5.1 docs from here http://myweb.tiscali.co.uk/dolbey/QtOpenCascade/doc5.1.zip

Pete

c-riddell's picture

Thanks for posting the link, it is very helpful. The 5.1 documentation is indeed better in some ways. For example, I had asked what the difference between BRepAlgo_Cut and BRepAlgoAPI_Cut is and here I can see that BRepAlgoAPI_Cut is a new version. This information seems to have been lost.

I am a fan of doxygen though. Hopefully information like this finds its way back into the documents.

Mohamed Lotfy's picture

Cory,

For technical comparison between openCascade and other compatitors, refer to the pdf document
sketch.inesc-id.pt/technicalreports/D05.pdf
this is a technical survey done by SmartSketcher team berfore developing it. Though little bit old (2002), it will be helpful. (check page 33 to 35)

Regards
Lotfy

Roman Lygin's picture

Yes, that's the very table that was hanging in my cubicle for several months back in 2001-2002 ;-). The authors do not give the reference to the original source and AFAIR it was initially published in Cadalyst or Cadence. Anyway, that table did not seem really reliable (at least for OCC) - for instance, it says OCC does not support curve intersection which is not the case.

Thanks for a link!

heXus's picture

Greetings to all!

I didn't try other geometrical kernels. I will speak therefore, only about ÎÑÑ.

Yes, ÎÑÑ it is difficult to understand. It is very big and difficult library. But, and programming of CAD/CAM/CAE applications not for average minds. Forgive, if has offended. Therefore in source codes of ÎÑÑ it is a lot of names of Russian programmers. They the best.

Yes, the documentation which goes in the distribution kit doesn't describe in detail as you to make your application. But, in the documentation the general principles and aspects of usage of ÎÑÑ are described. Distribution kit contain source codes of examples of applications. Look at them. And moreover, there is the hugest archive of Doxygen documentation.

If you and it have enough, use search in this forum. Many answers will find.

But, there are also other useful places for search of the necessary information. And, even, with source codes... For example:
http:// www.salome-platform.org/
http://narocad.com/
http://qtocc.sourceforge.net/
http://free-cad.sourceforge.net/
http:// www.pythonocc.org/
http://jcae.sourceforge.net/
http://opencascade.blogspot.com
http://heeks.net/
http://code.google.com/p/wildcat-cad/

And the most important thing - read source codes of ÎÑÑ!