fix(abut-rebar): 벽체 W7 skew 길이 · W11 ㄷ형 · RB-AB06 피복 경고
- W7 길이에 1/sin θ 적용 (2594 → 2603) - W11 위 갈고리 추가, 아래 · 위 모두 교대축 안쪽 ㄷ형 (3433/3717 → 3679/3963), 계단 단면 삽도에 반영 - W9 · W10 연장부 피복 < c이면 RB-AB06 경고만 (A1 44.9) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a4c7bcabcf
commit
34959f5b4e
3 files changed
+32
-14
No files matched your search
@@ -92,8 +92,8 @@ describe('교대 벽체 배근 A1 (AD4, 교대벽체철근.md §11)', () => {
|
||||
expect(p.pts[1][0]).toBeCloseTo(lowRight ? sg.to + 735 : sg.to, 6);
|
||||
});
|
||||
|
||||
it('W7: 12 × 5 = 60, 2594', () => {
|
||||
expect([bar(A1, 'W7').count, bar(A1, 'W7').length]).toEqual([60, 2594]);
|
||||
it('W7: 12 × 5 = 60, 2200 / sin θ + 2 × 197 = 2603 (skew, 사용자 결정 2026-11-04)', () => {
|
||||
expect([bar(A1, 'W7').count, bar(A1, 'W7').length]).toEqual([60, 2603]);
|
||||
});
|
||||
|
||||
it('W8: 3383, 낮은 끝 18 + 높은 끝 20 = 38, 끝면에서 114.3', () => {
|
||||
@@ -102,15 +102,25 @@ describe('교대 벽체 배근 A1 (AD4, 교대벽체철근.md §11)', () => {
|
||||
expect(w8.pts[1][0] * angle.sin).toBeCloseTo(114.3, 6);
|
||||
});
|
||||
|
||||
it('W11: 끝면당 13 + 3 = 16, 양끝 32, 길이 3433 / 3717', () => {
|
||||
it('W11: 끝면당 13 + 3 = 16, 양끝 32, ㄷ형 (위 갈고리 246 추가) 길이 3679 / 3963', () => {
|
||||
const w = bar(A1, 'W11');
|
||||
expect([w.count, w.length, w.lengthMax]).toEqual([32, 3433, 3717]);
|
||||
expect([w.count, w.length, w.lengthMax]).toEqual([32, 3433 + 246, 3717 + 246]);
|
||||
const p = A1.paths.find((q) => q.mark === 'W11')!;
|
||||
expect(p.pts.length).toBe(4);
|
||||
expect(p.pts[0][0]).toBeCloseTo(p.pts[3][0], 6); // both hooks turn the same way (inward)
|
||||
expect(p.pts[3][0]).toBeGreaterThan(p.pts[1][0]);
|
||||
const xs = A1.paths.filter((p) => p.mark === 'W11').slice(0, 16).map((p) => Math.round(p.pts[1][1]));
|
||||
expect(xs).toEqual([-700, -400, -100, ...Array.from({ length: 13 }, (_, i) => i * 125)]);
|
||||
});
|
||||
|
||||
it('A1 has no warning (RB-AB02 · RB-AB03 없음)', () => {
|
||||
expect(A1.issues.filter((i) => i.level !== 'I').map((i) => i.code)).toEqual([]);
|
||||
it('A1 warns only RB-AB06: W9 · W10 연장부 피복 44.9 < 100 (계단 71.1)', () => {
|
||||
expect(A1.issues.filter((i) => i.level !== 'I').map((i) => i.code)).toEqual(['RB-AB06']);
|
||||
expect(A1.issues.find((i) => i.code === 'RB-AB06')!.message).toContain('44.9');
|
||||
});
|
||||
|
||||
it('RB-AB06 is gone when the steps are flat enough (높이 차 0)', () => {
|
||||
const flat = { ...geom, segments: geom.segments.map((s) => ({ ...s, H: 2372 })) };
|
||||
expect(abutWallRebar(flat, footing, undefined, fck27).issues.map((i) => i.code)).not.toContain('RB-AB06');
|
||||
});
|
||||
|
||||
it('l_d 연동: fck 30 → W2 앞 다리 · W3 위 끝이 짧아짐', () => {
|
||||
|
||||
Reference in new issue
Block a user