A whole-body 3D model of the 1995 Geo Tracker built in Fusion 360, dimensioned from the factory SAE J1100 sheet. Its purpose is not fabrication — it is a canvas for marking repairs: rust spots, dents, weld-ins and prior patches get pinned to an identifiable panel rather than described in prose.

For Agents

Its own Fusion document, separate from the geo-tracker-front-diff-shield and every other model. 33 named bodies — the naming is the whole point: a repair mark must land on a body you can name (door_L, quarter_R, rocker_trim_L), not on an anonymous Body17. Dimensions: geo-tracker-body-dimensions-sae-j1100. Toolchain: fusion360-mcp-scripting. Body shape is representative, not a surface-accurate scan — flat panels and prismatic solids placed at documented stations.

Coordinate System

AxisMeaningOrigin
XWidth0 = vehicle centreline, ± outboard
YLength0 = front axle centreline, +Y rearward
ZHeight0 = ground

Derived Y stations, all from the J1100 sheet:

FeatureY (mm)From
Front bumper−655L104 front overhang
Front axle CL0datum
Rear axle CL2200L101 wheelbase
Rear bumper29652200 + L105 rear overhang 765

Putting Y=0 at the front axle rather than the front bumper means the wheelbase and both overhangs read directly off the coordinates, and adding a variant with different overhangs does not move the axles.

The 33 Bodies

GroupBodies
Front endfront bumper + 2 brackets; grille panel (2 headlamp recesses + grille opening); 2 headlamps
Hood / fendershood; 2 front fenders
Doors2 doors
Sides2 quarter panels; 2 rocker trims; 2 upper side panels; 2 side glass assemblies (3 panes each)
Structurefloor pan
Glasshousewindshield frame + windshield glass; roof
Reartailgate + tailgate glass; spare wheel; rear bumper
Misc2 mirrors; 4 road wheels

Appearances

AppearanceApplied to
Paint – Enamel Glossy (Green)Body panels
Plastic – Matte (Black)Trim
Glass (Grey)All glazing
Plastic – Translucent Matte (White)Lamps

Names and appearances must be a second script run

Body names and appearances assigned in the same script execution as baseFeature.finishEdit() silently do not stick — no error, they just are not there afterwards. Both had to be applied in a separate execution, matching bodies by creation order. This is gotcha 7, now confirmed to cover appearances as well as names.

Assumptions — NOT from the Sheet

These numbers were invented to close the geometry

The J1100 sheet gives an outer envelope, not panel breaks. Everything below was derived or assumed to make a closed body. None of it is documented. Re-derive before trusting any of it for fabrication.

AssumptionValueBasis
Cowl Y position664back-derived from upper structure length L123 = 2301 (hardtop)
Door / fender split linesY 425 / 430 and 1425 / 14305 mm seam gap, positions eyeballed
Greenhouse outer half-width800 at the belt, tapering to 664 at the roofapplies the documented 15.5° tumble-home
Tyre size205/75R15, 688 mm ODassumed fitment, not read off the car
Wheel arch cut radius430clearance around the assumed tyre
Wheel arch flare lip24 mm torusstyling approximation
Panel thicknessesassortedchosen for visual weight, not gauge

Known Discrepancy — Overall Length

Spare wheel pushes the model 215 mm past the documented length

The tailgate-mounted spare projects to Y = 3180, giving an overall model length of 3835 mm against the sheet’s L103 = 3620 mm.

Two candidate explanations, unresolved:

  1. L103 excludes the tailgate spare — plausible; J1100 vehicle length is often taken over the body/bumpers.
  2. The spare mounting is modelled too proud — the carrier standoff was assumed, not measured.

Do not “fix” this by scaling the body. Measure the actual spare standoff on the car first.

Scripting Techniques Used

Two reusable Fusion techniques came out of this build and were written up in fusion360-mcp-scripting:

  • Compose the cut tool before cutting. Sequential tbm difference cuts union the removed regions, so a series of cuts can never express an intersection. The side windows — whose front edge follows the 45° A-pillar rake while the other three edges are axis-aligned — required building a plain box, subtracting an angled half-space from it, and then using that composed solid as the cutting tool.
  • Sort box extents. OrientedBoundingBox3D.create throws RuntimeError 3: invalid argument length on a negative length. Writing extents as sx*380 → sx*690 flips sign the moment sx is negative — which is every mirrored left-hand body. Sort extents inside the box helper.