Bitbybit Docs
    Bereite Suchindex vor...

    Klasse Polyline

    Polylinien: Ketten gerader Segmente durch eine Liste von Punkten, gehalten als einfache Objekte der Form { points, isClosed }. Eine geschlossene Polylinie verbindet ihren letzten Punkt wieder mit ihrem ersten. Die Methoden hier messen eine Polylinie, wandeln sie in Segmente oder Linien um, finden, wo sich Polylinien kreuzen, sortieren lose Segmente zu Ketten und bemessen Verrundungen für ihre Ecken. Längen sind in Modelleinheiten.

    Index

    Konstruktoren

    convert

    • Kehrt die Reihenfolge der Punkte um, sodass die Polylinie in die andere Richtung verläuft.

      Die eigene Punktliste der übergebenen Polylinie wird an Ort und Stelle umgekehrt und in einem neuen Polylinienobjekt zurückgegeben. Beispiel: [[0,0,0], [1,0,0], [2,0,0]] -> [[2,0,0], [1,0,0], [0,0,0]]

      Parameter

      Rückgabewert Bit.Inputs.Polyline.PolylinePropertiesDto

      Eine Polylinie mit den Punkten in umgekehrter Reihenfolge

      const back = bitbybit.polyline.reverse({ polyline: { points: [[0, 0, 0], [1, 0, 0], [2, 0, 0]] } });
      
    • Teilt die Polylinie in Linienobjekte auf, eines pro Segment, jedes mit einem Start- und einem Endpunkt.

      Eine geschlossene Polylinie erhält auch das Segment von ihrem letzten Punkt zurück zu ihrem ersten, sofern die beiden nicht zusammenfallen. Beispiel: drei Punkte -> zwei Linien, oder drei, wenn geschlossen

      Parameter

      Rückgabewert Line3[]

      Eine Linie pro Segment, in Reihenfolge

      const lines = bitbybit.polyline.polylineToLines({ polyline: { points: [[0, 0, 0], [1, 0, 0], [1, 1, 0]], isClosed: true } });
      
    • Teilt die Polylinie in Segmente auf, jedes ein Punktepaar.

      Eine geschlossene Polylinie erhält auch das Segment von ihrem letzten Punkt zurück zu ihrem ersten, sofern die beiden nicht zusammenfallen. Weniger als zwei Punkte ergeben keine Segmente. Beispiel: vier Punkte, geschlossen -> vier Segmente um die Schleife

      Parameter

      Rückgabewert Segment3[]

      Ein Punktpaar pro Segment, in Reihenfolge

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

    create

    fillet

    • Ermittelt die größte Verrundung für jede Ecke der Polylinie, jede auf die nähere Hälfte ihrer Segmente begrenzt, sodass sich die Verrundungen nie überlappen.

      Eine geschlossene Polylinie schließt die beiden Ecken an ihren Enden ein. Weniger als drei Punkte ergeben eine leere Liste.

      Parameter

      Rückgabewert number[]

      Ein Radius pro Ecke, in der Reihenfolge der Ecken

      const radii = bitbybit.polyline.maxFilletsHalfLine({
      polyline: { points: [[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]], isClosed: true },
      tolerance: 1e-7,
      });
    • Ermittelt einen Verrundungsradius, der in jede Ecke der Polylinie passt: das kleinste der Maxima pro Ecke nach der Halbsegment-Regel.

      Weniger als drei Punkte, oder eine Ecke, die keine Verrundung erlaubt, ergeben 0.

      Parameter

      Rückgabewert number

      Der Radius, der an jede Ecke passt, in Modelleinheiten

      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

    • Misst die Polylinie, indem die geraden Abstände zwischen benachbarten Punkten addiert werden.

      Das schließende Segment einer geschlossenen Polylinie wird nicht mitgezählt. Beispiel: [[0,0,0], [3,0,0], [3,4,0]] -> 7

      Parameter

      Rückgabewert number

      Die Länge in Modelleinheiten

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

    intersection

    • Ermittelt die Punkte, an denen sich zwei Polylinien kreuzen, indem jedes Segment der einen gegen jedes Segment der anderen geprüft wird.

      Kreuzungen, die näher beieinander liegen als die Toleranz, werden einmal gemeldet. Beispiel: zwei Polylinien, die ein X bilden -> der Punkt in der Mitte

      Parameter

      Rückgabewert Point3[]

      Die Schnittpunkte; leer, wenn es keine gibt

      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

    • Ermittelt die Punkte, an denen sich die Polylinie selbst kreuzt.

      Benachbarte Segmente werden nicht gegeneinander geprüft, und Kreuzungen, die näher beieinander liegen als die Toleranz, werden einmal gemeldet. Beispiel: eine Acht -> ihr einer Kreuzungspunkt

      Parameter

      Rückgabewert Point3[]

      Die Schnittpunkte; leer, wenn es keine gibt

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

    sort

    • Verbindet lose Segmente zu Polylinien, indem Enden zusammengeführt werden, die sich innerhalb der Toleranz treffen.

      Segmente, die Ende an Ende anschließen, werden je Kette zu einer Polylinie; Segmente, die nichts berühren, werden zu Einzelsegment-Polylinien. Beispiel: zehn verstreute Segmente, die zwei Ketten bilden -> zwei Polylinien

      Parameter

      Rückgabewert Polyline3[]

      Die Polylinien, die die Segmente bilden

      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

    • Wendet eine Transformationsmatrix, oder eine Liste davon der Reihe nach, auf jeden Punkt der Polylinie an.

      Beispiel: eine Verschiebung um [5,0,0] -> jeder Punkt um 5 entlang X bewegt

      Parameter

      Rückgabewert Bit.Inputs.Polyline.PolylinePropertiesDto

      Eine neue Polylinie mit den transformierten Punkten

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