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