Bitbybit Docs
    Preparing search index...

    Class Polyline

    Полилинии: цепочки прямых сегментов через список точек, хранящиеся как простые объекты вида { points, isClosed }. Замкнутая полилиния соединяет свою последнюю точку с первой. Методы здесь измеряют полилинию, конвертируют ее в сегменты или линии, находят, где полилинии пересекаются, собирают разрозненные сегменты в цепочки и подбирают размер скруглений для ее углов. Длины в единицах модели.

    Index

    Constructors

    convert

    • Обращает порядок точек, так что полилиния идет в другую сторону.

      Собственный список точек заданной полилинии обращается на месте и возвращается внутри нового объекта полилинии. Пример: [[0,0,0], [1,0,0], [2,0,0]] -> [[2,0,0], [1,0,0], [0,0,0]]

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      Полилиния с точками в обратном порядке

      const back = bitbybit.polyline.reverse({ polyline: { points: [[0, 0, 0], [1, 0, 0], [2, 0, 0]] } });
      
    • Разбивает полилинию на объекты линий, по одному на отрезок, каждый с начальной и конечной точкой.

      Замкнутая полилиния также получает отрезок от своей последней точки обратно к первой, если они не совпадают. Пример: три точки -> две линии, или три, если замкнута

      Parameters

      Returns Line3[]

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

      const lines = bitbybit.polyline.polylineToLines({ polyline: { points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: true } });
      
    • Разбивает полилинию на отрезки, каждый - пара точек.

      Замкнутая полилиния также получает отрезок от своей последней точки обратно к первой, если они не совпадают. Меньше двух точек не дают отрезков. Пример: четыре точки, замкнутая -> четыре отрезка по петле

      Parameters

      Returns Segment3[]

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

      const segments = bitbybit.polyline.polylineToSegments({ polyline: { points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: false } });
      

    create

    • Строит объект полилинии из точек, незамкнутой или замкнутой.

      Пример: три точки с isClosed равным true -> треугольник

      Parameters

      • inputs: PolylineCreateDto

        Точки и соединяется ли последняя обратно с первой

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      Объект полилинии

      const triangle = bitbybit.polyline.create({ points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: true });
      

    fillet

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

      Замкнутая полилиния включает два угла на своих концах. Меньше трех точек дают пустой список.

      Parameters

      Returns number[]

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

      const radii = bitbybit.polyline.maxFilletsHalfLine({
      polyline: { points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]], isClosed: true },
      tolerance: 1e-7,
      });
    • Находит один радиус скругления, подходящий каждому углу полилинии: наименьший из максимумов по углам по правилу половины отрезка.

      Меньше трех точек, или любой угол, не допускающий скругления, дают 0.

      Parameters

      Returns number

      Радиус, который подходит для каждого угла, в единицах модели

      const radius = bitbybit.polyline.safestFilletRadius({
      polyline: { points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]], isClosed: true },
      tolerance: 1e-7,
      });

    get

    • Измеряет полилинию, складывая прямые расстояния между соседними точками.

      Замыкающий отрезок замкнутой полилинии не считается. Пример: [[0,0,0], [3,0,0], [3,4,0]] -> 7

      Parameters

      Returns number

      Длина в единицах модели

      const len = bitbybit.polyline.length({ polyline: { points: [[0, 0, 0], [3, 0, 0], [3, 4, 0]] } });
      
    • Считает точки полилинии.

      Пример: три точки -> 3

      Parameters

      Returns number

      Число точек

    • Читает список точек из полилинии.

      Пример: { points: [[0,0,0], [1,0,0]] } -> [[0,0,0], [1,0,0]]

      Parameters

      Returns Point3[]

      Ее точки, по порядку

    intersection

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

      Пересечения ближе друг к другу, чем допуск, сообщаются один раз. Пример: две полилинии, образующие X -> точка посередине

      Parameters

      Returns Point3[]

      Точки пересечения; пустой список, если их нет

      const crossings = bitbybit.polyline.twoPolylineIntersection({
      polyline1: { points: [[0, 0, 0], [2, 2, 0]] },
      polyline2: { points: [[0, 2, 0], [2, 0, 0]] },
      tolerance: 1e-6,
      });

    intersections

    • Находит точки, где полилиния пересекает саму себя.

      Соседние отрезки друг с другом не проверяются, а пересечения ближе друг к другу, чем допуск, сообщаются один раз. Пример: восьмерка -> ее единственная точка пересечения

      Parameters

      Returns Point3[]

      Точки пересечения; пустой список, если их нет

      const crossings = bitbybit.polyline.polylineSelfIntersection({
      polyline: { points: [[0, 0, 0], [2, 2, 0], [2, 0, 0], [0, 2, 0]] },
      tolerance: 1e-6,
      });

    sort

    • Соединяет разрозненные отрезки в полилинии, сопоставляя концы, которые сходятся в пределах допуска.

      Отрезки, соединяющиеся конец к концу, становятся одной полилинией на каждую цепочку; отрезки, ничего не касающиеся, становятся полилиниями из одного отрезка. Пример: десять разбросанных отрезков, образующих две цепочки -> две полилинии

      Parameters

      • inputs: SegmentsToleranceDto

        Сегменты и допуск, при котором два конца считаются соприкасающимися

      Returns Polyline3[]

      Полилинии, которые образуют сегменты

      const chains = bitbybit.polyline.sortSegmentsIntoPolylines({
      segments: [[[0, 0, 0], [1, 0, 0]], [[1, 0, 0], [1, 1, 0]], [[5, 5, 0], [6, 5, 0]]],
      tolerance: 1e-5,
      });

    transforms

    • Применяет матрицу преобразования, или список матриц по порядку, к каждой точке полилинии.

      Пример: перенос на [5,0,0] -> каждая точка сдвинута на 5 вдоль X

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      Новая полилиния с преобразованными точками

      const moved = bitbybit.polyline.transformPolyline({
      polyline: { points: [[0, 0, 0], [1, 0, 0]] },
      transformation: bitbybit.transforms.translationXYZ({ translation: [5, 0, 0] }),
      });