bimtex

pools

Pool pump

pool-pump dresses asset:pool-pump — and nothing else. Appearance is invisible to the drawing set, so adding this changes no plan, no section and no elevation.

  • 12of 500 meshes
  • 2slots
  • 1finish

Drag to orbit · scroll to zoom

The build. Made here, now, by the same interpreter a model gets.
Pool pump, shown as a photorealistic visual reference
The reference. AI-generated, not bimtex output — the authored input this body was written against.
$frame
$accent

This definition leaves $frame and $accent open, and a look line fills them. Every combination is one body — same geometry, same selector, same sheets — so the block below rewrites itself as you pick. Only materials are slottable: a size would have to agree with the plan, so it stays on the entity.

Paste this

Every part: the 2 materialdefs the body resolves to, then the definition. Copying the lookdef alone still compiles and still validates — it just renders grey.

{"t":"materialdef","id":"pack-pool-tile","of":"paving","value":42,"accent":"#245a72","texture":"tile-grid","body":{"roughness":0.2}}
{"t":"materialdef","id":"pal-grey","of":"paint","value":58}
{"t":"lookdef","id":"pool-pump","for":"asset:pool-pump","desc":"Compact pool circulation pump with cylindrical motor housing.","slots":{"frame":"pack-pool-tile","accent":"pal-grey"},"body":{"type":"Group","children":[{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":1.48,"height":0.1,"depth":0.72,"radius":0.035,"segments":3},"position":[0,0.05,0]},{"type":"Mesh","material":"$frame","geometry":{"type":"CylinderGeometry","radiusTop":0.34,"radiusBottom":0.34,"height":0.52,"radialSegments":22},"position":[-0.42,0.36,0]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.42,"height":0.46,"depth":0.64,"radius":0.09,"segments":4},"position":[-0.2,0.35,0]},{"type":"Mesh","material":"glass","geometry":{"type":"CylinderGeometry","radiusTop":0.32,"radiusBottom":0.32,"height":0.065,"radialSegments":24},"position":[-0.42,0.655,0]},{"type":"Mesh","material":"$accent","geometry":{"type":"TorusGeometry","radius":0.31,"tube":0.025,"radialSegments":12,"tubularSegments":28},"position":[-0.42,0.65,0],"rotation":[1.5707963267948966,0,0]},{"type":"Mesh","material":"$frame","geometry":{"type":"CylinderGeometry","radiusTop":0.27,"radiusBottom":0.27,"height":0.82,"radialSegments":22},"position":[0.42,0.37,0],"rotation":[0,0,1.5707963267948966]},{"type":"Mesh","material":"$frame","geometry":{"type":"CylinderGeometry","radiusTop":0.25,"radiusBottom":0.25,"height":0.12,"radialSegments":22},"position":[0.86,0.37,0],"rotation":[0,0,1.5707963267948966]},{"type":"bimtex:Run","count":7,"from":[0.12,0.37,0],"to":[0.7,0.37,0],"children":[{"type":"Mesh","material":"$accent","geometry":{"type":"RoundedBoxGeometry","width":0.026,"height":0.49,"depth":0.59,"radius":0.006,"segments":2}}]},{"type":"Mesh","material":"$frame","geometry":{"type":"CylinderGeometry","radiusTop":0.15,"radiusBottom":0.15,"height":0.22,"radialSegments":18},"position":[-0.78,0.35,0],"rotation":[0,0,1.5707963267948966]},{"type":"Mesh","material":"$frame","geometry":{"type":"CylinderGeometry","radiusTop":0.045,"radiusBottom":0.045,"height":0.035,"radialSegments":16},"position":[-0.42,0.71,0]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.2,"height":0.2,"depth":0.62,"radius":0.035,"segments":3},"position":[-0.57,0.17,0]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.18,"height":0.2,"depth":0.62,"radius":0.035,"segments":3},"position":[0.72,0.17,0]}]},"preview":{"projection":"perspective","azimuth":32,"elevation":18,"fov":34,"margin":1.05}}

Or take the whole pack, which brings every entry and every material at once:

cat packs/pools.ndjson model.ndjson > dressed.ndjson
Download pools pack 31 KB · NDJSON ↓