Находит пару точек, по одной на каждой форме, которые ближе всего друг к другу.
Расстояние между ними - зазор между формами; оно равно 0, когда они касаются или перекрываются. Выбрасывает ошибку, когда пару найти нельзя.
Две формы
Точка на первой форме и точка на второй
Находит для каждой точки в списке ближайшую точку на форме.
Точка, уже лежащая на форме, отображается в саму себя. Полезно для привязки точек к поверхности.
Форма и точки
По одной точке на форме на каждую входную точку, в том же порядке
Находит ближайшую точку на каждой из нескольких форм для каждой точки в списке.
Результат - один плоский список: все точки для первой формы, в порядке точек, затем все точки для второй формы и так далее.
Формы и точки
Ближайшие точки, сгруппированные по формам
Режет форму на части другими формами, как нож разрезает буханку, не удаляя материала.
При nonDestructive равном true, по умолчанию, входные данные остаются нетронутыми, а результат содержит части каждой участвующей формы, включая резаки; при false возвращаются только части shape. localFuzzyTolerance позволяет геометрии, которая почти касается, считаться касающейся.
Разделяемая форма, формы, которыми ее разделить, и параметры
Части
Режет тело на параллельные срезы вдоль направления, как буханку хлеба, через каждые step единиц модели снизу формы вверх.
Каждый срез - плоское сечение там, где секущая плоскость встречает тело; они возвращаются вместе в одном компаунде. Форма должна быть телом или содержать тела, иначе выбрасывается ошибка.
Форма, расстояние между срезами и направление срезов
Компаунд граней сечений
Режет тело на параллельные срезы, как slice, но с повторяющимся шаблоном промежутков между ними, например 0.1, 0.5, 0.1, 0.5.
Шаблон применяется снизу формы вверх и повторяется, пока не достигнут верх.
Форма, шаблон промежутков и направление срезов
Компаунд граней сечений
Выдавливает форму по прямой вдоль вектора, длина которого - расстояние: грань становится телом, контур - оболочкой, ребро - гранью.
Сама форма остается в начале выдавливания; вектор в единицах модели, так что [0, 10, 0] выдавливает на 10 единиц вверх.
Форма и вектор направления, длина которого задает расстояние
Выдавленная форма
Выдавливает несколько форм вдоль одного и того же вектора, как extrude для одной.
Формы и вектор направления, длина которого задает расстояние
Выдавленные формы, в том же порядке
Выдавливает плоскую форму вверх вдоль Y на height, скручивая ее на angle градусов вокруг оси Y, как витую колонну.
Форма должна лежать плоско, как и профили, которые создает этот пакет. При makeSolid равном true, по умолчанию, профиль-грань дает замкнутое тело; контур дает скрученную оболочку.
Форма профиля, высота, угол скручивания в градусах и создавать ли тело
Скрученное выдавливание
Строит поверхность через ряд контуров, как кожу, натянутую на ребра каркаса: каждый контур - одно сечение, и поверхность проходит через них в порядке списка.
Ребра принимаются как контуры из одного ребра. При makeSolid равном true и замкнутых сечениях результат закрывается в тело; иначе это оболочка. Сечения лучше всего сопоставляются при равных числах ребер.
Контуры или ребра сечений, по порядку, и создавать ли тело
Оболочка или тело, построенные лофтом
const bottom = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 5, center: [0, 0, 0], direction: [0, 1, 0] });
const upper = await bitbybit.occt.shapes.wire.createSquareWire({ size: 6, center: [0, 10, 0], direction: [0, 1, 0] });
const vase = await bitbybit.occt.operations.loft({ shapes: [bottom, upper], makeSolid: true });
Строит поверхность через ряд контуров, как loft, с управлением тем, как подгоняется кожа.
straight делает линейчатые участки между сечениями вместо гладкого перехода; closed замыкает поверхность от последнего сечения обратно к первому, а periodic делает эту петлю гладкой, пересэмплируя сечения. startVertex и endVertex сводят концы в точки.
Контуры или ребра сечений, создавать ли тело, параметры замыкания и сглаживания и необязательные конечные точки
Оболочка или тело, построенные лофтом
const cone = await bitbybit.occt.operations.loftAdvanced({
shapes: [circleBottom, circleMiddle],
makeSolid: true,
closed: false,
periodic: false,
straight: false,
nrPeriodicSections: 10,
useSmoothing: false,
maxUDegree: 3,
tolerance: 1e-7,
parType: Bit.Inputs.OCCT.approxParametrizationTypeEnum.approxCentripetal,
endVertex: [0, 20, 0],
});
Измеряет, как далеко каждая точка в списке от формы, как прямое расстояние до ближайшей точки на ней, в единицах модели.
Расстояние до поверхности формы, так что точка внутри тела все равно сообщает расстояние до его оболочки.
Форма и точки
По одному расстоянию на точку, в том же порядке
Вычисляет выровненный по осям бокс, охватывающий форму: его минимальный и максимальный углы, центр и размер вдоль X, Y и Z.
На изогнутых формах бокс может быть немного больше самой формы, потому что ядро ограничивает управляющую геометрию, а не точную поверхность.
Форма
Бокс как min, max, center и size
Читает минимальный угол выровненного по осям ограничивающего бокса формы, точку с наименьшими X, Y и Z.
Форма
Минимальный угол
Читает максимальный угол выровненного по осям ограничивающего бокса формы, точку с наибольшими X, Y и Z.
Форма
Максимальный угол
Читает центр выровненного по осям ограничивающего бокса формы, посередине между его двумя углами.
Это не центр масс; его дают shapes.solid.getSolidCenterOfMass и его собратья.
Форма
Центр бокса
Читает размер выровненного по осям ограничивающего бокса формы вдоль X, Y и Z, в единицах модели.
Форма
Ширина, высота и длина бокса
Строит выровненный по осям ограничивающий бокс формы как тело бокса, удобно для его отрисовки или использования в булевой операции.
Форма
Тело бокса
Вычисляет сферу, охватывающую форму: она центрирована на ограничивающем боксе и достигает его углов, так что всегда содержит форму, но не является наименьшей возможной сферой.
Форма
Сфера как center и radius
Читает центр ограничивающей сферы формы, который является центром ее ограничивающего бокса.
Форма
Центр сферы
Читает радиус ограничивающей сферы формы, расстояние от центра ограничивающего бокса до его угла, в единицах модели.
Форма
Радиус
Строит ограничивающую сферу формы как тело сферы.
Форма
Тело сферы
Сдвигает границу формы наружу, или внутрь при отрицательном расстоянии, на фиксированное расстояние: контур растет в параллельное очертание, грань или тело - в большее.
Контур или ребро смещается в собственной плоскости или на face, если она задана; углы скругляются. Расстояние 0 возвращает форму как есть.
Форма, необязательная грань, на которой смещать контур, расстояние и допуск
Смещенная форма
Смещает форму, как offset, с выбором способа соединения углов: arc скругляет их, intersection продлевает стороны до острого угла, tangent сохраняет их касательными.
removeIntEdges убирает внутренние ребра, которые смещение может оставить на теле.
Форма, необязательная грань, на которой смещать контур, расстояние, допуск, тип соединения углов и удалять ли внутренние ребра
Смещенная форма
Придает грани или оболочке толщину, превращая ее в сплошную плиту или стенку заданного offset.
Положительное смещение утолщает в сторону нормали поверхности, отрицательное - в другую. Используйте его, чтобы превратить лофтовую или протянутую кожу во что-то печатаемое.
Грань или оболочка и толщина
Утолщенное тело
Выдалбливает тело в оболочку заданной толщины стенки, удаляя перечисленные грани и смещая остальные.
Удаление верхней грани бокса, например, дает открытую чашку. offset - толщина стенки, отрицательная растит внутрь; joinType говорит, как смещенные стенки сходятся в углах, остальные флаги передаются построителю толстых тел ядра.
Тело, удаляемые грани, толщина стенки, допуск и параметры соединения
Полое тело
const box = await bitbybit.occt.shapes.solid.createBox({ width: 10, length: 10, height: 10, center: [0, 0, 0] });
const faces = await bitbybit.occt.shapes.face.getFaces({ shape: box });
const cup = await bitbybit.occt.operations.makeThickSolidByJoin({
shape: box,
shapes: [faces[0]],
offset: -1,
tolerance: 1e-3,
intersection: false,
selfIntersection: false,
joinType: Bit.Inputs.OCCT.joinTypeEnum.arc,
removeIntEdges: false,
});
Смещает контур, не лежащий в одной плоскости, выдавливая его вдоль direction, утолщая результат и считывая смещенное ребро с него.
Лучше всего работает на гладких контурах; сначала скруглите острые углы через fillets.fillet3DWire. Когда смещенные ребра нельзя соединить в один контур, они возвращаются списком ребер.
Контур, расстояние смещения и направление выдавливания
Смещенный контур или отдельные ребра, если их не удалось соединить
Протягивает одну или несколько форм профилей вдоль контура пути и закрывает результат в тело.
Профили должны быть размещены на пути; при нескольких профилях протягивание плавно переходит от одного к следующему по пути.
Контур пути и формы профилей, размещенные на нем
Протянутое тело
Протягивает правильный многоугольник вдоль контура, давая трубу с nrCorners плоскими сторонами, например шестигранный пруток вдоль пути.
Многоугольник радиуса radius размещается в начале контура, перпендикулярно ему. makeSolid дает тело вместо оболочки, trihedronEnum выбирает, как профиль поворачивается вдоль пути, а forceApproxC1 сглаживает результат.
Контур пути, радиус и число углов многоугольника и параметры протяжки
Протянутое тело или оболочка
Протягивает окружность вдоль каждого из нескольких контуров, как pipeWireCylindrical для одного, все с одними и теми же радиусом и параметрами.
Контуры путей, радиус и параметры протяжки
По одной трубе на контур, в том же порядке
Протягивает окружность вдоль контура, давая круглую трубу заданного радиуса, следующую пути.
Окружность размещается в начале контура, перпендикулярно ему. makeSolid дает тело вместо оболочки, trihedronEnum выбирает, как профиль поворачивается, следуя пути, а forceApproxC1 сглаживает результат.
Контур пути, радиус и параметры протяжки
Труба как тело или оболочка
Вращает форму вокруг оси через начало координат, чтобы получить поверхность или тело: грань дает тело, контур - оболочку.
angle в градусах; 360 и больше дает полный оборот. Ось идет вдоль direction: профиль рядом с осью Y, вращаемый вокруг нее, дает вазу. Профиль не должен ее пересекать.
Форма профиля, угол в градусах, направление оси и копировать ли геометрию
Форма вращения
Операции моделирования, превращающие контуры и грани OpenCascade в поверхности и тела и измеряющие формы: лофт через сечения, выдавливание и вращение, протяжка профилей вдоль путей, смещение, утолщение оболочек в тела, срезы и разделение, плюс ограничивающие боксы, ограничивающие сферы и запросы ближайших точек. Расстояния в единицах модели, углы в градусах; каждая операция возвращает новую форму. Булевы операции живут в
booleans, скругление вfillets.