Создает плоское сечение двутавра: две горизонтальные полки, соединенные вертикальной стенкой.
width - ширина полки, height - полная высота, webThickness и flangeThickness - толщины стенок; alignment говорит, какая точка бокса профиля стоит на center, rotation поворачивает его в его плоскости, в градусах. Оно лежит на земле, готовое к выдавливанию вдоль Y.
Размер профиля, две толщины, выравнивание, поворот, центр и нормаль плоскости
Грань профиля двутавра
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 поворачивает его в его плоскости, в градусах. Оно лежит на земле.
Размер профиля, две толщины, выравнивание, поворот, центр и нормаль плоскости
Грань профиля H-балки
Создает плоское сечение тавра: горизонтальная полка с вертикальной стенкой, свисающей из ее середины.
width - ширина полки, height - полная высота, webThickness и flangeThickness - толщины стенок; alignment говорит, какая точка бокса профиля стоит на center, а rotation поворачивает его в его плоскости, в градусах. Оно лежит плоско на земле.
Размер профиля, две толщины, выравнивание, поворот, центр и нормаль плоскости
Грань профиля тавра
Создает плоское сечение швеллера, канала: стенка с двумя полками шириной flangeWidth, поднимающимися от ее концов.
width и height - полный размер, webThickness и flangeThickness - толщины стенок; alignment говорит, какая точка бокса профиля стоит на center, rotation поворачивает его в его плоскости, в градусах. Оно лежит плоско на земле.
Размер профиля, толщины, ширина полки, выравнивание, поворот, центр и нормаль плоскости
Грань профиля швеллера
Собирает диагностические сведения о грани: тип ее поверхности, степени по U и V, числа контрольных точек и узлов, замкнуты ли, периодичны ли или рациональны ли U и V, границы UV, площадь, плоскостность, ориентацию и число контуров и ребер.
Пустая или null грань дает отчет, помеченный недействительным.
Грань для проверки
Отчет
Накладывает сетку точек на грань, равномерно проходя по ее диапазонам U и V.
nrDivisionsU на nrDivisionsV точек покрывают грань от края до края, перечисленные ряд за рядом: все значения V для первого U, затем следующий U. Флаги удаления отбрасывают первый или последний ряд; флаги сдвига сдвигают каждую точку на полшага.
Грань, число точек по U и V и параметры сдвига и удаления
Точки, ряд за рядом
Рисует равномерно расставленные контуры поперек грани вдоль одного направления параметра, как линии разлинованного листа.
nrDivisions шагов дают на один контур больше, включая граничные линии; removeStart и removeEnd отбрасывают их, shiftHalfStep сдвигает каждый контур на полшага. При isU равном true каждый контур стоит на фиксированном U и идет через V; false меняет роли.
Грань, число делений, направление и параметры
Контуры, по порядку вдоль выбранного направления
Накладывает сетку точек на грань, как subdivideToPoints, но сдвигает и удаляет точки в каждом n-м ряду или столбце, для кирпичных и шахматных узоров.
Каждое правило - пара: shiftHalfStepNthU говорит, каждый который по счету ряд V сдвигается на полшага по U, shiftHalfStepUOffsetN - откуда начинается отсчет; правила удаления отбрасывают каждую n-ю точку краевого ряда.
Грань, число точек по U и V и правила сдвига и удаления каждого n-го ряда
Точки, ряд за рядом
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, чтобы размещать предметы, стоящие на поверхности.
Грань, число точек по U и V и параметры сдвига и удаления
Единичные нормали, ряд за рядом
Перечисляет пары параметров UV сетки, которую subdivideToPoints наложил бы на грань, с теми же параметрами и в том же порядке.
Пары в настоящих значениях UV грани, а не в долях.
Грань, число точек по U и V и параметры сдвига и удаления
Пары UV, ряд за рядом
Находит точку на грани при заданных долях UV.
paramU и paramV идут от 0 до 1 по диапазону U и V грани, так что 0.5, 0.5 - середина диапазона, которая на обрезанной грани не всегда внутри грани.
Грань и доли по U и V
Точка на поверхности
Находит нормаль поверхности грани при заданных долях UV.
paramU и paramV идут от 0 до 1 по диапазону U и V грани. Нормаль - единичный вектор и следует ориентации грани, так что обращенная грань дает ее перевернутой.
Грань и доли по U и V
Единичная нормаль
Находит точки на грани при нескольких парах долей UV сразу.
Каждая пара содержит U, затем V, оба от 0 до 1 по диапазону грани.
Грань и список пар долей по U и V
По одной точке на пару, в том же порядке
Находит нормали поверхности грани при нескольких парах долей UV сразу.
Каждая пара содержит U, затем V, оба от 0 до 1 по диапазону грани. Нормали - единичные векторы базовой поверхности; в отличие от normalOnUV, они не переворачиваются для обращенной грани.
Грань и список пар долей по U и V
По одной единичной нормали на пару, в том же порядке
Расставляет равномерно распределенные точки вдоль одной прямой линии через диапазон UV грани.
При isU равном true линия стоит на param (доля от 0 до 1 диапазона U), а nrPoints точек распределяются по всему диапазону V; при false роли меняются. removeStartPoint и removeEndPoint отбрасывают концы, а shiftHalfStep сдвигает каждую точку на полшага.
Грань, направление, доля вдоль него, число точек и параметры
Точки вдоль линии, по порядку
Рисует один контур поперек грани вдоль линии параметра, следуя поверхности.
При isU равном true контур стоит на param (доля от 0 до 1 диапазона U) и идет по всему диапазону V; при false роли меняются.
Грань, направление и доля вдоль него
Контур на поверхности
Рисует несколько контуров поперек грани, по одному на значение параметра, следуя поверхности.
При isU равном true каждый контур стоит на своей доле диапазона U и идет по всему диапазону V; при false роли меняются.
Грань, направление и доли вдоль него
По одному контуру на долю, в том же порядке
Сортирует точки как лежащие внутри грани, на ее границе или снаружи и оставляет выбранные группы.
keepIn, keepOn, keepOut и keepUnknown выбирают группы; tolerance решает, какая
близость к границе считается лежанием на ней. При useBndBox точка вне ограничивающего бокса,
расширенного на gapTolerance, находится снаружи.
Грань, точки, допуск, ускорение через ограничивающий бокс и какие группы оставить
Прошедшие отбор точки, в исходном порядке
Выполняет filterFacePoints относительно нескольких граней с одними и теми же точками и параметрами.
По умолчанию результат содержит по одному списку на грань; при flatPointsArray равном true списки соединяются в один, так что точка на двух гранях появляется дважды.
Грани, точки, допуск, какие группы оставить и сводить ли результат в один список
По одному списку точек на грань или один объединенный список
Создает по одной грани на контур, каждая вырезана из поверхности направляющей грани, так что она принимает кривизну этой поверхности.
Контуры должны лежать на поверхности. При inside равном true каждый контур разворачивается так, чтобы его грань была областью, которую он охватывает; при false решает собственное направление контура, и контур, идущий в другую сторону, дает внешнюю область.
Контуры, направляющая грань и какую сторону оставить
По одной грани на контур, в том же порядке
Создает грань из контура, лежащего на поверхности направляющей грани, так что новая грань принимает кривизну этой поверхности.
При inside равном true контур разворачивается так, чтобы грань была областью, которую он охватывает; при false решает собственное направление контура, и контур, идущий в другую сторону, дает область снаружи него.
Контур, направляющая грань и какую сторону оставить
Новая грань
Создает грань, ограниченную замкнутым контуром.
При planar равном true контур должен лежать в одной плоскости, и грань плоская; при false через ребра контура подгоняется гладкая поверхность, которая заполняет неплоский контур. Форма, не являющаяся контуром, выбрасывает ошибку.
Контур и должна ли грань быть плоской
Новая грань
Создает одну грань из нескольких контуров: первый контур - внешняя граница, а каждый следующий вырезает в ней отверстие.
При planar равном true контуры должны лежать в одной плоскости. Контуры отверстий должны находиться внутри внешнего, не пересекая ни его, ни друг друга.
Контуры, сначала внешняя граница, и должна ли грань быть плоской
Грань с отверстиями
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 позволяет решать его собственному направлению.
Контуры, сначала внешняя граница, направляющая грань и какую сторону оставить
Грань с отверстиями
Создает по одной грани на замкнутый контур, каждую как это сделал бы createFaceFromWire.
При planar равном true каждый контур должен лежать в плоскости; при false через каждый подгоняется гладкая поверхность.
Контуры и должны ли грани быть плоскими
По одной грани на контур, в том же порядке
Соединяет окружности касательными ремнями: для каждой пары он рисует две внешние касательные линии и внешние дуги между ними и заполняет это очертание плоской гранью.
combination выбирает пары: allWithAll каждая окружность с каждой другой, inOrder соседи в списке, inOrderClosed также последняя с первой. unify сливает грани; иначе они образуют компаунд.
Контуры окружностей, как их объединять в пары, объединять ли результат и допуск
Объединенная форма или компаунд граней-ремней
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 сливает грани; иначе они образуют компаунд.
Списки контуров окружностей, как их объединять в пары, объединять ли результат и допуск
Объединенная форма или компаунд граней-ремней
Создает грань, покрывающую всю поверхность, до естественных границ поверхности.
tolerance используется для обнаружения вырожденных ребер, таких как полюс сферы. Поверхности берутся из geom.surfaces.
Поверхность и допуск для вырожденных ребер
Грань
Создает грань, вырезая поверхность контуром, лежащим на ней.
При inside равном true контур разворачивается так, чтобы грань была областью, которую он охватывает; при false решает собственное направление контура, и контур, идущий в другую сторону, дает область снаружи него. Поверхности берутся из geom.surfaces.
Поверхность, контур на ней и какую сторону оставить
Грань
Создает плоскую треугольную грань из трех точек.
Треугольник как три точки
Грань
Создает по одной плоской треугольной грани на треугольник меша.
Треугольник, который не может образовать грань, например с повторяющимися точками, пропускается с предупреждением в консоли.
Меш как список треугольников
По одной грани на каждый треугольник, который удалось построить
Выбирает одну грань из формы по ее позиции, считая с 0, в порядке обхода формы ядром.
Форма должна быть гранью или чем-то построенным из граней; индекс за последней гранью выбрасывает ошибку.
Форма и индекс, начиная с 0
Грань с этим индексом
Перечисляет каждую грань формы в порядке обхода ядром.
Форма
Грани, найденные в форме
Переворачивает грань так, что ее нормаль смотрит в другую сторону.
Геометрия остается той же; меняется только ориентация, которая определяет внешнюю сторону оболочки и направление, которое сообщает normalOnUV.
Грань
Обращенная грань
Читает наименьшее значение параметра U грани, в собственных единицах поверхности.
Вместе с getUMaxBound, getVMinBound и getVMaxBound он дает диапазон, на который отображаются доли UV, используемые в других местах этого класса.
Грань
Нижняя граница по U
Читает наибольшее значение параметра U грани, в собственных единицах поверхности.
Грань
Верхняя граница по U
Читает наименьшее значение параметра V грани, в собственных единицах поверхности.
Грань
Нижняя граница по V
Читает наибольшее значение параметра V грани, в собственных единицах поверхности.
Грань
Верхняя граница по V
Измеряет площадь поверхности грани, в квадратных единицах модели.
Грань
Площадь
Измеряет площадь поверхности каждой грани в списке, в квадратных единицах модели.
Грани
По одной площади на грань, в том же порядке
Находит центр масс грани, точку, в которой ее площадь уравновешивается.
На изогнутой или кольцевой грани эта точка может лежать вне поверхности.
Грань
Центр масс
Находит центр масс каждой грани в списке.
Грани
По одной точке на грань, в том же порядке
Накладывает прямоугольные контуры на грань, по одному на ячейку деления ее диапазона UV на nrRectanglesU на nrRectanglesV, следуя поверхности.
Отступы от границы обрезают диапазон с каждого конца. Каждый прямоугольник стоит по центру своей ячейки, с размером по шаблонам масштаба как доля от нее; шаблон скругления скругляет углы, шаблон включения пропускает ячейки.
Грань, число ячеек, отступы от границ и необязательные шаблоны
Контуры прямоугольников, ячейка за ячейкой
Вырезает в грани сетку прямоугольных отверстий и возвращает перфорированную грань.
Отверстия следуют тем же ячейкам и шаблонам, что и subdivideToRectangleWires; когда шаблон масштаба не задан, каждое отверстие занимает половину своей ячейки. При holesToFaces равном true результат также несет по одной грани на отверстие, после перфорированной грани, что удобно для крышек или заполнителей.
Грань, число ячеек, отступы от границ, необязательные шаблоны и возвращать ли грани отверстий
Перфорированная грань, за которой следуют грани отверстий, если они запрошены
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, флаги растяжения вытягивают внешние ряды за края. Шаблоны масштаба, скругления и включения повторяются по шестиугольникам.
Грань, число шестиугольников, ориентация, отступы от границ, флаги расширения и необязательные шаблоны
Контуры шестиугольников, ряд за рядом
Вырезает в грани соты из шестиугольных отверстий и возвращает перфорированную грань.
Отверстия следуют той же раскладке и шаблонам, что и subdivideToHexagonWires; когда шаблон масштаба не задан, каждое отверстие вдвое меньше своего шестиугольника. При holesToFaces равном true результат также несет по одной грани на отверстие, после перфорированной грани.
Грань, число шестиугольников, ориентация, отступы от границ, необязательные шаблоны и возвращать ли грани отверстий
Перфорированная грань, за которой следуют грани отверстий, если они запрошены
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,
});
Создает плоскую грань из списка угловых точек, замыкая очертание от последней точки обратно к первой.
Точки должны лежать в одной плоскости.
Угловые точки по порядку
Грань
Создает плоскую круглую грань, диск.
direction - нормаль ее плоскости: значение по умолчанию [0, 1, 0] кладет ее плоско на землю.
Грань диска
Заполняет прямоугольник на плоскости земли сеткой плоских шестиугольных граней, центрированной на начале координат.
Шестиугольники масштабируются так, чтобы nrHexagonsInWidth умещались по width, а nrHexagonsInHeight по height. Шаблоны масштаба, скругления и включения читаются шестиугольник за шестиугольником и повторяются; флаги растяжения вытягивают внешние ряды за края, чтобы покрыть прямоугольник.
Размер прямоугольника, число шестиугольников, флаги расширения и необязательные шаблоны
По одной грани на шестиугольник, ряд за рядом
Создает плоскую эллиптическую грань.
direction - нормаль ее плоскости: значение по умолчанию [0, 1, 0] кладет ее плоско на землю. radiusMajor должен быть не меньше radiusMinor.
Два радиуса, центр и нормаль плоскости
Грань эллипса
Создает плоскую квадратную грань, центрированную на center.
direction - нормаль ее плоскости: значение по умолчанию [0, 1, 0] кладет ее плоско на землю.
Грань квадрата
Создает плоскую прямоугольную грань, центрированную на center.
На плоскости земли width идет вдоль X, а length вдоль Z; direction - нормаль плоскости, и значение по умолчанию [0, 1, 0] оставляет грань плоско на земле.
Ширина, длина, центр и нормаль плоскости
Грань прямоугольника
Создает плоскую L-образную грань: две прямоугольные полки, соединенные в углу.
У первой полки widthFirst и lengthFirst, у второй widthSecond и lengthSecond; align ставит угол снаружи, внутри или посередине полок, а rotation поворачивает форму в ее плоскости, в градусах. Она лежит плоско на земле, если direction не говорит иначе.
Размеры двух полок, выравнивание, поворот, центр и нормаль плоскости
L-образная грань
Создает плоскую звездообразную грань с numRays лучами.
Лучи достигают outerRadius, а впадины между ними innerRadius; half оставляет только первую половину лучей. offsetOuterEdges поднимает вершины лучей из плоскости и предназначен для контура; плоской грани нужен 0. Она лежит плоско на земле, если direction не говорит иначе.
Грань звезды
Создает плоскую грань в форме стилизованной елки: nrSkirts слоев ветвей, сужающихся от outerDist до innerDist от линии ствола, на стволе trunkHeight и trunkWidth.
В отличие от других плоских форм здесь она стоит вертикально в плоскости XY, верхушкой вдоль Y; direction - направление от ствола к верхушке, rotation поворачивает ее вокруг этой оси, в градусах.
Пропорции елки, размер ствола, параметры, начало координат и направление от ствола к верхушке
Грань елки
Создает плоскую грань параллелограмма: прямоугольник width на height, стороны которого наклонены на angle градусов.
При aroundCenter равном true форма центрируется на center; иначе она начинается там и продолжается в положительных направлениях. direction - нормаль плоскости; значение по умолчанию [0, 1, 0] кладет ее плоско на землю.
Ширина, высота, угол наклона, центрировать ли его, центр и нормаль плоскости
Грань параллелограмма
Создает плоскую грань в форме сердца, которая примерно вписывается в квадрат sizeApprox.
rotation поворачивает ее в ее плоскости, в градусах. direction - нормаль плоскости; значение по умолчанию [0, 1, 0] кладет ее плоско на землю.
Приблизительный размер, поворот, центр и нормаль плоскости
Грань сердца
Создает плоскую грань правильного многоугольника с nrCorners углами, все на окружности радиуса radius.
direction - нормаль плоскости; значение по умолчанию [0, 1, 0] кладет ее плоско на землю.
Число углов, радиус, центр и нормаль плоскости
Грань многоугольника
Перестраивает поверхность грани как B-spline заданных степеней по U и V.
Понижение степени сглаживает поверхность в более простую аппроксимацию в пределах tolerance; повышение точное. keepTrim сохраняет исходные граничные контуры, что надежно при повышении; иначе грань покрывает всю новую поверхность. Неудачная перестройка дает null грань.
Грань, целевые степени по U и V, допуск и сохранять ли границу
Перестроенная грань
Меняет, как параметры UV идут по грани: поменять U и V местами, обратить U, обратить V или любое сочетание.
Геометрия остается той же; меняются только направления параметров, что важно для каждого метода здесь, работающего в UV, такого как subdivideToPoints или wireAlongParam. Грань перестраивается по естественным границам поверхности.
Грань и какие обращения применить
Грань с измененной параметризацией
Перепараметризует грань так, что равные шаги по U или V дают примерно равные расстояния на поверхности.
Многие поверхности сгущают свои параметры местами, так что сетка UV на них выглядит неравномерной; это пересэмплирует поверхность в samples точках на направление и переподгоняет ее, что выравнивает subdivideToPoints и его собратьев. Грань перестраивается по новым границам.
Грань, какие направления нормализовать, число выборок и допуск подгонки
Грань с новой параметризацией
Грани в OpenCascade: ограниченные участки поверхности, плоские или изогнутые, с внешним граничным контуром и необязательными внутренними контурами, образующими отверстия. Стройте их из контуров или поверхностей или как готовые плоские формы (окружности, прямоугольники, звезды, профили балок), лежащие на плоскости основания, если
directionне задает иное; обходите их поверхность по параметрам UV, чтобы получить точки, нормали и сетки контуров; вырезайте в них узоры отверстий; измеряйте площадь и центр масс. U и V - это два направления поверхности, заданные здесь как доли от 0 до 1 собственного диапазона грани. Грани соединяются ребро к ребру в оболочки, с которыми работаетshapes.shell.