UNPKG

vue2-tunnel-lining

Version:

A Vue2 component for tunnel lining design with MxCAD integration

167 lines (142 loc) 6.42 kB
// 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; } }