
A small air-cooled engine: a crankcase and a finned cylinder, the piston on its connecting rod and crankshaft, the valves and their cam, a flywheel, a carburettor and an exhaust.
This script is large, so only its beginning is shown here. Open it in the editor to see all of it.
[
{
"schemaVersion": 1,
"kind": "assembly",
"id": "e9a1c0de-0000-4000-8000-000000000001",
"up": "z",
"units": {
"length": "mm"
},
"meta": {
"name": "Single-cylinder engine",
"generator": "engine-app",
"description": "A four-stroke side-valve single: the crank turns the rod and piston, a 20 to 40 tooth gear pair turns the camshaft at half speed, and its lobes lift the tappets and valves against their springs."
},
"parameters": {
"crank": {
"value": 0,
"unit": "deg",
"min": 0,
"max": 720,
"step": 1,
"label": "Crank angle",
"group": "Motion",
"description": "Where the crankshaft stands in the four-stroke cycle: two turns, from top dead centre on the intake stroke"
},
"liftIn": {
"value": "if(cos(crank / 2 - 55) > cos(66), 2 * (1 + cos(180 * acos(cos(crank / 2 - 55)) / 66)), 0)",
"unit": "mm",
"group": "Motion",
"label": "Intake cam lift",
"description": "How far the intake lobe lifts its tappet off the base circle at this crank angle"
},
"valveIn": {
"value": "max(0, if(cos(crank / 2 - 55) > cos(66), 2 * (1 + cos(180 * acos(cos(crank / 2 - 55)) / 66)), 0) - 0.05)",
"unit": "mm",
"group": "Motion",
"label": "Intake valve lift",
"description": "How far the intake valve stands off its seat: the cam's lift less the tappet clearance"
},
"liftEx": {
"value": "if(cos(crank / 2 - 305) > cos(66), 2 * (1 + cos(180 * acos(cos(crank / 2 - 305)) / 66)), 0)",
"unit": "mm",
"group": "Motion",
"label": "Exhaust cam lift",
"description": "How far the exhaust lobe lifts its tappet off the base circle at this crank angle"
},
"valveEx": {
"value": "max(0, if(cos(crank / 2 - 305) > cos(66), 2 * (1 + cos(180 * acos(cos(crank / 2 - 305)) / 66)), 0) - 0.05)",
"unit": "mm",
"group": "Motion",
"label": "Exhaust valve lift",
"description": "How far the exhaust valve stands off its seat: the cam's lift less the tappet clearance"
}
},
"configurations": [
{
"id": "intake",
"name": "Intake",
"values": {
"crank": 90
}
},
{
"id": "compression",
"name": "Compression",
"values": {
"crank": 270
}
},
{
"id": "power",
"name": "Power",
"values": {
"crank": 450
}
},
{
"id": "exhaust",
"name": "Exhaust",
"values": {
"crank": 630
}
}
],
"components": [
{
"id": "block",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000002",
"part": "block"
}
},
{
"id": "head",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000f",
"part": "head"
}
},
{
"id": "cover",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000010",
"part": "cover"
}
},
{
"id": "bearingA",
"name": "Main bearing, flywheel side",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000013",
"part": "bearing"
}
},
{
"id": "bearingB",
"name": "Main bearing, gear side",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000013",
"part": "bearing"
}
},
{
"id": "crankshaft",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000003",
"part": "crankshaft"
}
},
{
"id": "crankGear",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000008",
"part": "crankGear"
}
},
{
"id": "gearKey",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000015",
"part": "key",
"parameters": {
"shaftDiameter": 20,
"length": 8
}
}
},
{
"id": "flywheel",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000e",
"part": "flywheel"
}
},
{
"id": "flywheelKey",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000015",
"part": "key",
"parameters": {
"shaftDiameter": 18,
"length": 10
}
}
},
{
"id": "starterCup",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000018",
"part": "starterCup"
}
},
{
"id": "starterScrew",
"name": "Starter cup screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M4",
"length": 8
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "starterCup",
"connector": "screws"
}
}
},
{
"id": "rod",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000004",
"part": "rod"
}
},
{
"id": "rodCap",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000d",
"part": "rodCap"
}
},
{
"id": "capScrew",
"name": "Rod cap screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"length": 16
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "rodCap",
"connector": "bolts"
}
}
},
{
"id": "piston",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000005",
"part": "piston"
}
},
{
"id": "gudgeonPin",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000006",
"part": "gudgeonPin"
}
},
{
"id": "circlipA",
"name": "Circlip, back",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000002c",
"part": "circlip"
}
},
{
"id": "circlipB",
"name": "Circlip, front",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000002c",
"part": "circlip"
}
},
{
"id": "ring1",
"name": "Compression ring 1",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000016",
"part": "pistonRing"
}
},
{
"id": "ring2",
"name": "Compression ring 2",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000016",
"part": "pistonRing"
}
},
{
"id": "ring3",
"name": "Oil ring",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000016",
"part": "pistonRing"
}
},
{
"id": "camshaft",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000007",
"part": "camshaft"
}
},
{
"id": "camGear",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000009",
"part": "camGear"
}
},
{
"id": "tappetIn",
"name": "Intake tappet",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000a",
"part": "tappet"
}
},
{
"id": "valveIn",
"name": "Intake valve",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000b",
"part": "valve"
}
},
{
"id": "retainerIn",
"name": "Intake spring retainer",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000c",
"part": "retainer"
}
},
{
"id": "seatIn",
"name": "Intake spring seat",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000017",
"part": "springSeat"
}
},
{
"id": "springIn",
"name": "Intake valve spring",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000014",
"part": "spring",
"parameters": {
"length": "22.2 - valveIn"
}
}
},
{
"id": "tappetEx",
"name": "Exhaust tappet",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000a",
"part": "tappet"
}
},
{
"id": "valveEx",
"name": "Exhaust valve",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000b",
"part": "valve"
}
},
{
"id": "retainerEx",
"name": "Exhaust spring retainer",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000000c",
"part": "retainer"
}
},
{
"id": "seatEx",
"name": "Exhaust spring seat",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000017",
"part": "springSeat"
}
},
{
"id": "springEx",
"name": "Exhaust valve spring",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000014",
"part": "spring",
"parameters": {
"length": "22.2 - valveEx"
}
}
},
{
"id": "headBolt",
"name": "Head bolt",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"length": 30
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "head",
"connector": "bolts"
}
}
},
{
"id": "coverScrew",
"name": "Cover screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M5",
"length": 16
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "cover",
"connector": "plateBolts"
}
}
},
{
"id": "gearCoverScrew",
"name": "Cover screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M5",
"length": 16
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "cover",
"connector": "roundBolts"
}
}
},
{
"id": "sparkPlug",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000011",
"part": "sparkPlug"
}
},
{
"id": "chestCover",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000001d",
"part": "chestCover"
}
},
{
"id": "chestCoverScrew",
"name": "Chest cover screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M4",
"length": 10
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "chestCover",
"connector": "screws"
}
}
},
{
"id": "exhaust",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000001b",
"part": "exhaust"
}
},
{
"id": "exhaustScrew",
"name": "Exhaust flange screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M4",
"length": 10
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "exhaust",
"connector": "screws"
}
}
},
{
"id": "carburettor",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000001a",
"part": "carburettor"
}
},
{
"id": "carburettorScrew",
"name": "Carburettor flange screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M4",
"length": 10
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "carburettor",
"connector": "screws"
}
}
},
{
"id": "airFilter",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000001e",
"part": "airFilter"
}
},
{
"id": "wingNut",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000001f",
"part": "wingNut"
}
},
{
"id": "ignition",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000019",
"part": "ignition"
}
},
{
"id": "ignitionScrew",
"name": "Coil bracket screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M4",
"length": 10
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "ignition",
"connector": "screws"
}
}
},
{
"id": "coreScrew",
"name": "Coil core screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M4",
"length": 10
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "ignition",
"connector": "coreScrews"
}
}
},
{
"id": "plugCap",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000001c",
"part": "plugCap"
}
},
{
"id": "fillerCap",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000020",
"part": "fillerCap"
}
},
{
"id": "drainPlug",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000021",
"part": "drainPlug"
}
},
{
"id": "nameplate",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000022",
"part": "nameplate"
}
},
{
"id": "governorArm",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000023",
"part": "governorArm"
}
},
{
"id": "flywheelMagnet",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000024",
"part": "flywheelMagnet"
}
},
{
"id": "headGasket",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000025",
"part": "headGasket"
}
},
{
"id": "coverGasket",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000025",
"part": "coverGasket"
}
},
{
"id": "chestGasket",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000025",
"part": "chestGasket"
}
},
{
"id": "exhaustGasket",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000025",
"part": "exhaustGasket"
}
},
{
"id": "intakeGasket",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000025",
"part": "intakeGasket"
}
},
{
"id": "governorLink",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000026",
"part": "governorLink"
}
},
{
"id": "fuelTank",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000027",
"part": "fuelTank"
}
},
{
"id": "tankScrew0",
"name": "Fuel tank screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M5",
"length": 10
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "fuelTank",
"connector": "screws0"
}
}
},
{
"id": "tankScrew1",
"name": "Fuel tank screw",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000012",
"part": "screw",
"parameters": {
"size": "M5",
"length": 10
}
},
"replicate": {
"connector": "seat",
"to": {
"component": "fuelTank",
"connector": "screws1"
}
}
},
{
"id": "tankCap",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000002a",
"part": "tankCap"
}
},
{
"id": "fuelTap",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000028",
"part": "fuelTap"
}
},
{
"id": "hoseEnds",
"name": "Hose ends and clamps",
"source": {
"document": "e9a1c0de-0000-4000-8000-00000000002b",
"part": "hoseEnds"
}
},
{
"id": "fuelHose",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000029",
"part": "fuelHose"
}
},
{
"id": "governorSpring",
"name": "Governor damper spring",
"source": {
"document": "e9a1c0de-0000-4000-8000-000000000014",
"part": "spring",
"parameters": {
"wireDiameter": 0.5,
"diameter": 4.2,
"activeCoils": 8,
"length": 16.5
}
}
}
],
"joints": [
{
"id": "headGasketSeat",
"type": "fastened",
"component": "headGasket",
"connector": "bottom",
"to": {
"component": "block",
"connector": "deck"
}
},
{
"id": "headSeat",
"type": "fastened",
"component": "head",
"connector": "gasket",
"to": {
"component": "headGasket",
"connector": "top"
}
},
{
"id": "coverGasketSeat",
"type": "fastened",
"component": "coverGasket",
"connector": "bottom",
"to": {
"component": "block",
"connector": "front"
}
},
{
"id": "coverSeat",
"type": "fastened",
"component": "cover",
"connector": "inside",
"to": {
"component": "coverGasket",
"connector": "top"
}
},
{
"id": "bearingASeat",
"type": "fastened",
"component": "bearingA",
"connector": "outer",
"to": {
"component": "block",
"connector": "bearing"
}
},
{
"id": "bearingBSeat",
"type": "fastened",
"component": "bearingB",
"connector": "outer",
"to": {
"component": "cover",
"connector": "bearing"
}
},
{
"id": "crank",
"type": "revolute",
"component": "crankshaft",
"connector": "drive",
"to": {
"frame": {
"origin": [
0,
70,
0
],
"normal": [
0,
1,
0
],
"direction": [
1,
0,
0
]
}
},
"flip": true,
"angle": "crank"
},
{
"id": "crankGearSeat",
"type": "fastened",
"component": "crankGear",
"connector": "seat",
"to": {
"component": "crankshaft",
"connector": "gearSeat"
},
"offset": 0.05
},
{
"id": "gearKeySeat",
"type": "fastened",
"component": "gearKey",
"connector": "bottom",
"to": {
"component": "crankshaft",
"connector": "gearKey"
}
},
{
"id": "flywheelSeat",
"type": "fastened",
"component": "flywheel",
"connector": "seat",
"to": {
"component": "crankshaft",
"connector": "flywheelSeat"
},
"offset": 0.05
},
{
"id": "flywheelKeySeat",
"type": "fastened",
"component": "flywheelKey",
"connector": "bottom",
"to": {
"component": "crankshaft",
"connector": "flywheelKey"
}
},
{
"id": "starterCupSeat",
"type": "fastened",
"component": "starterCup",
"connector": "seat",
"to": {
"component": "flywheel",
"connector": "starter"
}
},
{
"id": "bigEnd",
"type": "revolute",
"component": "rod",
"connector": "big",
"to": {
"component": "crankshaft",
"connector": "pin"
},
"angle": "-asin(24 * sin(crank) / 90) - crank",
"offset": 1
},
{
"id": "capSeat",
"type": "fastened",
"component": "rodCap",
"connector": "parting",
"to": {
"component": "rod",
"connector": "parting"
}
},
{
"id": "bore",
"type": "slider",
"component": "piston",
"connector": "crown",
"to": {
"component": "block",
"connector": "deck"
},
"flip": true,
"offset": "-1 + 24 * cos(crank) + sqrt(8100 - 576 * sin(crank) ^ 2) - 114"
},
{
"id": "pinSeat",
"type": "fastened",
"component": "gudgeonPin",
"connector": "end",
"to": {
"component": "piston",
"connector": "boss"
},
"offset": -13
},
{
"id": "circlipASeat",
"type": "fastened",
"component": "circlipA",
"connector": "side",
"to": {
"component": "piston",
"connector": "clipA"
}
},
{
"id": "circlipBSeat",
"type": "fastened",
"component": "circlipB",
"connector": "side",
"to": {
"component": "piston",
"connector": "clipB"
}
},
{
"id": "ring1Seat",
"type": "fastened",
"component": "ring1",
"connector": "top",
"to": {
"component": "piston",
"connector": "crown"
},
"flip": true,
"offset": -3.05
},
{
"id": "ring2Seat",
"type": "fastened",
"component": "ring2",
"connector": "top",
"to": {
"component": "piston",
"connector": "crown"
},
"flip": true,
"offset": -6.55
},
{
"id": "ring3Seat",
"type": "fastened",
"component": "ring3",
"connector": "top",
"to": {
"component": "piston",
"connector": "crown"
},
"flip": true,
"offset": -10.05
},
{
"id": "cam",
"type": "revolute",
"component": "camshaft",
"connector": "drive",
"to": {
"frame": {
"origin": [
42,
59,
42.848571
],
"normal": [
0,
1,
0
],
"direction": [
1,
0,
0
]
}
},
"flip": true,
"angle": "-crank * 20 / 40"
},
{
"id": "camGearSeat",
"type": "fastened",
"component": "camGear",
"connector": "seat",
"to": {
"component": "camshaft",
"connector": "gearSeat"
},
"offset": 0.05
},
{
"id": "tappetInBore",
"type": "slider",
"component": "tappetIn",
"connector": "top",
"to": {
"component": "block",
"connector": "valveIn"
},
"flip": true,
"offset": "-56.101429 + liftIn"
},
{
"id": "valveInGuide",
"type": "slider",
"component": "valveIn",
"connector": "top",
"to": {
"component": "block",
"connector": "valveIn"
},
"flip": true,
"offset": "0.05 + valveIn"
},
{
"id": "retainerInSeat",
"type": "fastened",
"component": "retainerIn",
"connector": "top",
"to": {
"component": "valveIn",
"connector": "top"
},
"flip": true,
"offset": -53.05
},
{
"id": "seatInSeat",
"type": "fastened",
"component": "seatIn",
"connector": "top",
"to": {
"component": "block",
"connector": "springIn"
}
},
{
"id": "springInSeat",
"type": "fastened",
"component": "springIn",
"connector": "top",
"to": {
"component": "seatIn",
"connector": "bottom"
},
"offset": 0.15
},
{
"id": "tappetExBore",
"type": "slider",
"component": "tappetEx",
"connector": "top",
"to": {
"component": "block",
"connector": "valveEx"
},
"flip": true,
"offset": "-56.101429 + liftEx"
},
{
"id": "valveExGuide",
"type": "slider",
"component": "valveEx",
"connector": "top",
"to": {
"component": "block",
"connector": "valveEx"
},
"flip": true,
"offset": "0.05 + valveEx"
},
{
"id": "retainerExSeat",
"type": "fastened",
"component": "retainerEx",
"connector": "top",
"to": {
"component": "valveEx",
"connector": "top"
},
"flip": true,
"offset": -53.05
},
{
"id": "seatExSeat",
"type": "fastened",
"component": "seatEx",
"connector": "top",
"to": {
"component": "block",
"connector": "springEx"
}
},
{
"id": "springExSeat",
"type": "fastened",
"component": "springEx",
"connector": "top",
"to": {
"component": "seatEx",
"connector": "bottom"
},
"offset": 0.15
},
{
"id": "plugSeat",
"type": "fastened",
"component": "sparkPlug",
"connector": "seat",
"to": {
"component": "head",
"connector": "plug.plug"
}
},
{
"id": "chestGasketSeat",
"type": "fastened",
"component": "chestGasket",
"connector": "bottom",
"to": {
"component": "block",
"connector": "window"
}
},
{
"id": "chestCoverSeat",
"type": "fastened",
"component": "chestCover",
"connector": "seat",
"to": {
"component": "chestGasket",
"connector": "top"
}
},
{
"id": "exhaustGasketSeat",
"type": "fastened",
"component": "exhaustGasket",
"connector": "bottom",
"to": {
"component": "block",
"connector": "portEx"
}
},
{
"id": "exhaustSeat",
"type": "fastened",
"component": "exhaust",
"connector": "seat",
"to": {
"component": "exhaustGasket",
"connector": "top"
}
},
{
"id": "intakeGasketSeat",
"type": "fastened",
"component": "intakeGasket",
"connector": "bottom",
"to": {
"component": "block",
"connector": "portIn"
}
},
{
"id": "carburettorSeat",
"type": "fastened",
"component": "carburettor",
"connector": "seat",
"to": {
"component": "intakeGasket",
"connector": "top"
}
},
{
"id": "airFilterSeat",
"type": "fastened",
"component": "airFilter",
"connector": "seat",
"to": {
"component": "carburettor",
"connector": "outlet"
}
},
{
"id": "wingNutSeat",
"type": "fastened",
"component": "wingNut",
"connector": "seat",
"to": {
"component": "airFilter",
"connector": "nut"
}
},
{
"id": "ignitionSeat",
"type": "fastened",
"component": "ignition",
"connector": "seat",
"to": {
"component": "block",
"connector": "magneto"
}
},
{
"id": "plugCapSeat",
"type": "fastened",
"component": "plugCap",
"connector": "terminal",
"to": {
"component": "sparkPlug",
"connector": "terminal"
},
"offset": 0.05
},
{
"id": "fillerCapSeat",
"type": "fastened",
"component": "fillerCap",
"connector": "seat",
"to": {
"component": "block",
"connector": "filler"
}
},
{
"id": "drainPlugSeat",
"type": "fastened",
"component": "drainPlug",
"connector": "seat",
"to": {
"component": "block",
"connector": "drain"
}
},
{
"id": "nameplateSeat",
"type": "fastened",
"component": "nameplate",
"connector": "seat",
"to": {
"component": "block",
"connector": "nameplate"
}
},
{
"id": "governorArmSeat",
"type": "fastened",
"component": "governorArm",
"connector": "seat",
"to": {
"component": "block",
"connector": "governor"
}
},
{
"id": "magnetSeat",
"type": "fastened",
"component": "flywheelMagnet",
"connector": "seat",
"to": {
"component": "flywheel",
"connector": "magnet"
},
"offset": 0.05
},
{
"id": "fuelTankSeat",
"type": "fastened",
"component": "fuelTank",
"connector": "seat",
"to": {
"component": "block",
"connector": "tank"
}
},
{
"id": "tankCapSeat",
"type": "fastened",
"component": "tankCap",
"connector": "seat",
"to": {
"component": "fuelTank",
"connector": "neck"
}
},
{
"id": "fuelTapSeat",
"type": "fastened",
"component": "fuelTap",
"connector": "seat",
"to": {
"component": "fuelTank",
"connector": "tap"
}
},
{
"id": "hoseEndsSeat",
"type": "fastened",
"component": "hoseEnds",
"connector": "tap",
"to": {
"component": "fuelTap",
"connector": "hose"
},
"offset": 0.1
},
{
"id": "fuelHoseSeat",
"type": "fastened",
"component": "fuelHose",
"connector": "tap",
"to": {
"component": "hoseEnds",
"connector": "hose"
},
"offset": 0.05
},
{
"id": "governorLinkSeat",
"type": "fastened",
"component": "governorLink",
"connector": "arm",
"to": {
"component": "governorArm",
"connector": "link"
},
"offset": 0.05
},
{
"id": "governorSpringSeat",
"type": "fastened",
"component": "governorSpring",
"connector": "bottom",
"to": {
"component": "governorLink",
"connector": "damper"
},
"offset": 0.15
}
]
},
{
"schemaVersion": 1,
"id": "e9a1c0de-0000-4000-8000-000000000002",
"up": "z",
"meta": {
"name": "Block",
"generator": "engine-app"
},
"materials": [
{
"id": "aluminium",
"name": "Cast aluminium",
"density": 2680,
"appearance": {
"color": "#b9bdc1",
"metallic": 0.7,
"roughness": 0.45
}
},
{
"id": "steel",
"name": "Forged steel",
"density": 7850,
"appearance": {
"color": "#8e9399",
"metallic": 0.9,
"roughness": 0.3
}
},
{
"id": "pressed",
"name": "Pressed steel, black",
"density": 7850,
"appearance": {
"color": "#2b2d30",
"metallic": 0.6,
"roughness": 0.5
}
},
{
"id": "resin",
"name": "Epoxy resin",
"density": 1200,
"appearance": {
"color": "#1c1d1f",
"metallic": 0,
"roughness": 0.6
}
},
{
"id": "rubber",
"name": "Rubber",
"density": 1100,
"appearance": {
"color": "#26282b",
"metallic": 0,
"roughness": 0.85
}
},
{
"id": "exhaust",
"name": "Heat-tinted steel",
"density": 7850,
"appearance": {
"color": "#5d5a57",
"metallic": 0.85,
"roughness": 0.42
}
},
{
"id": "brass",
"name": "Brass",
"density": 8500,
"appearance": {
"color": "#b59a5a",
"metallic": 0.9,
"roughness": 0.32
}
},
{
"id": "gasket",
"name": "Compressed fibre",
"density": 1700,
"appearance": {
"color": "#6f6a60",
"metallic": 0,
"roughness": 0.9
}
},
{
"id": "copper",
"name": "Copper",
"density": 8960,
"appearance": {
"color": "#b87333",
"metallic": 1,
"roughness": 0.35
}
}
],
"features": [
{
"id": "crankcaseProfile",
"type": "sketch",
"on": {
"frame": {
"origin": [
0,
50,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
}
},
"start": [
-58,
50
],
"pen": [
{
"type": "line",
"id": "crankcaseProfile0",
"to": [
-58,
-40
]
},
{
"type": "filletCorner",
"id": "crankcaseProfileRound0",
"radius": 14
},
{
"type": "line",
"id": "crankcaseProfile1",
"to": [
-40,
-58
]
},
{
"type": "filletCorner",
"id": "crankcaseProfileRound1",
"radius": 14
},
{
"type": "line",
"id": "crankcaseProfile2",
"to": [
40,
-58
]
},
{
"type": "filletCorner",
"id": "crankcaseProfileRound2",
"radius": 14
},
{
"type": "line",
"id": "crankcaseProfile3",
"to": [
58,
-40
]
},
{
"type": "filletCorner",
"id": "crankcaseProfileRound3",
"radius": 14
},
{
"type": "line",
"id": "crankcaseProfile4",
"to": [
58,
50
]
},
{
"type": "filletCorner",
"id": "crankcaseProfileRound4",
"radius": 6
},
{
"type": "close",
"id": "crankcaseProfileClose"
},
{
"type": "filletCorner",
"id": "crankcaseProfileRoundStart",
"radius": 6
}
]
},
{
"id": "crankcase",
"type": "extrude",
"profile": "crankcaseProfile",
"distance": 90
},
{
"id": "crankcaseBackRound",
"type": "fillet",
"body": "crankcase",
"edges": {
"between": [
{
"of": "crankcase",
"role": "end"
},
{
"of": "crankcase",
"role": "side"
}
],
"count": 12
},
"radius": 4
},
{
"id": "camCaseProfile",
"type": "sketch",
"on": {
"frame": {
"origin": [
0,
50,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
}
},
"pen": [
{
"type": "circle",
"id": "camCaseProfileRim",
"centre": [
42,
42.848571
],
"radius": 25
}
]
},
{
"id": "camCase",
"type": "extrude",
"profile": "camCaseProfile",
"distance": 90
},
{
"id": "camCaseBackRound",
"type": "fillet",
"body": "camCase",
"edges": {
"between": [
{
"of": "camCase",
"role": "end"
},
{
"of": "camCase",
"role": "side"
}
],
"count": 1
},
"radius": 3
},
{
"id": "gearCaseProfile",
"type": "sketch",
"on": {
"frame": {
"origin": [
0,
50,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
}
},
"pen": [
{
"type": "circle",
"id": "gearCaseProfileRim",
"centre": [
42,
42.848571
],
"radius": 50
}
]
},
{
"id": "gearCase",
"type": "extrude",
"profile": "gearCaseProfile",
"distance": 22
},
{
"id": "gearCaseBackRound",
"type": "fillet",
"body": "gearCase",
"edges": {
"between": [
{
"of": "gearCase",
"role": "end"
},
{
"of": "gearCase",
"role": "side"
}
],
"count": 1
},
"radius": 3
},
{
"id": "barrelProfile",
"type": "sketch",
"on": {
"frame": {
"origin": [
0,
0,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
}
},
"start": [
24,
40
],
"pen": [
{
"type": "line",
"id": "barrelProfile0",
"to": [
36,
40
]
},
{
"type": "line",
"id": "barrelProfile1",
"to": [
36,
49
]
},
{
"type": "line",
"id": "barrelProfile2",
"to": [
32,
54
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound2",
"radius": 3
},
{
"type": "line",
"id": "barrelProfile3",
"to": [
32,
70
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound3",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile4",
"to": [
42,
70.45
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound4",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile5",
"to": [
42,
72.55
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound5",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile6",
"to": [
32,
73
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound6",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile7",
"to": [
32,
78
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound7",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile8",
"to": [
42.666667,
78.45
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound8",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile9",
"to": [
42.666667,
80.55
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound9",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile10",
"to": [
32,
81
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound10",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile11",
"to": [
32,
86
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound11",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile12",
"to": [
43.333333,
86.45
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound12",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile13",
"to": [
43.333333,
88.55
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound13",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile14",
"to": [
32,
89
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound14",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile15",
"to": [
32,
94
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound15",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile16",
"to": [
44,
94.45
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound16",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile17",
"to": [
44,
96.55
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound17",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile18",
"to": [
32,
97
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound18",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile19",
"to": [
32,
102
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound19",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile20",
"to": [
44.666667,
102.45
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound20",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile21",
"to": [
44.666667,
104.55
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound21",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile22",
"to": [
32,
105
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound22",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile23",
"to": [
32,
110
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound23",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile24",
"to": [
45.333333,
110.45
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound24",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile25",
"to": [
45.333333,
112.55
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound25",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile26",
"to": [
32,
113
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound26",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile27",
"to": [
32,
118
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound27",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile28",
"to": [
46,
118.45
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound28",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile29",
"to": [
46,
120.55
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound29",
"radius": 0.85
},
{
"type": "line",
"id": "barrelProfile30",
"to": [
32,
121
]
},
{
"type": "filletCorner",
"id": "barrelProfileRound30",
"radius": 1.4
},
{
"type": "line",
"id": "barrelProfile31",
"to": [
32,
128
]
},
{
"type": "line",
"id": "barrelProfile32",
"to": [
24,
128
]
},
{
"type": "close",
"id": "barrelProfileClose"
}
]
},
{
"id": "barrel",
"type": "revolve",
"profile": "barrelProfile",
"axis": {
"origin": [
0,
0,
0
],
"direction": [
0,
0,
1
]
}
},
{
"id": "rearLeftBossProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": 108
},
"pen": [
{
"type": "circle",
"id": "rearLeftBossProfileRim",
"centre": [
-28,
-28
],
"radius": 6.5
}
]
},
{
"id": "rearLeftBoss",
"type": "extrude",
"profile": "rearLeftBossProfile",
"distance": 20
},
{
"id": "rearLeftBossRound",
"type": "fillet",
"body": "rearLeftBoss",
"edges": {
"between": [
{
"of": "rearLeftBoss",
"role": "start"
},
{
"of": "rearLeftBoss",
"role": "side"
}
],
"count": 1
},
"radius": 2
},
{
"id": "rearRightBossProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": 108
},
"pen": [
{
"type": "circle",
"id": "rearRightBossProfileRim",
"centre": [
-28,
28
],
"radius": 6.5
}
]
},
{
"id": "rearRightBoss",
"type": "extrude",
"profile": "rearRightBossProfile",
"distance": 20
},
{
"id": "rearRightBossRound",
"type": "fillet",
"body": "rearRightBoss",
"edges": {
"between": [
{
"of": "rearRightBoss",
"role": "start"
},
{
"of": "rearRightBoss",
"role": "side"
}
],
"count": 1
},
"radius": 2
},
{
"id": "midLeftBossProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": 108
},
"pen": [
{
"type": "circle",
"id": "midLeftBossProfileRim",
"centre": [
14,
-31
],
"radius": 6.5
}
]
},
{
"id": "midLeftBoss",
"type": "extrude",
"profile": "midLeftBossProfile",
"distance": 20
},
{
"id": "midLeftBossRound",
"type": "fillet",
"body": "midLeftBoss",
"edges": {
"between": [
{
"of": "midLeftBoss",
"role": "start"
},
{
"of": "midLeftBoss",
"role": "side"
}
],
"count": 1
},
"radius": 2
},
{
"id": "midRightBossProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": 108
},
"pen": [
{
"type": "circle",
"id": "midRightBossProfileRim",
"centre": [
14,
31
],
"radius": 6.5
}
]
},
{
"id": "midRightBoss",
"type": "extrude",
"profile": "midRightBossProfile",
"distance": 20
},
{
"id": "midRightBossRound",
"type": "fillet",
"body": "midRightBoss",
"edges": {
"between": [
{
"of": "midRightBoss",
"role": "start"
},
{
"of": "midRightBoss",
"role": "side"
}
],
"count": 1
},
"radius": 2
},
{
"id": "chestProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": 50
},
"start": [
28,
-34
],
"pen": [
{
"type": "line",
"id": "chestProfile0",
"to": [
60,
-34
]
},
{
"type": "filletCorner",
"id": "chestProfileRound0",
"radius": 5
},
{
"type": "line",
"id": "chestProfile1",
"to": [
60,
34
]
},
{
"type": "filletCorner",
"id": "chestProfileRound1",
"radius": 5
},
{
"type": "line",
"id": "chestProfile2",
"to": [
28,
34
]
},
{
"type": "filletCorner",
"id": "chestProfileRound2",
"radius": 5
},
{
"type": "close",
"id": "chestProfileClose"
},
{
"type": "filletCorner",
"id": "chestProfileRoundStart",
"radius": 5
}
]
},
{
"id": "chest",
"type": "extrude",
"profile": "chestProfile",
"distance": 78
},
{
"id": "deckProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": 127
},
"start": [
-36,
-36
],
"pen": [
{
"type": "line",
"id": "deckProfile0",
"to": [
62,
-36
]
},
{
"type": "filletCorner",
"id": "deckProfileRound0",
"radius": 10
},
{
"type": "line",
"id": "deckProfile1",
"to": [
62,
36
]
},
{
"type": "filletCorner",
"id": "deckProfileRound1",
"radius": 10
},
{
"type": "line",
"id": "deckProfile2",
"to": [
-36,
36
]
},
{
"type": "filletCorner",
"id": "deckProfileRound2",
"radius": 10
},
{
"type": "close",
"id": "deckProfileClose"
},
{
"type": "filletCorner",
"id": "deckProfileRoundStart",
"radius": 10
}
]
},
{
"id": "deckPlate",
"type": "extrude",
"profile": "deckProfile",
"distance": 10
},
{
"id": "deckPlateRound",
"type": "fillet",
"body": "deckPlate",
"edges": {
"between": [
{
"of": "deckPlate",
"role": "start"
},
{
"of": "deckPlate",
"role": "side"
}
],
"count": 8
},
"radius": 2
},
{
"id": "portInPadProfile",
"type": "sketch",
"on": {
"frame": {
"origin": [
0,
-34,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
}
},
"start": [
28,
112
],
"pen": [
{
"type": "line",
"id": "portInPadProfile0",
"to": [
54,
112
]
},
{
"type": "filletCorner",
"id": "portInPadProfileRound0",
"radius": 4
},
{
"type": "line",
"id": "portInPadProfile1",
"to": [
54,
134
]
},
{
"type": "filletCorner",
"id": "portInPadProfileRound1",
"radius": 4
},
{
"type": "line",
"id": "portInPadProfile2",
"to": [
28,
134
]
},
{
"type": "filletCorner",
"id": "portInPadProfileRound2",
"radius": 4
},
{
"type": "close",
"id": "portInPadProfileClose"
},
{
"type": "filletCorner",
"id": "portInPadProfileRoundStart",
"radius": 4
}
]
},
{
"id": "portInPad",
"type": "extrude",
"profile": "portInPadProfile",
"distance": 3
},
{
"id": "portExPadProfile",
"type": "sketch",
"on": {
"frame": {
"origin": [
0,
34,
0
],
"normal": [
0,
1,
0
],
"direction": [
1,
0,
0
]
}
},
"start": [
28,
-134
],
"pen": [
{
"type": "line",
"id": "portExPadProfile0",
"to": [
54,
-134
]
},
{
"type": "filletCorner",
"id": "portExPadProfileRound0",
"radius": 4
},
{
"type": "line",
"id": "portExPadProfile1",
"to": [
54,
-112
]
},
{
"type": "filletCorner",
"id": "portExPadProfileRound1",
"radius": 4
},
{
"type": "line",
"id": "portExPadProfile2",
"to": [
28,
-112
]
},
{
"type": "filletCorner",
"id": "portExPadProfileRound2",
"radius": 4
},
{
"type": "close",
"id": "portExPadProfileClose"
},
{
"type": "filletCorner",
"id": "portExPadProfileRoundStart",
"radius": 4
}
]
},
{
"id": "portExPad",
"type": "extrude",
"profile": "portExPadProfile",
"distance": 3
},
{
"id": "baseProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": -76
},
"start": [
-74,
-34
],
"pen": [
{
"type": "line",
"id": "baseProfile0",
"to": [
74,
-34
]
},
{
"type": "filletCorner",
"id": "baseProfileRound0",
"radius": 10
},
{
"type": "line",
"id": "baseProfile1",
"to": [
74,
46
]
},
{
"type": "filletCorner",
"id": "baseProfileRound1",
"radius": 10
},
{
"type": "line",
"id": "baseProfile2",
"to": [
-74,
46
]
},
{
"type": "filletCorner",
"id": "baseProfileRound2",
"radius": 10
},
{
"type": "close",
"id": "baseProfileClose"
},
{
"type": "filletCorner",
"id": "baseProfileRoundStart",
"radius": 10
}
]
},
{
"id": "base",
"type": "extrude",
"profile": "baseProfile",
"distance": 6
},
{
"id": "baseRound",
"type": "fillet",
"body": "base",
"edges": {
"between": [
{
"of": "base",
"role": "end"
},
{
"of": "base",
"role": "side"
}
],
"count": 8
},
"radius": 2
},
{
"id": "footHoles",
"type": "hole",
"body": "base",
"on": {
"of": "base",
"role": "end"
},
"direction": [
1,
0,
0
],
"at": [
{
"id": "leftBack",
"x": -62,
"y": -24
},
{
"id": "leftFront",
"x": -62,
"y": 36
},
{
"id": "rightBack",
"x": 62,
"y": -24
},
{
"id": "rightFront",
"x": 62,
"y": 36
}
],
"diameter": 9,
"counterbore": {
"diameter": 16,
"depth": 1
}
},
{
"id": "pedestalProfile",
"type": "sketch",
"on": {
"plane": "XY",
"offset": -75
},
"start": [
-32,
-35
],
"pen": [
{
"type": "line",
"id": "pedestalProfile0",
"to": [
32,
-35
]
},
{
"type": "filletCorner",
"id": "pedestalProfileRound0",
"radius": 6
},
{
"type": "line",
"id": "pedestalProfile1",
"to": [
32,
46
]
},
{
"type": "filletCorner",
"id": "pedestalProfileRound1",
"radius": 6
},
{
"type": "line",
"id": "pedestalProfile2",
"to": [
-32,
46
]
},
{
"type": "filletCorner",
"id": "pedestalProfileRound2",
"radius": 6
},
{
"type": "close",
"id": "pedestalProfileClose"
},
{
"type": "filletCorner",
"id": "pedestalProfileRoundStart",
"radius": 6
}
]
},
{
"id": "pedestal",
"type": "extrude",
"profile": "pedestalProfile",
"distance": 18
},
{
"id": "rib0RightProfile",
"type": "sketch",
"on": {
"frame": {
"origin": [
0,
-7.5,
0
],
"normal": [
0,
-1,
0
],
"direction": [
1,
0,
0
]
}
},
"start": [
30,
-71
],
"pen": [
{
"type": "line",
"id": "rib0RightProfile0",
"to": [
70,
-71
]
},
{
"type": "line",
"id": "rib0RightProfile1",
"to": [
70,
-69
]
},
{
"type": "filletCorner",
Editor plans for 3D development, API keys for server-side CAD algorithms
Cloud storage, private projects & 3D tools for Bitbybit editors
* "Unlimited" means high limits that most users won't reach. Compare the plans
Run CAD algorithms on managed cloud servers from your own backend applications
Custom software development, dedicated servers & CAD automation at scale.