UNPKG

vue2-tunnel-lining

Version:

A Vue2 component for tunnel lining design with MxCAD integration

148 lines (112 loc) 6.97 kB
// import { McDbMText, MxCpp, McDb, McGePoint3d } from 'mxcad' // import { LinData } from './LinData'; // export class LinNote { // /** // * 写衬砌断面中的说明文字 // * @param pt 基点 // * @param data 数据 // * @param set 设置 // */ // public static Note(set: any): void { // try { // // 说明文字起点 // const pt = new McGePoint3d(set.ChenQi.LT.ptBase1.x + 65, set.ChenQi.LT.ptBase1.y - 180, 0) // let strNotes1 = "说明: \\P 1. 本图尺寸除注明者外均以厘米计。"; // let strNotes2 = ` 2. 本图适用于${"V级围岩浅埋偏压、断层破碎段地段"},衬砌钢筋布置见“${"贰隧()"}”图。`; // if (LinData.Fwi === 0) { // strNotes2 = ` 2. 本图适用于${"适应段落"}。`; // } // let strNotes3 = ""; // if (LinData.railStyle === "有砟") { // strNotes3 = ` 3. 本图按有砟轨道碎石道床结构设计,内轨顶面至道碴底面的高度在隧道中线处为${(10 * LinData.H_ngToLjm).toString()}cm。`; // } else { // strNotes3 = ` 3. 本图按无砟轨道结构设计,内轨顶面至无砟轨道底面高度为${(10 * LinData.H_ngToLjm).toString()}cm。`; // } // let strNotes4 = "4. 建筑材料"//` 4. 建筑材料: \\P 喷混凝土:${"C30早高强喷混凝土"};钢筋网:HPB300钢筋,直径!${LinData.Fwi.toFixed(0)}; \\P 锚杆:拱部采用^22组合中空锚杆;边墙采用$22砂浆锚杆或全螺纹砂浆锚杆; \\P 拱部及边墙:${” // //};仰拱:${ "C35钢筋混凝土" } ;仰拱填充:C20混凝土; \\P 沟槽身:C25混凝土;水沟盖板及电缆槽盖板:C35钢筋混凝土。`; // let strNotes5 = " 5. 本图未示初期支护预留变形量,图中锚杆布置为示意。"; // strNotes5 = " 5. 本图未示初期支护预留变形量。"; // let strNotes6 = ` 6. 水沟、电缆槽及盖板设计详见“${ set.Yyth.Sgdlcgbth }”图。`; // let strNotes7 = ` 7. 拱墙分界以拱部${LinData.AngleGb.toString()}°划分,具体详见“${set.Yyth.Xjtth}”图,隧道底板顶面设置2 % 的横向排水坡。`; // let strNotes8 = " 8. 图中未详尽处见有关规范、规定及设计图。"; // if (LinData.railStyle === "无砟") { // strNotes7 = ` 7. 拱墙分界以拱部${LinData.AngleGb.toString()}%% D划分,具体详见“${set.Yyth.Xjtth}”图,隧道中线左右各140cm范围外底板顶面设置2 % 的横向排水坡。`; // } // const strNotes = `${strNotes1} \\P${strNotes2} \\P${strNotes3} \\P${strNotes4} \\P${strNotes5} \\P${strNotes6} \\P${strNotes7} \\P${strNotes8} `; // // const strNotes = `${strNotes1} \\P${strNotes2} \\P${strNotes3} \\P${strNotes4} \\P${strNotes5} `; // const mText = new McDbMText();// 构造新多行文本对象 // mText.textHeight = 4.5;// 设置文本高度 // mText.attachment = McDb.AttachmentPoint.kMiddleLeft;// 设置文本对齐方式 // mText.contents = strNotes; // 设置文本内容 // mText.location = pt; // 设置文本位置 // MxCpp.getCurrentMxCAD().drawEntity(mText); // 绘制多行文本 // } catch (error) { // console.log("错误代码 1501", "提示"); // } // } // } import { McDbMText, MxCpp, McDb, McGePoint3d } from "mxcad"; import { LinData } from "./LinData"; export type NotePos = | { mode: "offset"; dx: number; dy: number } // 以 set.ChenQi.LT.ptBase1 为基点的偏移 | { mode: "absolute"; x: number; y: number }; // 绝对坐标 export interface NoteOptions { pos?: NotePos; // 位置控制 textHeight?: number; // 文高,默认 4.5 } export class LinNote { /** * 写衬砌断面中的说明文字 * @param set 配置 * @param options 可选:位置/文字大小 */ public static Note(set: any, options: NoteOptions = {}): void { try { const { pos = { mode: "offset", dx: 65, dy: -180 }, textHeight = 4.5, } = options; const pt = this.resolvePosition(set, pos); let strNotes1 = "说明: \\P 1. 本图尺寸除注明者外均以厘米计。"; let strNotes2 = ` 2. 本图适用于${"V级围岩浅埋偏压、断层破碎段地段"},衬砌钢筋布置见“${"贰隧()"}”图。`; if (LinData.Fwi === 0) { strNotes2 = ` 2. 本图适用于${"适应段落"}。`; } let strNotes3 = ""; if (LinData.railStyle === "有砟") { strNotes3 = ` 3. 本图按有砟轨道碎石道床结构设计,内轨顶面至道碴底面的高度在隧道中线处为${( 10 * LinData.H_ngToLjm ).toString()}cm。`; } else { strNotes3 = ` 3. 本图按无砟轨道结构设计,内轨顶面至无砟轨道底面高度为${( 10 * LinData.H_ngToLjm ).toString()}cm。`; } // 这里你原来只写了“建筑材料”,后续可把完整描述再拼回来 let strNotes4 = " 4. 建筑材料:"; let strNotes5 = " 5. 本图未示初期支护预留变形量。"; let strNotes6 = ` 6. 水沟、电缆槽及盖板设计详见“${set.Yyth.Sgdlcgbth}”图。`; let strNotes7 = ` 7. 拱墙分界以拱部${LinData.AngleGb.toString()}°划分,具体详见“${set.Yyth.Xjtth}”图,隧道底板顶面设置2 % 的横向排水坡。`; if (LinData.railStyle === "无砟") { strNotes7 = ` 7. 拱墙分界以拱部${LinData.AngleGb.toString()}°划分,具体详见“${set.Yyth.Xjtth}”图,隧道中线左右各140cm范围外底板顶面设置2 % 的横向排水坡。`; } let strNotes8 = " 8. 图中未详尽处见有关规范、规定及设计图。"; const strNotes = `${strNotes1} \\P${strNotes2} \\P${strNotes3} \\P${strNotes4} \\P${strNotes5} \\P${strNotes6} \\P${strNotes7} \\P${strNotes8} `; const mText = new McDbMText(); mText.textHeight = textHeight; mText.attachment = McDb.AttachmentPoint.kMiddleLeft; mText.contents = strNotes; mText.location = pt; MxCpp.getCurrentMxCAD().drawEntity(mText); } catch (error) { console.log("错误代码 1501", error); } } private static resolvePosition(set: any, pos: NotePos): McGePoint3d { if (pos.mode === "absolute") { return new McGePoint3d(pos.x, pos.y, 0); } const base = set.ChenQi.LT.ptBase1; return new McGePoint3d(base.x + pos.dx, base.y + pos.dy, 0); } }