Skip to content

Commit 504445a

Browse files
committed
Split rails with at least 2 spars supporting
1 parent d695f26 commit 504445a

2 files changed

Lines changed: 21 additions & 9 deletions

File tree

src/components/SideRail.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default class SideRail extends SVGComponent<SideRailProps> {
1313
const thickness = this.props.table.thickness;
1414
const maxLength = this.props.table.trackCutPoint;
1515
const material = this.props.table.material;
16+
const xSparGap = this.props.table.xSparGap;
1617

1718
let pathstr = `M 0 0`
1819
if (length < maxLength) {
@@ -28,16 +29,21 @@ export default class SideRail extends SVGComponent<SideRailProps> {
2829
pathstr += `L ${length - sparInset} ${thickness * 0.75}`;
2930
} else {
3031
let buffer = material / 2;
31-
32-
pathstr += `L ${maxLength} 0`
33-
pathstr += `L ${maxLength} ${thickness}`
32+
let firstLength = maxLength;
33+
const safeCutPoint = xSparGap + (4 * material) + sparInset;
34+
if (length - firstLength < safeCutPoint) {
35+
firstLength = length - safeCutPoint;
36+
}
37+
38+
pathstr += `L ${firstLength} 0`
39+
pathstr += `L ${firstLength} ${thickness}`
3440
pathstr += `L 0 ${thickness}`
3541
pathstr += 'z'
3642

37-
pathstr += `M ${maxLength + buffer} 0`
43+
pathstr += `M ${firstLength + buffer} 0`
3844
pathstr += `L ${length + buffer} 0`
3945
pathstr += `L ${length + buffer} ${thickness}`
40-
pathstr += `L ${maxLength + buffer} ${thickness}`
46+
pathstr += `L ${firstLength + buffer} ${thickness}`
4147
pathstr += 'z'
4248

4349
pathstr += `M ${sparInset} ${thickness * 0.25}`;

src/components/TopRail.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,28 @@ export default class TopRail extends SVGComponent<TopRailProps> {
1515
const trackWidth = this.props.table.trackWidth;
1616
const holeSize = this.props.table.holeSize;
1717
const material = this.props.table.material;
18+
const xSparGap = this.props.table.xSparGap;
1819
const buffer = length > maxLength ? material / 2 : 0;
1920
let [yFrontSetback, yFrontFirstX, yFrontSecondX] = this.props.table.frontHoleCoordinates;
2021
let [yBackFirstSetback, yBackSecondSetback, yBackFirstX, yBackSecondX] = this.props.table.backHoleCoordinates;
2122

2223
let pathstr = `M 0 0`
2324

2425
if (length > maxLength) {
25-
pathstr += `L ${maxLength} 0`
26-
pathstr += `L ${maxLength} ${trackWidth}`
26+
let firstLength = maxLength;
27+
const safeCutPoint = xSparGap + (4 * material) + sparInset;
28+
if (length - firstLength < safeCutPoint) {
29+
firstLength = length - safeCutPoint;
30+
}
31+
pathstr += `L ${firstLength} 0`
32+
pathstr += `L ${firstLength} ${trackWidth}`
2733
pathstr += `L 0 ${trackWidth}`
2834
pathstr += 'z'
2935

30-
pathstr += `M ${maxLength + buffer} 0`
36+
pathstr += `M ${firstLength + buffer} 0`
3137
pathstr += `L ${length + buffer} 0`
3238
pathstr += `L ${length + buffer} ${trackWidth}`
33-
pathstr += `L ${maxLength + buffer} ${trackWidth}`
39+
pathstr += `L ${firstLength + buffer} ${trackWidth}`
3440
pathstr += 'z'
3541

3642
pathstr += `M ${sparInset} ${trackWidth * 0.25}`;

0 commit comments

Comments
 (0)