Поверхностные пересечения с ОТКРЫТЫМ КАСКАДОМ

У меня проблема с пересечением двух поверхностей.
Первый обрезается, а второй не обрезается.

Я использую BRepAlgoAPI_Section пересечь две поверхности и получить ребра пересечения (в моем случае только одну):

Это мой код, здесь я делаю пересечение:

TopoDS_Face trimface, face;

BRepAlgoAPI_Section ffsect( trimface, face, Standard_True);
ffsect.Approximation(Standard_True);
ffsect.Build();

Здесь я перебираю края раздела. Для каждого края я создаю TopoDS_Edge поставить на экран.

Standard_Real pFirst, pLast;

TopTools_ListOfShape edges = ffsect.SectionEdges();

TopTools_ListIteratorOfListOfShape eIter(edges);
while ( eIter.More() ) {

// For each edge I create a TopoDS_Edge object and I put it on screen
TopoDS_Edge edge = TopoDS::Edge(eIter.Value());
Handle(AIS_Shape) anAisEdge;
anAisEdge = new AIS_Shape(edge);
anAisEdge->SetColor(Quantity_NOC_RED);
anAisEdge->SetWidth(2.0);
// get my Ais_InteractiveContext
myOccView->getContext()->Display(anAisEdge);

// Create a Geom_BSplineCurve from edge
Handle(Geom_BSplineCurve) myCurve =     Handle(Geom_BSplineCurve)::DownCast(BRep_Tool::Curve(edge, pFirst, pLast));

// Now create a TopoDS_Edge from my curve
TopoDS_Edge edge2 = BRepBuilderAPI_MakeEdge(myCurve);
Handle(AIS_Shape) anAisEdge2;
anAisEdge2 = new AIS_Shape(edge2);
anAisEdge2->SetColor(Quantity_NOC_RED);
anAisEdge2->SetWidth(2.0);
myOccView->getContext()->Display(anAisEdge2);

eIter.Next();
}

Если я проверю отдельно дисплей на экране anAisEdge а также anAisEdge2 Я получаю два разных результата. Я не понимаю почему.
На двух изображениях вверху первый дисплей, а внизу второй.

введите описание изображения здесь

0

Решение

В документации OCC для BRepBuilderAPI_MakeEdge В классе указано, что «Если кривая является усеченной кривой, используется базовая кривая». В этом случае, я думаю, вы должны непосредственно указать необходимые значения параметров кривой в конструкторе BRepBuilderAPI_MakeEdge.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]