feat(abut): 벽체 높이 H_w = 받침 ① 교좌면 ~ 흉벽 상단 연직 (기본 3326)
- 사용자 도면(2026-11-04): 받침 ① 위치에서 받침 ① 교좌면부터 흉벽 상단까지 연직 거리. 모든 교대 기본값 3326 (QA-4 가정 2500 대체) - 입력 이름 "벽체 높이 · 받침 ① 기준 연직", ② 정면도에 받침 ① 기준선과 H_w 치수 - ③ 흉벽 철근표 대표 단면 = 받침 ① 위치 (P1–P3는 그 단면에서 정확히 계산) - 테스트: 흉벽 상단 IP1 48.006 / IP3 47.661 등 + 0.826 반영, 교대흉벽철근.md §11 재현은 2500을 넣어 유지, 3326 기본 확인 (P1 3945) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
51a36669a8
commit
5e64a4f2ed
17 files changed
+125
-71
No files matched your search
+15
-15
@@ -39,20 +39,20 @@ describe('교대 A2 합성 · 날개벽 (AA3b, spec_abut §10.2)', () => {
|
||||
const members = buildMembers(model, { bottomEl: 40.895, pileLengthMm: 21600 });
|
||||
const [left, right] = buildWings(model, members);
|
||||
|
||||
it('좌 날개벽 (① 쪽, IP1 끝): top 46.838 at the start, 46.714 at the end, bottom end 45.214', () => {
|
||||
it('좌 날개벽 (① 쪽, IP1 끝): top 47.664 at the start, 47.540 at the end, bottom end 46.040', () => {
|
||||
expect(left.side).toBe('left');
|
||||
expect(left.sEnd).toBeCloseTo(0, 9);
|
||||
expect(left.topStartEl).toBeCloseTo(46.838, 2);
|
||||
expect(left.topEndEl).toBeCloseTo(46.714, 2);
|
||||
expect(left.bottomEndEl).toBeCloseTo(45.214, 2);
|
||||
expect(left.topStartEl).toBeCloseTo(47.664, 2);
|
||||
expect(left.topEndEl).toBeCloseTo(47.540, 2);
|
||||
expect(left.bottomEndEl).toBeCloseTo(46.040, 2);
|
||||
});
|
||||
|
||||
it('우 날개벽 (⑤ 쪽, IP3 끝): top 47.183 → 47.059, bottom end 45.559', () => {
|
||||
it('우 날개벽 (⑤ 쪽, IP3 끝): top 48.009 → 47.885, bottom end 46.385', () => {
|
||||
expect(right.side).toBe('right');
|
||||
expect(right.sEnd).toBeCloseTo(model.length, 9);
|
||||
expect(right.topStartEl).toBeCloseTo(47.183, 2);
|
||||
expect(right.topEndEl).toBeCloseTo(47.059, 2);
|
||||
expect(right.bottomEndEl).toBeCloseTo(45.559, 2);
|
||||
expect(right.topStartEl).toBeCloseTo(48.009, 2);
|
||||
expect(right.topEndEl).toBeCloseTo(47.885, 2);
|
||||
expect(right.bottomEndEl).toBeCloseTo(46.385, 2);
|
||||
});
|
||||
|
||||
it('the wing is 6.5 m long along the wing line and 0.45 m thick inward', () => {
|
||||
@@ -90,7 +90,7 @@ describe('교대 A1 날개벽 (운곡교P1입력.xlsx)', () => {
|
||||
expect(wings.map((w) => w.side)).toEqual(['left', 'right']);
|
||||
const left = wings[0];
|
||||
expect(left.sEnd).toBeCloseTo(model.length, 9);
|
||||
expect(left.topStartEl).toBeCloseTo(46.835, 2);
|
||||
expect(left.topStartEl).toBeCloseTo(47.661, 2);
|
||||
// A1 날개벽 경사는 +1.91 % (벽체에서 멀어질수록 높아짐): 끝이 0.124 m 높다.
|
||||
expect(left.topEndEl - left.topStartEl).toBeCloseTo(0.124, 2);
|
||||
});
|
||||
@@ -109,12 +109,12 @@ describe('교대 날개벽 하단 선 · 헌치 (AA3c, spec_abut §4.7)', () =>
|
||||
expect(a2Left.heelDistanceM).toBeCloseTo(1.807, 2);
|
||||
});
|
||||
|
||||
it('하단선: 뒷굽 끝까지 저판 상면 41.995, 그 밖은 단부 하단까지 직선 (A2 좌: 45.214)', () => {
|
||||
it('하단선: 뒷굽 끝까지 저판 상면 41.995, 그 밖은 단부 하단까지 직선 (A2 좌: 46.040)', () => {
|
||||
const line = a2Left.bottomLine;
|
||||
expect(line[0].el).toBeCloseTo(41.995, 3);
|
||||
expect(line[1].dM).toBeCloseTo(1.807, 2);
|
||||
expect(line[1].el).toBeCloseTo(41.995, 3);
|
||||
expect(line[2].el).toBeCloseTo(45.214, 2);
|
||||
expect(line[2].el).toBeCloseTo(46.040, 2);
|
||||
});
|
||||
|
||||
it('two vertical 300 × 300 haunches at the 내측면 corners: upper at the 흉벽 배면, lower at the 벽체 배면', () => {
|
||||
@@ -136,11 +136,11 @@ describe('교대 날개벽 하단 선 · 헌치 (AA3c, spec_abut §4.7)', () =>
|
||||
it('upper haunch runs from the bracket top (흉벽 상단 − 0.85) to the wing top', () => {
|
||||
const [up, low] = a2Left.haunches;
|
||||
// The upper haunch rests on the highest point of the 브라켓 top over its footprint (the top falls along s), never below it.
|
||||
expect(up.zBottomEl).toBeGreaterThanOrEqual(46.838 - 0.85 - 1e-6);
|
||||
expect(up.zBottomEl).toBeLessThan(46.838 - 0.85 + 0.05);
|
||||
expect(up.zBottomEl).toBeGreaterThanOrEqual(47.664 - 0.85 - 1e-6);
|
||||
expect(up.zBottomEl).toBeLessThan(47.664 - 0.85 + 0.05);
|
||||
expect(up.zTopEl).toBeGreaterThan(up.zBottomEl);
|
||||
expect(low.zBottomEl).toBeCloseTo(41.995, 3);
|
||||
expect(low.zTopEl).toBeCloseTo(46.838 - 0.85, 2);
|
||||
expect(low.zTopEl).toBeCloseTo(47.664 - 0.85, 2);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -152,7 +152,7 @@ describe('날개벽 수평 단 (QA-12 초안 적용, spec_abut §4.7)', () => {
|
||||
it('등단면 down to 1.5 m below the wing end, then 변화단면1 to the seat EL and 변화단면2 to the footing top', () => {
|
||||
const [equal, v1, v2] = a2Left.bands;
|
||||
expect(equal.name).toBe('등단면');
|
||||
expect(equal.zBottomEl).toBeCloseTo(45.214, 2);
|
||||
expect(equal.zBottomEl).toBeCloseTo(46.040, 2);
|
||||
expect(v1.name).toBe('변화단면1');
|
||||
expect(v1.zBottomEl).toBeCloseTo(44.367, 3);
|
||||
expect(v2.name).toBe('변화단면2');
|
||||
|
||||
Reference in new issue
Block a user