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
+14
@@ -1,5 +1,6 @@
|
||||
import './style.css';
|
||||
import { createDrawingWorkspace } from '../도면작성/workspace';
|
||||
import { createTakeoffWorkspace } from '../수량산출/workspace';
|
||||
import * as THREE from 'three';
|
||||
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
||||
import { swapXYAzimuth } from './core/coordinate-frame';
|
||||
@@ -170,6 +171,16 @@ const drawingWorkspace = createDrawingWorkspace($('view-drawing'), () => ({
|
||||
piers: state.piers.map(p => ({ input: p.input, model: p.model, dirty: pendingKeys(p).length > 0 })),
|
||||
}), selectPier);
|
||||
|
||||
const quantityRebarTon = new Map<string,number|null>();
|
||||
const quantityWorkspace = createTakeoffWorkspace($('view-quantity'), () => ({
|
||||
project: state.project, selected: state.active,
|
||||
piers: state.piers.map(p => ({input:p.input,model:p.model,dirty:pendingKeys(p).length>0,rebarTon:quantityRebarTon.get(p.input.name)})),
|
||||
}), selectPier, (name,data) => {
|
||||
const pier=state.piers.find(p=>p.input.name===name);if(!pier)return;
|
||||
pier.input={...pier.input,quantityTakeoff:data};pier.draft={...pier.draft,quantityTakeoff:data};
|
||||
renderSaveStatus();scheduleBackup();
|
||||
});
|
||||
|
||||
function el<K extends keyof HTMLElementTagNameMap>(tag: K, text?: string, cls?: string): HTMLElementTagNameMap[K] {
|
||||
const node = document.createElement(tag);
|
||||
if (text !== undefined) node.textContent = text;
|
||||
@@ -1922,6 +1933,9 @@ function renderQuantityScreen(): void {
|
||||
const entries = targets.flatMap((pier) =>
|
||||
pier.model ? [{ pier, q: buildQuantity(rebarSummary(pier.model, state.material, state.fckByMember).rows, state.material) }] : [],
|
||||
);
|
||||
quantityRebarTon.clear();
|
||||
for(const {pier,q} of entries)quantityRebarTon.set(pier.input.name,q.missing.length?null:q.kg/1000);
|
||||
quantityWorkspace.refresh();
|
||||
// 전체 with more than one pier: the bridge total first (교량 전체 집계); the per-pier tables follow.
|
||||
if (state.quantityAll && entries.length > 1) body.appendChild(bridgeTotalBlock(aggregateQuantities(entries.map((e) => e.q)), entries.length));
|
||||
for (const { pier, q } of entries) {
|
||||
|
||||
Reference in new issue
Block a user