Wire Projection in TypeScript Example

Wire Projection in TypeScript Example script details
Author
matas
Type
Typescript logo image
typescript
App Version
0.14.0
Visibility
public
Date Created
Nov 15, 2023, 10:33:26 AM
Last Edit Date
Jan 28, 2024, 11:54:11 AM

Script Details

The Code
const start = async () => { const sphere1 = await createGeometry(0.5, 3.7, 2, 0.2) const sphere2 = await createGeometry(1, 3, 1.8, 0.3) const sphere3 = await createGeometry(1, 3, 1.5, 0.3) const compound = await bitbybit.occt.shapes.compound.makeCompound({ shapes: [sphere1, sphere2, sphere3], }); const drawOptions = new Bit.Inputs.Draw.DrawOcctShapeOptions(); drawOptions.faceColour = "#ffffff"; drawOptions.edgeColour = "#000000"; drawOptions.edgeWidth = 1; drawOptions.precision = 0.005; await bitbybit.draw.drawAnyAsync({ entity: compound, options: drawOptions }); const ptLightOpt = new Bit.Inputs.BabylonScene.PointLightDto(); ptLightOpt.position = [-3, 3, 0]; ptLightOpt.shadowGeneratorMapSize = 2056; ptLightOpt.diffuse = "#ff00ff"; bitbybit.babylon.scene.drawPointLight(ptLightOpt) } start(); async function createGeometry(starInnerRadius: number, starOuterRadius: number, sphereRadius: number, thickness: number) { const star1 = await bitbybit.occt.shapes.wire.createStarWire({ direction: [1, 0, 0], center: [5, 0, 0], innerRadius: starInnerRadius, outerRadius: starOuterRadius, numRays: 8, half: false }); const sphere1 = await bitbybit.occt.shapes.solid.createSphere({ radius: sphereRadius, center: [0, 0, 0] }); const fillet1 = await bitbybit.occt.fillets.fillet2d({ shape: star1, radius: 0.1 }); const projection1 = await bitbybit.occt.shapes.wire.project({ wire: fillet1, shape: sphere1, direction: [1, 0, 0] }); const split1 = await bitbybit.occt.operations.splitShapeWithShapes({ shape: sphere1, shapes: [projection1] }) const faces1 = await bitbybit.occt.shapes.face.getFaces({ shape: split1, }); const face = faces1[7]; const thicken = await bitbybit.occt.operations.makeThickSolidSimple({ shape: face, offset: -thickness, }) return thicken; }