vue2-tunnel-lining
Version:
A Vue2 component for tunnel lining design with MxCAD integration
486 lines (379 loc) • 22.6 kB
text/typescript
import { McObjectId, MxCpp, McDb, McGePoint3d, McDbPolyline, McDbLine } from "mxcad";
import { MxCADUiPrPoint } from "mxcad"
import { LinData } from './LinData';
import { LinDataHelper } from './LInDataHelper';
import { Setting } from '../../Setting/Setting';
import { MxFun } from "mxdraw";
import { CxwDraw } from "../../TunnelCADFns/CxwDraw";
import { Maths } from "../../TunnelCADFns/Maths";
// import { Linings } from "./Linings";
import { Cad } from "./Cad";
export class LinMark {
public static Dim(set: Setting, SPEED: number){
LinMark.DimLeader(set)
LinMark.DimTcPd_Dx_Fzkd(set, SPEED);
LinMark.DimLine(set, SPEED);
LinMark.DimCenter(set);
LinMark.DimAngle(set);
LinMark.DimRadius(set);
}
//got error
private static DimLeader(set) {
try {
console.log("DimLeader Start:");
const idCol: McObjectId[] = [];
const ptFirst2 = set.ChenQi.LT.DicFirst.get("ptFirst2");
const ptFirst3 = set.ChenQi.LT.DicFirst.get("ptFirst3");
const ptFirst4 = set.ChenQi.LT.DicFirst.get("ptFirst4");
const ptSecond2 = set.ChenQi.LT.DicSecond.get("ptSecond2");
const ptSecond3 = set.ChenQi.LT.DicSecond.get("ptSecond3");
const ptSecond4 = set.ChenQi.LT.DicSecond.get("ptSecond4");
console.log("ptFirst3:", ptFirst3);
console.log("ptSecond4:", ptSecond4);
console.log("ptFirst2", ptFirst2);
console.log("ptSecond3:", ptSecond3);
console.log("ptFirst4:", ptFirst4);
const pt3dLeader: McGePoint3d[] = [];
const ptLeader1 = CxwDraw.polarPoint(LinData.O3, (275 / 180) * Math.PI, LinData.RadiusFirst3);
const ptLeader2 = CxwDraw.polarPoint(LinData.O3, (275 / 180) * Math.PI, LinData.RadiusFirst3 - 10);
const ptLeader3 = CxwDraw.polarPoint(LinData.O3, (274 / 180) * Math.PI, LinData.RadiusFirst3 - 10);
const ptLeader4 = CxwDraw.polarPoint(LinData.O3, (276 / 180) * Math.PI, LinData.RadiusFirst3 - 11);
const ptLeader5 = CxwDraw.polarPoint(LinData.O3, (275 / 180) * Math.PI, LinData.RadiusFirst3 - 11);
const ptLeader6 = CxwDraw.polarPoint(LinData.O3, (275 / 180) * Math.PI, LinData.RadiusFirst3 - 13);
pt3dLeader.push(ptLeader6, ptLeader2, ptLeader3, ptLeader4, ptLeader5, ptLeader1);
idCol.push(...(CxwDraw.addLeader2(pt3dLeader, false) || []));
idCol.push(...(CxwDraw.addLeader3(CxwDraw.polarPoint(LinData.O2_z, Math.PI, LinData.RadiusSecond2), LinData.O2_z, false) || []));
idCol.push(...(CxwDraw.addLeader3(ptFirst3, LinData.O1, false) || []));
idCol.push(...(CxwDraw.addLeader3(ptSecond4, LinData.O2_z, false) || []));
idCol.push(...(CxwDraw.addLeader3(ptFirst2, LinData.O1, false) || []));
idCol.push(...(CxwDraw.addLeader3(ptSecond3, LinData.O1, false) || []));
idCol.push(...(CxwDraw.addLeader3(ptFirst4, LinData.O3, false) || []));
//
const dashedLine = CxwDraw.addLine(LinData.O1, LinData.O2_y, 7, "Dashed", 0.3 / 1);
if (dashedLine) idCol.push(dashedLine);
// const extraLeader = CxwDraw.addLeader3( set?.ChenQi?.LT?.ptEnd右, LinData.O2_y, false);
const chenQi = set && set.ChenQi;
const lt = chenQi && chenQi.LT;
const ptEnd右 = lt && lt.ptEnd右;
const extraLeader = CxwDraw.addLeader3(ptEnd右, LinData.O2_y, false);
if (extraLeader) idCol.push(...extraLeader);
set.ChenQi.LT.DicIdCol["DimLeader"] = idCol;
} catch (err) {
// alert("错误代码 1203 - 提示");
console.log("错误代码 1203 - 提示:", err);
}
}
private static DimTcPd_Dx_Fzkd(set: Setting, SPEED: number){
try {
const idCol: McObjectId[] = [];
const ptP1 = new McGePoint3d(-LinData.b1_y + 1, -(LinData.H_ngToLjm - 1), 0);
const ptP2 = CxwDraw.polarPoint(ptP1, 0, 10);
const ptText1 = new McGePoint3d(-LinData.b1_z + 3, -(LinData.H_ngToLjm - 1), 0);
const ptP3 = new McGePoint3d(LinData.b1_y - 1, -(LinData.H_ngToLjm - 1), 0);
const ptP4 = CxwDraw.polarPoint(ptP3, Math.PI, 10);
const ptText2 = new McGePoint3d(LinData.b1_y - 9, -(LinData.H_ngToLjm - 1), 0);
if (SPEED > 0) {
idCol.push(...CxwDraw.addLeader3WithoutCircle(set.ChenQi.LT.ptEnd左, LinData.O2_z, false));
idCol.push(...CxwDraw.addLeader3WithoutCircle(ptP3, ptP4, false));
idCol.push(CxwDraw.addText5(ptText2, "0.02", 3.5, 0, 0.7));
idCol.push(...CxwDraw.addLeader3WithoutCircle(ptP1, ptP2, false));
idCol.push(CxwDraw.addText5(ptText1, "0.02", 3.5, 0, 0.7));
} else {
idCol.push(...CxwDraw.addLeader3WithoutCircle(ptP2, ptP1, false));
idCol.push(CxwDraw.addText5(ptText1, "0.02", 3.5, 0, 0.7));
}
set.ChenQi.LT.DicIdCol["MarkTcPd"] = idCol;
} catch (err) {
// alert("错误代码 1204 - 提示");
}
}
private static DimLine(set: Setting, SPEED: number){
try {
const idCol: McObjectId[] = [];
const ptTrench_z1 = new McGePoint3d(-LinData.b1_z, 0, 0);
const ptTrench_y1 = new McGePoint3d(LinData.b1_y, 0, 0);
const ptOrigin = new McGePoint3d(0, 0, 0);
const ptMaxlengthZ = CxwDraw.polarPoint(LinData.O2_z, Math.PI, LinData.RadiusFourth2);
const ptMaxlengthY = CxwDraw.polarPoint(LinData.O2_y, 0, LinData.RadiusFourth2);
const ptY1 = CxwDraw.polarPoint(LinData.O3, (3 * Math.PI) / 2, LinData.RadiusFourth3);
const ptY2 = CxwDraw.polarPoint(LinData.O3, (3 * Math.PI) / 2, LinData.RadiusSecond3);
const ptY3 = CxwDraw.polarPoint(LinData.O3, (3 * Math.PI) / 2, LinData.RadiusFirst3);
const ptD1 = CxwDraw.polarPoint(LinData.O1, Math.PI / 2, LinData.RadiusFirst1);
const ptD2 = CxwDraw.polarPoint(LinData.O1, Math.PI / 2, LinData.RadiusSecond1);
const ptD3 = CxwDraw.polarPoint(LinData.O1, Math.PI / 2, LinData.RadiusThird1);
const ptD4 = CxwDraw.polarPoint(LinData.O1, Math.PI / 2, LinData.RadiusFourth1);
const ptP1 = new McGePoint3d(-LinData.b1_z + 1, -(LinData.H_ngToLjm - 1), 0);
const ptThird1 = set.ChenQi.LT.DicThird_Ylbx_Gq.get("ptThird1");
const ptThird6 = set.ChenQi.LT.DicThird_Ylbx_Gq.get("ptThird6");
const ptFor7 = set.ChenQi.LT.DicForth_Gq.get("ptForth7");
const ptFor2 = set.ChenQi.LT.DicForth_Gq.get("ptForth2");
console.log("ptThird1:", ptThird1);
console.log("ptThird6:", ptThird6);
console.log("ptFor7:", ptFor7);
console.log("ptFor2:", ptFor2);
// Dim annotations
idCol.push(CxwDraw.addDimRotated5(Math.PI, ptTrench_y1, ptOrigin, CxwDraw.polarPoint(ptTrench_y1, Math.PI / 2, 4.5), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI, set.ChenQi.LT.ptEnd右, ptTrench_y1, CxwDraw.polarPoint(ptTrench_y1, Math.PI / 2, 4.5), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, ptOrigin, LinData.O1, CxwDraw.polarPoint(LinData.O1, Math.PI, 4.5), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI, LinData.O1, LinData.O2_z, CxwDraw.polarPoint(LinData.O2_z, Math.PI / 2, 13), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, ptOrigin, LinData.O2_y, CxwDraw.polarPoint(LinData.O2_y, Math.PI, 1), 10));
idCol.push(CxwDraw.addDimRotated6(Math.PI / 2, ptY2, ptY3, CxwDraw.polarPoint(ptY2, 0, 90), new McGePoint3d(ptY2.x + 87, ptY2.y + LinData.d2 / 2, 0), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, ptY3, set.ChenQi.LT.ptEnd右, CxwDraw.polarPoint(ptY3, 0, 90), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, set.ChenQi.LT.ptEnd右, ptD1, CxwDraw.polarPoint(ptY3, 0, 90), 10));
idCol.push(CxwDraw.addDimRotated6(Math.PI / 2, ptD1, ptD2, CxwDraw.polarPoint(ptD1, 0, 90), new McGePoint3d(ptD1.x + 87, ptD1.y + LinData.d1 / 2, 0), 10));
idCol.push(CxwDraw.addDimRotated6(Math.PI / 2, ptD3, ptD4, CxwDraw.polarPoint(ptD3, 0, 90), new McGePoint3d(ptD4.x + 87, ptD4.y + 3, 0), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, ptY1, ptD4, CxwDraw.polarPoint(ptY1, 0, 100), 10));
idCol.push(CxwDraw.addDimRotated6(Math.PI, ptFor7, ptMaxlengthZ, CxwDraw.polarPoint(ptFor7, (3 * Math.PI) / 2, 6), new McGePoint3d((ptMaxlengthZ.x + ptFor7.x) / 2, ptFor7.y - 4, 0), 10));
idCol.push(CxwDraw.addDimRotated6(Math.PI, ptFor7, ptThird6, CxwDraw.polarPoint(ptFor7, (3 * Math.PI) / 2, 6), new McGePoint3d(ptThird6.x + 2.5, ptFor7.y - 4, 0), 10));
idCol.push(CxwDraw.addDimRotated6(Math.PI, ptFor2, ptMaxlengthY, CxwDraw.polarPoint(ptFor2, (3 * Math.PI) / 2, 6), new McGePoint3d((ptMaxlengthY.x + ptFor2.x) / 2, ptFor2.y - 4, 0), 10));
idCol.push(CxwDraw.addDimRotated6(Math.PI, ptFor2, ptThird1, CxwDraw.polarPoint(ptFor2, (3 * Math.PI) / 2, 6), new McGePoint3d(ptThird1.x - 2.5, ptFor2.y - 4, 0), 10));
//
if (SPEED > 0) {
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, ptOrigin, new McGePoint3d(0, -LinData.H_ngToLjm, 0), CxwDraw.polarPoint(ptOrigin, Math.PI, 4.5), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI, ptTrench_z1, ptOrigin, CxwDraw.polarPoint(ptTrench_z1, Math.PI / 2, 4.5), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, ptMaxlengthZ, CxwDraw.polarPoint(ptMaxlengthZ, (3 * Math.PI) / 2, LinData.H_zkToZb), CxwDraw.polarPoint(ptMaxlengthZ, Math.PI, 3), 10));
const leftEnd = set.ChenQi.LT.ptEnd左;
const leftTrench = new McGePoint3d(-LinData.b1_z - (LinData.Z1c1g.b侧壁厚 + LinData.Z1c1g.b侧壁盖板搭接宽 + LinData.Z1c1g.B_水沟宽), -(LinData.H_sgdToGb - LinData.H_ngToGb), 0);
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, leftEnd, leftTrench, CxwDraw.polarPoint(leftEnd, Math.PI, 2), 10));
idCol.push(CxwDraw.addDimRotated5(Math.PI, leftEnd, ptTrench_z1, CxwDraw.polarPoint(leftEnd, Math.PI / 2, 4.5), 10));
} else {
idCol.push(CxwDraw.addDimRotated5(Math.PI, set.ChenQi.LT.ptEnd左, ptOrigin, CxwDraw.polarPoint(ptOrigin, Math.PI / 2, 4.5), 10));
}
idCol.push(CxwDraw.addDimRotated5(Math.PI, ptMaxlengthZ, ptMaxlengthY, CxwDraw.polarPoint(LinData.O3, (3 * Math.PI) / 2, LinData.RadiusFourth3 + 10), 10));
if (LinData.m2 !== 0) {
idCol.push(CxwDraw.addDimRotated5(Math.PI / 2, ptY1, ptY2, CxwDraw.polarPoint(ptY1, 0, 90), 10));
}
set.ChenQi.LT.DicIdCol["DimLine"] = idCol;
} catch (err) {
// alert("错误代码 1201 - 提示");
console.log("错误代码 1201 - 提示:", err);
}
}
private static async DimCenter(set: Setting){
try {
const idCol: McObjectId[] = [];
idCol.push(...await Cad.centerPoint(LinData.O1));
idCol.push(...await Cad.centerPoint(LinData.O2_z));
idCol.push(...await Cad.centerPoint(LinData.O2_y));
idCol.push(...await Cad.centerPoint(LinData.O3));
// Add center labels
idCol.push(CxwDraw.addText6(
new McGePoint3d(LinData.O2_y.x, LinData.O2_y.y - 4, 0),
"O[2]",
3.5, 0, 0.7, 0
));
idCol.push(CxwDraw.addText6(LinData.O2_z, "O[2]", 3.5, 0, 0.7, 0));
idCol.push(CxwDraw.addText6(LinData.O1, "O[1]", 3.5, 0, 0.7, 0));
idCol.push(CxwDraw.addText6(LinData.O3, "O[3]", 3.5, 0, 0.7, 0));
// Store result
set.ChenQi.LT.DicIdCol["DimCenter"] = idCol;
} catch (err) {
// alert("错误代码 1204 - 提示");
}
}
private static DimAngle(set: Setting) {
try {
const idCol: McObjectId[] = [];
const ptD1 = CxwDraw.polarPoint(LinData.O1, Math.PI / 2, LinData.RadiusFirst1);
const ptFirst2 = set.ChenQi.LT.DicFirst.get("ptFirst2");
const ptFirst3 = set.ChenQi.LT.DicFirst.get("ptFirst3");
const ptFirst4 = set.ChenQi.LT.DicFirst.get("ptFirst4");
const ptFirst1 = set.ChenQi.LT.DicFirst.get("100ptFirst1");
const origin = McGePoint3d.kOrigin;
// Angular dimensions (3-point)
idCol.push(CxwDraw.add3PLineAngular(
LinData.O1,
new McGePoint3d(ptFirst3.x, ptFirst3.y, 0),
ptD1,
12,
origin,
"",
true
));
idCol.push(CxwDraw.add3PLineAngular(
LinData.O1,
ptD1,
new McGePoint3d(ptFirst2.x, ptFirst2.y, 0),
12,
origin,
"",
true
));
if (!set.ChenQi.Cqdm.Wlkxq) {
// If not tangential, draw largest angular dimension
idCol.push(CxwDraw.add3PLineAngular(
LinData.O2_z,
new McGePoint3d(ptFirst4.x, ptFirst4.y, 0),
new McGePoint3d(ptFirst3.x, ptFirst3.y, 0),
12,
origin,
"",
true
));
idCol.push(...(CxwDraw.addLeader3(ptFirst4, LinData.O2_z, false) || []));
}
idCol.push(CxwDraw.add3PLineAngular(
LinData.O3,
new McGePoint3d(ptFirst4.x, ptFirst4.y, 0),
ptFirst1,
LinData.RadiusFirst3 - 5,
origin,
"",
true
));
// ✅ Assign the array of McObjectId
set.ChenQi.LT.DicIdCol["DimAngle"] = idCol;
} catch (err) {
// alert("错误代码 1202 - 提示");
console.log("错误代码 1202 - 提示:", err);
}
}
private static async DimRadius(set: Setting): Promise<void> {//have error
try {
const idCol: McObjectId[] = [];
const ptFirst1 = set.ChenQi.LT.DicFirst.get("ptFirst1");
const ptFirst2 = set.ChenQi.LT.DicFirst.get("ptFirst2");
const ptFirst3 = set.ChenQi.LT.DicFirst.get("ptFirst3");
const ptFirst4 = set.ChenQi.LT.DicFirst.get("ptFirst4");
const ptMaxlengthZ = CxwDraw.polarPoint(LinData.O2_z, Math.PI, LinData.RadiusFourth2);
const ptLeader1 = CxwDraw.polarPoint(LinData.O3, (275 / 180) * Math.PI, LinData.RadiusFirst3);
const dipAngle1 = CxwDraw.getDipAngle(ptFirst4, LinData.O2_z);
const dipAngle2 = CxwDraw.getDipAngle(set.ChenQi.LT.ptEnd左, LinData.O2_z);
const dipAngle3 = CxwDraw.getDipAngle(ptFirst3, LinData.O2_z);
const dipAngle4 = CxwDraw.getDipAngle(LinData.O2_y, ptFirst2);
const dipAngle5 = CxwDraw.getDipAngle(LinData.O2_y, set.ChenQi.LT.ptEnd右);
const r2 = (10 * LinData.RadiusFirst2).toFixed(0);
const R2 = (10 * LinData.RadiusSecond2).toFixed(0);
const r1 = (10 * LinData.RadiusFirst1).toFixed(0);
const R1 = (10 * LinData.RadiusSecond1).toFixed(0);
const r3 = (10 * LinData.RadiusFirst3).toFixed(0);
idCol.push(await CxwDraw.addText6P(
CxwDraw.polarPoint(CxwDraw.pointOnline(ptFirst3, LinData.O2_z, 0.15), dipAngle3 + Math.PI / 2, 1),
`r[2]=${r2}`, 3.5, 0, 0.7, dipAngle3
));
idCol.push(await CxwDraw.addText6P(
CxwDraw.polarPoint(CxwDraw.pointOnline(ptFirst3, LinData.O2_z, 0.15), dipAngle3 - Math.PI / 2, 3.5),
`R[2]=${R2}`, 3.5, 0, 0.7, dipAngle3
));
idCol.push(await CxwDraw.addText6P(
CxwDraw.polarPoint(CxwDraw.pointOnline(ptFirst2, LinData.O2_y, 0.3), dipAngle4 + Math.PI / 2, 1.0),
`r[1]=${r1}`, 3.5, 0, 0.7, dipAngle4
));
idCol.push(await CxwDraw.addText6P(
CxwDraw.polarPoint(CxwDraw.pointOnline(ptFirst2, LinData.O2_y, 0.3), dipAngle4 - Math.PI / 2, 3.5),
`R[1]=${R1}`, 3.5, 0, 0.7, dipAngle4
));
idCol.push(await CxwDraw.addText6P(
CxwDraw.polarPoint(CxwDraw.pointOnline(ptLeader1, LinData.O3, 0.15), (275 / 180) * Math.PI + Math.PI / 2, 1.0),
`r[3]=${r3}`, 3.5, 0, 0.7, (275 / 180) * Math.PI
));
set.ChenQi.LT.DicIdCol["DimRadius"] = idCol;
} catch (err) {
// alert("错误代码 1205 - 提示");
}
}
public static drawDimRectangle(){
const mxcad = MxCpp.getCurrentMxCAD();
// === Outer Rectangle Position ===
const x = -100;
const y = -250;
const width = 650;
const height = 400;
// === Inner Rectangle Offset & Position ===
const offset = 5;
const innerX = x + offset;
const innerY = y + offset;
const innerWidth = width - 2 * offset;
const innerHeight = height - 2 * offset;
// === Draw Outer Rectangle (default color, thin) ===
const outer = new McDbPolyline();
outer.isClosed = true;
outer.constantWidth = 0.1; // Very thin line
outer.addVertexAt(new McGePoint3d(x, y, 0));
outer.addVertexAt(new McGePoint3d(x + width, y, 0));
outer.addVertexAt(new McGePoint3d(x + width, y + height, 0));
outer.addVertexAt(new McGePoint3d(x, y + height, 0));
mxcad.drawEntity(outer);
// === Draw Inner Rectangle (purple, thin) ===
const inner = new McDbPolyline();
inner.isClosed = true;
inner.constantWidth = 0.1; // Same thin line
inner.addVertexAt(new McGePoint3d(innerX, innerY, 0));
inner.addVertexAt(new McGePoint3d(innerX + innerWidth, innerY, 0));
inner.addVertexAt(new McGePoint3d(innerX + innerWidth, innerY + innerHeight, 0));
inner.addVertexAt(new McGePoint3d(innerX, innerY + innerHeight, 0));
inner.colorIndex = 6; // Purple color index
mxcad.drawEntity(inner);
}
public static async drawDmbs(set: Setting) {
try {
console.log("===== drawDmbs 开始执行 =====");
// 1. 增强参数验证 - 添加默认值处理
if (!LinData.O1 || !(LinData.O1 instanceof McGePoint3d)) {
console.warn("LinData.O1 无效,使用默认原点");
LinData.O1 = new McGePoint3d(0, 0, 0);
}
const radiusFirst = typeof LinData.RadiusFirst1 === "number" ? LinData.RadiusFirst1 : 100;
const d1Value = typeof LinData.d1 === "number" ? LinData.d1 : 20;
const radius = radiusFirst + d1Value / 2;
// 2. 处理未定义的 Tssz 和 YlbxMode
// const chenQiTssz = set.ChenQi?.Tssz || {};
const chenQi = set && set.ChenQi;
const chenQiTssz = (chenQi && chenQi.Tssz) || {};
const ylbxMode = typeof chenQiTssz.YlbxMode === "number" ? chenQiTssz.YlbxMode : -1;
// 3. 确保 LT 和 Height_Ht 存在
// const lt = set.ChenQi?.LT || {};
const lt = (chenQi && chenQi.LT) || {};
const textHeight = typeof lt.Height_Ht === "number" && lt.Height_Ht > 0 ? lt.Height_Ht : 10;
const idCol: McObjectId[] = [];
// 4. 基准点计算
const ptTextBiaoshi1 = CxwDraw.polarPoint(
LinData.O1,
Math.PI / 3,
radius
);
// 添加详细的坐标日志
console.log("基准点坐标详情:",
`X=${ptTextBiaoshi1.x.toFixed(2)}, ` +
`Y=${ptTextBiaoshi1.y.toFixed(2)}, ` +
`Z=${ptTextBiaoshi1.z.toFixed(2)}`);
console.log("YlbxMode 值:", ylbxMode);
console.log("添加原点(0,0)到基准点的测试线");
// 6. 分支处理
// if (ylbxMode === -1) {
// console.log("使用标准衬砌标示");
// const ids = Linings.drawLiningMark(
// ptTextBiaoshi1,
// Math.PI / 4,
// 50,
// 20,
// textHeight
// );
// Cad.joinIdCol(idCol, ids);
// } else {
// console.log("使用预留变形标示");
// const ids = Linings.drawLiningMarkWithReserve(
// ptTextBiaoshi1,
// Math.PI / 4,
// 50,
// 20,
// textHeight
// );
// Cad.joinIdCol(idCol, ids);
// }
// 7. 安全保存结果
if (!set.ChenQi) set.ChenQi = {};
if (!set.ChenQi.LT) set.ChenQi.LT = { DicIdCol: {} };
if (!set.ChenQi.LT.DicIdCol) set.ChenQi.LT.DicIdCol = {};
set.ChenQi.LT.DicIdCol["Dmbs"] = idCol;
console.log("生成对象数量:", idCol.length);
// 8. 添加成功提示
console.log("所有图形对象已生成");
} catch (err) {
console.error("错误代码 1103:", err);
alert("衬砌标示绘制失败: " + (err instanceof Error ? err.message : String(err)));
} finally {
console.log("===== drawDmbs 执行结束 =====");
}
}
}