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
@@ -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};
|
||||
|
||||
Reference in new issue
Block a user