DVI

DVI script details
Type
Typescript logo image
typescript
App Version
0.19.2
Visibility
public
Date Created
Oct 4, 2024, 10:14:53 PM
Last Edit Date
Feb 3, 2025, 9:26:23 AM

Script Details

The Code
const start = async () => { const url = "https://ik.imagekit.io/bitbybit/prod/ik-seo/o/users%2FyVqNAFXmieX0iAkdP6wAz5BJ4X82%2Fprojects%2Fh3XNAbbSL5n6mYgPaGmk%2Fassets%2Fmultiaxis-xyz/multiaxis-xyz.step?alt=media&token=43232172-fef4-4eca-a31d-787f295761c7"; const stepFile = await bitbybit.asset.fetchFile({ url }); let center = [0, 2.5, 4]; const parsedStep = await bitbybit.occt.io.loadSTEPorIGES({ assetFile: stepFile, adjustZtoY: true, }); const scaledShape = await bitbybit.occt.transforms.scale({ shape: parsedStep, factor: 0.01, }); let direction = [0, 1, 1]; const step = 1; let finalcuts = []; let z = 4; for (let i = 0; i < 4; i++) { z = z - step; center = [center[0], center[1], z]; finalcuts[i] = await slice(scaledShape, center, direction) } const compound = await bitbybit.occt.shapes.compound.makeCompound({ shapes: finalcuts }); const solids = await bitbybit.occt.shapes.solid.getSolids({ shape: scaledShape }); const faceCut = await bitbybit.occt.shapes.face.createSquareFace({ size: 10, direction: [direction[0], direction[1], direction[2]], center: [center[0], center[1], center[2]] }); const extrudedFace = await bitbybit.occt.operations.extrude({ shape: faceCut, direction: [0, 4, 1], }); const drawOpt = new Bit.Inputs.Draw.DrawOcctShapeOptions(); drawOpt.faceColour = "#ff00ff"; bitbybit.draw.drawAnyAsync({ entity: finalcuts, options: drawOpt, }); // bitbybit.draw.drawAnyAsync({ // entity: extrudedFace, // options: drawOpt, // }); solids.forEach(async s => { const leftover = await bitbybit.occt.booleans.difference({ shape: s, shapes: [extrudedFace], keepEdges: false }); bitbybit.draw.drawAnyAsync({ entity: leftover }); }) } async function slice(scaledShape, center, direction) { const plane = await bitbybit.occt.shapes.face.createSquareFace({ size: 10, center: center, direction: direction }); const scaledPlane = await bitbybit.occt.transforms.scale({ shape: plane, factor: 1, }); const cut = await bitbybit.occt.booleans.intersection({ shapes: [scaledShape, scaledPlane], keepEdges: false, }); console.log(cut); return cut; } start();