vue2-tunnel-lining
Version:
A Vue2 component for tunnel lining design with MxCAD integration
96 lines (80 loc) • 2.65 kB
text/typescript
// 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);
}
}
}