Bitbybit Docs
    Preparing search index...

    Class Polyline

    Polilíneas: cadenas de segmentos rectos a través de una lista de puntos, guardadas como objetos simples de la forma { points, isClosed }. Una polilínea cerrada une su último punto de nuevo con el primero. Los métodos de aquí miden una polilínea, la convierten en segmentos o líneas, encuentran dónde se cruzan las polilíneas, ordenan segmentos sueltos en cadenas y dimensionan redondeos para sus esquinas. Las longitudes están en unidades del modelo.

    Index

    Constructors

    convert

    • Invierte el orden de los puntos, de modo que la polilínea va en sentido contrario.

      La propia lista de puntos de la polilínea dada se invierte en el sitio y se devuelve dentro de un nuevo objeto de polilínea. Ejemplo: [[0,0,0], [1,0,0], [2,0,0]] -> [[2,0,0], [1,0,0], [0,0,0]]

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      Una polilínea con los puntos en orden inverso

      const back = bitbybit.polyline.reverse({ polyline: { points: [[0, 0, 0], [1, 0, 0], [2, 0, 0]] } });
      
    • Divide la polilínea en objetos de línea, uno por segmento, cada uno con un punto inicial y uno final.

      Una polilínea cerrada recibe también el segmento de su último punto de vuelta al primero, salvo que ambos coincidan. Ejemplo: tres puntos -> dos líneas, o tres cuando está cerrada

      Parameters

      Returns Line3[]

      Una línea por segmento, en orden

      const lines = bitbybit.polyline.polylineToLines({ polyline: { points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: true } });
      
    • Divide la polilínea en segmentos, cada uno un par de puntos.

      Una polilínea cerrada recibe también el segmento de su último punto de vuelta al primero, salvo que ambos coincidan. Menos de dos puntos no dan ningún segmento. Ejemplo: cuatro puntos, cerrada -> cuatro segmentos alrededor del bucle

      Parameters

      Returns Segment3[]

      Un par de puntos por segmento, en orden

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

    create

    fillet

    • Encuentra el mayor redondeo para cada esquina de la polilínea, cada uno limitado a la mitad más cercana de sus segmentos para que los redondeos nunca se solapen.

      Una polilínea cerrada incluye las dos esquinas de sus extremos. Menos de tres puntos dan una lista vacía.

      Parameters

      Returns number[]

      Un radio por esquina, en el orden de las esquinas

      const radii = bitbybit.polyline.maxFilletsHalfLine({
      polyline: { points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]], isClosed: true },
      tolerance: 1e-7,
      });
    • Encuentra un radio de redondeo que cabe en todas las esquinas de la polilínea: el más pequeño de los máximos por esquina bajo la regla del medio segmento.

      Menos de tres puntos, o cualquier esquina que no admita ningún redondeo, dan 0.

      Parameters

      Returns number

      El radio que cabe en todas las esquinas, en unidades del 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

    • Mide la polilínea sumando las distancias rectas entre puntos vecinos.

      El segmento de cierre de una polilínea cerrada no se cuenta. Ejemplo: [[0,0,0], [3,0,0], [3,4,0]] -> 7

      Parameters

      Returns number

      La longitud en unidades del modelo

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

    intersection

    • Encuentra los puntos donde dos polilíneas se cruzan entre sí, comprobando cada segmento de una contra cada segmento de la otra.

      Los cruces más cercanos entre sí que la tolerancia se notifican una vez. Ejemplo: dos polilíneas formando una X -> el punto del medio

      Parameters

      Returns Point3[]

      Los puntos de cruce; vacío cuando no hay ninguno

      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

    • Encuentra los puntos donde la polilínea se cruza a sí misma.

      Los segmentos vecinos no se comprueban entre sí, y los cruces más cercanos entre sí que la tolerancia se notifican una vez. Ejemplo: un ocho -> su único punto de cruce

      Parameters

      Returns Point3[]

      Los puntos de cruce; vacío cuando no hay ninguno

      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 sueltos en polilíneas emparejando los extremos que se encuentran dentro de la tolerancia.

      Los segmentos que se conectan extremo con extremo se convierten en una polilínea por cadena; los segmentos que no tocan nada se convierten en polilíneas de un solo segmento. Ejemplo: diez segmentos dispersos que forman dos cadenas -> dos polilíneas

      Parameters

      • inputs: SegmentsToleranceDto

        Los segmentos y la tolerancia para que dos extremos cuenten como en contacto

      Returns Polyline3[]

      Las polilíneas que forman los segmentos

      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 una matriz de transformación, o una lista de ellas en orden, a cada punto de la polilínea.

      Ejemplo: una traslación según [5,0,0] -> cada punto movido 5 a lo largo de X

      Parameters

      Returns Bit.Inputs.Polyline.PolylinePropertiesDto

      Una nueva polilínea con los puntos transformados

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