Plating alternative


We are working on an alternative for the plating algorithm. We had some issues with plating:

1. The initial surface vastly influences the result surface.
2. The internal parts of the result surface can act rather funky
3. The result surface can behave very badly outside the control curves. This can result huge performance issues in boolean operations and in filleting. Quite often the fillet algorithm stuck in the surface intersection calculation due to the low quality of the outer parts of the plate surface.
4. The iterative method that is used to calculate the result surface can be really slow

Now we are working on an implementation of an N-sided surface based on the work of Varady ( This lets us creating G1 continous surfaces from boundary curves, that most likely could be used quite often as an alternative for plating, for example in the fillet algorithm.

If we manage to create a robust implementation for this algorithm we will submit it to OCCT, and it could significantly improve many algorithms.

Such surface representations are defined over non-rectangular domains and this means that they can not be introduced as a new surface type in OCCT, and have to be approximated with splines. This means that in the outer domains one have to figure out something to make these patches behave nicely. Currently we are using multiple patches in the outer boundaries to solve this issue, and it works rather well, however it would be nicer if we could simply approximate simply the inner parts and ignore the outer parts. Is there any solution in OCCT for approximating non-rectangular domains? Like in this paper: it is possible to create "weak" control points, that won't participate in the approximation, and this let's the user to only partially define the approximated domains.

Sergey Slyadnev's picture

Istvan, what you're doing is extremely interesting! I hope, more experienced folks will comment on this. For sure, OCCT is not that advanced in hole filling and everything is generally based on a single plate tool. So we will wait with interest for the news from you.

As for approximation, have you checked AdvApprox facilities? I've never tried to use it for non-rectangular domains, but the general idea is approximation of functions with B-splines. I guess, whatever shape you obtain, it is still a single function which allows for conversion (just like the good old plate or offset surface or swept surface, etc.).

István Csanády's picture

Yes, I am experimenting with AdvApprox, without too much success. The documentation of the package sometimes not 100% clear.

István Csanády's picture

It is still a single function, but it behaves rather badly outside the non-rectangular domains. Eg. if you fill an 5 sided patch, then the pcurves will be 5 lines, that make a non-regular polygon. Outside the polygon in some cases the surface can behave rather poorly.

Sergey Slyadnev's picture

Still wonder why do you care of the surface shape outside it's definition polygon? Aren't you going to trim it by a wire to keep the accurate zone only? Probably I have to read the paper of Varady beforehand -)

István Csanády's picture

The problem is that to approximate the surface with a spline you have to approximate the entire rectangular domain (at least I haven't found a way ignore the outer domain). And if you don't tweak the surface definition outside the boundaries the approximation will be extremely slow due to the irregularities in the outer domain.

Of course you can trim it, but even in this case the entire surface will be used in the intersection algorithms, and this means that the surface have to behave nicely in the outer parts as well.