!735 修正酷家乐文件中的重复点,保持多段线翻转后原点不变,移除板件始终逆时针

pull/735/MERGE
ChenX 5 years ago
parent eaf4273a66
commit fa4d399016

@ -206,12 +206,9 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare
br.testData = {
edgeBandingAll, drillData, model
};
const isInv = pls[0].Area2 < 0;
br.ContourCurve = pls[0];
if (edgesBandings.length > 0 && edgesBandings[0].length > 0)
{
if (isInv)
edgesBandings[0].reverse();
let sealeds: IHighSealedItem[] = edgesBandings[0].map(v =>
{
return { size: v };
@ -238,8 +235,6 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare
//设置排钻边
if (drillData?.drillSides.length > 0)
{
if (isInv)
drillData.drillSides.reverse();
let curvesNum = br.ContourCurve.CurveCount;
let types = ["不排", ...userConfig.DrillConfigs.keys()];
let last = types[arrayLast(drillData.drillSides)];
@ -327,7 +322,7 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare
let templates: TemplateRecord[] = [];
for (let m of model.subModels)
{
let edgeBandings = ParseEdgeBanding(model.parameters) || ParseEdgeBanding(model.ignoreParameters) || ParseEdgeBanding(model.constParameters);
let edgeBandings = ParseEdgeBanding(model);
let drillData = ParseDrilling(model.parameters) || ParseDrilling(model.ignoreParameters) || ParseDrilling(model.constParameters);
let obj = ParseModel(m, roomName, gName, mtx, edgeBandings, drillData);
if (obj)
@ -364,34 +359,41 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare
}
}
function ParseEdgeBanding(params: KJL_Parameter[]): number[] | undefined
function ParseEdgeBanding(model: KJL_ParamModel): number[] | undefined
{
let edgeBandings: number[] = [];
let maxIndex = 0;
const Parse = (params: KJL_Parameter[]) =>
{
if (!params) return;
let etIndex = params.findIndex(p => p.name === "ET");
if (etIndex !== -1)
console.table(params.map(p =>
{
let p = params[etIndex];
return [parseFloat(p.value)];
}
let index = params.findIndex(p => p.name === "ET1");
if (index !== -1)
return { name: p.name, value: p.value };
}));
for (let param of params)
{
let edgeBandings: number[] = [];
for (let i = index; i < params.length; i++)
if (param.name.startsWith("ET"))
{
let p = params[i];
if (!p.name.startsWith("ET"))
break;
let index = parseInt(param.name.substring(2)) - 1;
edgeBandings[index] = parseFloat(param.value);
maxIndex = Math.max(index, maxIndex);
}
}
};
Parse(model.constParameters);
Parse(model.ignoreParameters);
Parse(model.parameters);
//0 无 1 薄 2 厚
edgeBandings.push(parseFloat(p.value));
for (let i = 0; i < maxIndex; i++)
{
if (edgeBandings[i] === undefined)
edgeBandings[i] = edgeBandings[maxIndex];
}
//@ts-ignore
edgeBandings._test = params;
console.log('edgeBandings: ', edgeBandings);
if (edgeBandings.length > 0)
return edgeBandings;
}
}
function ParseDrilling(params: KJL_Parameter[]): KJL_DrillData | undefined

@ -514,8 +514,6 @@ export class Board extends ExtrudeSolid
}
this._BoardProcessOption.highDrill = Array(cu.EndParam).fill(defaultType);
}
if (cu instanceof Polyline && cu.Area2 < 0)
cu.Reverse();
super.ContourCurve = cu;
}

@ -97,6 +97,12 @@ export class Polyline extends Curve
pts.reverse();
if (this._ClosedMark && !equalv2(pts[0], arrayLast(pts)))
{
pts.unshift(pts.pop());
buls.unshift(buls.pop());
}
for (let i = 0; i < pts.length; i++)
{
let d = this._LineData[i];

Loading…
Cancel
Save