Offshore deck module
Offshore topsides deck section: primary girders (HEB or welded plate girders) on the leg lines with fin-plate connections and web stiffeners, IPE secondaries, 12 mm deck plate with grated drain gutters and 3" drain outlets through liquid-seal pots (ports drain-1…n, flange faces pointing down) or bar grating, coaming, ISO 14122 guard rail with self-closing gated openings, escape-route markings, CHS legs with node cans and chevron bracing below, and stub columns up to a stacked module. Walking surface: top of the floor at y = 0, so equipment placed at y = 0 sits on it. Girders and legs go below (leg foot at y = -legHeight, to sit on a jacket at y = 0); stack another module at y = upperDeckAt with legHeight: 0 (otherwise its legs run down through this floor).
Installation
Copies structure/deck-module.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 { DeckModule } from './components/deck-twin/structure/deck-module'
export default function Scene() {
return (
<Canvas shadows camera={{ position: [8, 5, 9], fov: 35 }}>
<Stage>
<DeckModule />
</Stage>
<OrbitControls makeDefault />
</Canvas>
)
}
Props
| Prop | Type | Default | Range |
|---|---|---|---|
length | number (m) | null | 6 – 80 |
width | number (m) | null | 4 – 60 |
floor | "plate" | "grating" | null | |
primary | "HEB 500" | "HEB 600" | "HEB 800" | "HEB 1000" | "W36x300" | "PG 1200" | "PG 1600" | "PG 2000" | null | |
secondary | "IPE 200" | "IPE 240" | "IPE 300" | "IPE 360" | "IPE 400" | "HEA 300" | null | |
secondarySpacing | number (m) | null | 0.6 – 3 |
legs | 4 | 6 | 8 | null | |
legSpanX | number (m) | null | 4 – 70 |
legSpanZ | number (m) | null | 3 – 50 |
legHeight | number (m) | null | 0 – 20 |
legDiameter | number (m) | null | 0.6 – 2.5 |
upperDeckAt | number (m) | null | 0 – 15 |
column | "HEB 300" | "HEB 400" | "HEB 500" | "HEB 600" | null | |
handrails | boolean | null | |
railMinX | boolean | null | |
railMaxX | boolean | null | |
railMinZ | boolean | null | |
railMaxZ | boolean | null | |
drains | boolean | null | |
markings | boolean | null | |
...group | position, rotation, scale… |
P&ID
Plan view: the deck outline with dash-dot structural grid lines (rows and columns, e.g. A–D and 1–6) and circles at the jacket leg positions; deck elevations (EL +28.000 TOS) written in the corners.
Not on P&IDs. Equipment layouts use this outline as the background; the grid labels locate equipment. A smaller framed rectangle with bracing is a module-frame.
lengthwidthfloorprimarysecondarysecondarySpacinglegslegSpanXlegSpanZlegDiameterTypical suppliers
Fabricated to project specification. 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/deck-module.json, or copy a ready-made instruction:
Add the Deck Twin "Offshore deck module" component to this project. Run `npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz add deck-module` (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 deck-module` for its props, ranges and ports. Render <DeckModule /> 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