Bitbybit Docs
    Preparing search index...

    Class OCCTEdge

    OpenCascade 中的边:两个顶点之间的单条曲线,可以是直线、圆、椭圆或自由形式。可以从点和直线构建它们,也可以构建为圆弧、圆和椭圆,或者作为与圆相切的构造;将它们读回为点、长度、切线和中心;以及从任意形状中挑选边。边首尾相接形成线框,由 shapes.wire 处理。沿边的参数从起点的 0 到终点的 1;角度以度为单位。

    Index

    Constructors

    constraint

    • 绘制从两点出发恰好与圆相切的直线,每点一条切线。

      positionResult 保留圆一侧的解或全部解,circleRemainder 添加切点之间的那段圆。

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      切线,以及按要求保留的圆的部分

      const tangents = await bitbybit.occt.shapes.edge.constraintTanLinesFromTwoPtsToCircle({
      circle,
      point1: [20, 0, 0],
      point2: [-20, 0, 0],
      tolerance: 1e-7,
      positionResult: Bit.Inputs.OCCT.positionResultEnum.all,
      circleRemainder: Bit.Inputs.OCCT.circleInclusionEnum.none,
      });
    • 绘制从一点出发恰好与圆相切的两条直线。

      positionResult 保留圆一侧的解或两侧的解,circleRemainder 添加切点之间的那段圆。

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      切线,以及按要求保留的圆的部分

      const tangents = await bitbybit.occt.shapes.edge.constraintTanLinesFromPtToCircle({
      circle,
      point: [20, 0, 0],
      tolerance: 1e-7,
      positionResult: Bit.Inputs.OCCT.positionResultEnum.all,
      circleRemainder: Bit.Inputs.OCCT.circleInclusionEnum.none,
      });
    • 绘制同时与两个圆相切的直线,就像绕两个滑轮的皮带。

      positionResult 保留一侧的直线或全部直线,circleRemainders 添加切点之间圆的外侧或内侧部分,从而完成皮带形状。

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      切线,以及按要求保留的圆的部分

      const belt = await bitbybit.occt.shapes.edge.constraintTanLinesOnTwoCircles({
      circle1,
      circle2,
      tolerance: 1e-7,
      positionResult: Bit.Inputs.OCCT.positionResultEnum.all,
      circleRemainders: Bit.Inputs.OCCT.twoCircleInclusionEnum.outside,
      });

    debug

    • 收集关于边的曲线的诊断信息:其类型和阶数、控制点和节点数量、是否有理、周期性或闭合、其参数范围和周期、其长度及其端点。

      Parameters

      Returns Promise<EdgeDebugInfo>

      关于边的曲线的报告

      const info = await bitbybit.occt.shapes.edge.debugInfo({ shape: edge });
      

    extract

    • 找出边上某一分数位置处的点:0 是起点,1 是终点,0.5 是参数范围的中间。

      分数遵循曲线自身的参数,对于自由曲线它并不按长度均匀分布;需要按距离时使用 pointOnEdgeAtLength

      Parameters

      Returns Promise<Point3>

      边上的点

      const middle = await bitbybit.occt.shapes.edge.pointOnEdgeAtParam({ shape: edge, param: 0.5 });
      
    • 将形状的每条边转成一串足以描绘其曲线的点,每条边一个列表。

      偏差设置决定点贴合弯曲边的紧密程度;线框的边按其沿线框的顺序排列。

      Parameters

      Returns Promise<Point3[][]>

      每条边一个点列表

      const polylines = await bitbybit.occt.shapes.edge.edgesToPoints({
      shape: wire,
      angularDeflection: 0.1,
      curvatureDeflection: 0.1,
      minimumOfPoints: 2,
      uTolerance: 1e-9,
      minimumLength: 1e-7,
      });
    • 读取边开始的点,按边自身的方向。

      Parameters

      Returns Promise<Point3>

      起点

      const start = await bitbybit.occt.shapes.edge.startPointOnEdge({ shape: edge });
      
    • 读取列表中每条边的起点。

      Parameters

      Returns Promise<Point3[]>

      每条边一个起点,顺序相同

      const starts = await bitbybit.occt.shapes.edge.startPointsOnEdges({ shapes: edges });
      
    • 读取边结束的点,按边自身的方向。

      Parameters

      Returns Promise<Point3>

      终点

      const end = await bitbybit.occt.shapes.edge.endPointOnEdge({ shape: edge });
      
    • 读取列表中每条边的终点。

      Parameters

      Returns Promise<Point3[]>

      每条边一个终点,顺序相同

      const ends = await bitbybit.occt.shapes.edge.endPointsOnEdges({ shapes: edges });
      
    • 从起点到终点,以参数的等步长沿边放置点。

      nrOfDivisions 步给出比该数多一个的点;removeStartPointremoveEndPoint 丢弃两端。在自由曲线上,等参数步长并不是等距离;需要等距离时使用 divideEdgeByEqualDistanceToPoints

      Parameters

      Returns Promise<Point3[]>

      沿边的点,按顺序排列

      const points = await bitbybit.occt.shapes.edge.divideEdgeByParamsToPoints({ shape: edge, nrOfDivisions: 10, removeStartPoint: false, removeEndPoint: false });
      
    • 以参数的等步长沿列表中的每条边放置点,每条边一个列表。

      Parameters

      Returns Promise<Point3[][]>

      每条边一个点列表,顺序相同

      const points = await bitbybit.occt.shapes.edge.divideEdgesByParamsToPoints({ shapes: edges, nrOfDivisions: 10, removeStartPoint: false, removeEndPoint: false });
      
    • 从起点到终点,以沿曲线测量的等距离沿边放置点。

      nrOfDivisions 步给出比该数多一个的点;removeStartPointremoveEndPoint 丢弃两端。

      Parameters

      Returns Promise<Point3[]>

      沿边的点,按顺序排列

      const points = await bitbybit.occt.shapes.edge.divideEdgeByEqualDistanceToPoints({ shape: edge, nrOfDivisions: 10, removeStartPoint: false, removeEndPoint: false });
      
    • 以沿曲线的等距离沿列表中的每条边放置点,每条边一个列表。

      Parameters

      Returns Promise<Point3[][]>

      每条边一个点列表,顺序相同

      const points = await bitbybit.occt.shapes.edge.divideEdgesByEqualDistanceToPoints({ shapes: edges, nrOfDivisions: 10, removeStartPoint: false, removeEndPoint: false });
      

    from

    from base

    • 由形如 { start, end } 的直线对象创建直边。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      直边

      const edge = await bitbybit.occt.shapes.edge.fromBaseLine({ line: { start: [0, 0, 0], end: [10, 0, 0] } });
      
    • 为每个形如 { start, end } 的直线对象创建一条直边。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      每条直线一条边,顺序相同

      const edges = await bitbybit.occt.shapes.edge.fromBaseLines({ lines: [{ start: [0, 0, 0], end: [10, 0, 0] }, { start: [10, 0, 0], end: [10, 10, 0] }] });
      
    • 由线段(一对点 [start, end])创建直边。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      直边

      const edge = await bitbybit.occt.shapes.edge.fromBaseSegment({ segment: [[0, 0, 0], [10, 0, 0]] });
      
    • 为每条线段(各为一对点 [start, end])创建一条直边。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      每条线段一条边,顺序相同

      const edges = await bitbybit.occt.shapes.edge.fromBaseSegments({ segments: [[[0, 0, 0], [10, 0, 0]], [[10, 0, 0], [10, 10, 0]]] });
      
    • 用直边将每个点连到下一个点,使点列表成为一串边。

      边以零散形式返回;shapes.wire.createPolylineWire 直接生成连接好的线框。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      每对相邻点一条边

      const edges = await bitbybit.occt.shapes.edge.fromPoints({ points: [[0, 0, 0], [10, 0, 0], [10, 10, 0]] });
      
    • 为折线对象的每段创建一条直边;闭合的折线还会得到从其最后一个点回到第一个点的边。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      每条线段一条边,按顺序排列

      const edges = await bitbybit.occt.shapes.edge.fromBasePolyline({ polyline: { points: [[0, 0, 0], [10, 0, 0], [10, 10, 0]], isClosed: true } });
      
    • 创建以三个点给出的三角形的三条直边。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      它的三条边

      const edges = await bitbybit.occt.shapes.edge.fromBaseTriangle({ triangle: [[0, 0, 0], [10, 0, 0], [0, 10, 0]] });
      
    • 创建网格每个三角形的三条直边,全部放在一个平坦列表中。

      无法构建其边的三角形会带着警告被跳过,而不是中止其余部分。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      所有三角形的边

      const edges = await bitbybit.occt.shapes.edge.fromBaseMesh({ mesh: triangles });
      

    get

    • 按位置从形状中选取一条边,从 0 开始计数,顺序为内核遍历形状的顺序。

      形状必须是边、线框或由它们构建的东西;超出最后一条边的索引会抛出错误。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      该索引处的边

      const first = await bitbybit.occt.shapes.edge.getEdge({ shape: wire, index: 0 });
      
    • 按沿线框依次相接的顺序列出线框的边,每条边都定向为沿线框的方向。

      单条边以单元素列表返回。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      沿线框顺序排列的边

      const ordered = await bitbybit.occt.shapes.edge.getEdgesAlongWire({ shape: wire });
      
    • 只列出线框的圆形边,按沿线框依次相接的顺序排列。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      按顺序排列的圆形边

      const arcs = await bitbybit.occt.shapes.edge.getCircularEdgesAlongWire({ shape: roundedRectangle });
      
    • 只列出线框的直边,按沿线框依次相接的顺序排列。

      Parameters

      Returns Promise<TopoDSEdgePointer[]>

      按顺序排列的直边

      const straights = await bitbybit.occt.shapes.edge.getLinearEdgesAlongWire({ shape: roundedRectangle });
      
    • 列出形状每条边的端点,去除重复,因此多条边相交的角只出现一次。

      这些点没有特定顺序。

      Parameters

      Returns Promise<Point3[]>

      边的不重复端点

      const corners = await bitbybit.occt.shapes.edge.getCornerPointsOfEdgesForShape({ shape: box });
      
    • 沿曲线测量边的长度,以模型单位表示。

      Parameters

      Returns Promise<number>

      长度

      const len = await bitbybit.occt.shapes.edge.getEdgeLength({ shape: edge });
      
    • 沿曲线测量形状的每条边,以模型单位表示。

      Parameters

      Returns Promise<number[]>

      每条边一个长度,顺序与 getEdges 列出的相同

      const lengths = await bitbybit.occt.shapes.edge.getEdgeLengthsOfShape({ shape: box });
      
    • 沿曲线测量列表中的每条边,以模型单位表示。

      Parameters

      Returns Promise<number[]>

      每条边一个长度,顺序相同

      const lengths = await bitbybit.occt.shapes.edge.getEdgesLengths({ shapes: edges });
      
    • 找出边的质心,即其曲线的平衡点;对于直边是其中点,对于圆弧是曲线内侧的一个点。

      Parameters

      Returns Promise<Point3>

      质心点

      const center = await bitbybit.occt.shapes.edge.getEdgeCenterOfMass({ shape: edge });
      
    • 找出列表中每条边的质心。

      Parameters

      Returns Promise<Point3[]>

      每条边一个点,顺序相同

      const centers = await bitbybit.occt.shapes.edge.getEdgesCentersOfMass({ shapes: edges });
      

    get circular edge

    • 找出圆形边所在圆的圆心。

      非圆形的边会抛出错误。

      Parameters

      Returns Promise<Point3>

      中心点

      const center = await bitbybit.occt.shapes.edge.getCircularEdgeCenterPoint({ shape: arc });
      
    • 读取圆形边所在圆的半径。

      非圆形的边会抛出错误。

      Parameters

      Returns Promise<number>

      以模型单位表示的半径

      const radius = await bitbybit.occt.shapes.edge.getCircularEdgeRadius({ shape: arc });
      
    • 读取圆形边所在平面的法线。

      非圆形的边会抛出错误。

      Parameters

      Returns Promise<Vector3>

      圆所在平面的单位法线

      const normal = await bitbybit.occt.shapes.edge.getCircularEdgePlaneDirection({ shape: arc });
      

    is

    • 判断边是否为直线。

      Parameters

      Returns Promise<boolean>

      当边为直线时为 true

      const straight = await bitbybit.occt.shapes.edge.isEdgeLinear({ shape: edge });
      
    • 判断边是否位于圆上,无论是完整的圆还是圆弧。

      Parameters

      Returns Promise<boolean>

      当边为圆形时为 true

      const round = await bitbybit.occt.shapes.edge.isEdgeCircular({ shape: edge });
      

    primitives

    • 创建从第一个点开始、经过中间点、在最后一个点结束的圆弧。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      圆弧边

      const arc = await bitbybit.occt.shapes.edge.arcThroughThreePoints({ start: [0, 0, 0], middle: [5, 5, 0], end: [10, 0, 0] });
      
    • 创建从一点到另一点、以给定方向离开第一点的圆弧。

      切线确定圆弧的平面和半径。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      圆弧边

      const arc = await bitbybit.occt.shapes.edge.arcThroughTwoPointsAndTangent({ start: [0, 0, 0], tangentVec: [0, 1, 0], end: [10, 0, 0] });
      
    • 从圆边上截取两个角度之间的一段圆弧,角度以度为单位,从圆自身的起点绕圆测量。

      sense 选择圆弧从第一个角度到第二个角度绕圆的方向。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      圆弧边

      const quarter = await bitbybit.occt.shapes.edge.arcFromCircleAndTwoAngles({ circle, alphaAngle1: 0, alphaAngle2: 90, sense: true });
      
    • 从圆边上截取一段圆弧,它从圆上的一点开始并跨越给定的角度,以度为单位。

      sense 选择圆弧绕圆的方向。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      圆弧边

      const arc = await bitbybit.occt.shapes.edge.arcFromCirclePointAndAngle({ circle, point: [10, 0, 0], alphaAngle: 45, sense: true });
      
    • 创建一个完整的圆作为一条闭合边,位于法线为 direction 的平面内。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      圆边

      const circle = await bitbybit.occt.shapes.edge.createCircleEdge({ radius: 5, center: [0, 0, 0], direction: [0, 1, 0] });
      
    • 创建一个完整的椭圆作为一条闭合边,位于法线为 direction 的平面内。

      radiusMajor 不得小于 radiusMinor,否则内核拒绝该椭圆。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      椭圆边

      const ellipse = await bitbybit.occt.shapes.edge.createEllipseEdge({ center: [0, 0, 0], direction: [0, 1, 0], radiusMinor: 3, radiusMajor: 6 });
      

    rebuild

    • 在容差内将边的曲线重建为给定阶数的 B-spline。

      降低阶数会简化曲线,提高阶数则给后续操作更多自由;无论哪种,新曲线都保持在与旧曲线相差 tolerance 以内。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      带有重建曲线的新边

      const simpler = await bitbybit.occt.shapes.edge.rebuildEdgeDegree({ shape: edge, degree: 3, tolerance: 1e-3 });
      

    seam

    • 将闭合周期性边的接缝(即其起点和终点所在的点)移动到曲线上的给定参数处。

      几何不变;只有边被视为开始的位置改变。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      从接缝处开始的新边

      const rotated = await bitbybit.occt.shapes.edge.moveEdgeSeamByParameter({ shape: circle, parameter: 1.57 });
      
    • 将闭合周期性边的接缝(即其起点和终点所在的点)从当前起点沿曲线移动一段距离。

      几何不变;只有边被视为开始的位置改变。

      Parameters

      Returns Promise<TopoDSEdgePointer>

      从接缝处开始的新边

      const rotated = await bitbybit.occt.shapes.edge.moveEdgeSeamByLength({ shape: circle, length: 2.5 });
      

    shapes

    • 合并位于同一曲面上的面和同一曲线上的边,从而移除布尔运算或融合遗留的内部接缝。

      它相当于边和面都统一、B-spline 保持原样的 shapes.shape.unifySameDomain

      Parameters

      Returns Promise<TopoDSShapePointer>

      去除内部接缝后的形状

      const clean = await bitbybit.occt.shapes.edge.removeInternalEdges({ shape: fused });