Построение листового тела

Функция

MbResultType CreateSheetSolid( const MbPlacement3D &           placement,
                                     RPArray<MbContour> &      contours,
                                     bool                      unbended,
                               const MbSheetMetalValues &      params,
                                     RPArray<MbSNameMaker> *   nameMakers,
                                     RPArray<MbSMBendNames> &  resultBends,
                                     MbSolid *&                result );

выполняет построение листового тела выдавливанием плоских контуров.

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

  • placement – локальная система координат;

  • contours – контуры листового тела, заданные в плоскости XY локальной системы координат;

  • unbended – флаг построения тела в разогнутом состоянии;

  • params – параметры построения;

  • nameMakers – именователи построения.

Выходными параметрами функции являются имена листовых граней построенных сгибов, записываемые в resultBends и само тело result.

При удачной работе функция возвращает rt_Success, в противном случае функция возвращает код ошибки из перечисления MbResultType (см. mb_operation_result.h).

Функция объявлена в файле action_sheet.h.

Если контуры замкнутые, то листовое тело строится на заданную толщину с заданным контуром. Среди замкнутых контуров один контур должен быть внешним, содержащим внутри себя остальные внутренние контуры. По внутренним контурам будут сформированы вырезы.

Если контуры незамкнутые, то листовое тело строится выдавливанием на заданные расстояния замкнутых контуров, полученных из незамкнутых контуров путём скругления углов между отрезками с радиусами, заданными в params или resultBends. Получившимся контурам придаётся толщина листового тела в ту или иную сторону. Сторона придания толщины указывается в параметрах операции params. Если контур уже содержит дугу, то она должна гладко стыковаться с соседними сегментами.

Только в случае незамкнутых контуров возможно построение листового тела со сгибами, и только для этого случая имеет смысл флаг unbended. В случае, если массив параметров сгибов resultBends пустой, сгибы строятся по единым параметрам, заданным в params. В этом случае имена листовых граней построенных сгибов никуда не записываются. Если же массив параметров resultBends заполнен, то количество элементов в этом массиве должно совпадать с количеством формируемых сгибов.

Параметры для сгиба ищутся следующим образом. Каждому контуру из массива contours соответствует именователь из массива nameMakers, а в каждом именователе содержится массив имён сегментов контура. Если сгиб формируется в месте соединения двух отрезков, то параметры этого сгиба находятся в элементе массива resultBends, содержащем имена этих отрезков в полях segName1 и segName2. Если сгиб формируется на месте дуги, то параметры для него находятся в элементе массива resultBends, у которого в segName1 лежит имя дуги, а segName2 равен SIMPLENAME_MAX.

На рис. 1 приведено листовое тело, построенное по нескольким замкнутым эскизам:

../../../../_images/M.7.1.1.png

Рис. 1

На рис. 2 приведено листовое тело, построенное по незамкнутому эскизу, содержащему дугу и пару стыкующихся под углом отрезков:

../../../../_images/M.7.1.2.png

Рис. 2

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