Bitbybit Docs
    Preparing search index...

    Class OCCTFace

    Грани в OpenCascade: ограниченные участки поверхности, плоские или изогнутые, с внешним граничным контуром и необязательными внутренними контурами, образующими отверстия. Стройте их из контуров или поверхностей или как готовые плоские формы (окружности, прямоугольники, звезды, профили балок), лежащие на плоскости основания, если direction не задает иное; обходите их поверхность по параметрам UV, чтобы получить точки, нормали и сетки контуров; вырезайте в них узоры отверстий; измеряйте площадь и центр масс. U и V - это два направления поверхности, заданные здесь как доли от 0 до 1 собственного диапазона грани. Грани соединяются ребро к ребру в оболочки, с которыми работает shapes.shell.

    Index

    Constructors

    beam profiles

    • Создает плоское сечение двутавра: две горизонтальные полки, соединенные вертикальной стенкой.

      width - ширина полки, height - полная высота, webThickness и flangeThickness - толщины стенок; alignment говорит, какая точка бокса профиля стоит на center, rotation поворачивает его в его плоскости, в градусах. Оно лежит на земле, готовое к выдавливанию вдоль Y.

      Parameters

      • inputs: IBeamProfileDto

        Размер профиля, две толщины, выравнивание, поворот, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      Грань профиля двутавра

      const profile = await bitbybit.occt.shapes.face.createIBeamProfileFace({
      width: 10,
      height: 20,
      webThickness: 2,
      flangeThickness: 3,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      });
      const beam = await bitbybit.occt.operations.extrude({ shape: profile, direction: [0, 100, 0] });
    • Создает плоское сечение H-образной балки: две вертикальные полки, соединенные горизонтальной стенкой, двутавр на боку.

      width - полная ширина, height - высота полки, webThickness и flangeThickness - толщины стенок; alignment говорит, какая точка бокса профиля стоит на center, rotation поворачивает его в его плоскости, в градусах. Оно лежит на земле.

      Parameters

      • inputs: HBeamProfileDto

        Размер профиля, две толщины, выравнивание, поворот, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      Грань профиля H-балки

      const profile = await bitbybit.occt.shapes.face.createHBeamProfileFace({
      width: 20,
      height: 10,
      webThickness: 2,
      flangeThickness: 3,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      });
    • Создает плоское сечение тавра: горизонтальная полка с вертикальной стенкой, свисающей из ее середины.

      width - ширина полки, height - полная высота, webThickness и flangeThickness - толщины стенок; alignment говорит, какая точка бокса профиля стоит на center, а rotation поворачивает его в его плоскости, в градусах. Оно лежит плоско на земле.

      Parameters

      • inputs: TBeamProfileDto

        Размер профиля, две толщины, выравнивание, поворот, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      Грань профиля тавра

      const profile = await bitbybit.occt.shapes.face.createTBeamProfileFace({
      width: 10,
      height: 12,
      webThickness: 2,
      flangeThickness: 2,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      });
    • Создает плоское сечение швеллера, канала: стенка с двумя полками шириной flangeWidth, поднимающимися от ее концов.

      width и height - полный размер, webThickness и flangeThickness - толщины стенок; alignment говорит, какая точка бокса профиля стоит на center, rotation поворачивает его в его плоскости, в градусах. Оно лежит плоско на земле.

      Parameters

      • inputs: UBeamProfileDto

        Размер профиля, толщины, ширина полки, выравнивание, поворот, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      Грань профиля швеллера

      const profile = await bitbybit.occt.shapes.face.createUBeamProfileFace({
      width: 10,
      height: 6,
      webThickness: 1,
      flangeThickness: 1,
      flangeWidth: 3,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      });

    debug

    • Собирает диагностические сведения о грани: тип ее поверхности, степени по U и V, числа контрольных точек и узлов, замкнуты ли, периодичны ли или рациональны ли U и V, границы UV, площадь, плоскостность, ориентацию и число контуров и ребер.

      Пустая или null грань дает отчет, помеченный недействительным.

      Parameters

      Returns Promise<FaceDebugInfo>

      Отчет

      const info = await bitbybit.occt.shapes.face.debugInfo({ shape: face });
      console.log(info.type, info.isPlanar, info.area);

    extract

    • Накладывает сетку точек на грань, равномерно проходя по ее диапазонам U и V.

      nrDivisionsU на nrDivisionsV точек покрывают грань от края до края, перечисленные ряд за рядом: все значения V для первого U, затем следующий U. Флаги удаления отбрасывают первый или последний ряд; флаги сдвига сдвигают каждую точку на полшага.

      Parameters

      Returns Promise<Point3[]>

      Точки, ряд за рядом

      const points = await bitbybit.occt.shapes.face.subdivideToPoints({
      shape: face,
      nrDivisionsU: 10,
      nrDivisionsV: 5,
      shiftHalfStepU: false,
      removeStartEdgeU: false,
      removeEndEdgeU: false,
      shiftHalfStepV: false,
      removeStartEdgeV: false,
      removeEndEdgeV: false,
      });
    • Рисует равномерно расставленные контуры поперек грани вдоль одного направления параметра, как линии разлинованного листа.

      nrDivisions шагов дают на один контур больше, включая граничные линии; removeStart и removeEnd отбрасывают их, shiftHalfStep сдвигает каждый контур на полшага. При isU равном true каждый контур стоит на фиксированном U и идет через V; false меняет роли.

      Parameters

      Returns Promise<TopoDSWirePointer[]>

      Контуры, по порядку вдоль выбранного направления

      const lines = await bitbybit.occt.shapes.face.subdivideToWires({ shape: face, nrDivisions: 10, isU: true, shiftHalfStep: false, removeStart: false, removeEnd: false });
      
    • Накладывает сетку точек на грань, как subdivideToPoints, но сдвигает и удаляет точки в каждом n-м ряду или столбце, для кирпичных и шахматных узоров.

      Каждое правило - пара: shiftHalfStepNthU говорит, каждый который по счету ряд V сдвигается на полшага по U, shiftHalfStepUOffsetN - откуда начинается отсчет; правила удаления отбрасывают каждую n-ю точку краевого ряда.

      Parameters

      Returns Promise<Point3[]>

      Точки, ряд за рядом

      const staggered = await bitbybit.occt.shapes.face.subdivideToPointsControlled({
      shape: face,
      nrDivisionsU: 10,
      nrDivisionsV: 10,
      shiftHalfStepNthU: 2,
      shiftHalfStepUOffsetN: 0,
      removeStartEdgeNthU: 0,
      removeStartEdgeUOffsetN: 0,
      removeEndEdgeNthU: 0,
      removeEndEdgeUOffsetN: 0,
      shiftHalfStepNthV: 0,
      shiftHalfStepVOffsetN: 0,
      removeStartEdgeNthV: 0,
      removeStartEdgeVOffsetN: 0,
      removeEndEdgeNthV: 0,
      removeEndEdgeVOffsetN: 0,
      });
    • Вычисляет нормаль поверхности в каждой точке сетки, которую subdivideToPoints наложил бы на грань, с теми же параметрами и в том же порядке.

      Нормали - единичные векторы и следуют ориентации грани, так что обращенная грань дает их перевернутыми. Соедините список с subdivideToPoints, чтобы размещать предметы, стоящие на поверхности.

      Parameters

      Returns Promise<Vector3[]>

      Единичные нормали, ряд за рядом

      const normals = await bitbybit.occt.shapes.face.subdivideToNormals({
      shape: face,
      nrDivisionsU: 10,
      nrDivisionsV: 5,
      shiftHalfStepU: false,
      removeStartEdgeU: false,
      removeEndEdgeU: false,
      shiftHalfStepV: false,
      removeStartEdgeV: false,
      removeEndEdgeV: false,
      });
    • Перечисляет пары параметров UV сетки, которую subdivideToPoints наложил бы на грань, с теми же параметрами и в том же порядке.

      Пары в настоящих значениях UV грани, а не в долях.

      Parameters

      Returns Promise<Point2[]>

      Пары UV, ряд за рядом

      const uvs = await bitbybit.occt.shapes.face.subdivideToUV({
      shape: face,
      nrDivisionsU: 10,
      nrDivisionsV: 5,
      shiftHalfStepU: false,
      removeStartEdgeU: false,
      removeEndEdgeU: false,
      shiftHalfStepV: false,
      removeStartEdgeV: false,
      removeEndEdgeV: false,
      });
    • Находит точку на грани при заданных долях UV.

      paramU и paramV идут от 0 до 1 по диапазону U и V грани, так что 0.5, 0.5 - середина диапазона, которая на обрезанной грани не всегда внутри грани.

      Parameters

      Returns Promise<Point3>

      Точка на поверхности

      const middle = await bitbybit.occt.shapes.face.pointOnUV({ shape: face, paramU: 0.5, paramV: 0.5 });
      
    • Находит нормаль поверхности грани при заданных долях UV.

      paramU и paramV идут от 0 до 1 по диапазону U и V грани. Нормаль - единичный вектор и следует ориентации грани, так что обращенная грань дает ее перевернутой.

      Parameters

      Returns Promise<Vector3>

      Единичная нормаль

      const normal = await bitbybit.occt.shapes.face.normalOnUV({ shape: face, paramU: 0.5, paramV: 0.5 });
      
    • Находит точки на грани при нескольких парах долей UV сразу.

      Каждая пара содержит U, затем V, оба от 0 до 1 по диапазону грани.

      Parameters

      Returns Promise<Point3[]>

      По одной точке на пару, в том же порядке

      const points = await bitbybit.occt.shapes.face.pointsOnUVs({ shape: face, paramsUV: [[0, 0], [0.5, 0.5], [1, 1]] });
      
    • Находит нормали поверхности грани при нескольких парах долей UV сразу.

      Каждая пара содержит U, затем V, оба от 0 до 1 по диапазону грани. Нормали - единичные векторы базовой поверхности; в отличие от normalOnUV, они не переворачиваются для обращенной грани.

      Parameters

      Returns Promise<Vector3[]>

      По одной единичной нормали на пару, в том же порядке

      const normals = await bitbybit.occt.shapes.face.normalsOnUVs({ shape: face, paramsUV: [[0, 0], [0.5, 0.5], [1, 1]] });
      
    • Расставляет равномерно распределенные точки вдоль одной прямой линии через диапазон UV грани.

      При isU равном true линия стоит на param (доля от 0 до 1 диапазона U), а nrPoints точек распределяются по всему диапазону V; при false роли меняются. removeStartPoint и removeEndPoint отбрасывают концы, а shiftHalfStep сдвигает каждую точку на полшага.

      Parameters

      Returns Promise<Point3[]>

      Точки вдоль линии, по порядку

      const midline = await bitbybit.occt.shapes.face.subdivideToPointsOnParam({ shape: face, isU: true, param: 0.5, nrPoints: 10, shiftHalfStep: false, removeStartPoint: false, removeEndPoint: false });
      
    • Рисует один контур поперек грани вдоль линии параметра, следуя поверхности.

      При isU равном true контур стоит на param (доля от 0 до 1 диапазона U) и идет по всему диапазону V; при false роли меняются.

      Parameters

      Returns Promise<TopoDSWirePointer>

      Контур на поверхности

      const middle = await bitbybit.occt.shapes.face.wireAlongParam({ shape: face, isU: true, param: 0.5 });
      
    • Рисует несколько контуров поперек грани, по одному на значение параметра, следуя поверхности.

      При isU равном true каждый контур стоит на своей доле диапазона U и идет по всему диапазону V; при false роли меняются.

      Parameters

      Returns Promise<TopoDSWirePointer[]>

      По одному контуру на долю, в том же порядке

      const wires = await bitbybit.occt.shapes.face.wiresAlongParams({ shape: face, isU: false, params: [0.25, 0.5, 0.75] });
      

    filter

    • Сортирует точки как лежащие внутри грани, на ее границе или снаружи и оставляет выбранные группы.

      keepIn, keepOn, keepOut и keepUnknown выбирают группы; tolerance решает, какая близость к границе считается лежанием на ней. При useBndBox точка вне ограничивающего бокса, расширенного на gapTolerance, находится снаружи.

      Parameters

      • inputs: FilterFacePointsDto<TopoDSFacePointer>

        Грань, точки, допуск, ускорение через ограничивающий бокс и какие группы оставить

      Returns Promise<Point3[]>

      Прошедшие отбор точки, в исходном порядке

      const onFace = await bitbybit.occt.shapes.face.filterFacePoints({
      shape: face,
      points: grid,
      tolerance: 1e-4,
      useBndBox: false,
      gapTolerance: 0.1,
      keepIn: true,
      keepOn: true,
      keepOut: false,
      keepUnknown: false,
      });
    • Выполняет filterFacePoints относительно нескольких граней с одними и теми же точками и параметрами.

      По умолчанию результат содержит по одному списку на грань; при flatPointsArray равном true списки соединяются в один, так что точка на двух гранях появляется дважды.

      Parameters

      • inputs: FilterFacesPointsDto<TopoDSFacePointer>

        Грани, точки, допуск, какие группы оставить и сводить ли результат в один список

      Returns Promise<Point3[] | Point3[][]>

      По одному списку точек на грань или один объединенный список

      const perFace = await bitbybit.occt.shapes.face.filterFacesPoints({
      shapes: faces,
      points: grid,
      tolerance: 1e-4,
      useBndBox: false,
      gapTolerance: 0.1,
      keepIn: true,
      keepOn: true,
      keepOut: false,
      keepUnknown: false,
      flatPointsArray: false,
      });

    from

    • Создает по одной грани на контур, каждая вырезана из поверхности направляющей грани, так что она принимает кривизну этой поверхности.

      Контуры должны лежать на поверхности. При inside равном true каждый контур разворачивается так, чтобы его грань была областью, которую он охватывает; при false решает собственное направление контура, и контур, идущий в другую сторону, дает внешнюю область.

      Parameters

      Returns Promise<TopoDSFacePointer[]>

      По одной грани на контур, в том же порядке

      const patches = await bitbybit.occt.shapes.face.createFacesFromWiresOnFace({ wires: circlesOnSphere, face: sphereFace, inside: true });
      
    • Создает грань из контура, лежащего на поверхности направляющей грани, так что новая грань принимает кривизну этой поверхности.

      При inside равном true контур разворачивается так, чтобы грань была областью, которую он охватывает; при false решает собственное направление контура, и контур, идущий в другую сторону, дает область снаружи него.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Новая грань

      const patch = await bitbybit.occt.shapes.face.createFaceFromWireOnFace({ wire: circleOnCylinder, face: cylinderFace, inside: true });
      
    • Создает грань, ограниченную замкнутым контуром.

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

      Parameters

      Returns Promise<TopoDSFacePointer>

      Новая грань

      const wire = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 5, center: [0, 0, 0], direction: [0, 1, 0] });
      const disc = await bitbybit.occt.shapes.face.createFaceFromWire({ shape: wire, planar: true });
    • Создает одну грань из нескольких контуров: первый контур - внешняя граница, а каждый следующий вырезает в ней отверстие.

      При planar равном true контуры должны лежать в одной плоскости. Контуры отверстий должны находиться внутри внешнего, не пересекая ни его, ни друг друга.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань с отверстиями

      const outer = await bitbybit.occt.shapes.wire.createRectangleWire({ width: 20, length: 10, center: [0, 0, 0], direction: [0, 1, 0] });
      const hole = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 2, center: [0, 0, 0], direction: [0, 1, 0] });
      const plate = await bitbybit.occt.shapes.face.createFaceFromWires({ shapes: [outer, hole], planar: true });
    • Создает одну грань из нескольких контуров на поверхности направляющей грани: первый контур - внешняя граница, а каждый следующий вырезает отверстие.

      Грань принимает кривизну направляющей поверхности. inside относится к первому контуру: true разворачивает его так, чтобы грань была областью, которую он охватывает; false позволяет решать его собственному направлению.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань с отверстиями

      const perforated = await bitbybit.occt.shapes.face.createFaceFromWiresOnFace({ wires: [outerOnCylinder, holeOnCylinder], face: cylinderFace, inside: true });
      
    • Создает по одной грани на замкнутый контур, каждую как это сделал бы createFaceFromWire.

      При planar равном true каждый контур должен лежать в плоскости; при false через каждый подгоняется гладкая поверхность.

      Parameters

      Returns Promise<TopoDSFacePointer[]>

      По одной грани на контур, в том же порядке

      const faces = await bitbybit.occt.shapes.face.createFacesFromWires({ shapes: wires, planar: true });
      
    • Соединяет окружности касательными ремнями: для каждой пары он рисует две внешние касательные линии и внешние дуги между ними и заполняет это очертание плоской гранью.

      combination выбирает пары: allWithAll каждая окружность с каждой другой, inOrder соседи в списке, inOrderClosed также последняя с первой. unify сливает грани; иначе они образуют компаунд.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Объединенная форма или компаунд граней-ремней

      const a = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 3, center: [0, 0, 0], direction: [0, 1, 0] });
      const b = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 1, center: [10, 0, 0], direction: [0, 1, 0] });
      const c = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 2, center: [5, 0, 8], direction: [0, 1, 0] });
      const belt = await bitbybit.occt.shapes.face.createFaceFromMultipleCircleTanWires({
      circles: [a, b, c],
      combination: Bit.Inputs.OCCT.combinationCirclesForFaceEnum.inOrderClosed,
      unify: true,
      tolerance: 1e-7,
      });
    • Соединяет окружности из соседних списков касательными ремнями, так же, как createFaceFromMultipleCircleTanWires соединяет отдельные окружности.

      allWithAll соединяет каждую окружность списка с каждой окружностью следующего; inOrder соединяет окружности на одной и той же позиции в соседних списках, для чего нужны равные длины; inOrderClosed также замыкает каждый список в кольцо. unify сливает грани; иначе они образуют компаунд.

      Parameters

      Returns Promise<TopoDSShapePointer>

      Объединенная форма или компаунд граней-ремней

      const mesh = await bitbybit.occt.shapes.face.createFaceFromMultipleCircleTanWireCollections({
      listsOfCircles: [bottomRow, middleRow, topRow],
      combination: Bit.Inputs.OCCT.combinationCirclesForFaceEnum.inOrderClosed,
      unify: true,
      tolerance: 1e-7,
      });
    • Создает грань, покрывающую всю поверхность, до естественных границ поверхности.

      tolerance используется для обнаружения вырожденных ребер, таких как полюс сферы. Поверхности берутся из geom.surfaces.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань

      const face = await bitbybit.occt.shapes.face.faceFromSurface({ shape: surface, tolerance: 1e-7 });
      
    • Создает грань, вырезая поверхность контуром, лежащим на ней.

      При inside равном true контур разворачивается так, чтобы грань была областью, которую он охватывает; при false решает собственное направление контура, и контур, идущий в другую сторону, дает область снаружи него. Поверхности берутся из geom.surfaces.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань

      const patch = await bitbybit.occt.shapes.face.faceFromSurfaceAndWire({ surface, wire: wireOnSurface, inside: true });
      

    from base

    • Создает плоскую треугольную грань из трех точек.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань

      const face = await bitbybit.occt.shapes.face.fromBaseTriangle({ triangle: [[0, 0, 0], [10, 0, 0], [0, 0, 10]] });
      
    • Создает по одной плоской треугольной грани на треугольник меша.

      Треугольник, который не может образовать грань, например с повторяющимися точками, пропускается с предупреждением в консоли.

      Parameters

      • inputs: MeshBaseDto

        Меш как список треугольников

      Returns Promise<TopoDSFacePointer[]>

      По одной грани на каждый треугольник, который удалось построить

      const faces = await bitbybit.occt.shapes.face.fromBaseMesh({
      mesh: [[[0, 0, 0], [10, 0, 0], [0, 0, 10]], [[10, 0, 0], [10, 0, 10], [0, 0, 10]]],
      });

    get

    • Выбирает одну грань из формы по ее позиции, считая с 0, в порядке обхода формы ядром.

      Форма должна быть гранью или чем-то построенным из граней; индекс за последней гранью выбрасывает ошибку.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань с этим индексом

      const first = await bitbybit.occt.shapes.face.getFace({ shape: box, index: 0 });
      
    • Перечисляет каждую грань формы в порядке обхода ядром.

      Parameters

      Returns Promise<TopoDSFacePointer[]>

      Грани, найденные в форме

      const faces = await bitbybit.occt.shapes.face.getFaces({ shape: box });
      
    • Переворачивает грань так, что ее нормаль смотрит в другую сторону.

      Геометрия остается той же; меняется только ориентация, которая определяет внешнюю сторону оболочки и направление, которое сообщает normalOnUV.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Обращенная грань

      const flipped = await bitbybit.occt.shapes.face.reversedFace({ shape: face });
      
    • Читает наименьшее значение параметра U грани, в собственных единицах поверхности.

      Вместе с getUMaxBound, getVMinBound и getVMaxBound он дает диапазон, на который отображаются доли UV, используемые в других местах этого класса.

      Parameters

      Returns Promise<number>

      Нижняя граница по U

      const uMin = await bitbybit.occt.shapes.face.getUMinBound({ shape: face });
      
    • Читает наибольшее значение параметра U грани, в собственных единицах поверхности.

      Parameters

      Returns Promise<number>

      Верхняя граница по U

      const uMax = await bitbybit.occt.shapes.face.getUMaxBound({ shape: face });
      
    • Читает наименьшее значение параметра V грани, в собственных единицах поверхности.

      Parameters

      Returns Promise<number>

      Нижняя граница по V

      const vMin = await bitbybit.occt.shapes.face.getVMinBound({ shape: face });
      
    • Читает наибольшее значение параметра V грани, в собственных единицах поверхности.

      Parameters

      Returns Promise<number>

      Верхняя граница по V

      const vMax = await bitbybit.occt.shapes.face.getVMaxBound({ shape: face });
      
    • Измеряет площадь поверхности грани, в квадратных единицах модели.

      Parameters

      Returns Promise<number>

      Площадь

      const area = await bitbybit.occt.shapes.face.getFaceArea({ shape: face });
      
    • Измеряет площадь поверхности каждой грани в списке, в квадратных единицах модели.

      Parameters

      Returns Promise<number[]>

      По одной площади на грань, в том же порядке

      const areas = await bitbybit.occt.shapes.face.getFacesAreas({ shapes: faces });
      
    • Находит центр масс грани, точку, в которой ее площадь уравновешивается.

      На изогнутой или кольцевой грани эта точка может лежать вне поверхности.

      Parameters

      Returns Promise<Point3>

      Центр масс

      const center = await bitbybit.occt.shapes.face.getFaceCenterOfMass({ shape: face });
      
    • Находит центр масс каждой грани в списке.

      Parameters

      Returns Promise<Point3[]>

      По одной точке на грань, в том же порядке

      const centers = await bitbybit.occt.shapes.face.getFacesCentersOfMass({ shapes: faces });
      

    patterns

    • Накладывает прямоугольные контуры на грань, по одному на ячейку деления ее диапазона UV на nrRectanglesU на nrRectanglesV, следуя поверхности.

      Отступы от границы обрезают диапазон с каждого конца. Каждый прямоугольник стоит по центру своей ячейки, с размером по шаблонам масштаба как доля от нее; шаблон скругления скругляет углы, шаблон включения пропускает ячейки.

      Parameters

      Returns Promise<TopoDSWirePointer[]>

      Контуры прямоугольников, ячейка за ячейкой

      const cells = await bitbybit.occt.shapes.face.subdivideToRectangleWires({
      shape: face,
      nrRectanglesU: 6,
      nrRectanglesV: 4,
      scalePatternU: [0.8, 0.5],
      scalePatternV: [0.8],
      filletPattern: [0.3],
      inclusionPattern: [true, true, false],
      offsetFromBorderU: 0.05,
      offsetFromBorderV: 0.05,
      });
    • Вырезает в грани сетку прямоугольных отверстий и возвращает перфорированную грань.

      Отверстия следуют тем же ячейкам и шаблонам, что и subdivideToRectangleWires; когда шаблон масштаба не задан, каждое отверстие занимает половину своей ячейки. При holesToFaces равном true результат также несет по одной грани на отверстие, после перфорированной грани, что удобно для крышек или заполнителей.

      Parameters

      Returns Promise<TopoDSFacePointer[]>

      Перфорированная грань, за которой следуют грани отверстий, если они запрошены

      const [perforated] = await bitbybit.occt.shapes.face.subdivideToRectangleHoles({
      shape: face,
      nrRectanglesU: 6,
      nrRectanglesV: 4,
      scalePatternU: [0.6],
      scalePatternV: [0.6],
      filletPattern: [0.5],
      inclusionPattern: [true],
      holesToFaces: false,
      offsetFromBorderU: 0.05,
      offsetFromBorderV: 0.05,
      });
    • Накладывает соты из шестиугольных контуров на грань, nrHexagonsU на nrHexagonsV штук, вписанных в ее диапазон UV, каждый следует поверхности.

      Отступы от границы обрезают долю диапазона с каждого конца; flatU обращает плоскую сторону к U, флаги растяжения вытягивают внешние ряды за края. Шаблоны масштаба, скругления и включения повторяются по шестиугольникам.

      Parameters

      • inputs: FaceSubdivideToHexagonWiresDto<TopoDSFacePointer>

        Грань, число шестиугольников, ориентация, отступы от границ, флаги расширения и необязательные шаблоны

      Returns Promise<TopoDSWirePointer[]>

      Контуры шестиугольников, ряд за рядом

      const cells = await bitbybit.occt.shapes.face.subdivideToHexagonWires({
      shape: face,
      nrHexagonsU: 8,
      nrHexagonsV: 6,
      flatU: false,
      scalePatternU: [0.9],
      scalePatternV: [0.9],
      filletPattern: [0.2],
      inclusionPattern: [true],
      offsetFromBorderU: 0,
      offsetFromBorderV: 0,
      });
    • Вырезает в грани соты из шестиугольных отверстий и возвращает перфорированную грань.

      Отверстия следуют той же раскладке и шаблонам, что и subdivideToHexagonWires; когда шаблон масштаба не задан, каждое отверстие вдвое меньше своего шестиугольника. При holesToFaces равном true результат также несет по одной грани на отверстие, после перфорированной грани.

      Parameters

      • inputs: FaceSubdivideToHexagonHolesDto<TopoDSFacePointer>

        Грань, число шестиугольников, ориентация, отступы от границ, необязательные шаблоны и возвращать ли грани отверстий

      Returns Promise<TopoDSFacePointer[]>

      Перфорированная грань, за которой следуют грани отверстий, если они запрошены

      const [perforated] = await bitbybit.occt.shapes.face.subdivideToHexagonHoles({
      shape: face,
      nrHexagonsU: 8,
      nrHexagonsV: 6,
      flatU: false,
      holesToFaces: false,
      scalePatternU: [0.7],
      scalePatternV: [0.7],
      filletPattern: [0],
      inclusionPattern: [true],
      offsetFromBorderU: 0.05,
      offsetFromBorderV: 0.05,
      });

    primitives

    • Создает плоскую грань из списка угловых точек, замыкая очертание от последней точки обратно к первой.

      Точки должны лежать в одной плоскости.

      Parameters

      • inputs: PolygonDto

        Угловые точки по порядку

      Returns Promise<TopoDSFacePointer>

      Грань

      const face = await bitbybit.occt.shapes.face.createPolygonFace({ points: [[0, 0, 0], [10, 0, 0], [10, 0, 10], [0, 0, 10]] });
      
    • Создает плоскую круглую грань, диск.

      direction - нормаль ее плоскости: значение по умолчанию [0, 1, 0] кладет ее плоско на землю.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань диска

      const disc = await bitbybit.occt.shapes.face.createCircleFace({ radius: 5, center: [0, 0, 0], direction: [0, 1, 0] });
      
    • Заполняет прямоугольник на плоскости земли сеткой плоских шестиугольных граней, центрированной на начале координат.

      Шестиугольники масштабируются так, чтобы nrHexagonsInWidth умещались по width, а nrHexagonsInHeight по height. Шаблоны масштаба, скругления и включения читаются шестиугольник за шестиугольником и повторяются; флаги растяжения вытягивают внешние ряды за края, чтобы покрыть прямоугольник.

      Parameters

      • inputs: HexagonsInGridDto

        Размер прямоугольника, число шестиугольников, флаги расширения и необязательные шаблоны

      Returns Promise<TopoDSFacePointer[]>

      По одной грани на шестиугольник, ряд за рядом

      const cells = await bitbybit.occt.shapes.face.hexagonsInGrid({
      width: 20,
      height: 10,
      nrHexagonsInWidth: 8,
      nrHexagonsInHeight: 4,
      flatTop: false,
      scalePatternWidth: [0.9],
      scalePatternHeight: [0.9],
      });
    • Создает плоскую эллиптическую грань.

      direction - нормаль ее плоскости: значение по умолчанию [0, 1, 0] кладет ее плоско на землю. radiusMajor должен быть не меньше radiusMinor.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань эллипса

      const face = await bitbybit.occt.shapes.face.createEllipseFace({ radiusMinor: 3, radiusMajor: 6, center: [0, 0, 0], direction: [0, 1, 0] });
      
    • Создает плоскую квадратную грань, центрированную на center.

      direction - нормаль ее плоскости: значение по умолчанию [0, 1, 0] кладет ее плоско на землю.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань квадрата

      const face = await bitbybit.occt.shapes.face.createSquareFace({ size: 10, center: [0, 0, 0], direction: [0, 1, 0] });
      
    • Создает плоскую прямоугольную грань, центрированную на center.

      На плоскости земли width идет вдоль X, а length вдоль Z; direction - нормаль плоскости, и значение по умолчанию [0, 1, 0] оставляет грань плоско на земле.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань прямоугольника

      const face = await bitbybit.occt.shapes.face.createRectangleFace({ width: 20, length: 10, center: [0, 0, 0], direction: [0, 1, 0] });
      
    • Создает плоскую L-образную грань: две прямоугольные полки, соединенные в углу.

      У первой полки widthFirst и lengthFirst, у второй widthSecond и lengthSecond; align ставит угол снаружи, внутри или посередине полок, а rotation поворачивает форму в ее плоскости, в градусах. Она лежит плоско на земле, если direction не говорит иначе.

      Parameters

      • inputs: LPolygonDto

        Размеры двух полок, выравнивание, поворот, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      L-образная грань

      const face = await bitbybit.occt.shapes.face.createLPolygonFace({
      widthFirst: 2,
      lengthFirst: 10,
      widthSecond: 2,
      lengthSecond: 6,
      align: Bit.Inputs.OCCT.directionEnum.outside,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      });
    • Создает плоскую звездообразную грань с numRays лучами.

      Лучи достигают outerRadius, а впадины между ними innerRadius; half оставляет только первую половину лучей. offsetOuterEdges поднимает вершины лучей из плоскости и предназначен для контура; плоской грани нужен 0. Она лежит плоско на земле, если direction не говорит иначе.

      Parameters

      • inputs: Bit.Inputs.OCCT.StarDto

        Два радиуса, число лучей, центр, нормаль плоскости и параметры

      Returns Promise<TopoDSFacePointer>

      Грань звезды

      const star = await bitbybit.occt.shapes.face.createStarFace({ outerRadius: 5, innerRadius: 2, numRays: 5, center: [0, 0, 0], direction: [0, 1, 0], offsetOuterEdges: 0, half: false });
      
    • Создает плоскую грань в форме стилизованной елки: nrSkirts слоев ветвей, сужающихся от outerDist до innerDist от линии ствола, на стволе trunkHeight и trunkWidth.

      В отличие от других плоских форм здесь она стоит вертикально в плоскости XY, верхушкой вдоль Y; direction - направление от ствола к верхушке, rotation поворачивает ее вокруг этой оси, в градусах.

      Parameters

      • inputs: ChristmasTreeDto

        Пропорции елки, размер ствола, параметры, начало координат и направление от ствола к верхушке

      Returns Promise<TopoDSFacePointer>

      Грань елки

      const tree = await bitbybit.occt.shapes.face.createChristmasTreeFace({
      height: 10,
      innerDist: 1.5,
      outerDist: 4,
      nrSkirts: 4,
      trunkHeight: 1.5,
      trunkWidth: 1,
      half: false,
      rotation: 0,
      origin: [0, 0, 0],
      direction: [0, 1, 0],
      });
    • Создает плоскую грань параллелограмма: прямоугольник width на height, стороны которого наклонены на angle градусов.

      При aroundCenter равном true форма центрируется на center; иначе она начинается там и продолжается в положительных направлениях. direction - нормаль плоскости; значение по умолчанию [0, 1, 0] кладет ее плоско на землю.

      Parameters

      • inputs: ParallelogramDto

        Ширина, высота, угол наклона, центрировать ли его, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      Грань параллелограмма

      const face = await bitbybit.occt.shapes.face.createParallelogramFace({ width: 10, height: 5, angle: 30, aroundCenter: true, center: [0, 0, 0], direction: [0, 1, 0] });
      
    • Создает плоскую грань в форме сердца, которая примерно вписывается в квадрат sizeApprox.

      rotation поворачивает ее в ее плоскости, в градусах. direction - нормаль плоскости; значение по умолчанию [0, 1, 0] кладет ее плоско на землю.

      Parameters

      • inputs: Heart2DDto

        Приблизительный размер, поворот, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      Грань сердца

      const heart = await bitbybit.occt.shapes.face.createHeartFace({ sizeApprox: 10, rotation: 0, center: [0, 0, 0], direction: [0, 1, 0] });
      
    • Создает плоскую грань правильного многоугольника с nrCorners углами, все на окружности радиуса radius.

      direction - нормаль плоскости; значение по умолчанию [0, 1, 0] кладет ее плоско на землю.

      Parameters

      • inputs: NGonWireDto

        Число углов, радиус, центр и нормаль плоскости

      Returns Promise<TopoDSFacePointer>

      Грань многоугольника

      const hexagon = await bitbybit.occt.shapes.face.createNGonFace({ nrCorners: 6, radius: 5, center: [0, 0, 0], direction: [0, 1, 0] });
      

    rebuild

    • Перестраивает поверхность грани как B-spline заданных степеней по U и V.

      Понижение степени сглаживает поверхность в более простую аппроксимацию в пределах tolerance; повышение точное. keepTrim сохраняет исходные граничные контуры, что надежно при повышении; иначе грань покрывает всю новую поверхность. Неудачная перестройка дает null грань.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Перестроенная грань

      const smoother = await bitbybit.occt.shapes.face.rebuildFaceDegree({ shape: face, uDegree: 2, vDegree: 2, tolerance: 0.01, keepTrim: true });
      
    • Меняет, как параметры UV идут по грани: поменять U и V местами, обратить U, обратить V или любое сочетание.

      Геометрия остается той же; меняются только направления параметров, что важно для каждого метода здесь, работающего в UV, такого как subdivideToPoints или wireAlongParam. Грань перестраивается по естественным границам поверхности.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань с измененной параметризацией

      const flipped = await bitbybit.occt.shapes.face.flipFaceUV({ shape: face, swapUV: true, reverseU: false, reverseV: false });
      
    • Перепараметризует грань так, что равные шаги по U или V дают примерно равные расстояния на поверхности.

      Многие поверхности сгущают свои параметры местами, так что сетка UV на них выглядит неравномерной; это пересэмплирует поверхность в samples точках на направление и переподгоняет ее, что выравнивает subdivideToPoints и его собратьев. Грань перестраивается по новым границам.

      Parameters

      Returns Promise<TopoDSFacePointer>

      Грань с новой параметризацией

      const even = await bitbybit.occt.shapes.face.normalizeFaceParametrization({ shape: face, normalizeU: true, normalizeV: true, samples: 50, tolerance: 0.001 });