1910.218225.01600.0
Loading the interactive model…
Interactive 3D model of Exploded Subsea Frame Assembly

Enclosures and housings

Exploded Subsea Frame Assembly

4 views
Bounding box
18225.0 × 1910.2 × 1600.0 mm
Engine
Precision B-rep
Parameters
27
Published
August 18, 2026

Download

Free to download and use. See the terms.

The prompt

import cad_core as cad UNITS = 'mm' EXPLODE_Z = 300 cad.set_units(UNITS) def make_cylinder_group(name, r, h, pos, axis='Z'): grp = cad.create_group(name) grp.add(cad.create_cylinder(r, h, pos, axis=axis)) return grp def main(): # 1. Main Frame Unit frame = cad.create_group("Main_Frame") f_dim, prof = (1000, 1000, 1000), 80 beams = [ cad.create_box(f_dim[0], prof, prof, (0, 0, 0)), cad.create_box(f_dim[0], prof, prof, (0, f_dim[1] - prof, 0)), cad.create_box(prof, f_dim[1], prof, (0, 0, 0)) ] frame.add(cad.union(beams)) # 2. Coiled Tubing Reel reel = cad.create_group("Coiled_Tubing_Reel") center = (f_dim[0]/2, f_dim[1]/2, 0) reel.add(cad.create_cylinder(600, 700, center, axis='Y')) reel.add(cad.create_helix_sweep(8, 40, 740, 40, pos=(center[0], center[1] - 370, 0), axis='Y')) cad.move(reel, (0, 0, f_dim[2]/2)) # 3. Hydraulic Manifold pumps = cad.create_group("Hydraulic_Manifold") p_pos = (f_dim[0]/2, f_dim[1]/2, f_dim[2] + EXPLODE_Z * 0.5) pumps.add(cad.create_box(600, 300, 150, p_pos)) for i in range(10): pumps.add(cad.create_cylinder(25, 100, (p_pos[0] - 225 + i * 50, p_pos[1], p_pos[2] + 75), axis='Z')) # 4. Robotic Arms (Kiri & Kanan) arms = [] for side, x_off in [("Left", -f_dim[0] - 200), ("Right", f_dim[0] + 200)]: arm = cad.create_group(f"Robotic_Arm_{side}") b_pos = (x_off, 0, 0) arm.add(cad.create_cylinder(120, 150, b_pos, axis='Z')) arm.add(cad.create_cylinder(100, 300, (b_pos[0], b_pos[1], b_pos[2] + 75), axis='X')) arm.add(cad.create_cylinder(80, 250, (b_pos[0] + 150, b_pos[1], b_pos[2] + 225), axis='X')) arms.append(arm) # 5. Telemetry Pod pod = cad.create_group("Telemetry_Pod") pod.add(cad.create_box(400, 250, 200, (p_pos[0] - 100, p_pos[1], p_pos[2] + 200))) # 6. BOP Base & Thrusters bop_pos = (f_dim[0]/2, f_dim[1]/2, -EXPLODE_Z * 1.2) bop = make_cylinder_group("Seabed_Template_BOP", 800, 200, bop_pos) th_L = make_cylinder_group("Thruster_Lower_Left", 120, 250, (bop_pos[0] - 300, bop_pos[1], bop_pos[2] + 300)) th_R = make_cylinder_group("Thruster_Lower_Right", 120, 250, (bop_pos[0] + 300, bop_pos[1], bop_pos[2] + 300)) # Explode View cad.explode([frame, pumps, pod, bop, th_L, th_R], ve=EXPLODE_Z) if __name__ == "__main__": main()

Parameters

NameValueRange
Exploded Row Gap2200 mm1200 – 5000
Frame outer size1000 mm500 – 2500
Beam cross-section80 mm20 – 200
Reel flange diameter1200 mm300 – 3000
Reel width740 mm100 – 2000
Reel shaft bore100 mm20 – 250
Manifold length600 mm600 – 2000
Manifold width300 mm200 – 1000
Manifold height150 mm100 – 500
Top port count10 count2 – 10
Top port diameter25 mm5 – 25
Top port spacing50 mm30 – 50
Pod length400 mm200 – 1200
Pod width250 mm120 – 800
Pod height200 mm100 – 600
Pod wall thickness20 mm5 – 30
Arm base diameter240 mm80 – 600
Arm base height100 mm40 – 300
Upper arm length200 mm50 – 600
Upper arm diameter80 mm20 – 200
Forearm length160 mm50 – 600
Forearm diameter60 mm20 – 160
Upper/forearm overlap40 mm10 – 100
BOP base diameter1600 mm400 – 3000
BOP base thickness200 mm50 – 500
Thruster diameter240 mm50 – 600
Thruster length250 mm50 – 800

Every value above is a live dimension. Open a model like this in the editor and each one becomes a slider you can drag before exporting.