{
  "source": "robot-joint-demo.step",
  "tool": "cad-bom 1.0.0",
  "counts": {
    "partDefinitions": 17,
    "partInstances": 32,
    "subAssemblies": 2,
    "drawings": 17,
    "errors": 4,
    "warnings": 1,
    "partsWithIssues": 5
  },
  "massG": {
    "total": 2094.9,
    "instancesWithoutMass": 1
  },
  "parts": [
    {
      "item": 1,
      "partNumber": "RJ-STR-002",
      "partNumberRaw": "RJ-STR-002",
      "name": "Rear cover",
      "material": "A6061-T6",
      "quantity": 1,
      "volumeCm3": 38.922,
      "areaCm2": 152.02,
      "sizeMm": [
        90.0,
        90.0,
        8.0
      ],
      "densityGcm3": 2.7,
      "unitMassG": 105.09,
      "totalMassG": 105.09,
      "drawing": "drawings/RJ-STR-002_rear-cover.svg",
      "status": "error",
      "issues": [
        "PN_DUPLICATE"
      ],
      "scale": "1:1"
    },
    {
      "item": 2,
      "partNumber": "RJ-STR-001",
      "partNumberRaw": "RJ-STR-001",
      "name": "Housing",
      "material": "A6061-T6",
      "quantity": 1,
      "volumeCm3": 118.667,
      "areaCm2": 426.492,
      "sizeMm": [
        90.0,
        95.0,
        70.0
      ],
      "densityGcm3": 2.7,
      "unitMassG": 320.4,
      "totalMassG": 320.4,
      "drawing": "drawings/RJ-STR-001_housing.svg",
      "status": "ok",
      "issues": [],
      "scale": "1:2"
    },
    {
      "item": 3,
      "partNumber": "RJ-ELC-002",
      "partNumberRaw": "rj_elc_002",
      "name": "Driver board",
      "material": "FR-4",
      "quantity": 1,
      "volumeCm3": 6.873,
      "areaCm2": 88.03,
      "sizeMm": [
        76.0,
        76.0,
        5.6
      ],
      "densityGcm3": 1.85,
      "unitMassG": 12.72,
      "totalMassG": 12.72,
      "drawing": "drawings/RJ-ELC-002_driver-board.svg",
      "status": "warning",
      "issues": [
        "PN_NORMALIZED"
      ],
      "scale": "1:1"
    },
    {
      "item": 4,
      "partNumber": "RJ-STR-005",
      "partNumberRaw": "RJ-STR-005",
      "name": "Hollow shaft",
      "material": "SUS304",
      "quantity": 1,
      "volumeCm3": 13.459,
      "areaCm2": 92.928,
      "sizeMm": [
        20.0,
        20.0,
        84.0
      ],
      "densityGcm3": 7.93,
      "unitMassG": 106.73,
      "totalMassG": 106.73,
      "drawing": "drawings/RJ-STR-005_hollow-shaft.svg",
      "status": "ok",
      "issues": [],
      "scale": "1:1"
    },
    {
      "item": 5,
      "partNumber": "RJ-BRG-002",
      "partNumberRaw": "RJ-BRG-002",
      "name": "Deep-groove ball bearing 6904",
      "material": "SUJ2",
      "quantity": 2,
      "volumeCm3": 6.536,
      "areaCm2": 33.128,
      "sizeMm": [
        37.0,
        37.0,
        9.0
      ],
      "densityGcm3": 7.83,
      "unitMassG": 51.18,
      "totalMassG": 102.36,
      "drawing": "drawings/RJ-BRG-002_deep-groove-ball-bearing-6904.svg",
      "status": "ok",
      "issues": [],
      "scale": "2:1"
    },
    {
      "item": 6,
      "partNumber": "RJ-ELC-001",
      "partNumberRaw": "RJ-ELC-001",
      "name": "Encoder disc",
      "material": null,
      "quantity": 1,
      "volumeCm3": 1.327,
      "areaCm2": 22.397,
      "sizeMm": [
        40.0,
        40.0,
        1.5
      ],
      "densityGcm3": null,
      "unitMassG": null,
      "totalMassG": null,
      "drawing": "drawings/RJ-ELC-001_encoder-disc.svg",
      "status": "error",
      "issues": [
        "MATERIAL_MISSING"
      ],
      "scale": "2:1"
    },
    {
      "item": 7,
      "partNumber": "RJ-DRV-003",
      "partNumberRaw": "RJ-DRV-003",
      "name": "Brake disc",
      "material": "S45C",
      "quantity": 1,
      "volumeCm3": 3.456,
      "areaCm2": 30.992,
      "sizeMm": [
        44.0,
        44.0,
        3.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 27.13,
      "totalMassG": 27.13,
      "drawing": "drawings/RJ-DRV-003_brake-disc.svg",
      "status": "ok",
      "issues": [],
      "scale": "2:1"
    },
    {
      "item": 8,
      "partNumber": "RJ-DRV-001",
      "partNumberRaw": "RJ-DRV-001",
      "name": "Stator core",
      "material": "ELEC-STEEL",
      "quantity": 1,
      "volumeCm3": 45.674,
      "areaCm2": 154.016,
      "sizeMm": [
        76.0,
        76.0,
        20.0
      ],
      "densityGcm3": 7.65,
      "unitMassG": 349.4,
      "totalMassG": 349.4,
      "drawing": "drawings/RJ-DRV-001_stator-core.svg",
      "status": "ok",
      "issues": [],
      "scale": "1:1"
    },
    {
      "item": 9,
      "partNumber": "RJ-DRV-002",
      "partNumberRaw": "RJ-DRV-002",
      "name": "Rotor",
      "material": "S45C",
      "quantity": 1,
      "volumeCm3": 26.388,
      "areaCm2": 108.154,
      "sizeMm": [
        48.0,
        48.0,
        20.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 207.15,
      "totalMassG": 207.15,
      "drawing": "drawings/RJ-DRV-002_rotor.svg",
      "status": "ok",
      "issues": [],
      "scale": "2:1"
    },
    {
      "item": 10,
      "partNumber": "RJ-TRN-002",
      "partNumberRaw": "RJ-TRN-002",
      "name": "Flexspline",
      "material": "SNCM439",
      "quantity": 1,
      "volumeCm3": 7.49,
      "areaCm2": 105.997,
      "sizeMm": [
        60.0,
        60.0,
        16.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 58.79,
      "totalMassG": 58.79,
      "drawing": "drawings/RJ-TRN-002_flexspline.svg",
      "status": "ok",
      "issues": [],
      "scale": "1:1"
    },
    {
      "item": 11,
      "partNumber": "RJ-TRN-003",
      "partNumberRaw": "RJ-TRN-003",
      "name": "Wave generator cam",
      "material": "S45C",
      "quantity": 1,
      "volumeCm3": 21.913,
      "areaCm2": 67.862,
      "sizeMm": [
        58.0,
        55.0,
        10.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 172.01,
      "totalMassG": 172.01,
      "drawing": "drawings/RJ-TRN-003_wave-generator-cam.svg",
      "status": "ok",
      "issues": [],
      "scale": "2:1"
    },
    {
      "item": 12,
      "partNumber": "RJ-TRN-001",
      "partNumberRaw": "RJ-TRN-001",
      "name": "Circular spline",
      "material": "SCM440",
      "quantity": 1,
      "volumeCm3": 19.637,
      "areaCm2": 94.253,
      "sizeMm": [
        76.0,
        76.0,
        12.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 154.15,
      "totalMassG": 154.15,
      "drawing": "drawings/RJ-TRN-001_circular-spline.svg",
      "status": "ok",
      "issues": [],
      "scale": "1:1"
    },
    {
      "item": 13,
      "partNumber": "RJ-BRG-001",
      "partNumberRaw": "RJ-BRG-001",
      "name": "Cross-roller bearing",
      "material": "SUJ2",
      "quantity": 1,
      "volumeCm3": 20.486,
      "areaCm2": 91.232,
      "sizeMm": [
        76.0,
        76.0,
        10.0
      ],
      "densityGcm3": 7.83,
      "unitMassG": 160.4,
      "totalMassG": 160.4,
      "drawing": "drawings/RJ-BRG-001_cross-roller-bearing.svg",
      "status": "ok",
      "issues": [],
      "scale": "1:1"
    },
    {
      "item": 14,
      "partNumber": "RJ-STR-004",
      "partNumberRaw": "RJ-STR-004",
      "name": "Output flange",
      "material": "SCM440",
      "quantity": 1,
      "volumeCm3": 34.912,
      "areaCm2": 117.261,
      "sizeMm": [
        70.0,
        70.0,
        18.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 274.06,
      "totalMassG": 274.06,
      "drawing": "drawings/RJ-STR-004_output-flange.svg",
      "status": "ok",
      "issues": [],
      "scale": "1:1"
    },
    {
      "item": 15,
      "partNumber": "RJ-STR-002",
      "partNumberRaw": "RJ-STR-002",
      "name": "Front cover",
      "material": "A6061-T6",
      "quantity": 1,
      "volumeCm3": 11.088,
      "areaCm2": 74.071,
      "sizeMm": [
        90.0,
        90.0,
        5.0
      ],
      "densityGcm3": 2.7,
      "unitMassG": 29.94,
      "totalMassG": 29.94,
      "drawing": "drawings/RJ-STR-002_front-cover.svg",
      "status": "error",
      "issues": [
        "PN_DUPLICATE"
      ],
      "scale": "1:1"
    },
    {
      "item": 16,
      "partNumber": "RJ-FST-001",
      "partNumberRaw": "RJ-FST-001",
      "name": "Hex bolt M3x10",
      "material": "SCM435",
      "quantity": 8,
      "volumeCm3": 0.123,
      "areaCm2": 1.847,
      "sizeMm": [
        5.5,
        6.35,
        12.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 0.97,
      "totalMassG": 7.73,
      "drawing": "drawings/RJ-FST-001_hex-bolt-m3x10.svg",
      "status": "ok",
      "issues": [],
      "scale": "5:1"
    },
    {
      "item": 17,
      "partNumber": "RJ-FST-02",
      "partNumberRaw": "RJ-FST-02",
      "name": "Hex bolt M3x8",
      "material": "SCM435",
      "quantity": 8,
      "volumeCm3": 0.109,
      "areaCm2": 1.659,
      "sizeMm": [
        5.5,
        6.35,
        10.0
      ],
      "densityGcm3": 7.85,
      "unitMassG": 0.86,
      "totalMassG": 6.84,
      "drawing": "drawings/RJ-FST-02_hex-bolt-m3x8.svg",
      "status": "error",
      "issues": [
        "PN_FORMAT"
      ],
      "scale": "5:1"
    }
  ],
  "structure": [
    {
      "level": 0,
      "partNumber": "RJ-ASM-000",
      "name": "Robot joint demo assembly",
      "kind": "assembly",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-STR-002",
      "name": "Rear cover",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-STR-001",
      "name": "Housing",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-ELC-002",
      "name": "Driver board",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-STR-005",
      "name": "Hollow shaft",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-BRG-002",
      "name": "Deep-groove ball bearing 6904",
      "kind": "part",
      "quantity": 2
    },
    {
      "level": 1,
      "partNumber": "RJ-ASM-010",
      "name": "Motor unit",
      "kind": "assembly",
      "quantity": 1
    },
    {
      "level": 2,
      "partNumber": "RJ-ELC-001",
      "name": "Encoder disc",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 2,
      "partNumber": "RJ-DRV-003",
      "name": "Brake disc",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 2,
      "partNumber": "RJ-DRV-001",
      "name": "Stator core",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 2,
      "partNumber": "RJ-DRV-002",
      "name": "Rotor",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-ASM-020",
      "name": "Harmonic reducer unit",
      "kind": "assembly",
      "quantity": 1
    },
    {
      "level": 2,
      "partNumber": "RJ-TRN-002",
      "name": "Flexspline",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 2,
      "partNumber": "RJ-TRN-003",
      "name": "Wave generator cam",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 2,
      "partNumber": "RJ-TRN-001",
      "name": "Circular spline",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-BRG-001",
      "name": "Cross-roller bearing",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-STR-004",
      "name": "Output flange",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-STR-002",
      "name": "Front cover",
      "kind": "part",
      "quantity": 1
    },
    {
      "level": 1,
      "partNumber": "RJ-FST-001",
      "name": "Hex bolt M3x10",
      "kind": "part",
      "quantity": 8
    },
    {
      "level": 1,
      "partNumber": "RJ-FST-02",
      "name": "Hex bolt M3x8",
      "kind": "part",
      "quantity": 8
    }
  ],
  "issues": [
    {
      "code": "MATERIAL_MISSING",
      "severity": "error",
      "partNumber": "RJ-ELC-001",
      "name": "Encoder disc",
      "params": {},
      "message": "Part RJ-ELC-001 (Encoder disc) has no material; mass not estimated."
    },
    {
      "code": "PN_FORMAT",
      "severity": "error",
      "partNumber": "RJ-FST-02",
      "name": "Hex bolt M3x8",
      "params": {
        "raw": "RJ-FST-02",
        "pattern": "^RJ-(ASM|STR|DRV|TRN|BRG|ELC|FST)-[0-9]{3}$"
      },
      "message": "Part number 'RJ-FST-02' does not match ^RJ-(ASM|STR|DRV|TRN|BRG|ELC|FST)-[0-9]{3}$; not changed automatically."
    },
    {
      "code": "PN_DUPLICATE",
      "severity": "error",
      "partNumber": "RJ-STR-002",
      "name": "Front cover",
      "params": {
        "count": 2,
        "names": "Rear cover, Front cover"
      },
      "message": "Part number RJ-STR-002 is used by 2 different parts: Rear cover, Front cover."
    },
    {
      "code": "PN_DUPLICATE",
      "severity": "error",
      "partNumber": "RJ-STR-002",
      "name": "Rear cover",
      "params": {
        "count": 2,
        "names": "Rear cover, Front cover"
      },
      "message": "Part number RJ-STR-002 is used by 2 different parts: Rear cover, Front cover."
    },
    {
      "code": "PN_NORMALIZED",
      "severity": "warning",
      "partNumber": "RJ-ELC-002",
      "name": "Driver board",
      "params": {
        "raw": "rj_elc_002",
        "fixed": "RJ-ELC-002"
      },
      "message": "Part number 'rj_elc_002' normalised to 'RJ-ELC-002' (case/separators only)."
    }
  ],
  "drawings": [
    {
      "partNumber": "RJ-STR-002",
      "file": "drawings/RJ-STR-002_rear-cover.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-STR-001",
      "file": "drawings/RJ-STR-001_housing.svg",
      "scale": "1:2"
    },
    {
      "partNumber": "RJ-ELC-002",
      "file": "drawings/RJ-ELC-002_driver-board.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-STR-005",
      "file": "drawings/RJ-STR-005_hollow-shaft.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-BRG-002",
      "file": "drawings/RJ-BRG-002_deep-groove-ball-bearing-6904.svg",
      "scale": "2:1"
    },
    {
      "partNumber": "RJ-ELC-001",
      "file": "drawings/RJ-ELC-001_encoder-disc.svg",
      "scale": "2:1"
    },
    {
      "partNumber": "RJ-DRV-003",
      "file": "drawings/RJ-DRV-003_brake-disc.svg",
      "scale": "2:1"
    },
    {
      "partNumber": "RJ-DRV-001",
      "file": "drawings/RJ-DRV-001_stator-core.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-DRV-002",
      "file": "drawings/RJ-DRV-002_rotor.svg",
      "scale": "2:1"
    },
    {
      "partNumber": "RJ-TRN-002",
      "file": "drawings/RJ-TRN-002_flexspline.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-TRN-003",
      "file": "drawings/RJ-TRN-003_wave-generator-cam.svg",
      "scale": "2:1"
    },
    {
      "partNumber": "RJ-TRN-001",
      "file": "drawings/RJ-TRN-001_circular-spline.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-BRG-001",
      "file": "drawings/RJ-BRG-001_cross-roller-bearing.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-STR-004",
      "file": "drawings/RJ-STR-004_output-flange.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-STR-002",
      "file": "drawings/RJ-STR-002_front-cover.svg",
      "scale": "1:1"
    },
    {
      "partNumber": "RJ-FST-001",
      "file": "drawings/RJ-FST-001_hex-bolt-m3x10.svg",
      "scale": "5:1"
    },
    {
      "partNumber": "RJ-FST-02",
      "file": "drawings/RJ-FST-02_hex-bolt-m3x8.svg",
      "scale": "5:1"
    }
  ]
}
