Slicing 3D Shape

Slicing 3D Shape script details
Author
matas
Type
Typescript logo image
typescript
App Version
0.13.0
Visibility
public
Date Created
Nov 15, 2023, 12:07:39 PM
Last Edit Date
Dec 5, 2023, 2:00:23 PM

Script Details

The Code
const start = async () => { const sphere1 = await createGeometry(0.5, 3.7, 2, 0.6); const slices = await bitbybit.occt.operations.slice({ shape: sphere1, direction: [0, 0, 1], step: 0.1, }); const faces = await bitbybit.occt.shapes.face.getFaces({ shape: slices }); const faceExtrusions = await bitbybit.occt.operations.extrudeShapes({ shapes: faces, direction: [0, 0, 0.1] }); const compound = await bitbybit.occt.shapes.compound.makeCompound({ shapes: faceExtrusions, }); 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; }