Preserve local abutment, cast-in-place rebar and compact header features alongside remote drawing, ground-link and quantity workspaces. Adapt drawing and takeoff consumers to generated solplate plans, retain current P1 regression coverage, and resolve bearing-detail annotation collisions. Validation: 122 test files / 975 tests passed; production build passed; 10 browser integration checks passed.
23 lines
1.9 KiB
JavaScript
23 lines
1.9 KiB
JavaScript
import { createServer } from 'vite';
|
|
import { readFileSync } from 'node:fs';
|
|
const server = await createServer({ server: { middlewareMode: true, hmr: false } });
|
|
try {
|
|
const { buildPier } = await server.ssrLoadModule('/src/core/geometry.ts');
|
|
const { generateDrawing, DEFAULT_SETTINGS } = await server.ssrLoadModule('/도면작성/drawing.ts');
|
|
const {presentationEntities} = await server.ssrLoadModule('/도면작성/presentation.ts');
|
|
const {entityBox,viewCollisions,occupiedBounds} = await server.ssrLoadModule('/도면작성/occupancy.ts');
|
|
const {bearingDetail} = await server.ssrLoadModule('/도면작성/bearing-detail.ts');
|
|
const sample = JSON.parse(readFileSync('랜딩페이지/assets/samples/'+(process.argv[2]||'sample01.pzr.json'), 'utf8'));
|
|
const input = sample.piers[0].input;
|
|
const doc = generateDrawing(buildPier(input), input, sample.project, DEFAULT_SETTINGS);
|
|
console.log(JSON.stringify(doc.quality.issues.map(q => ({q, a:doc.views.find(v=>v.id===q.view)?.entities[q.first], b:doc.views.find(v=>v.id===q.view)?.entities[q.second]})), null, 2));
|
|
console.log(JSON.stringify(doc.views.map(v=>({id:v.id,scale:v.scale,slot:v.slot}))));
|
|
for(const q of doc.quality.issues.filter(q=>q.kind==='text-text'))console.log(JSON.stringify(presentationEntities(doc.views.find(v=>v.id===q.view)).filter(p=>p.entity.kind==='text'&&[q.first,q.second].includes(p.index)).map(p=>({entity:p.entity,box:entityBox(p.entity)}))));
|
|
for(const scale of [50,75,100,125,150,200,250,300]){
|
|
const {entities}=bearingDetail(buildPier(input),scale);
|
|
for(const e of entities){if(e.kind==='dimension')e.height=3*scale;if(e.kind==='text')e.height=Math.max(e.height,2.5*scale);}
|
|
const v={id:'detail',entities,scale},b=occupiedBounds(v);
|
|
console.log(JSON.stringify({scale,width:(b.maxX-b.minX)/scale,issues:viewCollisions(v).map(q=>({a:entities[q.first],b:entities[q.second]}))}));
|
|
}
|
|
} finally { await server.close(); }
|