Bitbybit Docs
    Preparing search index...

    Class OCCTBrepGraph

    将 OpenCascade 形状视为图的结构查询:哪些面相接,一条边属于哪些面,哪些边在一个顶点相交,每个面或边背后是什么曲面或曲线,壳体和实体如何相互包含,以及装配的产品和实例树。每个查询都返回带有 ok 和错误信息的普通数据而不是抛出异常,因此一批查询可以逐项报告失败;reconstruct 将该数据中的节点转换回真正的子形状。

    Index

    Constructors

    assembly

    • 以产品和出现的形式读取形状的装配体结构:产品是定义一次的零件或子装配体,出现是它带矩阵和父节点的一次放置。

      这是 STEP 装配体导入生成的内容,也是树形视图遍历的内容;普通形状不报告任何产品。

      Parameters

      Returns Promise<BRepGraphAssemblyResult>

      根产品、所有产品和所有实例

      const tree = await bitbybit.occt.brepGraph.assembly({ shape: imported });
      console.log(tree.products.length, tree.occurrences.length);

    geometry

    • 描述每个面的几何:它所在曲面的种类、其 UV 边界、是否携带三角化,以及一个唯一 id。

      面按 shapes.face.getFaces 使用的顺序从 0 开始编号。

      Parameters

      Returns Promise<BRepGraphFaceInfoResult>

      每个面一个几何条目

      const faces = await bitbybit.occt.brepGraph.faceInfo({ shape: cylinder });
      console.log(faces.faces.map(f => f.surfaceType));
    • 描述每条边的几何:它所遵循曲线的种类、其参数范围、其连续性和一个唯一 id。

      边按 shapes.edge.getEdges 列出的顺序从 0 开始编号。

      Parameters

      Returns Promise<BRepGraphEdgeInfoResult>

      每条边一个几何条目

      const edges = await bitbybit.occt.brepGraph.edgeInfo({ shape: cylinder });
      

    navigate

    • 将图的一个节点(按其种类和索引给出)变回它所代表的真实子形状,使查询找到的面或边可以用于操作。

      索引是查询结果使用的索引,每种类型从 0 开始计数。

      Parameters

      Returns Promise<TopoDSShapePointer>

      子形状

      const face = await bitbybit.occt.brepGraph.reconstruct({ shape: box, kind: Bit.Inputs.OCCT.brepGraphNodeKindEnum.face, index: 2 });
      
    • 找出代表形状某个给定子形状的图节点:其种类、索引和唯一 id。

      这是 reconstruct 的逆操作;不属于该形状的子形状给出标记为无效的结果。

      Parameters

      Returns Promise<BRepGraphNodeLookup>

      节点的类型、索引和 id,或无效结果

      const faces = await bitbybit.occt.shapes.face.getFaces({ shape: box });
      const node = await bitbybit.occt.brepGraph.nodeOfShape({ shape: box, subShape: faces[0] });
      console.log(node.kind, node.index);

    topology

    • 统计形状的组成:实体、壳体、面、线框、边、共边和顶点,它们背后不同的曲面和曲线,以及任何装配体产品和出现。

      这是查看导入文件内容、以及区分一个实体和一个只是看起来像实体的复合体的最快方法。

      Parameters

      Returns Promise<BRepGraphAnalysis>

      数量和图元数据

      const census = await bitbybit.occt.brepGraph.analyze({ shape: imported });
      console.log(census.solids, census.faces);
    • 为每个面列出与它共享一条边的面,以及它的边、线框数量和外线框。

      面按内核遍历形状的顺序从 0 开始编号,与 shapes.face.getFaces 使用的顺序相同。这是从种子面向外扩展选择或找出凹槽各面的基本构件。

      Parameters

      Returns Promise<BRepGraphFaceAdjacencyResult>

      每个面一个邻接条目

      const adjacency = await bitbybit.occt.brepGraph.faceAdjacency({ shape: box });
      console.log(adjacency.faces[0].adjacent);
    • 为每条边列出它所属的面、其端点顶点及其拓扑标志,例如它是接缝边还是边界边。

      边按 shapes.edge.getEdges 列出的顺序从 0 开始编号。

      Parameters

      Returns Promise<BRepGraphEdgeFaceMapResult>

      每条边一个条目

      const edges = await bitbybit.occt.brepGraph.edgeFaceMap({ shape: box });
      
    • 向上映射形状的各部分:每个面属于哪些壳体,每个壳体属于哪些实体,以及每个面最终位于哪些实体中。

      每个列表包含一个子部分的父索引,因此被两个实体共享的面会列出两者。

      Parameters

      Returns Promise<BRepGraphContainmentResult>

      每个面和每个壳体的父索引

      const containment = await bitbybit.occt.brepGraph.containment({ shape: compound });
      
    • 转储形状的整个结构:每个实体、壳体、面、边和顶点及其唯一 id 以及直接位于其下的部分。

      这是此处最重的查询,用于一次推理整个拓扑而不是回答单个问题。

      Parameters

      Returns Promise<BRepGraphDumpResult>

      实体、壳体、面、边和顶点及其引用

      const structure = await bitbybit.occt.brepGraph.dump({ shape: box });
      console.log(structure.faces.length, structure.edges.length);

    validation

    • 检查形状图的结构是否存在悬空引用或链接不一致等问题,并列出发现的每个问题及其严重程度。

      这检查的是簿记而不是几何;shapes.shape.isValidshapeFix.basicShapeRepair 处理几何有效性。

      Parameters

      Returns Promise<BRepGraphValidationResult>

      图是否完好以及发现的问题

      const report = await bitbybit.occt.brepGraph.validate({ shape: imported });
      console.log(report.valid, report.issues);