UNPKG

vue2-tunnel-lining

Version:

A Vue2 component for tunnel lining design with MxCAD integration

96 lines (80 loc) 2.65 kB
// src/Cq/LinDrawSg.ts import { McGePoint3d, McObjectId, McDbPolyline } from "mxcad"; import { Setting } from "../../Setting/Setting"; import { Sgs } from "./Sgs"; import { Maths } from "../../TunnelCADFns/Maths"; import { Linings } from "./Linings"; import { LinData } from "./LinData"; export class LinDrawSg { /** * 绘制水沟(包括左右) */ public static async DrawSg_Dx(set: Setting) { await this.DrawZcSg_Dx(set); await this.DrawYcSg_Dx(set); } /** * 绘制左侧水沟 */ private static async DrawZcSg_Dx(set: Setting) { try { const plFirstId = set.ChenQi.LT.DicIdCol.get("FirstId")[0]; const entFir = await plFirstId.getMcDbEntity() as McDbPolyline; let garea_Z = { value: 0 }; const leftLineIds: McObjectId[] = await Sgs.SideGroove1c1g( set.ChenQi.LT.ptStart左, set.ChenQi.LT.ptEnd左, set.ChenQi.LT.Color_Sg, LinData.H_sgdToGb, LinData.Z1c1g, garea_Z ); set.ChenQi.LT.DicIdCol.set("ZcsgIdcol", leftLineIds); let ptBreak1: McGePoint3d; if (!set.ChenQi.Cqdm.Spxj) { ptBreak1 = entFir.getClosestPointTo(set.ChenQi.LT.ptStart左, false).val; } else { await Maths.IntsOfLineToCurve( new McGePoint3d(0, set.ChenQi.LT.ptStart左.y, 0), new McGePoint3d(1, set.ChenQi.LT.ptStart左.y, 0), plFirstId, // "MinX" ); } } catch (err) { console.error("错误代码: 1108", err); } } /** * 绘制右侧水沟 */ private static async DrawYcSg_Dx(set: Setting) { try { const plFirstId = set.ChenQi.LT.DicIdCol.get("FirstId")[0]; const entFir = await plFirstId.getMcDbEntity() as McDbPolyline; let garea_Y = { value: 0 }; const rightLineIds: McObjectId[] = await Sgs.SideGroove1c1g( set.ChenQi.LT.ptStart右, set.ChenQi.LT.ptEnd右, set.ChenQi.LT.Color_Sg, LinData.H_sgdToGb, LinData.Y1c1g, garea_Y ); set.ChenQi.LT.DicIdCol.set("YcsgIdcol", rightLineIds); let ptBreak1: McGePoint3d; if (!set.ChenQi.Cqdm.Spxj) { ptBreak1 = entFir.getClosestPointTo(set.ChenQi.LT.ptStart右, false).val; } else { await Maths.IntsOfLineToCurve( new McGePoint3d(0, set.ChenQi.LT.ptStart右.y, 0), new McGePoint3d(1, set.ChenQi.LT.ptStart右.y, 0), plFirstId, // "MaxX" ); } } catch (err) { console.error("错误代码: 1109", err); } } }