bimtex

fitness

Squat rack

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

  • 18of 500 meshes
  • 2slots
  • 1finish

Drag to orbit · scroll to zoom

The build. Made here, now, by the same interpreter a model gets.
Squat rack, 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 1 materialdef the body resolves to, then the definition. Copying the lookdef alone still compiles and still validates — it just renders grey.

{"t":"materialdef","id":"pal-charcoal","of":"paint","value":20}
{"t":"lookdef","id":"squat-rack","for":"asset:squat-rack","desc":"Open four-post squat rack with bar catches and pull-up bar.","slots":{"frame":"pal-charcoal","accent":"pal-charcoal"},"preview":{"projection":"perspective","azimuth":38,"elevation":20,"fov":34,"margin":1},"body":{"type":"Group","children":[{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.16,"height":0.08,"depth":1.4,"radius":0.018,"segments":2},"position":[-0.53,0.04,0]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.16,"height":0.08,"depth":1.4,"radius":0.018,"segments":2},"position":[0.53,0.04,0]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.11,"height":2.16,"depth":0.11,"radius":0.016,"segments":2},"position":[-0.5,1.12,-0.52]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.11,"height":2.16,"depth":0.11,"radius":0.016,"segments":2},"position":[0.5,1.12,-0.52]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.11,"height":2.16,"depth":0.11,"radius":0.016,"segments":2},"position":[-0.5,1.12,0.38]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.11,"height":2.16,"depth":0.11,"radius":0.016,"segments":2},"position":[0.5,1.12,0.38]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.11,"height":0.12,"depth":1.01,"radius":0.015,"segments":2},"position":[-0.5,2.24,-0.07]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":0.11,"height":0.12,"depth":1.01,"radius":0.015,"segments":2},"position":[0.5,2.24,-0.07]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":1.11,"height":0.12,"depth":0.11,"radius":0.015,"segments":2},"position":[0,2.24,-0.52]},{"type":"Mesh","material":"$frame","geometry":{"type":"RoundedBoxGeometry","width":1.11,"height":0.12,"depth":0.11,"radius":0.015,"segments":2},"position":[0,2.24,0.38]},{"type":"Mesh","material":"$frame","geometry":{"type":"CylinderGeometry","radiusTop":0.035,"radiusBottom":0.035,"height":1.1,"radialSegments":20},"position":[0,2.13,-0.58],"rotation":[0,0,1.5708]},{"type":"Mesh","material":"$frame","geometry":{"type":"TubeGeometry","path":[[-0.5,1.48,0.38],[-0.5,1.36,0.45],[-0.5,1.36,0.56],[-0.5,1.43,0.56]],"radius":0.025,"radialSegments":10,"tubularSegments":16}},{"type":"Mesh","material":"$frame","geometry":{"type":"TubeGeometry","path":[[0.5,1.48,0.38],[0.5,1.36,0.45],[0.5,1.36,0.56],[0.5,1.43,0.56]],"radius":0.025,"radialSegments":10,"tubularSegments":16}},{"type":"Mesh","material":"$frame","geometry":{"type":"CylinderGeometry","radiusTop":0.025,"radiusBottom":0.025,"height":1.3,"radialSegments":20},"position":[0,1.42,0.35],"rotation":[0,0,1.5708]},{"type":"Mesh","material":"$accent","geometry":{"type":"CylinderGeometry","radiusTop":0.35,"radiusBottom":0.35,"height":0.1,"radialSegments":24},"position":[-0.48,1.42,0.35],"rotation":[0,0,1.5708]},{"type":"Mesh","material":"$accent","geometry":{"type":"CylinderGeometry","radiusTop":0.35,"radiusBottom":0.35,"height":0.1,"radialSegments":24},"position":[0.48,1.42,0.35],"rotation":[0,0,1.5708]},{"type":"Mesh","material":"$accent","geometry":{"type":"CylinderGeometry","radiusTop":0.29,"radiusBottom":0.29,"height":0.08,"radialSegments":24},"position":[-0.6,1.42,0.35],"rotation":[0,0,1.5708]},{"type":"Mesh","material":"$accent","geometry":{"type":"CylinderGeometry","radiusTop":0.29,"radiusBottom":0.29,"height":0.08,"radialSegments":24},"position":[0.6,1.42,0.35],"rotation":[0,0,1.5708]}],"scale":[0.999999895,1.000000001,1.000000013]}}

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

cat packs/fitness.ndjson model.ndjson > dressed.ndjson
Download fitness pack 23 KB · NDJSON ↓