Сшивка граней тел

Функция

MbeStitchResType StitchShells( const c3d::SolidsSPtrVector & initialSolids,
                               const MbShellStitchParams &   stitchParams,
                                     c3d::SolidSPtr &        resultSolid );

выполняет сшивку стыкующихся друг с другом граней нескольких тел в одно тело (ориентация граней может быть изменена). Функция объявлена в файле action_shell.h.

Входными параметрами функции являются:

initialSolids – множество тел для сшивки;

stitchParams – параметры сшивки оболочек, в которые входят следующие:

  • _nameMaker – именователь операции;

  • _stitchAccuracy – точность сшивки (точность поиска парных ребер);

  • _formSolidBody – флаг формирования твердого тела из результирующей оболочки;

  • _mergeEdges – слияние подобных ребер (true).

Выходным параметром функции является построенное тело или оболочка resultSolid (в зависимости от флага _formSolidBody). Если параметр _formSolidBody = true, то построенное тело resultSolid проверяется на отсутствие краевых ребер, выполняется поиск вложенных друг в друга оболочек и переориентация внутренних оболочек при необходимости. Если параметр _formSolidBody = false, то в построенном теле resultSolid допускается присутствие краевых ребер, а определение вложенности оболочек не выполняется.

Функция возвращает код результата операции из перечисления MbeStitchResType (см. mb_operation_result.h):

  • stch_Success – операция выполнена успешно;

  • stch_PrepareError – ошибка при подготовке операции сшивки;

  • stch_CoorientFaceError – невозможно выставить согласованную ориентацию граней;

  • stch_SomeEdgesUnstitched – некоторые рёбра остались несшитыми;

  • stch_OutwardOrientError – не удалось установить нормали граней наружу тела;

  • stch_NoEdgeWasStitched – не было сшито ни одного ребра;

  • stch_SeparatePartsResult – после сшивки остались несвязанные между собой куски;

  • stch_EdgeStitchError – ошибка сшивки ребра;

  • stch_InputTopologyError – критические ошибки топологии во входных оболочках.

Функция выполняет поиск пар краевых ребер, соответствующих друг другу по длине и расположению, и строит кривую пересечения граней найденных ребер на заданном участке. После успешного построения кривой пересечения пара краевых ребер заменяется одним ребром, соединяющим смежные грани тел. При необходимости выполняется переориентация внешней стороны некоторых граней. Множество initialSolids может содержать любое конечное число тел.

На рис. 1 приведены два сшиваемых тела solids [0] и solids [1]. На рис. 2 приведено построенное тело resultSolid:

../../../../_images/M.1.13.1.png

Рис. 1

../../../../_images/M.1.13.2.png

Рис. 2

Функция StitchShells() добавляет в журнал построенного тела строитель MbStitchedSolid, который содержит все необходимые данные для построения тела. Строитель MbStitchedSolid объявлен в файле cr_stitch_solid.h.