Skip to main content

Things: finished parametric models

bitbybit.things is a catalogue of finished models. Each one is a whole object, a vase, a table or a house, built in one call from a handful of parameters: change a parameter and the model is built again with it. Use one as it is, as the start of your own design, or as an example of what a parametric model can be.

They are platform algorithms: they run in the editors on bitbybit.dev and in the BabylonJS runner, not in the npm packages. Every model except the two birdhouses is computed only for members of the Silver and Gold plans; without a plan, create stops the run with a message that says so (Plans).

The catalogue​

AreaModels
threeDPrintingthe vases serenitySwirl and arabicArchway, the cups calmCup and dragonCup, the medal eternalLove and the phone stand desktop.phoneNest
laserCuttingthe phone holder gadgets.dropletsPhoneHolder, as an assembled model, flat drawings for cutting, or both
furniturethe tables elegantTable, goodCoffeeTable and snakeTable, and the chair snakeChair
architecturethe house houses.zenHideout, with its floors, walls, windows, columns, roof and stairs
kidsCornerthe birdhouses birdhouses.wingtipVilla and birdhouses.chirpyChalet

Building, drawing and disposing​

Every model has the same three steps:

  • create takes the model's parameters and builds it, standing on the ground with Y up. It returns the model's data: its shapes, the whole model as one compound and the parts it is made of.
  • drawModel draws that data with the model's own materials, and bitbybit.draw.drawAnyAsync draws it the same way, as the example below does.
  • dispose frees the model's shapes in the kernel, for a script that builds many versions of a model one after another.

Some models add their own steps: drawOptions builds the options of their materials, the laser-cut phone holder downloads its parts as STEP and its drawings as DXF or STEP, and the house can be built at a level of detail from enums.lodEnum. The shapes are ordinary OpenCascade shapes, so a model can be measured, cut or exported to STEP like anything else.

Here the Wingtip Villa birdhouse is built with a taller chimney and a wider roof overhang, and turned half a circle so its front, with the entrance hole, faces the camera:

Bitbybit Platform

A birdhouse from the catalogue in Rete

rete logoRete
Script Source (rete)
{
"id": "rete-v2-json",
"nodes": {
"villa": {
"id": "villa",
"name": "bitbybit.things.kidsCorner.birdhouses.wingtipVilla.create",
"customName": "wingtip villa",
"async": true,
"drawable": true,
"data": {
"genericNodeData": {
"hide": false,
"oneOnOne": false,
"flatten": 0,
"forceExecution": false
},
"interiorWidth": 3,
"interiorLength": 3,
"interiorHeight": 5,
"thickness": 0.5,
"holeDiameter": 1.5,
"holeDistToBottom": 2.5,
"stickLength": 1.2,
"stickDiameter": 0.5,
"baseAttachmentHeight": 2,
"roofOverhang": 1.5,
"rotation": 180,
"chimneyHeight": 2,
"origin": [
0,
0,
0
]
},
"inputs": {},
"position": [
40,
40
]
}
},
"modules": {}
}

Every function​

FunctionWhat it does
architecture.houses.zenHideout.createBuilds the house with its floors, walls, windows, columns, beams, roof and stairs, with Y up.
architecture.houses.zenHideout.disposeDeletes every shape of the house from the kernel to free its memory.
architecture.houses.zenHideout.drawModelDraws the house according to the detail level it was built at.
enums.lodEnumPicks a level of detail value: low, middle or high.
furniture.chairs.snakeChair.createBuilds the snake-shaped chair body as one solid, with Y up and the seat facing +X.
furniture.chairs.snakeChair.disposeDeletes every shape of the chair from the kernel to free its memory.
furniture.chairs.snakeChair.drawModelDraws the chair body in white rough plastic.
furniture.chairs.snakeChair.drawOptionsCollects the options that control how the snake chair is drawn.
furniture.chairs.snakeChair.getCompoundShapeGets the whole chair shape out of a built model.
furniture.chairs.snakeChair.getSittingAreaCenterPointGets the center of the seat at seat height.
furniture.chairs.snakeChair.getSittingWireShapeGets the rectangle outlining the seat at seat height.
furniture.tables.elegantTable.createBuilds the table from its top panel, base panel and legs, standing on the ground with Y up.
furniture.tables.elegantTable.disposeDeletes every shape of the table from the kernel to free its memory.
furniture.tables.elegantTable.drawModelDraws the top, the base panel and the legs as separate meshes in wood materials.
furniture.tables.elegantTable.drawOptionsCollects the options that control how the table is drawn.
furniture.tables.elegantTable.getBottomPanelShapeGets the base panel, the slab under the top panel that the legs meet, out of a built table.
furniture.tables.elegantTable.getBottomPanelWireShapeGets the outline of the base panel's underside out of a built table.
furniture.tables.elegantTable.getCompoundShapeGets the whole table shape out of a built model.
furniture.tables.elegantTable.getLegBottomPointsGets the point where each leg meets the ground.
furniture.tables.elegantTable.getLegsCompoundShapeGets all legs of a built table together as one compound.
furniture.tables.elegantTable.getLegShapeByIndexGets one leg of a built table by its 0-based index.
furniture.tables.elegantTable.getLegShapesGets every leg of a built table as a list of separate solids.
furniture.tables.elegantTable.getLegTopPointsGets the point where each leg meets the base panel.
furniture.tables.elegantTable.getTableBottomCenterPointGets the center of the base panel's underside.
furniture.tables.elegantTable.getTableTopCenterPointGets the center of the table's upper surface.
furniture.tables.elegantTable.getTopPanelShapeGets the top panel, the upper slab that overhangs the base panel, out of a built table.
furniture.tables.elegantTable.getTopPanelWireShapeGets the outline of the table's upper surface out of a built table.
furniture.tables.goodCoffeeTable.createBuilds the coffee table from its framed glass top, four legs and an optional shelf, with Y up.
furniture.tables.goodCoffeeTable.disposeDeletes every shape of the table from the kernel to free its memory.
furniture.tables.goodCoffeeTable.drawModelDraws the top frame, glass, shelf and legs as separate meshes, in dark wood and black glass.
furniture.tables.goodCoffeeTable.drawOptionsCollects the options that control how the coffee table is drawn.
furniture.tables.goodCoffeeTable.getCompoundShapeGets the whole table shape out of a built model.
furniture.tables.goodCoffeeTable.getGlassPanelShapeGets the glass panel set into the top out of a built table.
furniture.tables.goodCoffeeTable.getGlassPanelWireShapeGets the outline of the glass panel's upper face out of a built table.
furniture.tables.goodCoffeeTable.getLegBottomPointsGets the point at the bottom of each leg.
furniture.tables.goodCoffeeTable.getLegsCompoundShapeGets the four legs of a built table together as one compound.
furniture.tables.goodCoffeeTable.getLegShapeByIndexGets one leg of a built table by its 0-based index.
furniture.tables.goodCoffeeTable.getLegShapesGets the four legs of a built table as a list of separate solids.
furniture.tables.goodCoffeeTable.getLegTopPointsGets the point at the top of each leg, where it meets the top frame.
furniture.tables.goodCoffeeTable.getShelfShapeGets the shelf between the legs out of a built table.
furniture.tables.goodCoffeeTable.getShelfTopWireShapeGets an outline wire of the shelf's top out of a built table.
furniture.tables.goodCoffeeTable.getTableShelfTopCenterPointGets the center of the shelf's top.
furniture.tables.goodCoffeeTable.getTableTopCenterPointGets the center of the table's top.
furniture.tables.goodCoffeeTable.getTopPanelShapeGets the wooden top frame, the part that holds the glass, out of a built table.
furniture.tables.goodCoffeeTable.getTopPanelWireShapeGets an outline wire of the top frame out of a built table.
furniture.tables.snakeTable.createBuilds the snake-shaped table body and its glass top, with Y up.
furniture.tables.snakeTable.disposeDeletes every shape of the table from the kernel to free its memory.
furniture.tables.snakeTable.drawModelDraws the body in white rough plastic and the glass in black glass, each as its own mesh.
furniture.tables.snakeTable.drawOptionsCollects the options that control how the snake table is drawn.
furniture.tables.snakeTable.getCompoundShapeGets the whole table shape, the body and the glass together, out of a built model.
furniture.tables.snakeTable.getGlassShapeGets the glass panel on top of a built table.
furniture.tables.snakeTable.getMainShapeGets the bent, grooved body of a built table without its glass.
furniture.tables.snakeTable.getTopCenterPointGets the center of the table's top surface.
kidsCorner.birdhouses.chirpyChalet.createBuilds the birdhouse from its boards, a sloped roof board and a perch.
kidsCorner.birdhouses.chirpyChalet.disposeDeletes the birdhouse shapes from the kernel to free their memory.
kidsCorner.birdhouses.chirpyChalet.drawModelDraws the birdhouse in textured wood with white edges.
kidsCorner.birdhouses.wingtipVilla.createBuilds the birdhouse from its boards, a perch and a chimney.
kidsCorner.birdhouses.wingtipVilla.disposeDeletes the birdhouse shapes from the kernel to free their memory.
kidsCorner.birdhouses.wingtipVilla.drawModelDraws the birdhouse in textured wood with white edges.
laserCutting.gadgets.dropletsPhoneHolder.createBuilds the phone holder for a phone of the given size, as an assembled model, flat drawings or both.
laserCutting.gadgets.dropletsPhoneHolder.disposeDeletes every shape of the phone holder from the kernel to free its memory.
laserCutting.gadgets.dropletsPhoneHolder.download3dSTEPModelDownloads the assembled 3D model of the phone holder as a STEP file.
laserCutting.gadgets.dropletsPhoneHolder.downloadDXFDrawingsDownloads the flat cut and engraving outlines as a DXF file for a laser cutter.
laserCutting.gadgets.dropletsPhoneHolder.downloadSTEPDrawingsDownloads the flat cut and engraving outlines as one STEP file.
laserCutting.gadgets.dropletsPhoneHolder.drawModelDraws the model in purple with white edges, the cut outlines in white and the engravings in magenta.
laserCutting.gadgets.dropletsPhoneHolder.getCompoundShapeGets the main shape out of a built phone holder.
laserCutting.gadgets.dropletsPhoneHolder.getCutWiresCompoundGets the outlines the laser cuts along, laid out flat.
laserCutting.gadgets.dropletsPhoneHolder.getEngravingWiresCompoundGets the outlines the laser engraves, the texts and the logo text, laid out flat.
threeDPrinting.cups.calmCup.createBuilds a solid cup with a flared wall, a thick bottom and optional handles, standing on Y.
threeDPrinting.cups.calmCup.disposeDeletes the cup shape from the kernel to free its memory.
threeDPrinting.cups.calmCup.drawModelDraws the cup with a white metallic material and tinted edges.
threeDPrinting.cups.dragonCup.createBuilds the scaled cup with a twisted wall, standing on Y.
threeDPrinting.cups.dragonCup.drawModelDraws the cup with a glossy blue metallic material and light blue edges.
threeDPrinting.cups.dragonCup.getCompoundShapeGets the whole cup shape out of a built model.
threeDPrinting.desktop.phoneNest.createBuilds the phone stand together with a rounded box that stands in for the phone resting on it.
threeDPrinting.desktop.phoneNest.disposeDeletes every shape of the model from the kernel to free its memory.
threeDPrinting.desktop.phoneNest.drawModelDraws the stand in a wood material and the phone in black glass, each as its own mesh.
threeDPrinting.desktop.phoneNest.drawOptionsCollects the options that control how the phone stand is drawn.
threeDPrinting.desktop.phoneNest.getCompoundShapeGets the whole model shape, the stand and the phone together, out of a built model.
threeDPrinting.medals.eternalLove.createBuilds the heart-shaped medal with its heading and name in raised letters.
threeDPrinting.medals.eternalLove.disposeDeletes the medal shape from the kernel to free its memory.
threeDPrinting.medals.eternalLove.drawModelDraws the medal with a pale pink metallic material and tinted edges.
threeDPrinting.vases.arabicArchway.createBuilds the arched vase by turning its profile curve around the Y axis, which is up.
threeDPrinting.vases.arabicArchway.disposeDeletes every shape of the vase from the kernel to free its memory.
threeDPrinting.vases.arabicArchway.drawModelDraws the vase with matte white walls, a dark see-through filling in the arches and tinted edges.
threeDPrinting.vases.serenitySwirl.createBuilds the twisted, ribbed vase standing on its base and rising along Y.
threeDPrinting.vases.serenitySwirl.disposeDeletes the vase shape from the kernel to free its memory.
threeDPrinting.vases.serenitySwirl.drawModelDraws the vase with a matte white material and tinted edges.