Branch outlet (olet)
MSS SP-97 integrally reinforced branch outlets on a run pipe stub. Weldolet (butt-weld outlet with a flared bore), Sockolet (B16.11 socket and pipe stop), Thredolet (NPT female outlet), Nipolet (integral XS nipple, plain or male-threaded end), Elbolet (on a B16.9 LR elbow, outlet on the axis of one leg for thermowells) and Latrolet (45° lateral); the type names are used generically. The base is contoured to the run along the true intersection curve and finished with a fillet weld cap. The run is cut along the bore, so the branch opens into the run bore. Height, base OD and bore come from the SP-97 tables; kind selects the type.
Installation
Copies piping/olet.tsx and the shared lib/ into src/components/deck-twin/. Needs three, @react-three/fiber and @react-three/drei. See installation for the manual route.
Usage
import { Canvas } from '@react-three/fiber'
import { OrbitControls } from '@react-three/drei'
import { Stage } from './components/deck-twin/lib/stage'
import { Olet } from './components/deck-twin/piping/olet'
export default function Scene() {
return (
<Canvas shadows camera={{ position: [8, 5, 9], fov: 35 }}>
<Stage>
<Olet />
</Stage>
<OrbitControls makeDefault />
</Canvas>
)
}
Props
| Prop | Type | Default | Range |
|---|---|---|---|
kind | "weldolet" | "sockolet" | "threadolet" | "nipolet" | "elbolet" | "latrolet" | null | |
runNps | number (NPS, in) | null | |
nps | number (NPS, in) | null | |
runSchedule | "10" | "20" | "40" | "STD" | "80" | "XS" | "160" | "XXS" | "10S" | "40S" | "80S" | null | |
schedule | "STD" | "XS" | "80" | "160" | null | |
pressureClass | 3000 | 6000 | null | |
end | "weld" | "socket" | "thread" | null | |
nipple | number (m) | null | 0.03 – 0.2 |
runLength | number (m) | null | 0 – 1.5 |
...group | position, rotation, scale… |
P&ID
On P&IDs a branch is just a line meeting another line with a dot (like a tee); on isometrics a branch outlet is a small saddle-shaped boss on the run pipe with the branch rising from it, noted WOL, SOL, TOL, NOL, EOL or LOL.
P&IDs do not distinguish an olet from a tee: the piping class branch table decides (small branches off large runs are olets). Instrument connections and vents and drains are usually olets.
kindrunNpsnpsrunScheduleschedulepressureClassendTypical suppliers
Bonney Forge. The geometry is generic and sized from public standards. It is not vendor CAD.
For agents
Machine-readable entry with props, ranges, defaults and ports:
Or fetch /r/olet.json, or copy a ready-made instruction:
Add the Deck Twin "Branch outlet (olet)" component to this project. Run `npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz add olet` (it copies the file and the shared lib into src/components/deck-twin/), then `npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz info olet` for its props, ranges and ports. Render <Olet /> inside a React Three Fiber <Canvas shadows>, wrapped in <Stage> from src/components/deck-twin/lib/stage. Set props from my data (metres, NPS in inches, ASME class) and leave the rest at defaults. Install three, @react-three/fiber, @react-three/drei and @types/three if they're missing. Full guide: https://decktwin.com/skill/SKILL.md