Bitbybit Docs
    Preparing search index...

    Class Polyline

    折线:穿过一列点的直线段链,以形如 { points, isClosed } 的普通对象保存。闭合折线将其最后一点连回第一点。这里的方法测量折线,将其转换为线段或直线,查找折线的交点,将零散线段排列成链,并为其角点确定圆角大小。长度以模型单位表示。

    Index

    Constructors

    convert

    • 将折线拆分为直线对象,每段一个,各有起点和终点。

      闭合折线还会得到从其最后一个点回到第一个点的线段,除非两点重合。 示例:三个点 -> 两条直线,闭合时为三条

      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

    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]] } });
      

    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

    • 找出折线自相交的点。

      相邻线段不互相测试,比容差更接近的交点只报告一次。 示例:一个 8 字形 -> 它的那一个交点

      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

      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] -> 每个点沿 X 移动 5

      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] }),
      });