For all issues regarding the Forums use, please, refer to the Forum Rules.

Our Solutions

Need professional assistance?
Consider our:

Support Offerings

 

Need to speed up your development?
Have a look at our:

Samples & Tools

 

Need some functionality extending standard OCCT capabilities?
Check out our:

Adv. Components

Related pages

[BUG?] GeomPlate_BuildPlateSurface::Perform() fails to project edge on initial surface

Timo Roth's picture
Forums: 

When I try to create a surface A bounded by 4 edges using BRepOffsetAPI_MakeFilling, I get an exception in Plate_SequenceOfPinpointConstraint::Value. The reason seems to be that GeomPlate_BuildPlateSurface::Perform() fails to project one edge on the initial surface. This edge is taken from another surface B which was also created using BRepOffsetAPI_MakeFilling. My aim is actually to create surface A tangential to surface B, but even without tangency it fails. If I use the original spline, which was used to create surface B, instead of the mentioned edge of B, it works.

In order to reproduce the problem, you can use the following Draw-commands:
restore Basis.brep b
explode b
filling r 4 0 0 b_5 b_1 0 b_2 0 b_3 0 b_4 0

When you use the spline instead of b_4, it works:
restore Basis_spline.brep s
filling r 4 0 0 b_5 b_1 0 b_2 0 b_3 0 s 0

Is it a bug or is there a problem with edge b_4?

Stack trace:
TKGeomAlgo.dll!Plate_SequenceOfPinpointConstraint::Value(const int Index) Zeile 109 + 0xc Bytes
TKGeomAlgo.dll!Plate_Plate::UVBox(double & UMin, double & UMax, double & VMin, double & VMax) Zeile 1530 + 0x10 Bytes
TKGeomAlgo.dll!GeomPlate_Surface::RealBounds(double & U1, double & U2, double & V1, double & V2) Zeile 382
TKGeomAlgo.dll!GeomPlate_MakeApprox::GeomPlate_MakeApprox(const Handle_GeomPlate_Surface & SurfPlate, const double Tol3d, const int Nbmax, const int dgmax, const double dmax, const int CritOrder, GeomAbs_Shape Continuity, const double EnlargeCoeff) Zeile 330
TKGeomAlgo.dll!GeomPlate_BuildPlateSurface::Perform() Zeile 529 + 0x53 Bytes
TKBool.dll!BRepFill_Filling::Build() Zeile 546
TKOffset.dll!BRepOffsetAPI_MakeFilling::Build() Zeile 89

Regards,
Timo

Attachments: 
Forum supervisor's picture

Dear Timo,
In fact your post already contains the answer.
Just make the next step: compare underlying curves.
Regards

Timo Roth's picture

Thanks for the reply, but could you please be more specific what might be the problem.

I dumped the curves in Draw.

b_4 is:
BSplineCurve
Degree 11, 42 Poles, 5 Knots

s is:
BSplineCurve
Degree 2, 3 Poles, 2 Knots

Is the degree of b_4 too high? But if I set maxDegree of filling higher it still fails.

Regards,
Timo