Bitbybit Docs
    Preparing search index...

    Class OCCTOperations

    Las operaciones de modelado que convierten alambres y caras de OpenCascade en superficies y sólidos y miden formas: solevar a través de secciones, extruir y revolucionar, barrer perfiles a lo largo de trayectorias, desfasar, engrosar carcasas en sólidos, cortar y dividir, más cajas delimitadoras, esferas delimitadoras y consultas de punto más cercano. Las distancias están en unidades del modelo y los ángulos en grados; cada operación devuelve una forma nueva. Los booleanos viven en booleans, el redondeo en fillets.

    Index

    Constructors

    closest pts

    • Encuentra el par de puntos, uno en cada forma, que están más cerca entre sí.

      La distancia entre ellos es el hueco entre las formas; es 0 cuando se tocan o se solapan. Lanza un error cuando no puede encontrarse ningún par.

      Parameters

      Returns Promise<Point3[]>

      El punto en la primera forma y el punto en la segunda

      const [onBox, onSphere] = await bitbybit.occt.operations.closestPointsBetweenTwoShapes({ shape1: box, shape2: sphere });
      
    • Encuentra, para cada punto de una lista, el punto más cercano sobre una forma.

      Un punto que ya está sobre la forma se asigna a sí mismo. Útil para ajustar puntos a una superficie.

      Parameters

      Returns Promise<Point3[]>

      Un punto en la forma por cada punto de entrada, en el mismo orden

      const snapped = await bitbybit.occt.operations.closestPointsOnShapeFromPoints({ shape: sphere, points: [[0, 20, 0], [20, 0, 0]] });
      
    • Encuentra el punto más cercano sobre cada una de varias formas para cada punto de una lista.

      El resultado es una sola lista plana: todos los puntos de la primera forma, en el orden de los puntos, luego todos los puntos de la segunda forma, y así sucesivamente.

      Parameters

      Returns Promise<Point3[]>

      Los puntos más cercanos, agrupados forma por forma

      const snapped = await bitbybit.occt.operations.closestPointsOnShapesFromPoints({ shapes: [box, sphere], points: [[0, 20, 0], [20, 0, 0]] });
      

    divisions

    • Corta una forma en trozos con otras formas, como un cuchillo parte una hogaza, sin eliminar material.

      Con nonDestructive en true, el valor predeterminado, las entradas se dejan intactas y el resultado contiene los trozos de todas las formas implicadas, cortadores incluidos; con false solo vuelven los trozos de shape. localFuzzyTolerance permite que la geometría que casi se toca cuente como que se toca.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Los trozos

      const pieces = await bitbybit.occt.operations.splitShapeWithShapes({ shape: box, shapes: [cuttingPlane], localFuzzyTolerance: 1e-4, nonDestructive: false });
      
    • Corta un sólido en lonchas paralelas a lo largo de una dirección, como una hogaza de pan, cada step unidades del modelo desde la base de la forma hacia arriba.

      Cada loncha es la sección plana donde un plano de corte encuentra el sólido; vuelven juntas en un compuesto. La forma debe ser o contener sólidos, o se lanza un error.

      Parameters

      Returns Promise<TopoDSCompoundPointer>

      Un compuesto de las caras de sección

      const layers = await bitbybit.occt.operations.slice({ shape: sphere, step: 0.5, direction: [0, 1, 0] });
      
    • Corta un sólido en lonchas paralelas como slice, pero con un patrón repetido de huecos entre ellas, como 0.1, 0.5, 0.1, 0.5.

      El patrón se aplica desde la base de la forma hacia arriba y se repite hasta alcanzar la cima.

      Parameters

      Returns Promise<TopoDSCompoundPointer>

      Un compuesto de las caras de sección

      const layers = await bitbybit.occt.operations.sliceInStepPattern({ shape: sphere, steps: [0.1, 0.5], direction: [0, 1, 0] });
      

    extrusions

    • Barre una forma en línea recta a lo largo de un vector, cuya longitud es la distancia: una cara se convierte en un sólido, un alambre en una carcasa, una arista en una cara.

      La forma en sí se queda en el inicio de la extrusión; el vector está en unidades del modelo, así que [0, 10, 0] extruye 10 unidades hacia arriba.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma extruida

      const disc = await bitbybit.occt.shapes.face.createCircleFace({ radius: 5, center: [0, 0, 0], direction: [0, 1, 0] });
      const cylinder = await bitbybit.occt.operations.extrude({ shape: disc, direction: [0, 10, 0] });
    • Barre varias formas a lo largo del mismo vector, como hace extrude con una.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Las formas extruidas, en el mismo orden

      const walls = await bitbybit.occt.operations.extrudeShapes({ shapes: [faceA, faceB], direction: [0, 10, 0] });
      
    • Extruye una forma plana hacia arriba a lo largo de Y height mientras la retuerce angle grados alrededor del eje Y, como una columna retorcida.

      La forma debería estar tumbada, como lo están los perfiles que crea este paquete. Con makeSolid en true, el valor predeterminado, un perfil de cara da un sólido cerrado; un alambre da una carcasa retorcida.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La extrusión retorcida

      const square = await bitbybit.occt.shapes.face.createSquareFace({ size: 5, center: [0, 0, 0], direction: [0, 1, 0] });
      const twisted = await bitbybit.occt.operations.rotatedExtrude({ shape: square, height: 20, angle: 90, makeSolid: true });

    lofts

    • Construye una superficie a través de una serie de alambres, como una piel tensada sobre costillas: cada alambre es una sección y la superficie pasa por ellas en el orden de la lista.

      Las aristas se aceptan como alambres de una sola arista. Con makeSolid en true y secciones cerradas el resultado se tapa en un sólido; en caso contrario es una carcasa. Las secciones encajan mejor con el mismo número de aristas.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La carcasa o el sólido solevados

      const bottom = await bitbybit.occt.shapes.wire.createCircleWire({ radius: 5, center: [0, 0, 0], direction: [0, 1, 0] });
      const upper = await bitbybit.occt.shapes.wire.createSquareWire({ size: 6, center: [0, 10, 0], direction: [0, 1, 0] });
      const vase = await bitbybit.occt.operations.loft({ shapes: [bottom, upper], makeSolid: true });
    • Construye una superficie a través de una serie de alambres como loft, con control sobre cómo se ajusta la piel.

      straight hace parches reglados entre secciones en lugar de una transición suave; closed cierra la superficie de la última sección de vuelta a la primera, y periodic hace ese cierre suave remuestreando las secciones. startVertex y endVertex cierran los extremos en puntos.

      Parameters

      • inputs: LoftAdvancedDto<TopoDSWirePointer>

        Los alambres o aristas de sección, si crear un sólido, las opciones de cierre y suavizado y los puntos extremos opcionales

      Returns Promise<TopoDSShapePointer>

      La carcasa o el sólido solevados

      const cone = await bitbybit.occt.operations.loftAdvanced({
      shapes: [circleBottom, circleMiddle],
      makeSolid: true,
      closed: false,
      periodic: false,
      straight: false,
      nrPeriodicSections: 10,
      useSmoothing: false,
      maxUDegree: 3,
      tolerance: 1e-7,
      parType: Bit.Inputs.OCCT.approxParametrizationTypeEnum.approxCentripetal,
      endVertex: [0, 20, 0],
      });

    measure

    • Mide a qué distancia está cada punto de una lista de una forma, como la distancia recta al punto más cercano sobre ella, en unidades del modelo.

      La distancia es a la superficie de la forma, así que un punto dentro de un sólido sigue informando su distancia a la piel.

      Parameters

      Returns Promise<number[]>

      Una distancia por punto, en el mismo orden

      const distances = await bitbybit.occt.operations.distancesToShapeFromPoints({ shape: sphere, points: [[0, 20, 0], [20, 0, 0]] });
      
    • Calcula la caja alineada con los ejes que encierra una forma: sus esquinas mínima y máxima, su centro y su tamaño a lo largo de X, Y y Z.

      En formas curvas la caja puede ser un poco más grande que la forma en sí, porque el núcleo acota la geometría de control en lugar de la superficie exacta.

      Parameters

      Returns Promise<BoundingBoxPropsDto>

      La caja como min, max, center y size

      const box = await bitbybit.occt.operations.boundingBoxOfShape({ shape });
      console.log(box.size, box.center);
    • Lee la esquina mínima de la caja delimitadora alineada con los ejes de una forma, el punto con los menores X, Y y Z.

      Parameters

      Returns Promise<Point3>

      La esquina mínima

      const min = await bitbybit.occt.operations.boundingBoxMinOfShape({ shape });
      
    • Lee la esquina máxima de la caja delimitadora alineada con los ejes de una forma, el punto con los mayores X, Y y Z.

      Parameters

      Returns Promise<Point3>

      La esquina máxima

      const max = await bitbybit.occt.operations.boundingBoxMaxOfShape({ shape });
      
    • Lee el centro de la caja delimitadora alineada con los ejes de una forma, a medio camino entre sus dos esquinas.

      Este no es el centro de masas; shapes.solid.getSolidCenterOfMass y sus hermanos dan eso.

      Parameters

      Returns Promise<Point3>

      El centro de la caja

      const center = await bitbybit.occt.operations.boundingBoxCenterOfShape({ shape });
      
    • Lee el tamaño de la caja delimitadora alineada con los ejes de una forma a lo largo de X, Y y Z, en unidades del modelo.

      Parameters

      Returns Promise<Vector3>

      La anchura, la altura y la longitud de la caja

      const size = await bitbybit.occt.operations.boundingBoxSizeOfShape({ shape });
      
    • Construye la caja delimitadora alineada con los ejes de una forma como un sólido de caja, práctico para dibujarla o usarla en una booleana.

      Parameters

      Returns Promise<TopoDSShapePointer>

      El sólido de la caja

      const boxSolid = await bitbybit.occt.operations.boundingBoxShapeOfShape({ shape });
      
    • Calcula una esfera que encierra una forma: está centrada en la caja delimitadora y alcanza sus esquinas, así que siempre contiene la forma pero no es la esfera más pequeña posible.

      Parameters

      Returns Promise<BoundingSpherePropsDto>

      La esfera como center y radius

      const sphere = await bitbybit.occt.operations.boundingSphereOfShape({ shape });
      console.log(sphere.radius);
    • Lee el centro de la esfera delimitadora de una forma, que es el centro de su caja delimitadora.

      Parameters

      Returns Promise<Point3>

      El centro de la esfera

      const center = await bitbybit.occt.operations.boundingSphereCenterOfShape({ shape });
      
    • Lee el radio de la esfera delimitadora de una forma, la distancia del centro de la caja delimitadora a su esquina, en unidades del modelo.

      Parameters

      Returns Promise<number>

      El radio

      const radius = await bitbybit.occt.operations.boundingSphereRadiusOfShape({ shape });
      

    offsets

    • Mueve el contorno de una forma hacia fuera, o hacia dentro para una distancia negativa, una distancia fija: un alambre crece hasta un contorno paralelo, una cara o un sólido hasta uno más grande.

      Un alambre o una arista se desplazan en su propio plano, o sobre face cuando se da; las esquinas se redondean. Una distancia de 0 devuelve la forma tal cual.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma desfasada

      const bigger = await bitbybit.occt.operations.offset({ shape: box, distance: 1, tolerance: 0.1 });
      
    • Desplaza una forma como offset, con una elección de cómo se unen las esquinas: arc las redondea, intersection prolonga los lados hasta una esquina afilada, tangent las mantiene tangentes.

      removeIntEdges descarta las aristas internas que el desplazamiento puede dejar en un sólido.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma desfasada

      const sharper = await bitbybit.occt.operations.offsetAdv({
      shape: rectangleWire,
      distance: 1,
      tolerance: 0.1,
      joinType: Bit.Inputs.OCCT.joinTypeEnum.intersection,
      removeIntEdges: false,
      });
    • Da grosor a una cara o carcasa, convirtiéndola en una losa o pared sólida del offset dado.

      Un desplazamiento positivo engrosa hacia la normal de la superficie, uno negativo en el otro sentido. Úsalo para convertir una piel solevada o barrida en algo imprimible.

      Parameters

      Returns Promise<TopoDSShapePointer>

      El sólido engrosado

      const wall = await bitbybit.occt.operations.makeThickSolidSimple({ shape: loftedShell, offset: 0.5 });
      
    • Vacía un sólido en una carcasa del grosor de pared dado eliminando las caras listadas y desplazando el resto.

      Eliminar la cara superior de una caja, por ejemplo, da una taza abierta. offset es el grosor de pared, negativo para crecer hacia dentro; joinType dice cómo se encuentran las paredes desplazadas en las esquinas, los demás indicadores van al constructor de sólidos gruesos del núcleo.

      Parameters

      Returns Promise<TopoDSShapePointer>

      El sólido vaciado

      const box = await bitbybit.occt.shapes.solid.createBox({ width: 10, length: 10, height: 10, center: [0, 0, 0] });
      const faces = await bitbybit.occt.shapes.face.getFaces({ shape: box });
      const cup = await bitbybit.occt.operations.makeThickSolidByJoin({
      shape: box,
      shapes: [faces[0]],
      offset: -1,
      tolerance: 1e-3,
      intersection: false,
      selfIntersection: false,
      joinType: Bit.Inputs.OCCT.joinTypeEnum.arc,
      removeIntEdges: false,
      });
    • Desplaza un alambre que no está en un mismo plano, extruyéndolo a lo largo de direction, engrosando el resultado y leyendo la arista desplazada de vuelta de él.

      Funciona mejor con alambres suaves; redondea primero las esquinas afiladas con fillets.fillet3DWire. Cuando las aristas desplazadas no pueden unirse en un solo alambre vuelven como una lista de aristas.

      Parameters

      Returns Promise<TopoDSWirePointer>

      El alambre desfasado, o las aristas sueltas cuando no se pudieron unir

      const outer = await bitbybit.occt.operations.offset3DWire({ shape: smoothWire, offset: 1, direction: [0, 1, 0] });
      

    pipeing

    • Barre una o varias formas de perfil a lo largo de un alambre de ruta y cierra el resultado en un sólido.

      Los perfiles deberían estar colocados sobre la ruta; con varios perfiles el barrido pasa gradualmente de uno al siguiente por el camino.

      Parameters

      Returns Promise<TopoDSShapePointer>

      El sólido barrido

      const tube = await bitbybit.occt.operations.pipe({ shape: pathWire, shapes: [profileAtStart] });
      
    • Barre un polígono regular a lo largo de un alambre, dando un tubo con nrCorners lados planos, por ejemplo una barra hexagonal a lo largo de una ruta.

      El polígono de radius se coloca al inicio del alambre, perpendicular a él. makeSolid da un sólido en lugar de una carcasa, trihedronEnum elige cómo gira el perfil a lo largo de la ruta, y forceApproxC1 suaviza el resultado.

      Parameters

      Returns Promise<TopoDSShapePointer>

      El sólido o la carcasa barridos

      const bar = await bitbybit.occt.operations.pipePolylineWireNGon({
      shape: pathWire,
      radius: 0.5,
      nrCorners: 6,
      makeSolid: true,
      trihedronEnum: Bit.Inputs.OCCT.geomFillTrihedronEnum.isConstantNormal,
      forceApproxC1: false,
      });
    • Barre un círculo a lo largo de cada uno de varios alambres, como hace pipeWireCylindrical con uno, todos con el mismo radio y opciones.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Un tubo por alambre, en el mismo orden

      const tubes = await bitbybit.occt.operations.pipeWiresCylindrical({
      shapes: [pathA, pathB],
      radius: 0.5,
      makeSolid: true,
      trihedronEnum: Bit.Inputs.OCCT.geomFillTrihedronEnum.isConstantNormal,
      forceApproxC1: false,
      });
    • Barre un círculo a lo largo de un alambre, dando un tubo redondo del radio dado que sigue la ruta.

      El círculo se coloca al inicio del alambre, perpendicular a él. makeSolid da un sólido en lugar de una carcasa, trihedronEnum elige cómo gira el perfil mientras sigue la ruta, y forceApproxC1 suaviza el resultado.

      Parameters

      Returns Promise<TopoDSShapePointer>

      El tubo como sólido o carcasa

      const tube = await bitbybit.occt.operations.pipeWireCylindrical({
      shape: pathWire,
      radius: 0.5,
      makeSolid: true,
      trihedronEnum: Bit.Inputs.OCCT.geomFillTrihedronEnum.isConstantNormal,
      forceApproxC1: false,
      });

    revolutions

    • Gira una forma alrededor de un eje que pasa por el origen para barrer una superficie o un sólido: una cara da un sólido, un alambre una carcasa.

      angle está en grados; 360 o más da una vuelta completa. El eje va a lo largo de direction: un perfil junto al eje Y revolucionado alrededor de él da un jarrón. El perfil no debe cruzarlo.

      Parameters

      Returns Promise<TopoDSShapePointer>

      La forma revolucionada

      const profile = await bitbybit.occt.shapes.wire.createPolylineWire({ points: [[2, 0, 0], [4, 0, 0], [3, 10, 0], [2, 12, 0]] });
      const vase = await bitbybit.occt.operations.revolve({ shape: profile, angle: 360, direction: [0, 1, 0], copy: false });