清理代码

pull/68/head
ChenX 6 years ago
parent 5a13c65dd0
commit acff8be499

@ -18,7 +18,7 @@ interface offestRes
interface offestRes1
{
index: number,
pl: Curve
curve: Curve
}
/**
@ -1065,13 +1065,14 @@ export class PolyOffestUtil3
//偏移
GetOffsetCurves(): Curve[]
{
let plList1: offestRes1[] = this.offestCurve(this.m_Polyline.Explode());
let plList2: offestRes1[] = this.offestCurve(this.m_Polyline.Explode(), true);
let expCus = this.m_Polyline.Explode();
let plList1 = this.offestCurve(expCus, this.m_OffestDist);
let plList2 = this.offestCurve(expCus, -this.m_OffestDist);
let contours: Contour[] = [];
for (let i = 0; i < plList1.length; i++)
{
let con = this.buildContourByTwoSideOfest(plList1[i].pl, plList2[i].pl);
let con = this.buildContourByTwoSideOfest(plList1[i].curve, plList2[i].curve);
con && contours.push(con);
}
@ -1126,17 +1127,15 @@ export class PolyOffestUtil3
}
//偏移曲线
private offestCurve(pls: Curve[], isContrary: boolean = false): offestRes1[]
private offestCurve(pls: Curve[], dis: number): offestRes1[]
{
let plList: offestRes1[] = [];
pls.forEach((cu, index) =>
return pls.map((cu, index) =>
{
let pl = cu.GetOffsetCurves(isContrary ? -this.m_OffestDist : this.m_OffestDist)[0];
plList.push({ pl, index });
let curve = cu.GetOffsetCurves(dis)[0];
return { curve, index };
});
return plList;
}
//通过2侧偏移曲线构建封闭轮廓
//通过2侧偏移曲线构建封闭轮廓,由于是双向偏移,所以不可能出现2个曲线都为空的情况
private buildContourByTwoSideOfest(pl1: Curve, pl2: Curve)
{
if (pl1 && pl2)
@ -1162,20 +1161,21 @@ export class PolyOffestUtil3
// 修剪连接相邻曲线
private trimAndJointOffestPolyline(offResList: offestRes1[], originLine: Polyline)
{
offResList = offResList.filter(r => r.pl)
if (offResList.length === 0) return [];
if (offResList.length === 1) return [offResList[0].pl];
offResList = offResList.filter(r => r.curve);
if (offResList.length <= 1)
return offResList.map(r => r.curve);
let newPlList: Array<Curve> = [];
let nextPt: Vector3 = offResList[0].pl.StartPoint.clone();
let nextPt: Vector3 = offResList[0].curve.StartPoint;
for (let i = 0; i < offResList.length; i++)
{
//前面线
let frontLine = offResList[i].pl;
let frontLine = offResList[i].curve;
//后面线
let laterLine = i === offResList.length - 1 ? undefined : offResList[i + 1].pl;
let laterLine = i === offResList.length - 1 ? undefined : offResList[i + 1].curve;
//如果是闭合的,继续循环,否则直接添加到新数组列表
if (i === offResList.length - 1)
{
@ -1183,7 +1183,6 @@ export class PolyOffestUtil3
laterLine = newPlList[0];
else
{
let frontLine = offResList[offResList.length - 1].pl;
this.appendNewPllist(frontLine, nextPt, frontLine.EndPoint, newPlList);
break;
}

Loading…
Cancel
Save