Improve drawing export and foundation quantity views

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
CopilotandCopilot committed 2026-11-06 15:35:56 +09:00
1 parent a0ec74b09b
commit d22c5008f0
72 files changed
+24346 -12

No files matched your search

+6 -1
View File
@@ -102,7 +102,7 @@ export function optimiseLayout(doc:DrawingDocument,factory:Factory):void{
const left=Math.max(bs[0].maxX-bs[0].minX,bs[2].maxX-bs[2].minX),right=Math.max(bs[1].maxX-bs[1].minX,bs[3].maxX-bs[3].minX);
const top=Math.max(bs[0].maxY,bs[1].maxY)-Math.min(bs[0].minY,bs[1].minY),bottom=Math.max(bs[2].maxY-bs[2].minY,bs[3].maxY-bs[3].minY);
const overflow=Math.max(0,left+right+gap-major.width)+Math.max(0,top+bottom+gap+12-major.height);
const score=overflow*10000+elevation+plan*.45+Math.abs(elevation-plan)*.1;
const score=overflow*10000+vs.reduce((n,v)=>n+collisionCount(v),0)*100000+elevation+plan*.45+Math.abs(elevation-plan)*.1;
if(!best||score<best.score)best={views:vs,bs,left,right,top,bottom,score};
}
// The smallest feasible elevation scale is preferred; larger denominators cannot improve clarity.
@@ -124,6 +124,11 @@ export function optimiseLayout(doc:DrawingDocument,factory:Factory):void{
const centre=column[0].paperOrigin![0]+(column[0].geometryBounds.minX+column[0].geometryBounds.maxX)/(2*column[0].scale);
const v=column[1],b=measure(v);v.paperOrigin![0]=centre-(v.geometryBounds.minX+v.geometryBounds.maxX)/(2*v.scale);v.slot.x=v.paperOrigin![0]+b.minX;
}
// Coordinate callouts may be asymmetric: retain alignment only within the major drawing zone.
for(const v of best.views){const b=measure(v),left=v.paperOrigin![0]+b.minX,right=v.paperOrigin![0]+b.maxX;
const shift=right>major.x+major.width?major.x+major.width-right:left<major.x?major.x-left:0;
v.paperOrigin![0]+=shift;v.slot.x+=shift;
}
const table=finish(doc.views.find(v=>v.id==='schedule')!),tb=measure(table),tableHeight=tb.maxY-tb.minY;
fit(table,{x:538*k,y:527*ky-tableHeight,width:280*k,height:tableHeight});
const small:Rect={x:538*k,y:46*ky,width:126*k,height:Math.min(table.slot.y-9,365*ky)-46*ky};