删除目录「json范例」
This commit is contained in:
@@ -1,114 +0,0 @@
|
||||
{
|
||||
"schema": "simplecad.std.planetary_joint.sop.v2",
|
||||
"design_id": "joint_module_t100_t40_t20_v2",
|
||||
"units": "millimetre_degree",
|
||||
"axis_convention": {"main_axis": "x", "radial_plane": "yz", "right_handed": true},
|
||||
"assembly_layout": {
|
||||
"method": "semantic_axial_orbit",
|
||||
"calibration_role": "offline_dimensions_only",
|
||||
"rules": [
|
||||
{"selector":"instance:main_case","mode":"root"},
|
||||
{"selector":"instance:motor","mode":"coaxial","axial_mm":2.0,"local_axis":"y","axis_direction":1,"clock_degrees":-171.257405889209},
|
||||
{"selector":"instance:back_plate","mode":"coaxial","axial_mm":8.0,"local_axis":"z","axis_direction":-1,"clock_degrees":157.5},
|
||||
{"selector":"instance:bearing_retainer","mode":"coaxial","axial_mm":65.5,"local_axis":"z","axis_direction":1,"clock_degrees":-135.0},
|
||||
{"selector":"instance:carrier_bearing","mode":"coaxial","axial_mm":61.0,"local_axis":"z","axis_direction":1,"clock_degrees":145.793046},
|
||||
{"selector":"instance:carrier_inner","mode":"coaxial","axial_mm":56.2,"local_axis":"z","axis_direction":-1,"clock_degrees":-155.189147},
|
||||
{"selector":"instance:carrier_outer","mode":"coaxial","axial_mm":67.5,"local_axis":"z","axis_direction":-1,"clock_degrees":-155.189147},
|
||||
{"selector":"instance:magnet","mode":"coaxial","axial_mm":-1.7,"local_axis":"z","axis_direction":-1,"clock_degrees":119.787534},
|
||||
{"selector":"instance:magnet_holder","mode":"coaxial","axial_mm":10.7,"local_axis":"z","axis_direction":-1,"clock_degrees":61.498736},
|
||||
{"selector":"instance:controller_mount","mode":"coaxial","axial_mm":0.0,"radial_mm":4.0,"radial_angle_degrees":112.5,"local_axis":"z","axis_direction":-1,"clock_degrees":67.5},
|
||||
{"selector":"instance:motor_coupling","mode":"coaxial","axial_mm":45.0,"local_axis":"z","axis_direction":1,"clock_degrees":-37.004915},
|
||||
{"selector":"instance:ring_gear","mode":"coaxial","axial_mm":49.7,"local_axis":"x","axis_direction":1,"clock_degrees":-22.5},
|
||||
{"selector":"instance:sun_gear","mode":"coaxial","axial_mm":46.0,"local_axis":"x","axis_direction":1,"clock_degrees":52.995085},
|
||||
{"selector":"definition:planet_gear","mode":"orbit","axial_mm":53.5,"orbit_phase_degrees":-174.810852906765,"local_axis":"x","axis_direction":-1,"clock_degrees":145.90418,"clock_step_degrees":180.0},
|
||||
{"selector":"definition:mf128_bearing","mode":"orbit","axial_mm":49.7,"orbit_phase_degrees":-174.810852906765,"local_axis":"z","axis_direction":1,"clock_degrees":0.0,"clock_step_degrees":120.0},
|
||||
{"selector":"definition:planet_pin_nut","mode":"orbit","axial_mm":49.7,"orbit_phase_degrees":-174.810852906765,"local_axis":"z","axis_direction":-1,"clock_degrees":0.0,"clock_step_degrees":120.0}
|
||||
]
|
||||
},
|
||||
"definitions": [
|
||||
{"id":"motor_3500","family":"replaceable_motor_module","generator":"simplecadapi.std.planetary_joint.make_motor_module_rassembly","source_mode":"cots_step","maturity":"cots_step_verified","cots_asset":{"path":"simplecadapi/std/assets/3500-Motor_part2.cots.step","sha256":"fc132c44ab95e395aa444942303856534708ac7e50098dd006401b0a7830697d","solid_count":46,"geometry_editability":"immutable"},"connectors":[{"id":"mount","kind":"mount"},{"id":"output_axis","kind":"revolute_axis"}]},
|
||||
{"id":"back_plate","family":"windowed_annular_plate","generator":"simplecadapi.std.planetary_joint.make_back_plate_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"frame"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"},{"id":"controller_mount","kind":"mount"}]},
|
||||
{"id":"bearing_retainer","family":"counterbored_retainer_ring","generator":"simplecadapi.std.planetary_joint.make_bearing_retainer_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"frame"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]},
|
||||
{"id":"carrier_bearing","family":"radial_bearing","generator":"simplecadapi.std.bearing.make_bearing_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"bearing_seat"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]},
|
||||
{"id":"carrier_inner","family":"planet_carrier_plate","generator":"simplecadapi.std.planetary_joint.make_carrier_inner_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"revolute_axis"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"},{"id":"outer_pair","kind":"mount"},{"id":"planet_axis_0","kind":"revolute_axis"},{"id":"planet_axis_1","kind":"revolute_axis"},{"id":"planet_axis_2","kind":"revolute_axis"}]},
|
||||
{"id":"carrier_outer","family":"planet_carrier_plate","generator":"simplecadapi.std.planetary_joint.make_carrier_outer_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"revolute_axis"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"},{"id":"planet_axis_0","kind":"revolute_axis"},{"id":"planet_axis_1","kind":"revolute_axis"},{"id":"planet_axis_2","kind":"revolute_axis"}]},
|
||||
{"id":"magnet","family":"cylindrical_magnet","generator":"simplecadapi.std.planetary_joint.make_magnet_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"shaft_hub"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]},
|
||||
{"id":"magnet_holder","family":"slotted_shaft_hub","generator":"simplecadapi.std.planetary_joint.make_magnet_holder_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"shaft_hub"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"},{"id":"magnet_seat","kind":"shaft_hub"}]},
|
||||
{"id":"main_case","family":"windowed_cylindrical_cage","generator":"simplecadapi.std.planetary_joint.make_main_case_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"frame"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"},{"id":"stage_axis","kind":"gear_axis"},{"id":"sun_axis","kind":"gear_axis"},{"id":"carrier_inner_mount","kind":"revolute_axis"},{"id":"carrier_outer_mount","kind":"mount"},{"id":"motor_mount","kind":"mount"},{"id":"magnet_holder_mount","kind":"mount"},{"id":"bearing_mount","kind":"bearing_seat"},{"id":"retainer_mount","kind":"mount"},{"id":"back_plate_mount","kind":"mount"}]},
|
||||
{"id":"mf128_bearing","family":"flanged_radial_bearing","generator":"simplecadapi.std.planetary_joint.make_bearing_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"bearing_seat"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"},{"id":"gear_seat","kind":"bearing_seat"}]},
|
||||
{"id":"controller_mount","family":"four_arm_controller_mount","generator":"simplecadapi.std.planetary_joint.make_controller_mount_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"frame"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]},
|
||||
{"id":"coupling","family":"shaft_hub_coupling","generator":"simplecadapi.std.planetary_joint.make_motor_coupling_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"shaft_hub"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"},{"id":"sun_seat","kind":"shaft_hub"}]},
|
||||
{"id":"planet_gear","family":"involute_spur_gear","generator":"simplecadapi.std.planetary_joint.make_planet_gear_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"gear_axis"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]},
|
||||
{"id":"planet_pin_nut","family":"stepped_planet_pin","generator":"simplecadapi.std.planetary_joint.make_planet_pin_nut_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"revolute_axis"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]},
|
||||
{"id":"ring_gear","family":"involute_internal_ring_gear","generator":"simplecadapi.std.planetary_joint.make_ring_gear_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"gear_axis"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]},
|
||||
{"id":"sun_gear","family":"involute_spur_gear","generator":"simplecadapi.std.planetary_joint.make_sun_gear_rpart","source_mode":"formula_std","maturity":"formula_verified","connectors":[{"id":"axis","kind":"gear_axis"},{"id":"bottom","kind":"mount"},{"id":"top","kind":"mount"}]}
|
||||
],
|
||||
"instances": [
|
||||
{"id":"motor","definition_id":"motor_3500"},{"id":"back_plate","definition_id":"back_plate"},{"id":"bearing_retainer","definition_id":"bearing_retainer"},{"id":"carrier_bearing","definition_id":"carrier_bearing"},{"id":"carrier_inner","definition_id":"carrier_inner"},{"id":"carrier_outer","definition_id":"carrier_outer"},{"id":"magnet","definition_id":"magnet"},{"id":"magnet_holder","definition_id":"magnet_holder"},{"id":"main_case","definition_id":"main_case"},{"id":"controller_mount","definition_id":"controller_mount"},{"id":"motor_coupling","definition_id":"coupling"},{"id":"ring_gear","definition_id":"ring_gear"},{"id":"sun_gear","definition_id":"sun_gear"},
|
||||
{"id":"planet_0","definition_id":"planet_gear","pattern_index":0},{"id":"planet_1","definition_id":"planet_gear","pattern_index":1},{"id":"planet_2","definition_id":"planet_gear","pattern_index":2},
|
||||
{"id":"planet_bearing_0","definition_id":"mf128_bearing","pattern_index":0},{"id":"planet_bearing_1","definition_id":"mf128_bearing","pattern_index":1},{"id":"planet_bearing_2","definition_id":"mf128_bearing","pattern_index":2},
|
||||
{"id":"planet_pin_nut_0","definition_id":"planet_pin_nut","pattern_index":0},{"id":"planet_pin_nut_1","definition_id":"planet_pin_nut","pattern_index":1},{"id":"planet_pin_nut_2","definition_id":"planet_pin_nut","pattern_index":2}
|
||||
],
|
||||
"expected_definition_counts": [
|
||||
{"definition_id":"motor_3500","count":1},{"definition_id":"back_plate","count":1},{"definition_id":"bearing_retainer","count":1},{"definition_id":"carrier_bearing","count":1},{"definition_id":"carrier_inner","count":1},{"definition_id":"carrier_outer","count":1},{"definition_id":"magnet","count":1},{"definition_id":"magnet_holder","count":1},{"definition_id":"main_case","count":1},{"definition_id":"mf128_bearing","count":3},{"definition_id":"controller_mount","count":1},{"definition_id":"coupling","count":1},{"definition_id":"planet_gear","count":3},{"definition_id":"planet_pin_nut","count":3},{"definition_id":"ring_gear","count":1},{"definition_id":"sun_gear","count":1}
|
||||
],
|
||||
"assembly_root_instance_id": "main_case",
|
||||
"assembly_relations": [
|
||||
{"id":"case_ring","type":"fixed","a":{"instance_id":"main_case","connector_id":"stage_axis"},"b":{"instance_id":"ring_gear","connector_id":"axis"}},
|
||||
{"id":"case_sun","type":"revolute","motion_role":"input","a":{"instance_id":"main_case","connector_id":"sun_axis"},"b":{"instance_id":"sun_gear","connector_id":"axis"}},
|
||||
{"id":"case_carrier","type":"revolute","motion_role":"output","a":{"instance_id":"main_case","connector_id":"carrier_inner_mount"},"b":{"instance_id":"carrier_inner","connector_id":"axis"}},
|
||||
{"id":"carrier_pair","type":"fixed","a":{"instance_id":"carrier_inner","connector_id":"outer_pair"},"b":{"instance_id":"carrier_outer","connector_id":"bottom"}},
|
||||
{"id":"case_motor","type":"fixed","a":{"instance_id":"main_case","connector_id":"motor_mount"},"b":{"instance_id":"motor","connector_id":"mount"}},
|
||||
{"id":"motor_coupling","type":"coaxial","a":{"instance_id":"motor","connector_id":"output_axis"},"b":{"instance_id":"motor_coupling","connector_id":"axis"}},
|
||||
{"id":"coupling_sun","type":"shaft_hub","a":{"instance_id":"motor_coupling","connector_id":"sun_seat"},"b":{"instance_id":"sun_gear","connector_id":"bottom"}},
|
||||
{"id":"case_back_plate","type":"fixed","a":{"instance_id":"main_case","connector_id":"back_plate_mount"},"b":{"instance_id":"back_plate","connector_id":"top"}},
|
||||
{"id":"back_controller","type":"fixed","a":{"instance_id":"back_plate","connector_id":"controller_mount"},"b":{"instance_id":"controller_mount","connector_id":"bottom"}},
|
||||
{"id":"case_retainer","type":"fixed","a":{"instance_id":"main_case","connector_id":"retainer_mount"},"b":{"instance_id":"bearing_retainer","connector_id":"bottom"}},
|
||||
{"id":"retainer_bearing","type":"bearing_support","a":{"instance_id":"main_case","connector_id":"bearing_mount"},"b":{"instance_id":"carrier_bearing","connector_id":"bottom"}},
|
||||
{"id":"carrier_holder","type":"fixed","a":{"instance_id":"main_case","connector_id":"magnet_holder_mount"},"b":{"instance_id":"magnet_holder","connector_id":"bottom"}},
|
||||
{"id":"holder_magnet","type":"coaxial","a":{"instance_id":"magnet_holder","connector_id":"magnet_seat"},"b":{"instance_id":"magnet","connector_id":"bottom"}},
|
||||
{"id":"p0_carrier","type":"revolute","motion_role":"planet_spin","phase_offset_degrees":-64.53167251667816,"a":{"instance_id":"carrier_outer","connector_id":"planet_axis_0"},"b":{"instance_id":"planet_0","connector_id":"axis"}},
|
||||
{"id":"p1_carrier","type":"revolute","motion_role":"planet_spin","phase_offset_degrees":-37.44500372242583,"a":{"instance_id":"carrier_outer","connector_id":"planet_axis_1"},"b":{"instance_id":"planet_1","connector_id":"axis"}},
|
||||
{"id":"p2_carrier","type":"revolute","motion_role":"planet_spin","phase_offset_degrees":-73.5259251169227,"a":{"instance_id":"carrier_outer","connector_id":"planet_axis_2"},"b":{"instance_id":"planet_2","connector_id":"axis"}},
|
||||
{"id":"p0_bearing","type":"bearing_support","phase_offset_degrees":36.00649279656336,"a":{"instance_id":"planet_0","connector_id":"bottom"},"b":{"instance_id":"planet_bearing_0","connector_id":"gear_seat"}},
|
||||
{"id":"p1_bearing","type":"bearing_support","phase_offset_degrees":-46.20734049393244,"a":{"instance_id":"planet_1","connector_id":"bottom"},"b":{"instance_id":"planet_bearing_1","connector_id":"gear_seat"}},
|
||||
{"id":"p2_bearing","type":"bearing_support","phase_offset_degrees":75.40929304722758,"a":{"instance_id":"planet_2","connector_id":"bottom"},"b":{"instance_id":"planet_bearing_2","connector_id":"gear_seat"}},
|
||||
{"id":"p0_nut","type":"coaxial","phase_offset_degrees":-22.90017962687879,"a":{"instance_id":"carrier_outer","connector_id":"planet_axis_0"},"b":{"instance_id":"planet_pin_nut_0","connector_id":"axis"}},
|
||||
{"id":"p1_nut","type":"coaxial","phase_offset_degrees":34.66246921060146,"a":{"instance_id":"carrier_outer","connector_id":"planet_axis_1"},"b":{"instance_id":"planet_pin_nut_1","connector_id":"axis"}},
|
||||
{"id":"p2_nut","type":"coaxial","phase_offset_degrees":-169.91053711858657,"a":{"instance_id":"carrier_outer","connector_id":"planet_axis_2"},"b":{"instance_id":"planet_pin_nut_2","connector_id":"axis"}}
|
||||
],
|
||||
"transmission": {
|
||||
"type":"simple_planetary","module_mm":0.8,"pressure_angle_deg":20.0,
|
||||
"teeth":{"sun":20,"planet":40,"ring":100},"planet_count":3,
|
||||
"center_radius_mm":24.0,"center_tolerance_mm":0.01,
|
||||
"fixed_member":"ring_gear","input_member":"sun_gear","output_member":"carrier",
|
||||
"fixed_ring_ratio":6.0,"ratio_tolerance":0.000001,
|
||||
"meshes":[
|
||||
{"id":"sun_p0","type":"external","a":"sun_gear","b":"planet_0","backlash_mm":0.02},{"id":"sun_p1","type":"external","a":"sun_gear","b":"planet_1","backlash_mm":0.02},{"id":"sun_p2","type":"external","a":"sun_gear","b":"planet_2","backlash_mm":0.02},
|
||||
{"id":"ring_p0","type":"internal","a":"ring_gear","b":"planet_0","backlash_mm":0.02},{"id":"ring_p1","type":"internal","a":"ring_gear","b":"planet_1","backlash_mm":0.02},{"id":"ring_p2","type":"internal","a":"ring_gear","b":"planet_2","backlash_mm":0.02}
|
||||
]
|
||||
},
|
||||
"public_connectors": [
|
||||
{"id":"housing_mount","source":{"instance_id":"main_case","connector_id":"bottom"}},
|
||||
{"id":"input_axis","source":{"instance_id":"motor","connector_id":"output_axis"}},
|
||||
{"id":"output_axis","source":{"instance_id":"carrier_inner","connector_id":"axis"}}
|
||||
],
|
||||
"interference_contract": {
|
||||
"policy":"no_unlisted_positive_volume",
|
||||
"volume_tolerance_mm3":0.000000001,
|
||||
"motion_samples_degrees":[0.0,18.0,36.0,54.0,72.0],
|
||||
"designed_interference_fits":[
|
||||
{
|
||||
"id":"case_ring_press_fit",
|
||||
"a":"main_case",
|
||||
"b":"ring_gear",
|
||||
"type":"source_matched_press_fit",
|
||||
"target_volume_mm3":0.8802681242104882,
|
||||
"volume_tolerance_mm3":0.000001,
|
||||
"evidence":"teacher parts at independently verified teacher assembly pose"
|
||||
}
|
||||
]
|
||||
},
|
||||
"verification": {"default_geometry":"strict_brep","assembly":"connector_residuals_and_collision","motion":"willis_residual_and_interference_sweep","parameter_sweeps":5},
|
||||
"runtime_policy": {"teacher_geometry_allowed":false,"absolute_matrix_replay_allowed":false,"source_cad_required":false,"checksum_locked_cots_step_allowed":true}
|
||||
}
|
||||
@@ -1,256 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://simplecad.local/schemas/planetary-joint-sop-v2.schema.json",
|
||||
"title": "SimpleCAD planetary-joint executable SOP V2",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"schema", "design_id", "units", "axis_convention", "assembly_layout", "definitions",
|
||||
"instances", "expected_definition_counts", "assembly_root_instance_id", "assembly_relations",
|
||||
"transmission", "public_connectors", "interference_contract", "verification", "runtime_policy"
|
||||
],
|
||||
"properties": {
|
||||
"schema": {"const": "simplecad.std.planetary_joint.sop.v2"},
|
||||
"design_id": {"type": "string", "minLength": 1},
|
||||
"units": {"const": "millimetre_degree"},
|
||||
"axis_convention": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["main_axis", "radial_plane", "right_handed"],
|
||||
"properties": {
|
||||
"main_axis": {"enum": ["x", "y", "z"]},
|
||||
"radial_plane": {"enum": ["xy", "yz", "zx"]},
|
||||
"right_handed": {"const": true}
|
||||
}
|
||||
},
|
||||
"assembly_layout": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["method", "calibration_role", "rules"],
|
||||
"properties": {
|
||||
"method": {"const": "semantic_axial_orbit"},
|
||||
"calibration_role": {"const": "offline_dimensions_only"},
|
||||
"rules": {
|
||||
"type": "array", "minItems": 16,
|
||||
"items": {"$ref": "#/$defs/layout_rule"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"type": "array", "minItems": 16, "maxItems": 16,
|
||||
"items": {"$ref": "#/$defs/definition"}
|
||||
},
|
||||
"instances": {
|
||||
"type": "array", "minItems": 22, "maxItems": 22,
|
||||
"items": {"$ref": "#/$defs/instance"}
|
||||
},
|
||||
"expected_definition_counts": {
|
||||
"type": "array", "minItems": 16, "maxItems": 16,
|
||||
"items": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["definition_id", "count"],
|
||||
"properties": {
|
||||
"definition_id": {"type": "string", "minLength": 1},
|
||||
"count": {"type": "integer", "minimum": 1}
|
||||
}
|
||||
}
|
||||
},
|
||||
"assembly_root_instance_id": {"type": "string", "minLength": 1},
|
||||
"assembly_relations": {
|
||||
"type": "array", "minItems": 1,
|
||||
"items": {"$ref": "#/$defs/relation"}
|
||||
},
|
||||
"transmission": {"$ref": "#/$defs/transmission"},
|
||||
"public_connectors": {
|
||||
"type": "array", "minItems": 3, "maxItems": 3,
|
||||
"items": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["id", "source"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"source": {"$ref": "#/$defs/endpoint"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"interference_contract": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["policy", "volume_tolerance_mm3", "motion_samples_degrees", "designed_interference_fits"],
|
||||
"properties": {
|
||||
"policy": {"const": "no_unlisted_positive_volume"},
|
||||
"volume_tolerance_mm3": {"type": "number", "minimum": 0},
|
||||
"motion_samples_degrees": {
|
||||
"type": "array", "minItems": 2, "uniqueItems": true,
|
||||
"items": {"type": "number"}
|
||||
},
|
||||
"designed_interference_fits": {
|
||||
"type": "array", "items": {"$ref": "#/$defs/interference_fit"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"verification": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["default_geometry", "assembly", "motion", "parameter_sweeps"],
|
||||
"properties": {
|
||||
"default_geometry": {"enum": ["strict_brep", "numeric_per_solid", "interface_only"]},
|
||||
"assembly": {"const": "connector_residuals_and_collision"},
|
||||
"motion": {"const": "willis_residual_and_interference_sweep"},
|
||||
"parameter_sweeps": {"type": "integer", "minimum": 2}
|
||||
}
|
||||
},
|
||||
"runtime_policy": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["teacher_geometry_allowed", "absolute_matrix_replay_allowed", "source_cad_required", "checksum_locked_cots_step_allowed"],
|
||||
"properties": {
|
||||
"teacher_geometry_allowed": {"const": false},
|
||||
"absolute_matrix_replay_allowed": {"const": false},
|
||||
"source_cad_required": {"const": false},
|
||||
"checksum_locked_cots_step_allowed": {"const": true}
|
||||
}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"layout_rule": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["selector", "mode"],
|
||||
"properties": {
|
||||
"selector": {"type": "string", "pattern": "^(instance|definition):[^:]+$"},
|
||||
"mode": {"enum": ["root", "coaxial", "orbit"]},
|
||||
"axial_mm": {"type": "number"},
|
||||
"radial_mm": {"type": "number", "minimum": 0},
|
||||
"radial_angle_degrees": {"type": "number"},
|
||||
"orbit_phase_degrees": {"type": "number"},
|
||||
"local_axis": {"enum": ["x", "y", "z"]},
|
||||
"axis_direction": {"enum": [-1, 1]},
|
||||
"clock_degrees": {"type": "number"},
|
||||
"clock_step_degrees": {"type": "number"}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {"properties": {"mode": {"const": "root"}}},
|
||||
"then": {"required": ["selector", "mode"]},
|
||||
"else": {"required": ["axial_mm", "local_axis", "axis_direction", "clock_degrees"]}
|
||||
},
|
||||
{
|
||||
"if": {"properties": {"mode": {"const": "orbit"}}},
|
||||
"then": {"required": ["orbit_phase_degrees", "clock_step_degrees"]}
|
||||
}
|
||||
]
|
||||
},
|
||||
"connector": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["id", "kind"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"kind": {"enum": ["frame", "revolute_axis", "mount", "gear_axis", "bearing_seat", "shaft_hub"]}
|
||||
}
|
||||
},
|
||||
"definition": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["id", "family", "generator", "source_mode", "maturity", "connectors"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"family": {"type": "string", "minLength": 1},
|
||||
"generator": {"type": "string", "pattern": "^simplecadapi\\.std\\."},
|
||||
"source_mode": {"enum": ["formula_std", "cots_step"]},
|
||||
"maturity": {"enum": ["formula_verified", "formula_provisional", "cots_step_verified"]},
|
||||
"cots_asset": {"$ref": "#/$defs/cots_asset"},
|
||||
"connectors": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/connector"}}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {"properties": {"source_mode": {"const": "cots_step"}}},
|
||||
"then": {"required": ["cots_asset"], "properties": {"maturity": {"const": "cots_step_verified"}}},
|
||||
"else": {"not": {"required": ["cots_asset"]}}
|
||||
}
|
||||
]
|
||||
},
|
||||
"cots_asset": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["path", "sha256", "solid_count", "geometry_editability"],
|
||||
"properties": {
|
||||
"path": {"type": "string", "pattern": "^[^/].*\\.step$"},
|
||||
"sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"solid_count": {"type": "integer", "minimum": 1},
|
||||
"geometry_editability": {"const": "immutable"}
|
||||
}
|
||||
},
|
||||
"instance": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["id", "definition_id"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"definition_id": {"type": "string", "minLength": 1},
|
||||
"pattern_index": {"type": "integer", "minimum": 0}
|
||||
}
|
||||
},
|
||||
"endpoint": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["instance_id", "connector_id"],
|
||||
"properties": {
|
||||
"instance_id": {"type": "string", "minLength": 1},
|
||||
"connector_id": {"type": "string", "minLength": 1}
|
||||
}
|
||||
},
|
||||
"relation": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["id", "type", "a", "b"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"type": {"enum": ["fixed", "revolute", "bearing_support", "shaft_hub", "coaxial"]},
|
||||
"a": {"$ref": "#/$defs/endpoint"},
|
||||
"b": {"$ref": "#/$defs/endpoint"},
|
||||
"motion_role": {"enum": ["input", "output", "planet_spin", "free"]},
|
||||
"phase_offset_degrees": {"type": "number"}
|
||||
}
|
||||
},
|
||||
"interference_fit": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["id", "a", "b", "type", "target_volume_mm3", "volume_tolerance_mm3", "evidence"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"a": {"type": "string", "minLength": 1},
|
||||
"b": {"type": "string", "minLength": 1},
|
||||
"type": {"const": "source_matched_press_fit"},
|
||||
"target_volume_mm3": {"type": "number", "exclusiveMinimum": 0},
|
||||
"volume_tolerance_mm3": {"type": "number", "minimum": 0},
|
||||
"evidence": {"type": "string", "minLength": 1}
|
||||
}
|
||||
},
|
||||
"mesh": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["id", "type", "a", "b", "backlash_mm"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"type": {"enum": ["external", "internal"]},
|
||||
"a": {"type": "string", "minLength": 1},
|
||||
"b": {"type": "string", "minLength": 1},
|
||||
"backlash_mm": {"type": "number", "minimum": 0}
|
||||
}
|
||||
},
|
||||
"transmission": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["type", "module_mm", "pressure_angle_deg", "teeth", "planet_count", "center_radius_mm", "center_tolerance_mm", "fixed_member", "input_member", "output_member", "fixed_ring_ratio", "ratio_tolerance", "meshes"],
|
||||
"properties": {
|
||||
"type": {"const": "simple_planetary"},
|
||||
"module_mm": {"type": "number", "exclusiveMinimum": 0},
|
||||
"pressure_angle_deg": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 90},
|
||||
"teeth": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["sun", "planet", "ring"],
|
||||
"properties": {
|
||||
"sun": {"type": "integer", "minimum": 6},
|
||||
"planet": {"type": "integer", "minimum": 6},
|
||||
"ring": {"type": "integer", "minimum": 12}
|
||||
}
|
||||
},
|
||||
"planet_count": {"type": "integer", "minimum": 2},
|
||||
"center_radius_mm": {"type": "number", "exclusiveMinimum": 0},
|
||||
"center_tolerance_mm": {"type": "number", "minimum": 0},
|
||||
"fixed_member": {"const": "ring_gear"},
|
||||
"input_member": {"const": "sun_gear"},
|
||||
"output_member": {"const": "carrier"},
|
||||
"fixed_ring_ratio": {"type": "number", "exclusiveMinimum": 1},
|
||||
"ratio_tolerance": {"type": "number", "minimum": 0},
|
||||
"meshes": {"type": "array", "minItems": 6, "maxItems": 6, "items": {"$ref": "#/$defs/mesh"}}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user