Improve drawing export and foundation quantity views
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
1 parent
a0ec74b09b
commit
d22c5008f0
72 files changed
+24346
-12
No files matched your search
@@ -1,3 +1,4 @@
|
||||
import { foundationNotes } from './foundation-notes';
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { readFileSync, readdirSync, mkdirSync, writeFileSync } from 'node:fs';
|
||||
import { resolve } from 'node:path';
|
||||
@@ -114,6 +115,17 @@ describe('실제 모델 → 일반도',()=>{
|
||||
expect(JSON.stringify(model)).toBe(before);
|
||||
});
|
||||
|
||||
it('기초 좌표와 말뚝 주석은 모델 실좌표·실제 길이를 사용한다',()=>{
|
||||
const m=buildPier(input),f=m.footings[0],bounds={minX:-10000,maxX:10000,minY:0,maxY:5000};
|
||||
const notes=foundationNotes(m,input,'footing',bounds,100);
|
||||
const corner=localPoint(m,f.k,f.s-f.length/2,f.top,-f.width/2);
|
||||
expect(notes.some(e=>e.kind==='text'&&e.text===`X(N) ${(-corner.z+m.pivot.n).toFixed(3)}`)).toBe(true);
|
||||
expect(notes.some(e=>e.kind==='text'&&e.text===`Y(E) ${(corner.x+m.pivot.e).toFixed(3)}`)).toBe(true);
|
||||
expect(notes.filter(e=>e.kind==='text')).toHaveLength(m.footings.length*8);
|
||||
const pileNotes=foundationNotes(m,input,'front',bounds,100);
|
||||
expect(pileNotes.some(e=>e.kind==='text'&&e.text.startsWith('L=')&&e.text.endsWith(' m'))).toBe(true);
|
||||
});
|
||||
|
||||
it('참고 치수표 항목은 모델의 받침 제원·실제 높이를 사용하고 미확인 값을 만들지 않는다',()=>{
|
||||
const m=buildPier(input),rows=bearingSchedule(m);
|
||||
expect(rows).toHaveLength(m.blocks.length);expect(rows[0].A).toBeNull();expect(rows[0].T1).toBeNull();
|
||||
@@ -200,6 +212,13 @@ describe('실제 모델 → 일반도',()=>{
|
||||
|
||||
it('전체 치수는 외측 레인에 배치하고 출력 문자 크기와 실제 점유 범위를 검증한다',()=>{
|
||||
const doc=generateDrawing(buildPier(input),input,project,DEFAULT_SETTINGS),front=doc.views[0];
|
||||
const info=doc.views.find(v=>v.id==='iso')!.entities.filter(e=>e.kind==='text'&&e.source.member==='iso-info');
|
||||
expect(info.some(e=>e.kind==='text'&&e.text==='지반고')).toBe(true);
|
||||
expect(info.some(e=>e.kind==='text'&&e.text===`EL. ${input.groundEl.toFixed(3)}`)).toBe(true);
|
||||
expect(info.some(e=>e.kind==='text'&&e.text==='말뚝 하단')).toBe(true);
|
||||
const iso=doc.views.find(v=>v.id==='iso')!;
|
||||
expect(iso.entities.some(e=>e.kind==='dimension'&&e.label?.startsWith('H='))).toBe(true);
|
||||
expect(iso.entities.some(e=>e.kind==='line'&&e.source.member==='iso-info')).toBe(true);
|
||||
expect(doc.quality?.geometryUnchanged).toBe(true);expect(doc.quality?.after).toBe(0);expect(doc.quality!.minimumTextMm).toBeGreaterThanOrEqual(2.5);
|
||||
const vertical=front.entities.filter((e):e is Extract<typeof e,{kind:'dimension'}>=>e.kind==='dimension'&&e.axis==='y');
|
||||
const overall=vertical.reduce((a,b)=>a.value>b.value?a:b);
|
||||
|
||||
Reference in new issue
Block a user