bimtex

envelope

Downpipe hopper

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

  • 8of 500 meshes
  • 1slot
  • 1finish

Drag to orbit · scroll to zoom

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

This definition leaves $hardware 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-steel-dark","of":"steel","value":20}
{"t":"lookdef","id":"downpipe-hopper","for":"asset:downpipe","desc":"Rainwater downpipe with a flared hopper and offset shoe.","slots":{"hardware":"pal-steel-dark"},"preview":{"projection":"perspective","azimuth":-30,"elevation":12,"fov":32,"margin":1.04},"body":{"type":"Group","children":[{"type":"Mesh","material":"$hardware","geometry":{"type":"CylinderGeometry","radiusTop":0.05,"radiusBottom":0.05,"height":2.72,"radialSegments":18},"position":[0,1.36,0]},{"type":"Mesh","material":"$hardware","geometry":{"type":"LatheGeometry","profile":[[0.05,2.68],[0.075,2.72],[0.1,2.78],[0.135,2.88],[0.135,2.98],[0.12,3],[0.1,3],[0.115,2.97],[0.115,2.89],[0.085,2.78],[0.05,2.71]],"segments":24}},{"type":"Mesh","material":"$hardware","geometry":{"type":"TorusGeometry","radius":0.125,"tube":0.01,"radialSegments":12,"tubularSegments":24},"position":[0,2.99,0],"rotation":[1.5708,0,0]},{"type":"Mesh","material":"$hardware","geometry":{"type":"TorusGeometry","radius":0.068,"tube":0.008,"radialSegments":10,"tubularSegments":20},"position":[0,2.72,0],"rotation":[1.5708,0,0]},{"type":"Mesh","material":"$hardware","geometry":{"type":"TubeGeometry","path":[[0,0.72,0],[0,0.72,0.12]],"radius":0.014,"radialSegments":10,"tubularSegments":8}},{"type":"Mesh","material":"$hardware","geometry":{"type":"CylinderGeometry","radiusTop":0.045,"radiusBottom":0.045,"height":0.014,"radialSegments":16},"position":[0,0.72,0.13],"rotation":[1.5708,0,0]},{"type":"Mesh","material":"$hardware","geometry":{"type":"TubeGeometry","path":[[0,2.2,0],[0,2.2,0.12]],"radius":0.014,"radialSegments":10,"tubularSegments":8}},{"type":"Mesh","material":"$hardware","geometry":{"type":"CylinderGeometry","radiusTop":0.045,"radiusBottom":0.045,"height":0.014,"radialSegments":16},"position":[0,2.2,0.13],"rotation":[1.5708,0,0]}]}}

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

cat packs/envelope.ndjson model.ndjson > dressed.ndjson
Download envelope pack 7.6 KB · NDJSON ↓