Split project into frontend and backend
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,190 @@
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
import math
|
||||
|
||||
import cadquery as cq
|
||||
|
||||
|
||||
# All dimensions are millimetres. The main body is a revolved radial section.
|
||||
INNER_BOTTOM_RADIUS = 60.0
|
||||
INNER_STEP_RADIUS = 57.5
|
||||
INNER_SHOULDER_RADIUS = 70.0
|
||||
INNER_WALL_RADIUS = 79.0
|
||||
BOTTOM_OUTER_RADIUS = 77.5
|
||||
BODY_OUTER_RADIUS = 82.5
|
||||
TOP_OUTER_RADIUS = 85.0
|
||||
BASE_MIN_Z = -18.0
|
||||
BASE_MAX_Z = 92.0
|
||||
BASE_HEIGHT = BASE_MAX_Z - BASE_MIN_Z
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class HousingScale:
|
||||
radial_scale: float = 1.0
|
||||
axial_scale: float = 1.0
|
||||
source: str = "default_template_scale"
|
||||
|
||||
|
||||
def scaled_dimensions(scale: HousingScale) -> dict[str, float]:
|
||||
return {
|
||||
"inner_bottom_radius": INNER_BOTTOM_RADIUS * scale.radial_scale,
|
||||
"inner_step_radius": INNER_STEP_RADIUS * scale.radial_scale,
|
||||
"inner_shoulder_radius": INNER_SHOULDER_RADIUS * scale.radial_scale,
|
||||
"inner_wall_radius": INNER_WALL_RADIUS * scale.radial_scale,
|
||||
"bottom_outer_radius": BOTTOM_OUTER_RADIUS * scale.radial_scale,
|
||||
"body_outer_radius": BODY_OUTER_RADIUS * scale.radial_scale,
|
||||
"top_outer_radius": TOP_OUTER_RADIUS * scale.radial_scale,
|
||||
"min_z": BASE_MIN_Z * scale.axial_scale,
|
||||
"max_z": BASE_MAX_Z * scale.axial_scale,
|
||||
"height": BASE_HEIGHT * scale.axial_scale,
|
||||
"radial_scale": scale.radial_scale,
|
||||
"axial_scale": scale.axial_scale,
|
||||
"source": scale.source,
|
||||
}
|
||||
|
||||
|
||||
def scale_from_motor(
|
||||
*,
|
||||
motor_radial_diameter_mm: float,
|
||||
motor_axis_length_mm: float,
|
||||
radial_clearance_mm: float = 14.0,
|
||||
reducer_axial_allowance_mm: float = 42.0,
|
||||
min_radial_scale: float = 0.45,
|
||||
max_radial_scale: float = 1.50,
|
||||
min_axial_scale: float = 0.55,
|
||||
max_axial_scale: float = 1.80,
|
||||
) -> HousingScale:
|
||||
target_inner_radius = motor_radial_diameter_mm / 2.0 + radial_clearance_mm
|
||||
radial_scale = target_inner_radius / INNER_WALL_RADIUS
|
||||
target_height = motor_axis_length_mm + reducer_axial_allowance_mm
|
||||
axial_scale = target_height / BASE_HEIGHT
|
||||
return HousingScale(
|
||||
radial_scale=max(min_radial_scale, min(max_radial_scale, radial_scale)),
|
||||
axial_scale=max(min_axial_scale, min(max_axial_scale, axial_scale)),
|
||||
source="computed_from_motor_bbox",
|
||||
)
|
||||
|
||||
|
||||
def _polar_points(radius: float, start_degrees: float, count: int):
|
||||
return [
|
||||
(
|
||||
radius * math.cos(math.radians(start_degrees + 360.0 * index / count)),
|
||||
radius * math.sin(math.radians(start_degrees + 360.0 * index / count)),
|
||||
)
|
||||
for index in range(count)
|
||||
]
|
||||
|
||||
|
||||
def _radial_point(radius: float, angle_degrees: float, z: float) -> cq.Vector:
|
||||
angle = math.radians(angle_degrees)
|
||||
return cq.Vector(radius * math.cos(angle), radius * math.sin(angle), z)
|
||||
|
||||
|
||||
def _radial_direction(angle_degrees: float) -> cq.Vector:
|
||||
angle = math.radians(angle_degrees)
|
||||
return cq.Vector(math.cos(angle), math.sin(angle), 0.0)
|
||||
|
||||
|
||||
def build_body(scale: HousingScale = HousingScale()):
|
||||
rd = scale.radial_scale
|
||||
zd = scale.axial_scale
|
||||
|
||||
def r(value: float) -> float:
|
||||
return value * rd
|
||||
|
||||
def z(value: float) -> float:
|
||||
return value * zd
|
||||
|
||||
# Exact circular-arc midpoints for the two revolved outer blends.
|
||||
lower_arc_mid = (r(78.8397459621556), z(-8.66025403784439))
|
||||
upper_arc_mid = (r(83.1458565330652), z(71.9211556282713))
|
||||
|
||||
radial_section = (
|
||||
cq.Workplane("XZ")
|
||||
.moveTo(r(INNER_BOTTOM_RADIUS), z(-18.0))
|
||||
.lineTo(r(BOTTOM_OUTER_RADIUS), z(-18.0))
|
||||
.lineTo(r(BOTTOM_OUTER_RADIUS), z(-13.6602540378))
|
||||
.threePointArc(lower_arc_mid, (r(BODY_OUTER_RADIUS), z(-5.0)))
|
||||
.lineTo(r(BODY_OUTER_RADIUS), z(68.3856217223))
|
||||
.threePointArc(upper_arc_mid, (r(TOP_OUTER_RADIUS), z(75.0)))
|
||||
.lineTo(r(TOP_OUTER_RADIUS), z(92.0))
|
||||
.lineTo(r(INNER_WALL_RADIUS), z(92.0))
|
||||
.lineTo(r(INNER_WALL_RADIUS), z(0.0))
|
||||
.lineTo(r(INNER_SHOULDER_RADIUS), z(0.0))
|
||||
.lineTo(r(INNER_SHOULDER_RADIUS), z(-3.0))
|
||||
.lineTo(r(INNER_STEP_RADIUS), z(-3.0))
|
||||
.lineTo(r(INNER_STEP_RADIUS), z(-5.0))
|
||||
.lineTo(r(INNER_BOTTOM_RADIUS), z(-5.0))
|
||||
.close()
|
||||
)
|
||||
return radial_section.revolve(360.0, (0.0, 0.0), (0.0, 1.0))
|
||||
|
||||
|
||||
def build(scale: HousingScale = HousingScale()):
|
||||
rd = scale.radial_scale
|
||||
zd = scale.axial_scale
|
||||
|
||||
def r(value: float) -> float:
|
||||
return value * rd
|
||||
|
||||
def z(value: float) -> float:
|
||||
return value * zd
|
||||
|
||||
part = build_body(scale)
|
||||
|
||||
# Ten Ø5 blind drilled holes, equally spaced on a Ø135 pitch circle.
|
||||
drill_tip_height = z(1.5021515475689)
|
||||
for x, y in _polar_points(r(67.5), 18.0, 10):
|
||||
straight_hole = cq.Solid.makeCylinder(
|
||||
r(2.5), z(10.0), cq.Vector(x, y, z(-18.0)), cq.Vector(0.0, 0.0, 1.0)
|
||||
)
|
||||
drill_tip = cq.Solid.makeCone(
|
||||
r(2.5),
|
||||
0.0,
|
||||
drill_tip_height,
|
||||
cq.Vector(x, y, z(-8.0)),
|
||||
cq.Vector(0.0, 0.0, 1.0),
|
||||
)
|
||||
part = part.cut(straight_hole).cut(drill_tip)
|
||||
|
||||
# Four Ø2.5 blind holes opening at z=0, with 118-degree drill tips.
|
||||
small_tip_height = z(0.75107577378445)
|
||||
for x, y in _polar_points(r(71.875), 0.0, 4):
|
||||
straight_hole = cq.Solid.makeCylinder(
|
||||
r(1.25), z(4.24892422621555), cq.Vector(x, y, z(0.0)), cq.Vector(0.0, 0.0, -1.0)
|
||||
)
|
||||
drill_tip = cq.Solid.makeCone(
|
||||
r(1.25),
|
||||
0.0,
|
||||
small_tip_height,
|
||||
cq.Vector(x, y, z(-4.24892422621555)),
|
||||
cq.Vector(0.0, 0.0, -1.0),
|
||||
)
|
||||
part = part.cut(straight_hole).cut(drill_tip)
|
||||
|
||||
# Eight radial Ø6.6 holes with 90-degree countersinks around the top rim.
|
||||
for angle in range(0, 360, 45):
|
||||
direction = _radial_direction(float(angle))
|
||||
straight_hole = cq.Solid.makeCylinder(
|
||||
r(3.3), r(3.9), _radial_point(r(78.0), float(angle), z(85.1)), direction
|
||||
)
|
||||
countersink = cq.Solid.makeCone(
|
||||
r(3.3),
|
||||
r(6.4),
|
||||
r(3.1),
|
||||
_radial_point(r(81.9), float(angle), z(85.1)),
|
||||
direction,
|
||||
)
|
||||
part = part.cut(straight_hole).cut(countersink)
|
||||
|
||||
return part
|
||||
|
||||
|
||||
def export_scaled(output: Path, scale: HousingScale) -> None:
|
||||
cq.exporters.export(build(scale), str(output))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
output = Path(__file__).resolve().with_name("gear_housing.step")
|
||||
export_scaled(output, HousingScale())
|
||||
print(output)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"module_type": "planetary_joint_module",
|
||||
"motor_step": "../../assets/motors/3500_motor_part2.step",
|
||||
"housing_step": "../../assets/housings/generated_housing_baseline.step",
|
||||
"reducer_requirement": "../reducers/simple_2k_h/simple_2kh_industrial_ratio_7p5_spur.json",
|
||||
"placement_policy": "infer_then_write_editable_json",
|
||||
"motor_to_reducer_relation": "motor_output_to_sun_keyed_input",
|
||||
"housing_relation": "ring_fixed_to_housing",
|
||||
"joint_output": "carrier_output_shaft",
|
||||
"output_extension_mm": 8.0,
|
||||
"coupling_clearance_mm": 1.0,
|
||||
"input_shaft_insertion_depth_mm": 4.0,
|
||||
"motor_output_side": "axis_max",
|
||||
"axis_angle_tolerance_deg": 0.5,
|
||||
"axis_distance_tolerance_mm": 0.25,
|
||||
"volume_tolerance_mm3": 0.000001
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"module_type": "planetary_joint_module",
|
||||
"motor_step": "../../assets/motors/3500_motor_part2.step",
|
||||
"housing_step": "../../assets/housings/generated_housing_baseline.step",
|
||||
"reducer_requirement": "../reducers/simple_2k_h_cascade/simple_2kh_cascade_ratio_9_spur.json",
|
||||
"placement_policy": "infer_then_write_editable_json",
|
||||
"motor_to_reducer_relation": "motor_output_to_s1_sun_input",
|
||||
"housing_relation": "stage_rings_fixed_to_housing",
|
||||
"joint_output": "s2_carrier_output",
|
||||
"output_extension_mm": 2.0,
|
||||
"coupling_clearance_mm": 0.5,
|
||||
"input_shaft_insertion_depth_mm": 1.0,
|
||||
"motor_output_side": "axis_max",
|
||||
"axis_angle_tolerance_deg": 0.5,
|
||||
"axis_distance_tolerance_mm": 0.25,
|
||||
"volume_tolerance_mm3": 0.000001
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"target_ratio": 531.25,
|
||||
"ratio_tolerance": 0.001,
|
||||
"topology_family": "ferguson_wolfrom",
|
||||
"detail_level": "kinematic_demo",
|
||||
"input": "planet1",
|
||||
"fixed": "static_carrier",
|
||||
"output": "output_carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.25],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 6.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"gear_tooth_counts": {
|
||||
"ring1": 150,
|
||||
"sun1": 102,
|
||||
"planet1": 24,
|
||||
"ring2": 144,
|
||||
"sun2": 96,
|
||||
"planet2": 24
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 1.5,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "ring",
|
||||
"fixed": "sun",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 0.3333333333333333,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "carrier",
|
||||
"fixed": "ring",
|
||||
"output": "sun",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"target_ratio": 2.0,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "carrier",
|
||||
"output": "ring",
|
||||
"tooth_form": "helical",
|
||||
"helix_angle_deg": 15.0,
|
||||
"helix_hand": "right",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 2.0,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "carrier",
|
||||
"output": "ring",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"target_ratio": 7.5,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"detail_level": "industrial_core",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "helical",
|
||||
"helix_angle_deg": 15.0,
|
||||
"helix_hand": "right",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 20,
|
||||
"max_sun_teeth": 20,
|
||||
"min_planet_teeth": 55,
|
||||
"max_planet_teeth": 55
|
||||
}
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"target_ratio": 7.5,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"detail_level": "industrial_core",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 20,
|
||||
"max_sun_teeth": 20,
|
||||
"min_planet_teeth": 55,
|
||||
"max_planet_teeth": 55
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 10.0,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 2.5,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 3.0,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"target_ratio": 3.0,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "helical",
|
||||
"helix_angle_deg": 15.0,
|
||||
"helix_hand": "right",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 3.5,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 4.0,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 5.0,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 6.0,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 7.5,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"target_ratio": 8.0,
|
||||
"ratio_tolerance": 0.01,
|
||||
"topology_family": "simple_2k_h",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3, 4, 5],
|
||||
"module_candidates_mm": [0.5, 0.75, 1.0, 1.25, 1.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 18,
|
||||
"max_sun_teeth": 80,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 160
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"target_ratio": 6.0,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h_cascade",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
},
|
||||
"stages": [
|
||||
{
|
||||
"stage_id": "s1",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5]
|
||||
},
|
||||
{
|
||||
"stage_id": "s2",
|
||||
"input": "sun",
|
||||
"fixed": "carrier",
|
||||
"output": "ring",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5]
|
||||
}
|
||||
],
|
||||
"cascade": {
|
||||
"coupling_policy": "stage_output_to_next_stage_input",
|
||||
"stage_gap_mm": 2.0
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"target_ratio": 9.0,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h_cascade",
|
||||
"tooth_form": "helical",
|
||||
"helix_angle_deg": 15.0,
|
||||
"helix_hand": "right",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
},
|
||||
"stages": [
|
||||
{
|
||||
"stage_id": "s1",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5]
|
||||
},
|
||||
{
|
||||
"stage_id": "s2",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5]
|
||||
}
|
||||
],
|
||||
"cascade": {
|
||||
"coupling_policy": "stage_output_to_next_stage_input",
|
||||
"stage_gap_mm": 2.0
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"target_ratio": 9.0,
|
||||
"ratio_tolerance": 0.000001,
|
||||
"topology_family": "simple_2k_h_cascade",
|
||||
"tooth_form": "spur",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5],
|
||||
"pressure_angle_deg": 20.0,
|
||||
"face_width_mm": 8.0,
|
||||
"backlash_mm": 0.03,
|
||||
"addendum_coeff": 1.0,
|
||||
"clearance_coeff": 0.25,
|
||||
"ring_rim_thickness_mm": 2.5,
|
||||
"constraints": {
|
||||
"max_outer_diameter_mm": 100.0,
|
||||
"min_planet_neighbor_clearance_mm": 0.3,
|
||||
"min_sun_teeth": 36,
|
||||
"max_sun_teeth": 36,
|
||||
"min_planet_teeth": 18,
|
||||
"max_planet_teeth": 18
|
||||
},
|
||||
"stages": [
|
||||
{
|
||||
"stage_id": "s1",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5]
|
||||
},
|
||||
{
|
||||
"stage_id": "s2",
|
||||
"input": "sun",
|
||||
"fixed": "ring",
|
||||
"output": "carrier",
|
||||
"planet_count_candidates": [3],
|
||||
"module_candidates_mm": [0.5]
|
||||
}
|
||||
],
|
||||
"cascade": {
|
||||
"coupling_policy": "stage_output_to_next_stage_input",
|
||||
"stage_gap_mm": 2.0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user