Bitbybit Docs
    Preparing search index...

    Class OCCTOperations

    As operações de modelação que transformam fios e faces OpenCascade em superfícies e sólidos e medem formas: loft através de secções, extrudir e revolver, varrer perfis ao longo de caminhos, deslocar, espessar cascas em sólidos, fatiar e dividir, mais caixas delimitadoras, esferas delimitadoras e consultas de ponto mais próximo. As distâncias estão em unidades do modelo e os ângulos em graus; cada operação devolve uma nova forma. As operações booleanas vivem em booleans, o arredondamento em fillets.

    Index

    Constructors

    closest pts

    • Encontra o par de pontos, um em cada forma, que estão mais próximos um do outro.

      A distância entre eles é a folga entre as formas; é 0 quando se tocam ou se sobrepõem. Lança um erro quando não é possível encontrar nenhum par.

      Parameters

      Returns Promise<Point3[]>

      O ponto na primeira forma e o ponto na segunda

      const [onBox, onSphere] = await bitbybit.occt.operations.closestPointsBetweenTwoShapes({ shape1: box, shape2: sphere });
      
    • Encontra, para cada ponto de uma lista, o ponto mais próximo numa forma.

      Um ponto que já esteja na forma mapeia para si próprio. Útil para encaixar pontos numa superfície.

      Parameters

      Returns Promise<Point3[]>

      Um ponto na forma por ponto de entrada, pela mesma ordem

      const snapped = await bitbybit.occt.operations.closestPointsOnShapeFromPoints({ shape: sphere, points: [[0, 20, 0], [20, 0, 0]] });
      
    • Encontra o ponto mais próximo em cada uma de várias formas para cada ponto de uma lista.

      O resultado é uma só lista plana: todos os pontos para a primeira forma, pela ordem dos pontos, depois todos os pontos para a segunda forma, e assim por diante.

      Parameters

      Returns Promise<Point3[]>

      Os pontos mais próximos, agrupados forma a forma

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

    divisions

    • Corta uma forma em pedaços com outras formas, como uma faca divide um pão, sem remover qualquer material.

      Com nonDestructive verdadeiro, a predefinição, as entradas ficam intactas e o resultado contém os pedaços de todas as formas envolvidas, cortadores incluídos; com falso só voltam os pedaços de shape. localFuzzyTolerance permite que geometria que quase se toca conte como tocando.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As partes

      const pieces = await bitbybit.occt.operations.splitShapeWithShapes({ shape: box, shapes: [cuttingPlane], localFuzzyTolerance: 1e-4, nonDestructive: false });
      
    • Corta um sólido em fatias paralelas ao longo de uma direção, como um pão, a cada step unidades do modelo desde o fundo da forma para cima.

      Cada fatia é a secção plana onde um plano de corte encontra o sólido; voltam juntas num só composto. A forma tem de ser ou conter sólidos, ou é lançado um erro.

      Parameters

      Returns Promise<TopoDSCompoundPointer>

      Um composto das faces de secção

      const layers = await bitbybit.occt.operations.slice({ shape: sphere, step: 0.5, direction: [0, 1, 0] });
      
    • Corta um sólido em fatias paralelas como slice, mas com um padrão repetido de intervalos entre elas, como 0.1, 0.5, 0.1, 0.5.

      O padrão é aplicado desde o fundo da forma para cima e repete-se até o topo ser alcançado.

      Parameters

      Returns Promise<TopoDSCompoundPointer>

      Um composto das faces de secção

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

    extrusions

    • Varre uma forma em linha reta ao longo de um vetor, cujo comprimento é a distância: uma face torna-se um sólido, um fio uma casca, uma aresta uma face.

      A própria forma fica no início da extrusão; o vetor está em unidades do modelo, por isso [0, 10, 0] extrude 10 unidades para cima.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma extrudida

      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] });
    • Varre várias formas ao longo do mesmo vetor, tal como extrude faz para uma.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      As formas extrudidas, pela mesma ordem

      const walls = await bitbybit.occt.operations.extrudeShapes({ shapes: [faceA, faceB], direction: [0, 10, 0] });
      
    • Extrude uma forma plana para cima ao longo de Y por height enquanto a torce angle graus em torno do eixo Y, como uma coluna torcida.

      A forma deve assentar plana, como os perfis que este pacote cria. Com makeSolid verdadeiro, a predefinição, um perfil de face dá um sólido fechado; um fio dá uma casca torcida.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A extrusão torcida

      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

    • Constrói uma superfície através de uma série de fios, como pele esticada sobre costelas: cada fio é uma secção e a superfície passa por elas pela ordem da lista.

      As arestas são aceites como fios de uma só aresta. Com makeSolid verdadeiro e secções fechadas o resultado é tapado num sólido; caso contrário é uma casca. As secções emparelham melhor com contagens de arestas iguais.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A casca ou o sólido criados por loft

      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 });
    • Constrói uma superfície através de uma série de fios como loft, com controlo sobre como a pele é ajustada.

      straight cria retalhos regrados entre secções em vez de uma transição suave; closed fecha a superfície da última secção de volta à primeira, e periodic torna esse laço suave reamostrando as secções. startVertex e endVertex fecham as extremidades em pontos.

      Parameters

      • inputs: LoftAdvancedDto<TopoDSWirePointer>

        Os fios ou arestas de secção, se deve criar um sólido, as opções de fecho e suavização e pontos extremos opcionais

      Returns Promise<TopoDSShapePointer>

      A casca ou o sólido criados por loft

      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

    • Mede a que distância cada ponto de uma lista está de uma forma, como a distância em linha reta ao ponto mais próximo nela, em unidades do modelo.

      A distância é à superfície da forma, por isso um ponto dentro de um sólido reporta na mesma a sua distância à pele.

      Parameters

      Returns Promise<number[]>

      Uma distância por ponto, pela mesma ordem

      const distances = await bitbybit.occt.operations.distancesToShapeFromPoints({ shape: sphere, points: [[0, 20, 0], [20, 0, 0]] });
      
    • Calcula a caixa alinhada com os eixos que envolve uma forma: os seus cantos mínimo e máximo, o seu centro e o seu tamanho ao longo de X, Y e Z.

      Em formas curvas a caixa pode ser um pouco maior do que a própria forma, porque o kernel delimita a geometria de controlo em vez da superfície exata.

      Parameters

      Returns Promise<BoundingBoxPropsDto>

      A caixa como min, max, center e size

      const box = await bitbybit.occt.operations.boundingBoxOfShape({ shape });
      console.log(box.size, box.center);
    • Lê o canto mínimo da caixa delimitadora alinhada com os eixos de uma forma, o ponto com os menores X, Y e Z.

      Parameters

      Returns Promise<Point3>

      O canto mínimo

      const min = await bitbybit.occt.operations.boundingBoxMinOfShape({ shape });
      
    • Lê o canto máximo da caixa delimitadora alinhada com os eixos de uma forma, o ponto com os maiores X, Y e Z.

      Parameters

      Returns Promise<Point3>

      O canto máximo

      const max = await bitbybit.occt.operations.boundingBoxMaxOfShape({ shape });
      
    • Lê o centro da caixa delimitadora alinhada com os eixos de uma forma, a meio caminho entre os seus dois cantos.

      Isto não é o centro de massa; shapes.solid.getSolidCenterOfMass e os seus irmãos dão isso.

      Parameters

      Returns Promise<Point3>

      O centro da caixa

      const center = await bitbybit.occt.operations.boundingBoxCenterOfShape({ shape });
      
    • Lê o tamanho da caixa delimitadora alinhada com os eixos de uma forma ao longo de X, Y e Z, em unidades do modelo.

      Parameters

      Returns Promise<Vector3>

      A largura, a altura e o comprimento da caixa

      const size = await bitbybit.occt.operations.boundingBoxSizeOfShape({ shape });
      
    • Constrói a caixa delimitadora alinhada com os eixos de uma forma como um sólido de caixa, útil para a desenhar ou usar numa operação booleana.

      Parameters

      Returns Promise<TopoDSShapePointer>

      O sólido da caixa

      const boxSolid = await bitbybit.occt.operations.boundingBoxShapeOfShape({ shape });
      
    • Calcula uma esfera que envolve uma forma: é centrada na caixa delimitadora e chega aos seus cantos, por isso contém sempre a forma mas não é a menor esfera possível.

      Parameters

      Returns Promise<BoundingSpherePropsDto>

      A esfera como center e radius

      const sphere = await bitbybit.occt.operations.boundingSphereOfShape({ shape });
      console.log(sphere.radius);
    • Lê o centro da esfera delimitadora de uma forma, que é o centro da sua caixa delimitadora.

      Parameters

      Returns Promise<Point3>

      O centro da esfera

      const center = await bitbybit.occt.operations.boundingSphereCenterOfShape({ shape });
      
    • Lê o raio da esfera delimitadora de uma forma, a distância do centro da caixa delimitadora ao seu canto, em unidades do modelo.

      Parameters

      Returns Promise<number>

      O raio

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

    offsets

    • Move a fronteira de uma forma para fora, ou para dentro para uma distância negativa, por uma distância fixa: um fio cresce num contorno paralelo, uma face ou sólido num maior.

      Um fio ou aresta é deslocado no seu próprio plano, ou em face quando dada; os cantos são arredondados. Uma distância de 0 devolve a forma tal como está.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma deslocada

      const bigger = await bitbybit.occt.operations.offset({ shape: box, distance: 1, tolerance: 0.1 });
      
    • Desloca uma forma como offset, com uma escolha de como os cantos são unidos: arc arredonda-os, intersection prolonga os lados até um canto vivo, tangent mantém-nos tangentes.

      removeIntEdges retira as arestas internas que o deslocamento pode deixar num sólido.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma deslocada

      const sharper = await bitbybit.occt.operations.offsetAdv({
      shape: rectangleWire,
      distance: 1,
      tolerance: 0.1,
      joinType: Bit.Inputs.OCCT.joinTypeEnum.intersection,
      removeIntEdges: false,
      });
    • Dá espessura a uma face ou casca, transformando-a numa placa ou parede sólida com o offset dado.

      Um deslocamento positivo engrossa no sentido da normal da superfície, um negativo no sentido contrário. Use-o para transformar uma pele de loft ou de varredura em algo imprimível.

      Parameters

      Returns Promise<TopoDSShapePointer>

      O sólido espesso

      const wall = await bitbybit.occt.operations.makeThickSolidSimple({ shape: loftedShell, offset: 0.5 });
      
    • Esvazia um sólido numa casca com a espessura de parede dada removendo as faces listadas e deslocando o resto.

      Remover a face de topo de uma caixa, por exemplo, dá um copo aberto. offset é a espessura da parede, negativo para crescer para dentro; joinType diz como as paredes deslocadas se encontram nos cantos, os outros indicadores vão para o construtor de sólidos espessos do kernel.

      Parameters

      Returns Promise<TopoDSShapePointer>

      O sólido oco

      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,
      });
    • Desloca um fio que não assenta num só plano, extrudindo-o ao longo de direction, engrossando o resultado e lendo a aresta deslocada de volta a partir dele.

      Funciona melhor em fios suaves; arredonde primeiro os cantos vivos com fillets.fillet3DWire. Quando as arestas deslocadas não podem ser unidas num só fio voltam como uma lista de arestas.

      Parameters

      Returns Promise<TopoDSWirePointer>

      O fio deslocado, ou as arestas soltas quando não foi possível uni-las

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

    pipeing

    • Varre um polígono regular ao longo de um fio, dando um tubo com nrCorners lados planos, por exemplo uma barra hexagonal ao longo de um trajeto.

      O polígono de radius é colocado no início do fio, perpendicular a ele. makeSolid dá um sólido em vez de uma casca, trihedronEnum escolhe como o perfil roda ao longo do trajeto, e forceApproxC1 suaviza o resultado.

      Parameters

      Returns Promise<TopoDSShapePointer>

      O sólido ou a casca varridos

      const bar = await bitbybit.occt.operations.pipePolylineWireNGon({
      shape: pathWire,
      radius: 0.5,
      nrCorners: 6,
      makeSolid: true,
      trihedronEnum: Bit.Inputs.OCCT.geomFillTrihedronEnum.isConstantNormal,
      forceApproxC1: false,
      });
    • Varre um círculo ao longo de cada um de vários fios, tal como pipeWireCylindrical faz para um, todos com o mesmo raio e opções.

      Parameters

      Returns Promise<TopoDSShapePointer[]>

      Um tubo por fio, pela mesma ordem

      const tubes = await bitbybit.occt.operations.pipeWiresCylindrical({
      shapes: [pathA, pathB],
      radius: 0.5,
      makeSolid: true,
      trihedronEnum: Bit.Inputs.OCCT.geomFillTrihedronEnum.isConstantNormal,
      forceApproxC1: false,
      });
    • Varre um círculo ao longo de um fio, dando um tubo redondo com o raio dado que segue o trajeto.

      O círculo é colocado no início do fio, perpendicular a ele. makeSolid dá um sólido em vez de uma casca, trihedronEnum escolhe como o perfil roda ao seguir o trajeto, e forceApproxC1 suaviza o resultado.

      Parameters

      Returns Promise<TopoDSShapePointer>

      O tubo como sólido ou casca

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

    revolutions

    • Roda uma forma em torno de um eixo pela origem para varrer uma superfície ou sólido: uma face dá um sólido, um fio uma casca.

      angle está em graus; 360 ou mais dá uma volta completa. O eixo corre ao longo de direction: um perfil ao lado do eixo Y revolvido em torno dele dá um vaso. O perfil não o pode cruzar.

      Parameters

      Returns Promise<TopoDSShapePointer>

      A forma de revolução

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