const start = async () => {
const sphere1 = await createGeometry(0.5, 3.7, 2, 0.6);
const steps = [];
for (let i = 0.001; i < 10; i += 0.001) {
steps.push(i)
}
const slices = await bitbybit.occt.operations.sliceInStepPattern({
shape: sphere1,
direction: [0, 0, 1],
steps
});
const drawOptions = new Bit.Inputs.Draw.DrawOcctShapeOptions();
drawOptions.edgeColour = "#ffffff";
drawOptions.edgeWidth = 0.5;
drawOptions.precision = 0.005;
drawOptions.drawFaces = false;
await bitbybit.draw.drawAnyAsync({
entity: slices,
options: drawOptions
});
}
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;
}