diff --git a/specs/catalog/th_1182945.json b/specs/catalog/th_1182945.json index 7f8d194..d12fae4 100644 --- a/specs/catalog/th_1182945.json +++ b/specs/catalog/th_1182945.json @@ -2,7 +2,7 @@ "id": "th_1182945", "version": "1.0", "name": "Cable Corners... keep cables in corners! [easy]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 19.1 kg load 98 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 19.1 kg load 98 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "petg", "constraints": { "load_newtons": 187.49, diff --git a/specs/catalog/th_1182945_deflection.json b/specs/catalog/th_1182945_deflection.json index fe3f5f4..85e3a33 100644 --- a/specs/catalog/th_1182945_deflection.json +++ b/specs/catalog/th_1182945_deflection.json @@ -2,7 +2,7 @@ "id": "th_1182945_deflection", "version": "1.0", "name": "Cable Corners... keep cables in corners! [easy]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 14.9 kg load 61 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 14.9 kg load 61 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "pla", "constraints": { "load_newtons": 146.25, diff --git a/specs/catalog/th_1182945_dm.json b/specs/catalog/th_1182945_dm.json index d12603a..aef287d 100644 --- a/specs/catalog/th_1182945_dm.json +++ b/specs/catalog/th_1182945_dm.json @@ -2,7 +2,7 @@ "id": "th_1182945_dm", "version": "1.0", "name": "Cable Corners... keep cables in corners! [easy]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 15.3 kg load 65 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 15.3 kg load 65 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "pla", "constraints": { "load_newtons": 150.3, diff --git a/specs/catalog/th_1182945_mass.json b/specs/catalog/th_1182945_mass.json index e75d3bb..655f808 100644 --- a/specs/catalog/th_1182945_mass.json +++ b/specs/catalog/th_1182945_mass.json @@ -2,7 +2,7 @@ "id": "th_1182945_mass", "version": "1.0", "name": "Cable Corners... keep cables in corners! [easy]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 20.8 kg load 70 mm from the wall face. Minimize mass while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 20.8 kg load 70 mm from the wall face. Minimize mass while surviving the load.", "material": "pla", "constraints": { "load_newtons": 204.46, diff --git a/specs/catalog/th_1182945_sw.json b/specs/catalog/th_1182945_sw.json index 824fa24..294101f 100644 --- a/specs/catalog/th_1182945_sw.json +++ b/specs/catalog/th_1182945_sw.json @@ -2,7 +2,7 @@ "id": "th_1182945_sw", "version": "1.0", "name": "Cable Corners... keep cables in corners! [easy]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 15.3 kg load 65 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 15.3 kg load 65 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "pla", "constraints": { "load_newtons": 150.3, diff --git a/specs/catalog/th_2394947.json b/specs/catalog/th_2394947.json index 34e7ca5..efc4546 100644 --- a/specs/catalog/th_2394947.json +++ b/specs/catalog/th_2394947.json @@ -2,7 +2,7 @@ "id": "th_2394947", "version": "1.0", "name": "Shelf Holder Set [easy]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 23.3 kg load 84 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 23.3 kg load 84 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "pla", "constraints": { "load_newtons": 228.26, diff --git a/specs/catalog/th_2394947_deflection.json b/specs/catalog/th_2394947_deflection.json index d7aac79..16a5147 100644 --- a/specs/catalog/th_2394947_deflection.json +++ b/specs/catalog/th_2394947_deflection.json @@ -2,7 +2,7 @@ "id": "th_2394947_deflection", "version": "1.0", "name": "Shelf Holder Set [easy]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 11.8 kg load 72 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 11.8 kg load 72 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "petg", "constraints": { "load_newtons": 115.54, diff --git a/specs/catalog/th_2394947_mass.json b/specs/catalog/th_2394947_mass.json index 5b01108..cb76f5b 100644 --- a/specs/catalog/th_2394947_mass.json +++ b/specs/catalog/th_2394947_mass.json @@ -2,7 +2,7 @@ "id": "th_2394947_mass", "version": "1.0", "name": "Shelf Holder Set [easy]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 10.7 kg load 95 mm from the wall face. Minimize mass while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 10.7 kg load 95 mm from the wall face. Minimize mass while surviving the load.", "material": "pla", "constraints": { "load_newtons": 104.58, diff --git a/specs/generator.py b/specs/generator.py index 922dff6..68c4718 100644 --- a/specs/generator.py +++ b/specs/generator.py @@ -277,7 +277,7 @@ def _name(tier: str, material: str, load_kg: float, arm_mm: float, metric: str = def _description(load_kg: float, arm_mm: float, material: str, tier: str, obj_phrase: str) -> str: mat_label = _MAT_LABEL_LONG.get(material, material) return ( - f"A {tier}-difficulty cantilever bracket in {mat_label}. " + f"A{'n' if tier[0] in 'aeiou' else ''} {tier}-difficulty cantilever bracket in {mat_label}. " f"Mounts flush to a vertical wall and cantilevers a {load_kg:.1f} kg load " f"{arm_mm:.0f} mm from the wall face. {obj_phrase}" ) diff --git a/specs/round_001/r01_001_easy.json b/specs/round_001/r01_001_easy.json index 5322b90..e1283a9 100644 --- a/specs/round_001/r01_001_easy.json +++ b/specs/round_001/r01_001_easy.json @@ -2,7 +2,7 @@ "id": "r01_001_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 15 kg @ 78 mm [easy]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 15.2 kg load 78 mm from the wall face. Minimize mass while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 15.2 kg load 78 mm from the wall face. Minimize mass while surviving the load.", "material": "petg", "constraints": { "load_newtons": 148.66, diff --git a/specs/round_001/r01_002_easy.json b/specs/round_001/r01_002_easy.json index 044ede8..7ae4f1a 100644 --- a/specs/round_001/r01_002_easy.json +++ b/specs/round_001/r01_002_easy.json @@ -2,7 +2,7 @@ "id": "r01_002_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 13 kg @ 79 mm [easy]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 12.6 kg load 79 mm from the wall face. Minimize mass while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 12.6 kg load 79 mm from the wall face. Minimize mass while surviving the load.", "material": "petg", "constraints": { "load_newtons": 123.24, diff --git a/specs/round_001/r01_003_easy.json b/specs/round_001/r01_003_easy.json index 649cdea..4a1d6cb 100644 --- a/specs/round_001/r01_003_easy.json +++ b/specs/round_001/r01_003_easy.json @@ -2,7 +2,7 @@ "id": "r01_003_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 21 kg @ 93 mm [easy]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 21.0 kg load 93 mm from the wall face. Minimize mass while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 21.0 kg load 93 mm from the wall face. Minimize mass while surviving the load.", "material": "petg", "constraints": { "load_newtons": 206.21, diff --git a/specs/round_001/r01_004_easy.json b/specs/round_001/r01_004_easy.json index 973500e..aac4196 100644 --- a/specs/round_001/r01_004_easy.json +++ b/specs/round_001/r01_004_easy.json @@ -2,7 +2,7 @@ "id": "r01_004_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 14 kg @ 89 mm [easy]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 14.3 kg load 89 mm from the wall face. Minimize mass while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 14.3 kg load 89 mm from the wall face. Minimize mass while surviving the load.", "material": "petg", "constraints": { "load_newtons": 140.47, diff --git a/specs/round_001/r01_005_easy.json b/specs/round_001/r01_005_easy.json index 90bca4d..2947583 100644 --- a/specs/round_001/r01_005_easy.json +++ b/specs/round_001/r01_005_easy.json @@ -2,7 +2,7 @@ "id": "r01_005_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PLA \u2014 21 kg @ 90 mm [easy]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 20.7 kg load 90 mm from the wall face. Minimize mass while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 20.7 kg load 90 mm from the wall face. Minimize mass while surviving the load.", "material": "pla", "constraints": { "load_newtons": 203.31, diff --git a/specs/round_002/r02_001_easy.json b/specs/round_002/r02_001_easy.json index 0d0bb4d..5271741 100644 --- a/specs/round_002/r02_001_easy.json +++ b/specs/round_002/r02_001_easy.json @@ -2,7 +2,7 @@ "id": "r02_001_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PLA \u2014 23 kg @ 95 mm [easy, stiffness]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 22.6 kg load 95 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 22.6 kg load 95 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "pla", "constraints": { "load_newtons": 221.56, diff --git a/specs/round_002/r02_002_easy.json b/specs/round_002/r02_002_easy.json index 05364af..1cf598d 100644 --- a/specs/round_002/r02_002_easy.json +++ b/specs/round_002/r02_002_easy.json @@ -2,7 +2,7 @@ "id": "r02_002_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 14 kg @ 84 mm [easy, stiffness]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 13.9 kg load 84 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 13.9 kg load 84 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "petg", "constraints": { "load_newtons": 136.24, diff --git a/specs/round_002/r02_003_easy.json b/specs/round_002/r02_003_easy.json index 25a3cd9..3dbc86a 100644 --- a/specs/round_002/r02_003_easy.json +++ b/specs/round_002/r02_003_easy.json @@ -2,7 +2,7 @@ "id": "r02_003_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 13 kg @ 74 mm [easy, stiffness]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 12.6 kg load 74 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 12.6 kg load 74 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "petg", "constraints": { "load_newtons": 123.42, diff --git a/specs/round_002/r02_004_easy.json b/specs/round_002/r02_004_easy.json index 1dc7e07..d8e5b45 100644 --- a/specs/round_002/r02_004_easy.json +++ b/specs/round_002/r02_004_easy.json @@ -2,7 +2,7 @@ "id": "r02_004_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 15 kg @ 79 mm [easy, stiffness]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 15.2 kg load 79 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 15.2 kg load 79 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "petg", "constraints": { "load_newtons": 149.07, diff --git a/specs/round_002/r02_005_easy.json b/specs/round_002/r02_005_easy.json index 44e8092..05894b3 100644 --- a/specs/round_002/r02_005_easy.json +++ b/specs/round_002/r02_005_easy.json @@ -2,7 +2,7 @@ "id": "r02_005_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 23 kg @ 89 mm [easy, stiffness]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 23.3 kg load 89 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 23.3 kg load 89 mm from the wall face. Maximize stiffness-to-weight ratio while surviving the load.", "material": "petg", "constraints": { "load_newtons": 228.43, diff --git a/specs/round_003/r03_001_easy.json b/specs/round_003/r03_001_easy.json index 76f4207..412ae10 100644 --- a/specs/round_003/r03_001_easy.json +++ b/specs/round_003/r03_001_easy.json @@ -2,7 +2,7 @@ "id": "r03_001_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 14 kg @ 91 mm [easy, deflection]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 14.2 kg load 91 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 14.2 kg load 91 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "petg", "constraints": { "load_newtons": 139.09, diff --git a/specs/round_003/r03_002_easy.json b/specs/round_003/r03_002_easy.json index d61c85d..e5a62b6 100644 --- a/specs/round_003/r03_002_easy.json +++ b/specs/round_003/r03_002_easy.json @@ -2,7 +2,7 @@ "id": "r03_002_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PETG \u2014 15 kg @ 97 mm [easy, deflection]", - "description": "A easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 14.6 kg load 97 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PETG (FDM). Mounts flush to a vertical wall and cantilevers a 14.6 kg load 97 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "petg", "constraints": { "load_newtons": 142.83, diff --git a/specs/round_003/r03_003_easy.json b/specs/round_003/r03_003_easy.json index b184b29..36a39ab 100644 --- a/specs/round_003/r03_003_easy.json +++ b/specs/round_003/r03_003_easy.json @@ -2,7 +2,7 @@ "id": "r03_003_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PLA \u2014 23 kg @ 64 mm [easy, deflection]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 23.1 kg load 64 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 23.1 kg load 64 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "pla", "constraints": { "load_newtons": 227.07, diff --git a/specs/round_003/r03_004_easy.json b/specs/round_003/r03_004_easy.json index 27aa070..8c352d6 100644 --- a/specs/round_003/r03_004_easy.json +++ b/specs/round_003/r03_004_easy.json @@ -2,7 +2,7 @@ "id": "r03_004_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PLA \u2014 14 kg @ 75 mm [easy, deflection]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 13.7 kg load 75 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 13.7 kg load 75 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "pla", "constraints": { "load_newtons": 134.1, diff --git a/specs/round_003/r03_005_easy.json b/specs/round_003/r03_005_easy.json index 8f8c595..edf98c0 100644 --- a/specs/round_003/r03_005_easy.json +++ b/specs/round_003/r03_005_easy.json @@ -2,7 +2,7 @@ "id": "r03_005_easy", "version": "1.0", "name": "Cantilever Bracket \u2014 PLA \u2014 24 kg @ 71 mm [easy, deflection]", - "description": "A easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 23.7 kg load 71 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", + "description": "An easy-difficulty cantilever bracket in PLA (FDM). Mounts flush to a vertical wall and cantilevers a 23.7 kg load 71 mm from the wall face. Minimize tip deflection under load \u2014 maximize absolute stiffness regardless of mass.", "material": "pla", "constraints": { "load_newtons": 232.69,