Bitbybit Docs
    Preparing search index...

    Class OCCTSolid

    OpenCascade 中的实体:包围一个体积的闭合形状。可以从基本体(createBoxcreateSpherecreateCylindercreateConecreateTorus)构建,从向前后两侧拉伸的平面轮廓(星形、N 边形、心形、梁和其他轮廓实体)构建,或者通过 fromClosedShell 从闭合壳体构建;然后用体积、表面积和质心的获取方法测量它,并按点是否位于其内部来筛选点。顶点、边、线框、面、壳体和复合体在 shapes 下各有自己的类,与此类并列。

    Index

    Constructors

    beam

    • 通过将工字梁的平面轮廓沿其自身法线向前和向后拉伸来创建工字梁。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const beam = await bitbybit.occt.shapes.solid.createIBeamProfileSolid({
      width: 10,
      height: 20,
      flangeThickness: 1,
      webThickness: 1,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 0, 1],
      extrusionLengthFront: 100,
      extrusionLengthBack: 0,
      });
    • 通过将 H 形梁的平面轮廓沿其自身法线向前和向后拉伸来创建 H 形梁。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const beam = await bitbybit.occt.shapes.solid.createHBeamProfileSolid({
      width: 20,
      height: 20,
      flangeThickness: 1,
      webThickness: 1,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 0, 1],
      extrusionLengthFront: 100,
      extrusionLengthBack: 0,
      });
    • 通过将 T 形梁的平面轮廓沿其自身法线向前和向后拉伸来创建 T 形梁。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const beam = await bitbybit.occt.shapes.solid.createTBeamProfileSolid({
      width: 10,
      height: 20,
      flangeThickness: 1,
      webThickness: 1,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 0, 1],
      extrusionLengthFront: 100,
      extrusionLengthBack: 0,
      });
    • 通过将 U 形梁的平面轮廓沿其自身法线向前和向后拉伸来创建 U 形梁。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const beam = await bitbybit.occt.shapes.solid.createUBeamProfileSolid({
      width: 10,
      height: 20,
      flangeThickness: 1,
      webThickness: 1,
      flangeWidth: 3,
      alignment: Bit.Inputs.Base.basicAlignmentEnum.midMid,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 0, 1],
      extrusionLengthFront: 100,
      extrusionLengthBack: 0,
      });

    debug

    • 收集关于实体的诊断信息:它是否有效、有多少面和边、其表面积和体积,以及每个面的曲面类型、阶数、控制点数量、边界和面积。

      空的或 null 的形状给出标记为无效且计数为零的报告。

      Parameters

      Returns Promise<SolidDebugInfo>

      包含数量、面积、体积以及每个面一个条目的报告

      const info = await bitbybit.occt.shapes.solid.debugInfo({ shape: box });
      console.log(info.nbFaces, info.volume);

    filter

    • keepInkeepOnkeepOut 标志的选择,保留位于实体内部、表面上或外部的点。

      点在距表面 tolerance 以内时算作在表面上。内核无法分类的点仅在 keepUnknown 时保留。

      Parameters

      Returns Promise<Point3[]>

      通过筛选的点,保持原有顺序

      const inside = await bitbybit.occt.shapes.solid.filterSolidPoints({
      shape: box,
      points: [[0, 0, 0], [100, 0, 0]],
      tolerance: 1e-7,
      keepIn: true,
      keepOn: false,
      keepOut: false,
      keepUnknown: false,
      });

    from

    • 将闭合壳体变为实体,使其包围的体积成为可以测量、布尔运算和网格化的体。

      壳体必须是水密的;有缺口的壳体生成内核无法使用的实体。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      由壳体包围的实体

      const solid = await bitbybit.occt.shapes.solid.fromClosedShell({ shape: closedShell });
      

    get

    • 测量实体所有面的总面积。

      Parameters

      Returns Promise<number>

      以平方模型单位表示的表面积

      const area = await bitbybit.occt.shapes.solid.getSolidSurfaceArea({ shape: box });
      
    • 测量实体包围的体积,以立方模型单位表示。

      Parameters

      Returns Promise<number>

      以立方模型单位表示的体积

      const volume = await bitbybit.occt.shapes.solid.getSolidVolume({ shape: box });
      
    • 测量列表中每个实体的体积。

      Parameters

      Returns Promise<number[]>

      每个实体一个体积,顺序相同

      const volumes = await bitbybit.occt.shapes.solid.getSolidsVolumes({ shapes: [box, sphere] });
      
    • 找出实体的质心,将其视为填充了密度均匀的材料。

      Parameters

      Returns Promise<Point3>

      质心点

      const center = await bitbybit.occt.shapes.solid.getSolidCenterOfMass({ shape: box });
      
    • 找出列表中每个实体的质心,将每个视为填充了密度均匀的材料。

      Parameters

      Returns Promise<Point3[]>

      每个实体一个点,顺序相同

      const centers = await bitbybit.occt.shapes.solid.getSolidsCentersOfMass({ shapes: [box, sphere] });
      
    • 列出任意形状内部的实体,例如复合体中的体或布尔运算的结果。

      本身是实体的形状给出只含该实体的列表。

      Parameters

      Returns Promise<TopoDSSolidPointer[]>

      形状中找到的实体

      const solids = await bitbybit.occt.shapes.solid.getSolids({ shape: compound });
      

    primitives

    • 创建各边与坐标轴平行的长方体实体。

      width 沿 X,height 沿 Y(向上),length 沿 Z,均以模型单位表示。默认长方体以 center 为中心;originOnCenter 设为 false 时它改为立于该点上,因此 center 成为底面的中心。

      Parameters

      • inputs: BoxDto

        长方体尺寸、放置点,以及是以该点为中心还是立于其上

      Returns Promise<TopoDSSolidPointer>

      新实体

      const box = await bitbybit.occt.shapes.solid.createBox({ width: 10, length: 20, height: 5, center: [0, 0, 0], originOnCenter: true });
      
    • 创建立方体实体,即三边尺寸相同、与坐标轴平行的长方体。

      默认立方体以 center 为中心;originOnCenter 设为 false 时它改为立于该点上,因此 center 成为底面的中心。

      Parameters

      • inputs: Bit.Inputs.OCCT.CubeDto

        立方体尺寸、放置点,以及是以该点为中心还是立于其上

      Returns Promise<TopoDSSolidPointer>

      新实体

      const cube = await bitbybit.occt.shapes.solid.createCube({ size: 10, center: [0, 0, 0], originOnCenter: true });
      
    • 创建从一个角点开始并沿正轴延伸的长方体实体。

      x、y 和 z 最小的角位于 corner;长方体从该处沿 X 延伸 width、沿 Y 延伸 height、沿 Z 延伸 length,均以模型单位表示。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const box = await bitbybit.occt.shapes.solid.createBoxFromCorner({ width: 10, length: 20, height: 5, corner: [0, 0, 0] });
      
    • 创建圆柱体实体,圆形底面位于 center,沿 direction 生长 height

      originOnCenter 打开时,圆柱体向后移动其高度的一半,使 center 位于其中间。angle 以度为单位,从完整的 360 度圆周中切掉一个楔形,就像切一块蛋糕。

      Parameters

      • inputs: Bit.Inputs.OCCT.CylinderDto

        半径、高度、底部中心、方向、可选的部分角度以及是否以该点为中心

      Returns Promise<TopoDSSolidPointer>

      新实体

      const cylinder = await bitbybit.occt.shapes.solid.createCylinder({ radius: 5, height: 20, center: [0, 0, 0], direction: [0, 1, 0], angle: 360, originOnCenter: false });
      
    • 沿每条直线从起点到终点创建一个圆柱体实体,全部使用相同的半径。

      每个圆柱体的高度是其直线的长度。

      Parameters

      Returns Promise<TopoDSSolidPointer[]>

      每条直线一个实体,顺序相同

      const rods = await bitbybit.occt.shapes.solid.createCylindersOnLines({
      lines: [{ start: [0, 0, 0], end: [0, 10, 0] }, { start: [5, 0, 0], end: [5, 10, 0] }],
      radius: 0.5,
      });
    • 创建圆锥体实体,两个半径都大于 0 时为截锥体,立于 center 处的圆形底面上,沿 direction 生长 height

      radius1 是底面,radius2 是顶部;顶部半径为 0 生成尖顶圆锥。angle 以度为单位,从完整的 360 度圆周中切掉一个楔形。

      Parameters

      • inputs: Bit.Inputs.OCCT.ConeDto

        底部和顶部半径、高度、底部中心、方向和可选的部分角度

      Returns Promise<TopoDSSolidPointer>

      新实体

      const cone = await bitbybit.occt.shapes.solid.createCone({ radius1: 5, radius2: 0, height: 10, center: [0, 0, 0], direction: [0, 1, 0], angle: 360 });
      
    • 创建圆环体实体,即横截面为圆形的环,以 center 为中心,轴沿 direction

      majorRadius 是从中心到管中线的距离,minorRadius 是管自身的半径。angle 以度为单位,生成部分圆环而不是完整的 360 度。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const ring = await bitbybit.occt.shapes.solid.createTorus({ majorRadius: 10, minorRadius: 2, center: [0, 0, 0], direction: [0, 1, 0], angle: 360 });
      
    • 通过将平面星形轮廓沿其自身法线向前和向后拉伸来创建星形实体。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。星形本身按 shapes.wire.createStarWire 的方式构建。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const star = await bitbybit.occt.shapes.solid.createStarSolid({
      numRays: 5,
      outerRadius: 10,
      innerRadius: 5,
      half: false,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      extrusionLengthFront: 2,
      extrusionLengthBack: 0,
      });
    • 通过将平面正多边形轮廓沿其自身法线向前和向后拉伸来创建横截面为正多边形的实体。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const hexPrism = await bitbybit.occt.shapes.solid.createNGonSolid({
      nrCorners: 6,
      radius: 5,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      extrusionLengthFront: 10,
      extrusionLengthBack: 0,
      });
    • 通过将平面平行四边形轮廓沿其自身法线向前和向后拉伸来创建横截面为平行四边形的实体。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const slab = await bitbybit.occt.shapes.solid.createParallelogramSolid({
      width: 10,
      height: 5,
      angle: 15,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      aroundCenter: true,
      extrusionLengthFront: 2,
      extrusionLengthBack: 0,
      });
    • 通过将平面心形轮廓沿其自身法线向前和向后拉伸来创建心形实体。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const heart = await bitbybit.occt.shapes.solid.createHeartSolid({
      sizeApprox: 10,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      extrusionLengthFront: 2,
      extrusionLengthBack: 0,
      });
    • 通过将平面树形轮廓沿其自身法线向前和向后拉伸来创建圣诞树形实体。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const tree = await bitbybit.occt.shapes.solid.createChristmasTreeSolid({
      height: 10,
      innerDist: 1.5,
      outerDist: 3,
      nrSkirts: 5,
      trunkHeight: 1,
      trunkWidth: 1,
      half: false,
      rotation: 0,
      origin: [0, 0, 0],
      direction: [0, 1, 0],
      extrusionLengthFront: 2,
      extrusionLengthBack: 0,
      });
    • 通过将平面 L 形轮廓沿其自身法线向前和向后拉伸来创建 L 形实体。

      extrusionLengthFrontextrusionLengthBack 指定它向每个方向生长多远,以模型单位表示;至少有一个必须大于 0,否则抛出错误。

      Parameters

      Returns Promise<TopoDSSolidPointer>

      新实体

      const bracket = await bitbybit.occt.shapes.solid.createLPolygonSolid({
      widthFirst: 10,
      lengthFirst: 20,
      widthSecond: 10,
      lengthSecond: 15,
      align: Bit.Inputs.OCCT.directionEnum.outside,
      rotation: 0,
      center: [0, 0, 0],
      direction: [0, 1, 0],
      extrusionLengthFront: 2,
      extrusionLengthBack: 0,
      });