Bitbybit Docs
    Preparing search index...

    Class Polyline

    Polilinhas: cadeias de segmentos retos através de uma lista de pontos, guardadas como objetos simples da forma { points, isClosed }. Uma polilinha fechada liga o seu último ponto de volta ao primeiro. Os métodos aqui medem uma polilinha, convertem-na em segmentos ou linhas, descobrem onde as polilinhas se cruzam, ordenam segmentos soltos em cadeias e dimensionam arredondamentos para os seus cantos. Os comprimentos estão em unidades do modelo.

    Index

    Constructors

    convert

    • Inverte a ordem dos pontos, de modo que a polilinha corre no sentido contrário.

      A própria lista de pontos da polilinha dada é invertida no lugar e devolvida dentro de um novo objeto polilinha. Exemplo: [[0,0,0], [1,0,0], [2,0,0]] -> [[2,0,0], [1,0,0], [0,0,0]]

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      Uma polilinha com os pontos por ordem inversa

      const back = bitbybit.polyline.reverse({ polyline: { points: [[0, 0, 0], [1, 0, 0], [2, 0, 0]] } });
      
    • Divide a polilinha em objetos linha, um por segmento, cada um com um ponto inicial e um ponto final.

      Uma polilinha fechada recebe também o segmento do seu último ponto de volta ao primeiro, a menos que os dois coincidam. Exemplo: três pontos -> duas linhas, ou três quando fechada

      Parameters

      Returns Line3[]

      Uma linha por segmento, por ordem

      const lines = bitbybit.polyline.polylineToLines({ polyline: { points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: true } });
      
    • Divide a polilinha em segmentos, cada um um par de pontos.

      Uma polilinha fechada recebe também o segmento do seu último ponto de volta ao primeiro, a menos que os dois coincidam. Menos de dois pontos não dão segmentos. Exemplo: quatro pontos, fechada -> quatro segmentos à volta do laço

      Parameters

      Returns Segment3[]

      Um par de pontos por segmento, por ordem

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

    create

    fillet

    • Encontra o maior arredondamento para cada canto da polilinha, cada um limitado à metade mais próxima dos seus segmentos para que os arredondamentos nunca se sobreponham.

      Uma polilinha fechada inclui os dois cantos nas suas extremidades. Menos de três pontos dão uma lista vazia.

      Parameters

      Returns number[]

      Um raio por canto, pela ordem dos cantos

      const radii = bitbybit.polyline.maxFilletsHalfLine({
      polyline: { points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]], isClosed: true },
      tolerance: 1e-7,
      });
    • Encontra um raio de arredondamento que cabe em todos os cantos da polilinha: o menor dos máximos por canto segundo a regra do meio segmento.

      Menos de três pontos, ou qualquer canto que não permita arredondamento, dão 0.

      Parameters

      Returns number

      O raio que cabe em todos os cantos, em unidades do modelo

      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

    • Mede a polilinha somando as distâncias em linha reta entre pontos vizinhos.

      O segmento de fecho de uma polilinha fechada não é contado. Exemplo: [[0,0,0], [3,0,0], [3,4,0]] -> 7

      Parameters

      Returns number

      O comprimento em unidades do modelo

      const len = bitbybit.polyline.length({ polyline: { points: [[0, 0, 0], [3, 0, 0], [3, 4, 0]] } });
      

    intersection

    • Encontra os pontos onde duas polilinhas se cruzam, testando cada segmento de uma contra cada segmento da outra.

      Cruzamentos mais próximos entre si do que a tolerância são reportados uma vez. Exemplo: duas polilinhas que formam um X -> o ponto no meio

      Parameters

      Returns Point3[]

      Os pontos de cruzamento; vazio quando não existem

      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

    • Encontra os pontos onde a polilinha se cruza a si própria.

      Segmentos vizinhos não são testados um contra o outro, e cruzamentos mais próximos entre si do que a tolerância são reportados uma vez. Exemplo: um oito -> o seu único ponto de cruzamento

      Parameters

      Returns Point3[]

      Os pontos de cruzamento; vazio quando não existem

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

    sort

    • Une segmentos soltos em polilinhas emparelhando extremidades que se encontram dentro da tolerância.

      Segmentos que se ligam ponta a ponta tornam-se uma polilinha por cada cadeia; segmentos que não tocam em nada tornam-se polilinhas de um só segmento. Exemplo: dez segmentos dispersos que formam duas cadeias -> duas polilinhas

      Parameters

      • inputs: SegmentsToleranceDto

        Os segmentos e a tolerância para duas extremidades contarem como unidas

      Returns Polyline3[]

      As polilinhas que os segmentos formam

      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

    • Aplica uma matriz de transformação, ou uma lista delas por ordem, a todos os pontos da polilinha.

      Exemplo: uma translação de [5,0,0] -> todos os pontos movidos 5 ao longo de X

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      Uma nova polilinha com os pontos transformados

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