vue2-tunnel-lining
Version:
A Vue2 component for tunnel lining design with MxCAD integration
167 lines (142 loc) • 6.42 kB
text/typescript
// src/Tunnel/BLL/Lining/Sgs.ts
import { McGePoint3d, McDbPolyline, McObjectId } from "mxcad";
import { CxwDraw } from "../../TunnelCADFns/CxwDraw";
export interface CG1g1c {
H_盖板厚: number;
b侧壁厚: number;
b侧壁盖板搭接宽: number;
B_水沟宽: number;
b沟槽间壁厚2: number;
H_通信电缆深: number;
B_通信电缆槽宽: number;
b电缆槽搭接宽: number;
b_水沟盖板宽: number;
b_通信电缆盖板宽: number;
}
export class Sgs {
/**
* 160,200,250 单线沟槽身+盖板:盖板顶与内轨等高,一沟一槽 电缆槽在外侧
*/
public static SideGroove1c1g(
ptStart: McGePoint3d,
ptEnd: McGePoint3d,
shortInt: number,
H_盖板顶至水沟底: number,
Cg: CG1g1c,
areaRef: { value: number }
): McObjectId[] {
H_盖板顶至水沟底 -= Cg.H_盖板厚;
let AngX = 0;
let Ang_X = Math.PI;
if (ptStart.x < ptEnd.x) {
AngX = Math.PI;
Ang_X = 0;
}
const IdCol: McObjectId[] = [];
const pt3dCollTrench: McGePoint3d[] = [];
const ptTrench1 = new McGePoint3d(ptStart.x, ptEnd.y, 0);
const ptTrench2 = CxwDraw.polarPoint(ptTrench1, Ang_X, Cg.b侧壁厚);
const ptTrench3 = CxwDraw.polarPoint(ptTrench2, 1.5 * Math.PI, Cg.H_盖板厚);
const ptTrench4 = CxwDraw.polarPoint(ptTrench3, Ang_X, Cg.b侧壁盖板搭接宽);
const ptTrench5 = CxwDraw.polarPoint(ptTrench4, 1.5 * Math.PI, H_盖板顶至水沟底);
const ptTrench6 = CxwDraw.polarPoint(ptTrench5, Ang_X, Cg.B_水沟宽);
const ptTrench7 = CxwDraw.polarPoint(ptTrench6, 0.5 * Math.PI, H_盖板顶至水沟底);
const ptTrench8 = CxwDraw.polarPoint(ptTrench7, Ang_X, Cg.b沟槽间壁厚2);
const ptTrench9 = CxwDraw.polarPoint(ptTrench8, 1.5 * Math.PI, Cg.H_通信电缆深);
const ptTrench10 = CxwDraw.polarPoint(ptTrench9, Ang_X, Cg.B_通信电缆槽宽);
const ptTrench11 = CxwDraw.polarPoint(ptTrench10, 0.5 * Math.PI, Cg.H_通信电缆深);
const ptTrench12 = CxwDraw.polarPoint(ptTrench11, Ang_X, Cg.b电缆槽搭接宽);
const ptTrench13 = CxwDraw.polarPoint(ptTrench12, 0.5 * Math.PI, Cg.H_盖板厚);
pt3dCollTrench.push(
ptStart, ptTrench1, ptTrench2, ptTrench3, ptTrench4, ptTrench5,
ptTrench6, ptTrench7, ptTrench8, ptTrench9, ptTrench10, ptTrench11,
ptTrench12, ptTrench13, ptEnd
);
const pt3dCollCoverSalb: McGePoint3d[] = [];
const ptCoverSalb1 = CxwDraw.polarPoint(ptTrench3, Ang_X, Cg.b_水沟盖板宽 + 0.1);
const ptCoverSalb2 = CxwDraw.polarPoint(ptCoverSalb1, 0.5 * Math.PI, Cg.H_盖板厚);
const ptCoverSalb3 = CxwDraw.polarPoint(ptCoverSalb2, AngX, Cg.b_水沟盖板宽);
const ptCoverSalb4 = CxwDraw.polarPoint(ptCoverSalb3, 1.5 * Math.PI, Cg.H_盖板厚);
const ptCoverSalb5 = CxwDraw.polarPoint(ptCoverSalb4, Ang_X, Cg.b_通信电缆盖板宽 + Cg.b_水沟盖板宽 + 0.1);
const ptCoverSalb6 = CxwDraw.polarPoint(ptCoverSalb5, 0.5 * Math.PI, Cg.H_盖板厚);
const ptCoverSalb7 = CxwDraw.polarPoint(ptCoverSalb6, AngX, Cg.b_通信电缆盖板宽);
const ptCoverSalb8 = CxwDraw.polarPoint(ptCoverSalb7, 1.5 * Math.PI, Cg.H_盖板厚);
pt3dCollCoverSalb.push(
ptCoverSalb1, ptCoverSalb2, ptCoverSalb3, ptCoverSalb4,
ptCoverSalb5, ptCoverSalb6, ptCoverSalb7, ptCoverSalb8
);
IdCol.push(CxwDraw.addPline(pt3dCollTrench, 0, 0, shortInt, true, false));
IdCol.push(CxwDraw.addPline(pt3dCollCoverSalb, 0, 0, shortInt, true, false));
pt3dCollTrench.push(new McGePoint3d(ptEnd.x, ptStart.y, 0));
pt3dCollTrench.push(ptStart);
const pl = new McDbPolyline();
for (let i = 0; i < pt3dCollTrench.length; i++) {
pl.addVertexAt(pt3dCollTrench[i], 0, 0, 0, i);
}
areaRef.value = pl.getArea().val;
return IdCol;
}
public static SideGroove0c1g(
ptStart: McGePoint3d,
ptEnd: McGePoint3d,
shortInt: number,
H_盖板顶至水沟底: number,
Cg: CG1g1c,
areaRef: { value: number }
): McObjectId[] {
H_盖板顶至水沟底 -= Cg.H_盖板厚;
let AngX = 0;
let Ang_X = Math.PI;
if (ptStart.x < ptEnd.x) {
AngX = Math.PI;
Ang_X = 0;
}
const IdCol: McObjectId[] = [];
const pt3dCollTrench: McGePoint3d[] = [];
const ptTrench1 = new McGePoint3d(ptStart.x, ptEnd.y, 0);
const ptTrench2 = CxwDraw.polarPoint(ptTrench1, Ang_X, Cg.b侧壁厚);
const ptTrench3 = CxwDraw.polarPoint(ptTrench2, 1.5 * Math.PI, Cg.H_盖板厚);
const ptTrench4 = CxwDraw.polarPoint(ptTrench3, Ang_X, Cg.b侧壁盖板搭接宽);
const ptTrench5 = CxwDraw.polarPoint(ptTrench4, 1.5 * Math.PI, H_盖板顶至水沟底);
const ptTrench6 = CxwDraw.polarPoint(ptTrench5, Ang_X, Cg.B_水沟宽);
const ptTrench7 = CxwDraw.polarPoint(ptTrench6, 0.5 * Math.PI, H_盖板顶至水沟底);
const ptTrench12 = CxwDraw.polarPoint(ptTrench7, Ang_X, Cg.b电缆槽搭接宽);
const ptTrench13 = CxwDraw.polarPoint(ptTrench12, 0.5 * Math.PI, Cg.H_盖板厚);
pt3dCollTrench.push(
ptStart,
ptTrench1,
ptTrench2,
ptTrench3,
ptTrench4,
ptTrench5,
ptTrench6,
ptTrench7,
ptTrench12,
ptTrench13,
ptEnd
);
// --- Cover Slab
const pt3dCollCoverSalb: McGePoint3d[] = [];
const ptCoverSalb1 = CxwDraw.polarPoint(ptTrench3, Ang_X, Cg.b_水沟盖板宽 + 0.1);
const ptCoverSalb2 = CxwDraw.polarPoint(ptCoverSalb1, 0.5 * Math.PI, Cg.H_盖板厚);
const ptCoverSalb3 = CxwDraw.polarPoint(ptCoverSalb2, AngX, Cg.b_水沟盖板宽);
const ptCoverSalb4 = CxwDraw.polarPoint(ptCoverSalb3, 1.5 * Math.PI, Cg.H_盖板厚);
pt3dCollCoverSalb.push(
ptCoverSalb1,
ptCoverSalb2,
ptCoverSalb3,
ptCoverSalb4,
ptCoverSalb1
);
IdCol.push(CxwDraw.addPline(pt3dCollTrench, 0, 0, shortInt, true, false));
IdCol.push(CxwDraw.addPline(pt3dCollCoverSalb, 0, 0, shortInt, true, false));
pt3dCollTrench.push(new McGePoint3d(ptEnd.x, ptStart.y, 0));
pt3dCollTrench.push(ptStart);
const pl = new McDbPolyline();
for (let i = 0; i < pt3dCollTrench.length; i++) {
pl.addVertexAt(pt3dCollTrench[i], 0, 0, 0, i);
}
areaRef.value = pl.getArea().val;
return IdCol;
}
}