Bitbybit Docs
    Bereite Suchindex vor...

    Klasse OCCTTransforms

    Verschieben, Drehen, Skalieren und Spiegeln von OpenCascade-Formen und Bauen der 4x4-Matrizen, die solche Bewegungen beschreiben. Jede Methode gibt eine neue Form zurück und lässt die Eingabe, wie sie war. Winkel sind in Grad, Abstände in Modelleinheiten, und eine Drehachse verläuft durch den Ursprung, sofern eine Methode kein Zentrum nimmt. Matrizen sind 16 Zahlen in spaltenweiser Reihenfolge (die Verschiebung sitzt an den Indizes 12 bis 14); eine Liste von Matrizen wird von der ersten bis zur letzten als eine kombinierte Bewegung angewendet, so passen transformByMatrix und die ...ToMatrix-Builder zusammen.

    Index

    Konstruktoren

    by matrix

    • Wendet eine 4x4-Matrix, oder eine Liste von Matrizen, die von der ersten bis zur letzten angewendet werden, auf eine Form an.

      Die Matrix ist spaltenweise gespeichert, daher sitzt die Verschiebung an den Indizes 12 bis 14. Eine Matrix, die streckt oder schert, ist erlaubt; bauen Sie Matrizen mit den ...ToMatrix-Methoden und kombinieren Sie sie mit multiplyTransforms. Eine Matrix, die der Kernel nicht anwenden kann, löst einen Fehler aus.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die transformierte Form

      const move = await bitbybit.occt.transforms.translationToMatrix({ translation: [10, 0, 0] });
      const turn = await bitbybit.occt.transforms.rotationAxisAngleToMatrix({ axis: [0, 1, 0], angle: 90, center: [0, 0, 0] });
      const placed = await bitbybit.occt.transforms.transformByMatrix({ shape: box, transformation: [turn, move] });
    • Wendet dieselbe 4x4-Matrix, oder Liste von Matrizen, die von der ersten bis zur letzten angewendet werden, auf mehrere Formen an, wie transformByMatrix es für eine tut.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die transformierten Formen, in derselben Reihenfolge

      const moved = await bitbybit.occt.transforms.transformShapesByMatrix({ shapes: [box, sphere], transformation: matrix });
      
    • Liest die Platzierung, die eine Form trägt, die auf ihr gespeicherte Transformation statt der in ihre Geometrie eingebrannten, als Matrix plus ihre Verschiebung, ihr Rotationsquaternion und ihre gleichmäßige Skalierung.

      Eine mit align oder über eine Baugruppe platzierte Form trägt eine solche Platzierung; die meisten anderen Methoden hier brennen die Bewegung in die Geometrie ein, und eine solche Form meldet die Identität.

      Parameter

      Rückgabewert Promise<ShapeTransformInfo>

      Die Matrix, die Verschiebung, das Quaternion als [x, y, z, w] und die Skalierung

      const placement = await bitbybit.occt.transforms.getShapeTransform({ shape: movedBox });
      console.log(placement.translation, placement.scale);

    matrix builders

    • Erzeugt die Identitätsmatrix, die Transformation, die nichts ändert, als Ausgangspunkt zum Zusammensetzen anderer.

      Rückgabewert Promise<TransformMatrix>

      Die Einheitsmatrix, spaltenweise

      const identity = await bitbybit.occt.transforms.identityTransform();
      
    • Erzeugt eine Matrix aus einer Verschiebung, drei Drehwinkeln in Grad um X, Y und Z und einer gleichmäßigen Skalierung.

      Die Skalierung wird zuerst angewendet, dann die Drehungen (Z zuerst, dann Y, dann X), dann die Verschiebung, was die Reihenfolge ist, die Baugruppenplatzierungen verwenden. Jeder weggelassene Teil gilt als keine Änderung.

      Parameter

      • inputs: ComposeTransformDto

        Die Verschiebung, die drei Drehwinkel in Grad und der Skalierungsfaktor

      Rückgabewert Promise<TransformMatrix>

      Die kombinierte Matrix, spaltenweise

      const placement = await bitbybit.occt.transforms.composeTransform({ translation: [10, 0, 0], rotation: [0, 90, 0], scale: 1 });
      
    • Fasst eine Liste von Matrizen zu einer zusammen, von der ersten bis zur letzten angewendet, sodass eine Kette von Bewegungen zu einer einzigen Matrix wird.

      Eine einzelne Matrix wird unverändert zurückgegeben und eine leere Liste ergibt die Identität.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die kombinierte Matrix, spaltenweise

      const combined = await bitbybit.occt.transforms.multiplyTransforms({ transformation: [turn, move] });
      
    • Invertiert eine Matrix und liefert die Transformation, die sie rückgängig macht: eine Matrix und dann ihre Inverse anzuwenden, bringt eine Form dorthin zurück, wo sie war.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die inverse Matrix, spaltenweise

      const back = await bitbybit.occt.transforms.invertTransform({ transformation: placement });
      
    • Erzeugt die Matrix einer Verschiebung um einen Vektor, in Modelleinheiten.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die Verschiebungsmatrix, spaltenweise

      const move = await bitbybit.occt.transforms.translationToMatrix({ translation: [10, 0, 0] });
      
    • Erzeugt die Matrix einer Drehung um einen Winkel in Grad um eine Achse, durch den Ursprung oder durch einen optionalen Mittelpunkt.

      Die Drehung folgt der Rechte-Hand-Regel um axis.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die Drehmatrix, spaltenweise

      const turn = await bitbybit.occt.transforms.rotationAxisAngleToMatrix({ axis: [0, 1, 0], angle: 90, center: [5, 0, 5] });
      
    • Erzeugt die Matrix einer gleichmäßigen Skalierung mit einem Faktor um den Ursprung oder einen optionalen Mittel- punkt.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die Skalierungsmatrix, spaltenweise

      const grow = await bitbybit.occt.transforms.scaleUniformToMatrix({ factor: 2, center: [0, 0, 0] });
      
    • Erzeugt die Matrix einer Spiegelung durch einen Punkt, die Transformation, die mirrorAboutPoint anwendet.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die Spiegelmatrix, spaltenweise

      const invert = await bitbybit.occt.transforms.mirrorPointToMatrix({ point: [0, 0, 0] });
      
    • Erzeugt die Matrix einer Spiegelung an einer Linie, die Transformation, die mirror anwendet: die Achse durch origin entlang direction.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die Spiegelmatrix, spaltenweise

      const flip = await bitbybit.occt.transforms.mirrorAxisToMatrix({ origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Erzeugt die Matrix einer Spiegelung an einer Ebene, die Transformation, die mirrorAlongNormal anwendet: die Ebene durch origin mit der gegebenen Normalen.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die Spiegelmatrix, spaltenweise

      const reflect = await bitbybit.occt.transforms.mirrorPlaneToMatrix({ origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Erzeugt die Rotationsmatrix eines Quaternions, gegeben als [x, y, z, w].

      Das Quaternion wird zuerst normalisiert, daher spielt seine Länge keine Rolle.

      Parameter

      Rückgabewert Promise<TransformMatrix>

      Die Drehmatrix, spaltenweise

      const turn = await bitbybit.occt.transforms.quaternionToMatrix({ quaternion: [0, 0.7071, 0, 0.7071] });
      

    on shapes

    • Wendet transform auf mehrere Formen an, jede mit ihrer eigenen Verschiebung, Drehachse, ihrem eigenen Winkel und Skalierungsfaktor.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die transformierten Formen, in derselben Reihenfolge

      const moved = await bitbybit.occt.transforms.transformShapes({
      shapes: [box, sphere],
      translations: [[10, 0, 0], [-10, 0, 0]],
      rotationAxes: [[0, 1, 0], [0, 1, 0]],
      rotationAngles: [45, 0],
      scaleFactors: [1, 2],
      });
    • Wendet rotate auf mehrere Formen an, jede um ihre eigene Achse durch den Ursprung und um ihren eigenen Winkel in Grad.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die gedrehten Formen, in derselben Reihenfolge

      const turned = await bitbybit.occt.transforms.rotateShapes({ shapes: [box, sphere], axes: [[0, 1, 0], [1, 0, 0]], angles: [90, 45] });
      
    • Wendet rotateAroundCenter auf mehrere Formen an, jede mit ihrem eigenen Winkel in Grad, Mittelpunkt und ihrer eigenen Achse.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die gedrehten Formen, in derselben Reihenfolge

      const turned = await bitbybit.occt.transforms.rotateAroundCenterShapes({
      shapes: [box, sphere],
      angles: [90, 45],
      centers: [[5, 0, 5], [0, 0, 0]],
      axes: [[0, 1, 0], [0, 1, 0]],
      });
    • Wendet align auf mehrere Formen an, jede mit ihrem eigenen Ausgangs- und Zielbezugssystem.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die ausgerichteten Formen, in derselben Reihenfolge

      const placed = await bitbybit.occt.transforms.alignShapes({
      shapes: [cylinder, cylinder2],
      fromOrigins: [[0, 0, 0], [0, 0, 0]],
      fromDirections: [[0, 1, 0], [0, 1, 0]],
      toOrigins: [[10, 0, 0], [20, 0, 0]],
      toDirections: [[1, 0, 0], [0, 0, 1]],
      });
    • Wendet alignAndTranslate auf mehrere Formen an, jede mit ihrer eigenen Richtung und ihrem eigenen Mittelpunkt.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die platzierten Formen, in derselben Reihenfolge

      const placed = await bitbybit.occt.transforms.alignAndTranslateShapes({
      shapes: [profile, profile2],
      directions: [[1, 0, 0], [0, 0, 1]],
      centers: [[10, 0, 0], [0, 0, 10]],
      });
    • Wendet translate auf mehrere Formen an, jede um ihren eigenen Vektor.

      Die beiden Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die verschobenen Formen, in derselben Reihenfolge

      const moved = await bitbybit.occt.transforms.translateShapes({ shapes: [box, sphere], translations: [[10, 0, 0], [-10, 0, 0]] });
      
    • Wendet scale auf mehrere Formen an, jede gleichmäßig um den Ursprung mit ihrem eigenen Faktor.

      Die beiden Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die skalierten Formen, in derselben Reihenfolge

      const scaled = await bitbybit.occt.transforms.scaleShapes({ shapes: [box, sphere], factors: [2, 0.5] });
      
    • Wendet scale3d auf mehrere Formen an, jede mit ihren eigenen drei Faktoren und ihrem eigenen Mittelpunkt.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die skalierten Formen, in derselben Reihenfolge

      const scaled = await bitbybit.occt.transforms.scale3dShapes({
      shapes: [box, sphere],
      scales: [[1, 2, 1], [2, 2, 2]],
      centers: [[0, 0, 0], [10, 0, 0]],
      });
    • Wendet mirror auf mehrere Formen an, jede an ihrer eigenen Achse.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die gespiegelten Formen, in derselben Reihenfolge

      const flipped = await bitbybit.occt.transforms.mirrorShapes({
      shapes: [box, sphere],
      origins: [[0, 0, 0], [0, 0, 0]],
      directions: [[0, 1, 0], [1, 0, 0]],
      });
    • Wendet mirrorAlongNormal auf mehrere Formen an, jede an ihrer eigenen Ebene.

      Alle Listen müssen gleich lang sein, sonst wird ein Fehler ausgelöst.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer[]>

      Die gespiegelten Formen, in derselben Reihenfolge

      const others = await bitbybit.occt.transforms.mirrorAlongNormalShapes({
      shapes: [leftArm, leftLeg],
      origins: [[0, 0, 0], [0, 0, 0]],
      normals: [[1, 0, 0], [1, 0, 0]],
      });

    on single shape

    • Skaliert, dreht und verschiebt eine Form in einem Zug: zuerst die Skalierung um den Ursprung, dann die Drehung um eine Achse durch den Ursprung, dann die Verschiebung.

      Weil die Skalierung und die Drehung um den Ursprung erfolgen, schwingt eine Form, die nicht dort ist, auch um ihn herum; verschieben Sie sie zuerst, oder verwenden Sie rotateAroundCenter und scale3d für einen gewählten Mittelpunkt.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die transformierte Form

      const moved = await bitbybit.occt.transforms.transform({
      shape: box,
      translation: [10, 0, 0],
      rotationAxis: [0, 1, 0],
      rotationAngle: 45,
      scaleFactor: 2,
      });
    • Dreht eine Form um eine Achse, die durch den Ursprung verläuft, um einen Winkel in Grad.

      Die Drehung folgt der Rechte-Hand-Regel: mit dem Daumen entlang axis zeigen die Finger die positive Richtung. Eine Form abseits des Ursprungs schwingt um ihn herum; rotateAroundCenter dreht stattdessen um einen gewählten Punkt.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die gedrehte Form

      const turned = await bitbybit.occt.transforms.rotate({ shape: box, axis: [0, 1, 0], angle: 90 });
      
    • Dreht eine Form um eine Achse, die durch einen gewählten Punkt verläuft, um einen Winkel in Grad.

      Die Form wird so verschoben, dass der Punkt am Ursprung sitzt, dort mit der Rechte-Hand-Regel um axis gedreht und zurückverschoben.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die gedrehte Form

      const turned = await bitbybit.occt.transforms.rotateAroundCenter({ shape: box, angle: 90, center: [5, 0, 5], axis: [0, 1, 0] });
      
    • Verschiebt eine Form so, dass ein Punkt und eine Richtung auf ihr auf einem anderen Punkt und einer anderen Richtung landen: das Bezugssystem fromOrigin mit fromDirection wird auf toOrigin mit toDirection getragen.

      Dies ist der Weg, eine Form auf eine Oberfläche zu stellen oder sie entlang einer Linie auszurichten: die Form wird sowohl verschoben als auch gedreht, nie skaliert.

      Parameter

      • inputs: AlignDto<TopoDSShapePointer>

        Die Form, der Punkt und die Richtung, von denen ausgegangen wird, und der Punkt und die Richtung, auf denen sie landen soll

      Rückgabewert Promise<TopoDSShapePointer>

      Die ausgerichtete Form

      const standing = await bitbybit.occt.transforms.align({
      shape: cylinder,
      fromOrigin: [0, 0, 0],
      fromDirection: [0, 1, 0],
      toOrigin: [10, 5, 0],
      toDirection: [1, 0, 0],
      });
    • Verschiebt eine Form so, dass ein vollständiges Bezugssystem auf ihr auf einem anderen Bezugssystem landet: ein Punkt, seine Normale und eine Achse in der Ebene dieser Normalen werden auf ihre Ziele getragen.

      Wo align eine Richtung festlegt und die Drehung um sie frei lässt, legt dies auch die Drehung fest, was für Formen zählt, die um ihre Achse nicht rund sind.

      Parameter

      • inputs: AlignNormAndAxisDto<TopoDSShapePointer>

        Die Form, der Punkt, die Normale und die Achse, von denen ausgegangen wird, und der Punkt, die Normale und die Achse, auf denen sie landen soll

      Rückgabewert Promise<TopoDSShapePointer>

      Die ausgerichtete Form

      const placed = await bitbybit.occt.transforms.alignNormAndAxis({
      shape: bracket,
      fromOrigin: [0, 0, 0],
      fromNorm: [0, 1, 0],
      fromAx: [1, 0, 0],
      toOrigin: [10, 0, 0],
      toNorm: [0, 0, 1],
      toAx: [0, 1, 0],
      });
    • Dreht eine Form so, dass ihre Y-Achse entlang direction zeigt, und verschiebt sie dann nach center.

      Die flachen Formen und Primitive dieses Pakets werden auf dem Boden mit Y nach oben gebaut, daher ist dies der eine Aufruf, der jede von ihnen platziert: die Richtung wird ihr neues Oben, und der Mittelpunkt, wo sie sitzen.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die platzierte Form

      const placed = await bitbybit.occt.transforms.alignAndTranslate({ shape: profile, direction: [1, 0, 0], center: [10, 0, 0] });
      
    • Skaliert eine Form gleichmäßig um den Ursprung mit einem Faktor.

      Eine Form abseits des Ursprungs bewegt sich auch von ihm weg oder zu ihm hin; scaleFromCenter skaliert um einen gewählten Punkt und scale3d skaliert jede Achse mit ihrem eigenen Faktor.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die skalierte Form

      const bigger = await bitbybit.occt.transforms.scale({ shape: box, factor: 2 });
      
    • Skaliert eine Form mit einem eigenen Faktor entlang X, Y und Z, um einen gewählten Mittelpunkt.

      Ungleiche Faktoren strecken die Form, was Kreise zu Ellipsen macht und spätere Operationen, etwa Verrundungen, verlangsamen oder scheitern lassen kann; halten Sie die Faktoren gleich, wenn die Form nur wachsen muss.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die skalierte Form

      const stretched = await bitbybit.occt.transforms.scale3d({ shape: box, scale: [1, 2, 1], center: [0, 0, 0] });
      
    • Spiegelt eine Form an einer Linie: der Achse durch origin entlang direction.

      Jeder Punkt landet so weit hinter der Linie, wie er davor war, was in 3D dasselbe ist wie eine halbe Drehung um diese Achse.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die gespiegelte Form

      const flipped = await bitbybit.occt.transforms.mirror({ shape: box, origin: [0, 0, 0], direction: [0, 1, 0] });
      
    • Spiegelt eine Form an einer Ebene, gegeben durch einen Punkt auf ihr und ihre Normale.

      Dies ist das übliche Spiegelbild, die Art, die ein symmetrisches Teil braucht; das Ergebnis ist in dem Sinne umgestülpt, dass eine linkshändige Form zu einer rechtshändigen wird.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die gespiegelte Form

      const other = await bitbybit.occt.transforms.mirrorAlongNormal({ shape: leftHalf, origin: [0, 0, 0], normal: [1, 0, 0] });
      
    • Skaliert eine Form gleichmäßig um einen gewählten Punkt mit einem Faktor.

      Der Punkt bleibt, wo er ist, und alles andere bewegt sich von ihm weg oder zu ihm hin.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die skalierte Form

      const bigger = await bitbybit.occt.transforms.scaleFromCenter({ shape: box, factor: 2, center: [5, 0, 5] });
      
    • Spiegelt eine Form durch einen Punkt: jeder Punkt der Form landet so weit jenseits des Punkts, wie er davor war, auf der gegenüberliegenden Seite.

      Das Ergebnis ist umgestülpt, so wie ein ebener Spiegel eine linke Hand in eine rechte verwandelt.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die gespiegelte Form

      const inverted = await bitbybit.occt.transforms.mirrorAboutPoint({ shape: box, point: [0, 0, 0] });
      
    • Dreht eine Form um den Ursprung mit einem Quaternion, gegeben als [x, y, z, w].

      Das Quaternion wird zuerst normalisiert, daher spielt seine Länge keine Rolle. Quaternionen sind das, was Animations- und Physikbibliotheken ausgeben, daher erspart dies ihre Umwandlung in eine Achse und einen Winkel.

      Parameter

      Rückgabewert Promise<TopoDSShapePointer>

      Die gedrehte Form

      const turned = await bitbybit.occt.transforms.rotateByQuaternion({ shape: box, quaternion: [0, 0.7071, 0, 0.7071] });