From ef579c5716e3416533e830c190d7d9e10abfa467 Mon Sep 17 00:00:00 2001 From: ChenX Date: Thu, 11 Aug 2022 16:06:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=8F=91:=E6=B8=85=E7=90=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __test__/EdgeSealing/BoardHighHole.test.ts | 8 ++--- src/Add-on/BoardEditor/UpdateBoardInfos.ts | 18 +++++----- src/Add-on/BoardFindModify.ts | 6 ++-- src/Add-on/DrawDrilling/HoleUtils.ts | 34 +++++++++++-------- src/DatabaseServices/Entity/Board.ts | 16 +++++---- src/UI/Components/BBS/BoardInfosList.tsx | 14 ++++---- src/UI/Components/BBS/LookOverBoardInfos.tsx | 25 +++++++------- src/UI/Components/Board/CommonBoardOption.tsx | 19 +++-------- src/UI/Components/Board/UpdateBoardInfos.tsx | 4 +-- 9 files changed, 70 insertions(+), 74 deletions(-) diff --git a/__test__/EdgeSealing/BoardHighHole.test.ts b/__test__/EdgeSealing/BoardHighHole.test.ts index 5b0cf1759..4a2f02cb2 100644 --- a/__test__/EdgeSealing/BoardHighHole.test.ts +++ b/__test__/EdgeSealing/BoardHighHole.test.ts @@ -1,4 +1,4 @@ -import { InitRectBoardHoleOption, IRectHoleOption, SetRectHighHole } from "../../src/Add-on/DrawDrilling/HoleUtils"; +import { IBoardRectHoleType, ParseBoardRectHoleType, SetBrHighHoleTypeFromRectHoleType } from "../../src/Add-on/DrawDrilling/HoleUtils"; import "../Utils/jest.util"; import { LoadBoardsFromFileData } from "../Utils/LoadEntity.util"; @@ -7,18 +7,18 @@ test('分析上下左右排钻错误', () => let d = { "file": [1, "Board", 8, 2, 100, false, 1, 3, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -663.6125654450263, 18, -228.07330801010744, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -663.6125654450263, 18, -228.07330801010744, 1], 0, 3, 1583.8020726116358, 409.9999999999068, 18, true, "Polyline", 8, 2, 0, false, 0, 3, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2052, 2475.00000958101, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2052, 2475.00000958101, 0, 1], 0, 2, 4, [-1642.0000000000932, -2475.00000958101], 0, [-1642.0000000000932, -891.1979369693743], 0, [-2052, -891.1979369693743], 0, [-2052, -2475], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 2, "左开门板", "男孩房衣柜", "门板+见光板", "4*9尺华纶卡其L1075", "颗粒板", "华纶卡其L1075", 0, 0, "不排", 2, 0, "0.8", "0.8", "0.8", "0.8", "", "", "", 4, "不排", "不排", "不排", "不排", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0], "basePt": { "x": -663.6125654450263, "y": 0, "z": -228.07330801010744 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let brs = LoadBoardsFromFileData(d); - let rectHoleOption: IRectHoleOption = { + let rectHoleOption: IBoardRectHoleType = { up: "", down: "", left: "", right: "" }; - InitRectBoardHoleOption(brs[0], rectHoleOption); + ParseBoardRectHoleType(brs[0], rectHoleOption); expect(rectHoleOption).toMatchSnapshot(); - SetRectHighHole(brs[0], { + SetBrHighHoleTypeFromRectHoleType(brs[0], { up: "三合一", down: "二合一", left: "不排", diff --git a/src/Add-on/BoardEditor/UpdateBoardInfos.ts b/src/Add-on/BoardEditor/UpdateBoardInfos.ts index 0e54a2823..731b0a2ea 100644 --- a/src/Add-on/BoardEditor/UpdateBoardInfos.ts +++ b/src/Add-on/BoardEditor/UpdateBoardInfos.ts @@ -5,13 +5,13 @@ import { EBoardKeyList } from "../../Common/BoardKeyList"; import { Board } from "../../DatabaseServices/Entity/Board"; import { Command } from "../../Editor/CommandMachine"; import { PromptStatus } from "../../Editor/PromptResult"; -import { InitRectBoardDrillOption, SetRectHighDrill } from "../../UI/Components/Board/CommonBoardOption"; import { IUpdateBoardInfosOption } from "../../UI/Components/Board/UpdateBoardInfointerface"; import { UpdateBoardInfoModal } from "../../UI/Components/Board/UpdateBoardInfos"; import { AppToaster } from "../../UI/Components/Toaster"; import { DRILL_KEYS } from "../../UI/Store/BoardFindInterface"; import { updateBoardInfoStore } from "../../UI/Store/UpdateBoardInfoStore"; import { CuttingBoardByBoard } from "../BoardCutting/CuttingUtils2"; +import { ParseBoardRectHoleType, SetBrHighHoleTypeFromRectHoleType } from "../DrawDrilling/HoleUtils"; //根据板件名改属性 export class UpdateBoardInfos implements Command @@ -173,36 +173,36 @@ export class UpdateBoardInfos implements Command if (option.highDrill.length === 4 && !br.IsSpecialShape) { let index = DRILL_KEYS.indexOf(i); - InitRectBoardDrillOption(br, drillOption); + ParseBoardRectHoleType(br, drillOption); drillOption.up = option.highDrill[index]; - SetRectHighDrill(br, drillOption); + SetBrHighHoleTypeFromRectHoleType(br, drillOption); } break; case "downDrill": if (option.highDrill.length === 4 && !br.IsSpecialShape) { let index = DRILL_KEYS.indexOf(i); - InitRectBoardDrillOption(br, drillOption); + ParseBoardRectHoleType(br, drillOption); drillOption.down = option.highDrill[index]; - SetRectHighDrill(br, drillOption); + SetBrHighHoleTypeFromRectHoleType(br, drillOption); } break; case "leftDrill": if (option.highDrill.length === 4 && !br.IsSpecialShape) { let index = DRILL_KEYS.indexOf(i); - InitRectBoardDrillOption(br, drillOption); + ParseBoardRectHoleType(br, drillOption); drillOption.left = option.highDrill[index]; - SetRectHighDrill(br, drillOption); + SetBrHighHoleTypeFromRectHoleType(br, drillOption); } break; case "rightDrill": if (option.highDrill.length === 4 && !br.IsSpecialShape) { let index = DRILL_KEYS.indexOf(i); - InitRectBoardDrillOption(br, drillOption); + ParseBoardRectHoleType(br, drillOption); drillOption.right = option.highDrill[index]; - SetRectHighDrill(br, drillOption); + SetBrHighHoleTypeFromRectHoleType(br, drillOption); } break; case "isChaiDan": diff --git a/src/Add-on/BoardFindModify.ts b/src/Add-on/BoardFindModify.ts index c42ef71ae..1bbf026a6 100644 --- a/src/Add-on/BoardFindModify.ts +++ b/src/Add-on/BoardFindModify.ts @@ -19,10 +19,10 @@ import { SelectSetBase } from "../Editor/SelectBase"; import { equaln } from "../Geometry/GeUtils"; import { IHardwareType, Production } from "../Production/Product"; import BoardFindModifyModal from "../UI/Components/Board/BoardFindModify"; -import { InitRectBoardDrillOption, SetRectHighDrill } from "../UI/Components/Board/CommonBoardOption"; import { DRILL_KEYS, ECompareType, EFindType, IBoardFindOption, IFindCondition } from "../UI/Store/BoardFindInterface"; import { BoardFindStore } from "../UI/Store/BoardFindModifyStore"; import { DrillType } from "../UI/Store/BoardInterface"; +import { ParseBoardRectHoleType, SetBrHighHoleTypeFromRectHoleType } from "./DrawDrilling/HoleUtils"; import { IsDoor } from "./HideSelect/HideSelectUtils"; export class BoardFindModify implements Command @@ -350,7 +350,7 @@ export class BoardFindModify implements Command let isChangeHole = (option.condition.rightDrill || option.condition.leftDrill || option.condition.upDrill || option.condition.downDrill); if (!br.IsSpecialShape && isChangeHole) - InitRectBoardDrillOption(br, drillOption); + ParseBoardRectHoleType(br, drillOption); for (let i in option.condition) { @@ -479,7 +479,7 @@ export class BoardFindModify implements Command else { if (isChangeHole) - SetRectHighDrill(br, drillOption); + SetBrHighHoleTypeFromRectHoleType(br, drillOption); //避免板件变0长度后,不能还原成正常的板 if (br.ContourCurve.EndParam < 4) diff --git a/src/Add-on/DrawDrilling/HoleUtils.ts b/src/Add-on/DrawDrilling/HoleUtils.ts index 136b48c28..fbd458ea2 100644 --- a/src/Add-on/DrawDrilling/HoleUtils.ts +++ b/src/Add-on/DrawDrilling/HoleUtils.ts @@ -140,7 +140,10 @@ export function CyHoleInBoard(cys: CylinderHole[], br: Board, ocs: Matrix4) return true; } -export interface IRectHoleOption +/** + * 板的排钻 <上下左右> + */ +export interface IBoardRectHoleType { up: string; down: string; @@ -148,7 +151,7 @@ export interface IRectHoleOption right: string; } -export const TempRectHoleOption: IRectHoleOption = { +export const TempRectHoleOption: IBoardRectHoleType = { up: "", down: "", left: "", @@ -156,7 +159,7 @@ export const TempRectHoleOption: IRectHoleOption = { }; /**分析上下左右排钻 */ -export function InitRectBoardHoleOption(br: Board, option: IRectHoleOption) +export function ParseBoardRectHoleType(br: Board, outBrRectHoleType: IBoardRectHoleType = {} as any) { let dir = Math.sign(br.ContourCurve.Area2); let hightDrill = br.BoardProcessOption.highDrill; @@ -169,24 +172,27 @@ export function InitRectBoardHoleOption(br: Board, option: IRectHoleOption) if (Math.abs(derv.x) > Math.abs(derv.y)) { if (derv.x > 0) - option.down = hightDrill[i]; + outBrRectHoleType.down = hightDrill[i]; else - option.up = hightDrill[i]; + outBrRectHoleType.up = hightDrill[i]; } else { if (derv.y > 0) - option.right = hightDrill[i]; + outBrRectHoleType.right = hightDrill[i]; else - option.left = hightDrill[i]; + outBrRectHoleType.left = hightDrill[i]; } } + + return outBrRectHoleType; } export function ExtureHoleInBoard(holes: ExtrudeHole[], board: Board, ocs: Matrix4) { //TODO:自定义排钻判断 return true; } + export function HoleInBoard(holes: Hole[], br: Board, ocs?: Matrix4) { if (holes.length === 0) return false; @@ -201,8 +207,8 @@ export function HoleInBoard(holes: Hole[], br: Board, ocs?: Matrix4) } } -/**上下左右排钻写入板件 */ -export function SetRectHighHole(br: Board, option: IRectHoleOption) +/**上下左右排钻写入到板件的高级排钻中 */ +export function SetBrHighHoleTypeFromRectHoleType(br: Board, brRectHoleType: IBoardRectHoleType) { let dir = Math.sign(br.ContourCurve.Area2); let highDrill = br.BoardProcessOption.highDrill; @@ -216,16 +222,16 @@ export function SetRectHighHole(br: Board, option: IRectHoleOption) if (Math.abs(derv.x) > Math.abs(derv.y)) { if (derv.x > 0) - highDrill.push(option.down); + highDrill.push(brRectHoleType.down); else - highDrill.push(option.up); + highDrill.push(brRectHoleType.up); } else { if (derv.y > 0) - highDrill.push(option.right); + highDrill.push(brRectHoleType.right); else - highDrill.push(option.left); + highDrill.push(brRectHoleType.left); } } let types = new Set(highDrill); @@ -233,4 +239,4 @@ export function SetRectHighHole(br: Board, option: IRectHoleOption) br.BoardProcessOption[EBoardKeyList.DrillType] = highDrill[0]; else if (types.size > 1) br.BoardProcessOption[EBoardKeyList.DrillType] = DrillType.More; -}; +} diff --git a/src/DatabaseServices/Entity/Board.ts b/src/DatabaseServices/Entity/Board.ts index f6bf9b4ae..953148c31 100644 --- a/src/DatabaseServices/Entity/Board.ts +++ b/src/DatabaseServices/Entity/Board.ts @@ -1,7 +1,7 @@ import { Geometry, Line as TLine, LineSegments, Matrix3, Matrix4, Mesh, Object3D, ShapeGeometry, UVGenerator, Vector3 } from 'three'; import { Board2Regions } from '../../Add-on/BoardEditor/Board2Regions'; import { DeserializationBoard2DModeingData, DeserializationBoard3DModeingData, deserializationBoardData, SerializeBoard2DModeingData, SerializeBoard3DModeingData, serializeBoardData } from '../../Add-on/BoardEditor/SerializeBoardData'; -import { CyHoleInBoard, InitRectBoardHoleOption, SetRectHighHole, TempRectHoleOption } from '../../Add-on/DrawDrilling/HoleUtils'; +import { CyHoleInBoard, ParseBoardRectHoleType, SetBrHighHoleTypeFromRectHoleType, TempRectHoleOption } from '../../Add-on/DrawDrilling/HoleUtils'; import { HostApplicationServices } from '../../ApplicationServices/HostApplicationServices'; import { arrayRemoveIf, arraySortByNumber, arraySum } from '../../Common/ArrayExt'; import { EBoardKeyList } from '../../Common/BoardKeyList'; @@ -352,14 +352,16 @@ export class Board extends ExtrudeSolid { let brs = this.SplitExtrudes; - let dridatas: string[]; + let highDrills: string[]; let ocsInv: Matrix4; if (brs.some(br => br.__OriginalEnt__)) { if (this._BoardProcessOption.highDrill && this._BoardProcessOption.highDrill.length > 1 && !this._BoardProcessOption.highDrill.every(d => d === this._BoardProcessOption.drillType)) - dridatas = this._BoardProcessOption.highDrill; + { + highDrills = this._BoardProcessOption.highDrill; + } ocsInv = this.OCSInv; } @@ -376,7 +378,7 @@ export class Board extends ExtrudeSolid br._BoardProcessOption = { ...this._BoardProcessOption }; //修正排钻边的数据 - if (dridatas) + if (highDrills) { br.BoardProcessOption.highDrill = [];//因为上面用了拷贝,所以这里不能直接改它的数据(我们新建一个数组来改它,否则原始板件的数据就被改掉了) //矩阵对齐 @@ -390,7 +392,7 @@ export class Board extends ExtrudeSolid let cparam = this.contourCurve.GetParamAtPoint2(cp); if (cparam !== undefined) { - let newDri = dridatas[Math.floor(cparam)]; + let newDri = highDrills[Math.floor(cparam)]; br._BoardProcessOption.highDrill[i] = newDri ?? br._BoardProcessOption.drillType; } else @@ -781,12 +783,12 @@ export class Board extends ExtrudeSolid else { if (this.isRect) - InitRectBoardHoleOption(this, TempRectHoleOption); + ParseBoardRectHoleType(this, TempRectHoleOption); } super.ContourCurve = cu; if (this.isRect && TempRectHoleOption.up) - SetRectHighHole(this, TempRectHoleOption); + SetBrHighHoleTypeFromRectHoleType(this, TempRectHoleOption); } Explode() diff --git a/src/UI/Components/BBS/BoardInfosList.tsx b/src/UI/Components/BBS/BoardInfosList.tsx index ca40dccc0..81f7cf85e 100644 --- a/src/UI/Components/BBS/BoardInfosList.tsx +++ b/src/UI/Components/BBS/BoardInfosList.tsx @@ -3,7 +3,7 @@ import { observable } from "mobx"; import { observer } from "mobx-react"; import * as React from 'react'; import { end } from "xaop"; -import { IRectHoleOption } from "../../../Add-on/DrawDrilling/HoleUtils"; +import { ParseBoardRectHoleType } from "../../../Add-on/DrawDrilling/HoleUtils"; import { EBoardKeyList } from "../../../Common/BoardKeyList"; import { CheckObjectType } from "../../../Common/CheckoutVaildValue"; import { BigFaceSelectOption, ComposingFaceSelectOption, LineTypeSelectOption } from "../../../Common/CommonSelectOption"; @@ -16,7 +16,6 @@ import { userConfig } from "../../../Editor/UserConfig"; import { bbsEditorStore, TotalTabbarTitlesInfos } from "../../Store/BBSEditorStore"; import { BoardProcessOption, DrillType, LinesType } from "../../Store/BoardInterface"; import { TopPanelStore } from "../../Store/TopPanelStore"; -import { InitRectBoardDrillOption } from "../Board/CommonBoardOption"; import { ToasterInput } from "../Toaster"; import { BBSHighDrillingComponent, BBSProcessGroupItem, BBSRemarksComponent, BBSSealingComponent, BBSSelectComponent } from "./BBSCommon"; import { ListItemSelectEventEmitter } from "./LookOverBoardInfos"; @@ -298,12 +297,11 @@ export class BoardInfoList extends React.Component case "highDrill": if (!br.IsSpecialShape) { - let tempOption = {} as IRectHoleOption; - InitRectBoardDrillOption(br, tempOption); - opt.upDrill = tempOption.up; - opt.downDrill = tempOption.down; - opt.leftDrill = tempOption.left; - opt.rightDrill = tempOption.right; + let tempRectHoleType = ParseBoardRectHoleType(br); + opt.upDrill = tempRectHoleType.up; + opt.downDrill = tempRectHoleType.down; + opt.leftDrill = tempRectHoleType.left; + opt.rightDrill = tempRectHoleType.right; } break; case "remarks": diff --git a/src/UI/Components/BBS/LookOverBoardInfos.tsx b/src/UI/Components/BBS/LookOverBoardInfos.tsx index 650375ddf..423d70ffb 100644 --- a/src/UI/Components/BBS/LookOverBoardInfos.tsx +++ b/src/UI/Components/BBS/LookOverBoardInfos.tsx @@ -6,7 +6,7 @@ import * as React from 'react'; import { Rnd } from "react-rnd"; import AutoSizer from 'react-virtualized-auto-sizer'; import { begin, end } from "xaop"; -import { IRectHoleOption } from "../../../Add-on/DrawDrilling/HoleUtils"; +import { IBoardRectHoleType, ParseBoardRectHoleType, SetBrHighHoleTypeFromRectHoleType } from "../../../Add-on/DrawDrilling/HoleUtils"; import { ICountType, lookOverBoardInfosTool } from "../../../Add-on/LookOverBoardInfos/LookOverBoardInfosTool"; import { app } from "../../../ApplicationServices/Application"; import { arrayRemove } from "../../../Common/ArrayExt"; @@ -39,7 +39,6 @@ import { EFindType } from "../../Store/BoardFindInterface"; import { ComposingType, FaceDirection, LinesType } from "../../Store/BoardInterface"; import { userConfigStore } from "../../Store/UserConfigStore"; import { BoardModalType } from "../Board/BoardModalType"; -import { InitRectBoardDrillOption, SetRectHighDrill } from "../Board/CommonBoardOption"; import { GetCompoentObjectIdString } from "../ComponentObjectId"; import { ModalFooter, ModalHeader } from "../Modal/ModalContainer"; import { ModalState } from "../Modal/ModalInterface"; @@ -432,7 +431,7 @@ export class LookOverBoardInfosModal extends React.Component; canModeling?: IObservableValue; _IsSpecialBoard?: IObservableValue; @@ -51,7 +51,7 @@ export function AddCommonBoardProps(Com: React.ComponentType grooveAddDepth: "", knifeRadius: "", }); - public drillsOption: IRectHoleOption = observable({ + public drillsOption: IBoardRectHoleType = observable({ up: "", down: "", left: "", @@ -170,14 +170,14 @@ export function AddCommonBoardProps(Com: React.ComponentType { if (this.CurrentBoard) { - InitRectBoardDrillOption(this.CurrentBoard, this.drillsOption); + ParseBoardRectHoleType(this.CurrentBoard, this.drillsOption); } }); public SetRectHighDrill = () => { if (this.CurrentBoard) { - SetRectHighDrill(this.CurrentBoard, this.drillsOption); + SetBrHighHoleTypeFromRectHoleType(this.CurrentBoard, this.drillsOption); } }; handleComfirmOption = () => @@ -282,12 +282,3 @@ export function AddCommonBoardProps(Com: React.ComponentType }; } - -export function InitRectBoardDrillOption(br: Board, option: IRectHoleOption) -{ - InitRectBoardHoleOption(br, option); -} -export function SetRectHighDrill(br: Board, option: IRectHoleOption) -{ - SetRectHighHole(br, option); -}; diff --git a/src/UI/Components/Board/UpdateBoardInfos.tsx b/src/UI/Components/Board/UpdateBoardInfos.tsx index c9b70e38a..4f877daa6 100644 --- a/src/UI/Components/Board/UpdateBoardInfos.tsx +++ b/src/UI/Components/Board/UpdateBoardInfos.tsx @@ -3,6 +3,7 @@ import { toJS } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import * as xaop from 'xaop'; +import { ParseBoardRectHoleType } from '../../../Add-on/DrawDrilling/HoleUtils'; import { app } from '../../../ApplicationServices/Application'; import { EBoardKeyList } from '../../../Common/BoardKeyList'; import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; @@ -22,7 +23,6 @@ import { ToasterInput, ToasterValueError } from '../Toaster'; import { AutoCutCheckbox, Notes } from './BoardCommon'; import { MatColorCom, SealDrillCom } from './BoardFindCommon'; import { BoardModalType } from "./BoardModalType"; -import { InitRectBoardDrillOption } from './CommonBoardOption'; import { Config_ModalType } from './UserConfig'; export interface IUpdateBoardInfoModalProps @@ -409,7 +409,7 @@ export class UpdateBoardInfoModal extends React.Component