From fa4d399016d382e9d1e509cb120f694d6627ee74 Mon Sep 17 00:00:00 2001 From: ChenX Date: Thu, 13 Feb 2020 20:03:46 +0800 Subject: [PATCH] =?UTF-8?q?!735=20=E4=BF=AE=E6=AD=A3=E9=85=B7=E5=AE=B6?= =?UTF-8?q?=E4=B9=90=E6=96=87=E4=BB=B6=E4=B8=AD=E7=9A=84=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E7=82=B9=EF=BC=8C=E4=BF=9D=E6=8C=81=E5=A4=9A=E6=AE=B5=E7=BA=BF?= =?UTF-8?q?=E7=BF=BB=E8=BD=AC=E5=90=8E=E5=8E=9F=E7=82=B9=E4=B8=8D=E5=8F=98?= =?UTF-8?q?=EF=BC=8C=E7=A7=BB=E9=99=A4=E6=9D=BF=E4=BB=B6=E5=A7=8B=E7=BB=88?= =?UTF-8?q?=E9=80=86=E6=97=B6=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/KJLImport.ts | 58 +++++++++++++------------ src/DatabaseServices/Entity/Board.ts | 2 - src/DatabaseServices/Entity/Polyline.ts | 6 +++ 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/src/Add-on/KJLImport.ts b/src/Add-on/KJLImport.ts index 5e0739529..9defeb9d1 100644 --- a/src/Add-on/KJLImport.ts +++ b/src/Add-on/KJLImport.ts @@ -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 { - if (!params) return; - - let etIndex = params.findIndex(p => p.name === "ET"); - if (etIndex !== -1) + let edgeBandings: number[] = []; + let maxIndex = 0; + const Parse = (params: KJL_Parameter[]) => { - let p = params[etIndex]; - return [parseFloat(p.value)]; - } + if (!params) return; + console.table(params.map(p => + { + return { name: p.name, value: p.value }; + })); + for (let param of params) + { + if (param.name.startsWith("ET")) + { + let index = parseInt(param.name.substring(2)) - 1; + edgeBandings[index] = parseFloat(param.value); + maxIndex = Math.max(index, maxIndex); + } + } + }; - let index = params.findIndex(p => p.name === "ET1"); - if (index !== -1) + Parse(model.constParameters); + Parse(model.ignoreParameters); + Parse(model.parameters); + + for (let i = 0; i < maxIndex; i++) { - let edgeBandings: number[] = []; - for (let i = index; i < params.length; i++) - { - let p = params[i]; - if (!p.name.startsWith("ET")) - break; + if (edgeBandings[i] === undefined) + edgeBandings[i] = edgeBandings[maxIndex]; + } - //0 无 1 薄 2 厚 - edgeBandings.push(parseFloat(p.value)); - } - //@ts-ignore - edgeBandings._test = params; + console.log('edgeBandings: ', edgeBandings); + if (edgeBandings.length > 0) return edgeBandings; - } } function ParseDrilling(params: KJL_Parameter[]): KJL_DrillData | undefined diff --git a/src/DatabaseServices/Entity/Board.ts b/src/DatabaseServices/Entity/Board.ts index 6b8c66dc0..19e1e6eba 100644 --- a/src/DatabaseServices/Entity/Board.ts +++ b/src/DatabaseServices/Entity/Board.ts @@ -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; } diff --git a/src/DatabaseServices/Entity/Polyline.ts b/src/DatabaseServices/Entity/Polyline.ts index 9eb835ecc..687e3f37e 100644 --- a/src/DatabaseServices/Entity/Polyline.ts +++ b/src/DatabaseServices/Entity/Polyline.ts @@ -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];