From 7978186036455a21f7b02b5f358093452f75d917 Mon Sep 17 00:00:00 2001 From: ChenX Date: Thu, 30 Aug 2018 10:28:29 +0800 Subject: [PATCH] =?UTF-8?q?!120=20=E5=8F=8C=E5=87=BB=E6=9D=BF=E4=BB=B6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=20Merge=20pull=20request=20!120=20from=20Zoe?= =?UTF-8?q?LeeFZ/dbclick=5Fpr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/DrawBoard/DrawBehindBoard.ts | 7 +- src/Add-on/DrawBoard/DrawClosingStrip.ts | 19 +- src/Add-on/DrawBoard/DrawLayerBoard.ts | 9 +- src/Add-on/DrawBoard/DrawLeftRightBoard.ts | 9 +- src/Add-on/DrawBoard/DrawSingleBoard.ts | 9 +- src/Add-on/DrawBoard/DrawTopBottomBoard.ts | 31 ++-- src/Add-on/DrawBoard/DrawVerticalBoard.ts | 8 +- src/Common/Utils.ts | 42 ++++- src/DatabaseServices/Board.ts | 52 +++++- .../Dimension/LinearDimension.ts | 9 +- src/Editor/DbClick.ts | 42 +++++ src/Editor/MouseControls.ts | 7 +- .../TranstrolControl/TransformServices.ts | 5 + src/Geometry/SpaceParse/SpaceParse.ts | 4 +- src/Geometry/SpaceParse/SurroundSpaceParse.ts | 4 +- src/UI/Components/Board/BehindBoardModal.tsx | 4 +- src/UI/Components/Board/BoardCommon.tsx | 32 +++- src/UI/Components/Board/BoardConfigModal.tsx | 52 ++++++ src/UI/Components/Board/BoardOptionModal.tsx | 166 ++++++++++++++++++ src/UI/Components/Board/BoardProcessModal.tsx | 48 ++--- src/UI/Components/Board/ClosingStripModal.tsx | 4 +- src/UI/Components/Board/LayerBoardModal.tsx | 2 +- src/UI/Components/Board/SingleBoardModal.tsx | 35 ++-- .../Components/Board/VerticalBoardModal.tsx | 2 +- src/UI/Components/Modal/LightModal.tsx | 29 ++- src/UI/Components/Modal/Modal.less | 11 +- src/UI/Components/Modal/ModalsManage.tsx | 36 +--- src/UI/Store/BoardInterface.ts | 118 ++++++++----- src/UI/Store/BoardStore.ts | 46 +++-- 29 files changed, 604 insertions(+), 238 deletions(-) create mode 100644 src/Editor/DbClick.ts create mode 100644 src/UI/Components/Board/BoardConfigModal.tsx create mode 100644 src/UI/Components/Board/BoardOptionModal.tsx diff --git a/src/Add-on/DrawBoard/DrawBehindBoard.ts b/src/Add-on/DrawBoard/DrawBehindBoard.ts index 97553aefd..3be5c3ee0 100644 --- a/src/Add-on/DrawBoard/DrawBehindBoard.ts +++ b/src/Add-on/DrawBoard/DrawBehindBoard.ts @@ -47,8 +47,8 @@ export class DrawBehindBoard extends DrawBoardTool let thickness = parseFloat(opt.thickness); let board = Board.CreateBoard(height, size.x, thickness, BoardType.Behind); - board.m_BoardConfigOption = opt; - board.m_BoardProcessOption = data.boardProcess; + opt.height = height.toString(); + opt.width = size.x.toString(); //等分单层空间大小 let singleSize = (size.y - (thickness * count)) / (count + 1); @@ -56,6 +56,9 @@ export class DrawBehindBoard extends DrawBoardTool for (let i = 1; i <= count; i++) { let b = board.Clone(); + b.Name = opt.name; + b.m_BoardProcessOption = Object.assign({}, data.boardProcess); + if (relPos === BrRelativePos.Front) b.ApplyMatrix(MoveMatrix(newBox.min.clone().add(new Vector3(0, spaceSize * i + (i - 1) * thickness, 0)))); else if (relPos === BrRelativePos.Back) diff --git a/src/Add-on/DrawBoard/DrawClosingStrip.ts b/src/Add-on/DrawBoard/DrawClosingStrip.ts index 70b002240..645d44a94 100644 --- a/src/Add-on/DrawBoard/DrawClosingStrip.ts +++ b/src/Add-on/DrawBoard/DrawClosingStrip.ts @@ -62,29 +62,30 @@ export class DrawClosingStrip implements Command //靠上,横板为层板,基点位置为前右上方的点往上移动一个厚度 竖板为背板,基点为前左上方点 if (opt.boardRelative === BrRelativePos.Top) { - if (opt.type === StripType.H) + if (opt.striptype === StripType.H) { br = Board.CreateBoard(size.x, width, thickness, BoardType.Layer); + pos.set(max.x, min.y, max.z + thickness); } else { br = Board.CreateBoard(width, size.x, thickness, BoardType.Behind); + pos.set(min.x, min.y, max.z); } } else { br = Board.CreateBoard(size.z, width, thickness, - opt.type === StripType.H ? BoardType.Behind : BoardType.Vertical); - + opt.striptype === StripType.H ? BoardType.Behind : BoardType.Vertical); //靠左,横板为背板,基点为左下角点往x移动一个宽度,竖板为立板,基点为左下角点 //靠右,横板基点为右下角点,竖板基点为左下角点右移动一个厚度 if (opt.boardRelative === BrRelativePos.Left) { - if (opt.type === StripType.H) + if (opt.striptype === StripType.H) { pos.set(min.x - width, min.y, min.z); } @@ -95,7 +96,7 @@ export class DrawClosingStrip implements Command } else { - if (opt.type === StripType.H) + if (opt.striptype === StripType.H) { pos.set(max.x, min.y, min.z); } @@ -106,8 +107,12 @@ export class DrawClosingStrip implements Command } } - br.m_BoardConfigOption = opt; - br.m_BoardProcessOption = this.store.m_BoardProcessOption; + opt.type = br.BoardType; + opt.height = br.Length.toString(); + opt.width = br.Width.toString(); + + br.Name = opt.name; + br.m_BoardProcessOption = Object.assign({}, this.store.m_BoardProcessOption); //收口条颜色 br.ColorIndex = 4; diff --git a/src/Add-on/DrawBoard/DrawLayerBoard.ts b/src/Add-on/DrawBoard/DrawLayerBoard.ts index 8ac508097..df99f67bc 100644 --- a/src/Add-on/DrawBoard/DrawLayerBoard.ts +++ b/src/Add-on/DrawBoard/DrawLayerBoard.ts @@ -27,9 +27,11 @@ export class DrawLayerBoard extends DrawBoardTool let rightShrink = parseFloat(opt.rightShrink); let thickness = parseFloat(opt.thickness); + let len = size.x - leftShrink - rightShrink; + let board = Board.CreateBoard(size.x - leftShrink - rightShrink, width, thickness, BoardType.Layer); - board.m_BoardConfigOption = opt; - board.m_BoardProcessOption = data.boardProcess; + opt.height = len.toString(); + opt.width = width.toString(); //等分单层空间大小 let singleSize = (size.z - (thickness * count)) / (count + 1); @@ -37,6 +39,9 @@ export class DrawLayerBoard extends DrawBoardTool for (let i = 1; i <= count; i++) { let b = board.Clone() as Board; + b.Name = opt.name; + b.m_BoardProcessOption = Object.assign({}, data.boardProcess); + if (type === BrRelativePos.Top) b.ApplyMatrix(MoveMatrix(box.min.clone().add( new Vector3(size.x - leftShrink, frontShrink, size.z - spaceSize * i - (i - 1) * thickness) diff --git a/src/Add-on/DrawBoard/DrawLeftRightBoard.ts b/src/Add-on/DrawBoard/DrawLeftRightBoard.ts index f38a93c36..83502de38 100644 --- a/src/Add-on/DrawBoard/DrawLeftRightBoard.ts +++ b/src/Add-on/DrawBoard/DrawLeftRightBoard.ts @@ -49,10 +49,11 @@ export class DrawLeftRight implements Command leftBoard.ApplyMatrix(MoveMatrix(vec)); rightBoard.ApplyMatrix(MoveMatrix(vec)); - leftBoard.m_BoardConfigOption = store.m_BoardOption; - leftBoard.m_BoardProcessOption = store.m_BoardProcessOption; - rightBoard.m_BoardConfigOption = store.m_BoardOption; - rightBoard.m_BoardProcessOption = store.m_BoardProcessOption; + leftBoard.Name = "左侧板" + leftBoard.m_BoardProcessOption = Object.assign({}, store.m_BoardProcessOption); + + rightBoard.Name = "右侧板" + rightBoard.m_BoardProcessOption = Object.assign({}, store.m_BoardProcessOption); app.m_Database.ModelSpace.Append(leftBoard); app.m_Database.ModelSpace.Append(rightBoard); diff --git a/src/Add-on/DrawBoard/DrawSingleBoard.ts b/src/Add-on/DrawBoard/DrawSingleBoard.ts index b834fd836..07f99992f 100644 --- a/src/Add-on/DrawBoard/DrawSingleBoard.ts +++ b/src/Add-on/DrawBoard/DrawSingleBoard.ts @@ -8,6 +8,7 @@ import { BoardModal, BoardModalType } from '../../UI/Components/Board/BoardModal import { ModalPosition } from '../../UI/Components/Modal/ModalsManage'; import { SingleBoardStore } from '../../UI/Store/BoardStore'; import { Jig } from '../../Editor/Jig'; +import { Matrix4, Math, Euler } from 'three'; export class DrawSingleBoard implements Command { @@ -20,8 +21,14 @@ export class DrawSingleBoard implements Command { const opt = store.m_BoardOption; let board = Jig.Draw(Board.CreateBoard(parseFloat(opt.height), parseFloat(opt.width), parseFloat(opt.thickness), opt.type)); - board.m_BoardConfigOption = opt; + board.Name = opt.name; board.m_BoardProcessOption = store.m_BoardProcessOption; + let rx = Math.degToRad(parseFloat(opt.rotateX)); + let ry = Math.degToRad(parseFloat(opt.rotateY)); + let rz = Math.degToRad(parseFloat(opt.rotateZ)); + + let eu = new Euler(rx, ry, rz); + board.ApplyMatrix(new Matrix4().makeRotationFromEuler(eu)); let ptRes = await app.m_Editor.GetPoint({ Msg: "选择基点", diff --git a/src/Add-on/DrawBoard/DrawTopBottomBoard.ts b/src/Add-on/DrawBoard/DrawTopBottomBoard.ts index 8a2c6566b..2261aeb4f 100644 --- a/src/Add-on/DrawBoard/DrawTopBottomBoard.ts +++ b/src/Add-on/DrawBoard/DrawTopBottomBoard.ts @@ -9,7 +9,7 @@ import { MoveMatrix } from '../../Geometry/GeUtils'; import { SurroundSpaceParse } from '../../Geometry/SpaceParse/SurroundSpaceParse'; import { BoardModal, BoardModalType } from '../../UI/Components/Board/BoardModal'; import { ModalPosition, ModalState } from '../../UI/Components/Modal/ModalsManage'; -import { FaceDirType, TBBoardOption, BoardData } from '../../UI/Store/BoardInterface'; +import { PXLFaceType, TBBoardOption, BoardData, ComposingType } from '../../UI/Store/BoardInterface'; import { TopBottomBoardStore } from '../../UI/Store/BoardStore'; export class DrawTopBottomBoard implements Command @@ -108,15 +108,16 @@ export class DrawTopBottomBoard implements Command offset, spaceParse.SpaceLength, parseFloat(opt.footThickness), BoardType.Behind); - footBoard.m_BoardConfigOption = { - name: "地脚线", - height: offset + "", - width: spaceParse.SpaceLength + "", - thickness: opt.footThickness - }; + // footBoard.m_BoardConfigOption = { + // type: BoardType.Behind, + // name: "地脚线", + // height: offset.toString(), + // width: spaceParse.SpaceLength.toString(), + // thickness: opt.footThickness + // }; footBoard.m_BoardProcessOption = Object.assign({}, this.store.m_BoardProcessOption); - footBoard.m_BoardProcessOption.composingFace = FaceDirType.Reverse; - footBoard.m_BoardProcessOption.bigHoleDir = FaceDirType.Reverse; + footBoard.m_BoardProcessOption.composingFace = ComposingType.Reverse; + footBoard.m_BoardProcessOption.bigHoleDir = PXLFaceType.Reverse; footBoard.ApplyMatrix(MoveMatrix(spaceParse.BaseFootPoint)); footBoard.ApplyMatrix(rot); @@ -126,9 +127,15 @@ export class DrawTopBottomBoard implements Command //移动右缩和前距的距离 basePt.add(new Vector3(rightExt, -forwardDistance)); - let board = Board.CreateBoard(length + leftExt + rightExt, spaceParse.SpaceWidth + forwardDistance + parseFloat(opt.behindDistance), thickness, BoardType.Layer); - board.m_BoardConfigOption = opt; - board.m_BoardProcessOption = this.store.m_BoardProcessOption; + let len = length + leftExt + rightExt; + let width = spaceParse.SpaceWidth + forwardDistance + parseFloat(opt.behindDistance); + + let board = Board.CreateBoard(len, width, thickness, BoardType.Layer); + // board.m_BoardConfigOption = Object.assign({}, opt); + // board.m_BoardConfigOption.height = len.toString(); + // board.m_BoardConfigOption.width = width.toString(); + + board.m_BoardProcessOption = Object.assign({}, this.store.m_BoardProcessOption); board.ApplyMatrix(MoveMatrix(basePt)); board.ApplyMatrix(rot); diff --git a/src/Add-on/DrawBoard/DrawVerticalBoard.ts b/src/Add-on/DrawBoard/DrawVerticalBoard.ts index dcf005a40..087b91204 100644 --- a/src/Add-on/DrawBoard/DrawVerticalBoard.ts +++ b/src/Add-on/DrawBoard/DrawVerticalBoard.ts @@ -30,14 +30,18 @@ export class DrawVerticalBoard extends DrawBoardTool let thickness = parseFloat(opt.thickness); let board = Board.CreateBoard(length, width, thickness, BoardType.Vertical); - board.m_BoardConfigOption = opt; - board.m_BoardProcessOption = data.boardProcess; + opt.height = length.toString(); + opt.width = width.toString(); + //等分单层空间大小 let singleSize = (size.x - (thickness * count)) / (count + 1); for (let i = 1; i <= count; i++) { let b = board.Clone() as Board; + b.Name = opt.name; + b.m_BoardProcessOption = Object.assign({}, data.boardProcess); + if (type === BrRelativePos.Left) b.ApplyMatrix(MoveMatrix(box.min.clone().add( new Vector3((spaceSize + thickness) * i, frontShrink, bottomShink) diff --git a/src/Common/Utils.ts b/src/Common/Utils.ts index 1eb66042b..56ac8cbdd 100644 --- a/src/Common/Utils.ts +++ b/src/Common/Utils.ts @@ -1,3 +1,5 @@ +import { equaln } from "../Geometry/GeUtils"; + export async function log(msg) { let app = (await import("../ApplicationServices/Application")).app; @@ -22,7 +24,7 @@ export function isNum(s: string) return !isNaN(parseFloat(s)); } -export function clamp(value, min, max) +export function clamp(value: number, min: number, max: number) { return Math.max(min, Math.min(max, value)); } @@ -52,7 +54,7 @@ export function formateDate(date: Date, fmt: string) //如:yyyy if (/(y+)/.test(fmt)) { - fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); + fmt = fmt.replace(RegExp.$1, (date.getFullYear().toString()).substr(4 - RegExp.$1.length)); } //yyyy-MM-dd hh:mm:ss for (let k in o) @@ -65,10 +67,13 @@ export function formateDate(date: Date, fmt: string) return fmt; } -export function isBetweenNums(v1, v2, v) +//判断v在v1和v2之间.(v1>v2 or v2>v1) +export function isBetweenNums(v1: number, v2: number, v: number, fuzz = 1e-8) { - return v === v1 || v === v2 || (Math.max(v1, v2, v) !== v && Math.min(v1, v2, v) !== v); + if (v1 > v2) [v1, v2] = [v2, v1]; + return equaln(v, clamp(v, v1, v2), fuzz); } + //深复制对象数组 export function sliceDeep(arr: object[], start?: number, end?: number): object[] { @@ -122,5 +127,32 @@ export function Sleep(time: number) return new Promise(res => { setTimeout(res, time); - }) + }); +} + +//使用定点表示法来格式化一个数,不尾随空格. 如 FixedNotZero(1.1 , 3) => 1.1 +export function FixedNotZero(v: number, fractionDigits: number = 0) +{ + if (equaln(v, 0)) return "0"; + let str = v.toFixed(fractionDigits); + let commonIndex = str.indexOf("."); + if (commonIndex !== -1) + { + let zeroCount = 0; + let strCount = str.length; + for (let l = strCount; l--;) + { + if (str[l] === "0") + zeroCount++; + else + break; + } + if (zeroCount > 0) + { + if (zeroCount === (strCount - commonIndex - 1)) + zeroCount++; + return str.slice(0, strCount - zeroCount); + } + } + return str; } diff --git a/src/DatabaseServices/Board.ts b/src/DatabaseServices/Board.ts index c0cc5646f..ef0566c13 100644 --- a/src/DatabaseServices/Board.ts +++ b/src/DatabaseServices/Board.ts @@ -4,6 +4,7 @@ import { ColorMaterial } from '../Common/ColorPalette'; import { Box3Ext } from '../Geometry/Box'; import { equaln } from '../Geometry/GeUtils'; import { RenderType } from '../GraphicsSystem/Enum'; +import { BoardProcessOption } from '../UI/Store/BoardInterface'; import { Factory } from './CADFactory'; import { CADFile } from './CADFile'; import { Contour } from './Contour'; @@ -11,7 +12,6 @@ import { Entity } from './Entity'; import { Line } from './Line'; import { DbPhysicalMaterial } from './PhysicalMaterial'; import { Shape } from './Shape'; -import { BoardConfigOption, BoardProcessOption } from '../UI/Store/BoardInterface'; export enum BoardType { @@ -51,8 +51,8 @@ export class Board extends Entity private m_Shape: Shape; private m_BoardType: BoardType; - m_BoardConfigOption: BoardConfigOption; - m_BoardProcessOption: BoardProcessOption; + private m_Name = ""; + m_BoardProcessOption: BoardProcessOption = {}; constructor(shape?: Shape, thickness?: number) { @@ -127,19 +127,48 @@ export class Board extends Entity { return this.m_Thickness; } - get Lenght() + set Thickness(v: number) + { + this.WriteAllObjectRecord(); + this.m_Thickness = v; + this.InitBoard(this.m_Length, this.m_Width, this.m_Thickness, this.BoardType); + this.Update(); + } + get Length() { return this.m_Length } + set Length(v: number) + { + this.WriteAllObjectRecord(); + this.m_Length = v; + this.InitBoard(this.m_Length, this.m_Width, this.m_Thickness, this.BoardType); + this.Update(); + } get Width() { return this.m_Width; } + set Width(v: number) + { + this.WriteAllObjectRecord(); + this.m_Width = v; + this.InitBoard(this.m_Length, this.m_Width, this.m_Thickness, this.BoardType); + this.Update(); + } get BoardType(): BoardType { return this.m_BoardType; } - + set BoardType(type: BoardType) + { + this.WriteAllObjectRecord(); + let boardOcs = this.BoardOCS.clone(); + this.m_BoardType = type; + this.ApplyMatrix(this.OCSInv).ApplyMatrix(this.RotateMat).ApplyMatrix(boardOcs); + this.ColorIndex = type + 1; + this.Update(); + } //最左下角的点 get MinPoint(): Vector3 { @@ -180,6 +209,14 @@ export class Board extends Entity box.applyMatrix4(this.OCS); return box; } + get Name() + { + return this.m_Name; + } + set Name(n: string) + { + this.m_Name = n; + } GetBoardBoxInMat(mat) { let min = new Vector3(0, 0, -this.m_Thickness).applyMatrix4(this.OCS).applyMatrix4(mat); @@ -249,7 +286,6 @@ export class Board extends Entity //避免空的板件生成 this.InitBoard(1e-5, 1e-5, 1e-5); } - let extrudeSettings = { steps: 1, bevelEnabled: false, @@ -297,6 +333,8 @@ export class Board extends Entity this.m_Thickness = file.Read(); this.m_Matrix.fromArray(file.Read()); this.m_BoardType = file.Read(); + this.m_Name = file.Read(); + this.m_BoardProcessOption = JSON.parse(file.Read()); this.Update(); } WriteFile(file: CADFile) @@ -309,5 +347,7 @@ export class Board extends Entity file.Write(this.m_Thickness); file.Write(this.m_Matrix.toArray()) file.Write(this.m_BoardType); + file.Write(this.m_Name); + file.Write(JSON.stringify(this.m_BoardProcessOption)); } } diff --git a/src/DatabaseServices/Dimension/LinearDimension.ts b/src/DatabaseServices/Dimension/LinearDimension.ts index 3c3f353f4..16a7a8ccd 100644 --- a/src/DatabaseServices/Dimension/LinearDimension.ts +++ b/src/DatabaseServices/Dimension/LinearDimension.ts @@ -1,12 +1,9 @@ -import { Object3D, Vector3 } from 'three'; -import * as THREE from 'three'; - +import { Vector3 } from 'three'; import { isBetweenNums } from '../../Common/Utils'; import { midPoint } from '../../Geometry/GeUtils'; -import { RenderType } from '../../GraphicsSystem/Enum'; -import { AlignedDimension } from './AlignedDimension'; -import { Line } from '../Line'; import { Factory } from '../CADFactory'; +import { Line } from '../Line'; +import { AlignedDimension } from './AlignedDimension'; enum DimDir { diff --git a/src/Editor/DbClick.ts b/src/Editor/DbClick.ts new file mode 100644 index 000000000..31f681c70 --- /dev/null +++ b/src/Editor/DbClick.ts @@ -0,0 +1,42 @@ +import { PointPick } from "./PointPick"; +import { PointLight } from "../DatabaseServices/PointLight"; +import { app } from "../ApplicationServices/Application"; +import { LightModal } from "../UI/Components/Modal/LightModal"; +import { ModalPosition } from "../UI/Components/Modal/ModalsManage"; +import { Text } from "../DatabaseServices/Text/Text"; +import { Board } from "../DatabaseServices/Board"; +import { BoardOptionModal } from "../UI/Components/Board/BoardOptionModal"; +import { Singleton } from "../Common/Singleton"; +import { TextArea } from "../DatabaseServices/Text/TextArea"; + +export class DbClickManager +{ + OnDbClick() + { + let en = PointPick(app.m_Editor.m_MouseCtrl.m_CurMousePointVCS, app.m_Viewer)[0]; + if (!en) + return; + //双击实体取消选中状态 + app.m_Editor.m_SelectCtrl.Cancel(); + //双击应防止触发实体移动 + app.m_Editor.transCtrl.Cancel(); + + if (en.userData instanceof PointLight) + { + app.m_Editor.m_ModalManage.RenderModeless(LightModal, ModalPosition.Right, { selectedObj: en.userData }); + } + else if (en.userData instanceof Text) + { + let textarea = Singleton.GetInstance(TextArea); + textarea.StartEditorText(en); + } + else if (en.userData instanceof Board) + { + app.m_Editor.m_ModalManage.RenderModeless( + BoardOptionModal, + ModalPosition.Right, + { board: en.userData } + ); + } + } +} diff --git a/src/Editor/MouseControls.ts b/src/Editor/MouseControls.ts index 6d961a174..5b0e78d9e 100644 --- a/src/Editor/MouseControls.ts +++ b/src/Editor/MouseControls.ts @@ -4,6 +4,8 @@ import * as THREE from 'three'; import { app } from '../ApplicationServices/Application'; import { Viewer } from '../GraphicsSystem/Viewer'; import { Editor } from './Editor'; +import { Singleton } from '../Common/Singleton'; +import { DbClickManager } from './DbClick'; export class MouseControls { @@ -24,7 +26,7 @@ export class MouseControls let el = this.m_View.m_Render.domElement; el.addEventListener("mousemove", (e) => { this.onMouseMove(e) }, false); el.addEventListener("mousedown", (e) => { this.onMouseDown(e) }, false); - el.addEventListener("dblclick", (e) => { this.onDBMouseDown(e) }, false); + el.addEventListener("dblclick", (e) => { this.onDBClick(e) }, false); el.addEventListener("mouseover", (e) => { this.onMouseMove(e) }, false); } onMouseMove = (e: MouseEvent) => @@ -43,8 +45,9 @@ export class MouseControls } this.updateWordPoint(e); } - onDBMouseDown = (e: MouseEvent) => + onDBClick(e: MouseEvent) { + Singleton.GetInstance(DbClickManager).OnDbClick() } updateWordPoint = (e: MouseEvent) => { diff --git a/src/Editor/TranstrolControl/TransformServices.ts b/src/Editor/TranstrolControl/TransformServices.ts index 3be99daf8..6b2e4646a 100644 --- a/src/Editor/TranstrolControl/TransformServices.ts +++ b/src/Editor/TranstrolControl/TransformServices.ts @@ -180,4 +180,9 @@ export class TransformServicess implements EditorService this.m_Enable = e; this.CurAxes.visible = e; } + Cancel() + { + this.m_Enable = false; + this.m_Editor.Canel(); + } } diff --git a/src/Geometry/SpaceParse/SpaceParse.ts b/src/Geometry/SpaceParse/SpaceParse.ts index e84d5098f..361aa746f 100644 --- a/src/Geometry/SpaceParse/SpaceParse.ts +++ b/src/Geometry/SpaceParse/SpaceParse.ts @@ -90,9 +90,9 @@ export class SpaceParse let mat = br.RotateMat; let p1 = new Vector3(0, 0, -br.Thickness).applyMatrix4(mat); - let p2 = new Vector3(br.Width, br.Lenght, -br.Thickness - dist).applyMatrix4(mat); + let p2 = new Vector3(br.Width, br.Length, -dist).applyMatrix4(mat); let p3 = new Vector3(0, 0, 0).applyMatrix4(mat); - let p4 = new Vector3(br.Width, br.Lenght, dist).applyMatrix4(mat); + let p4 = new Vector3(br.Width, br.Length, br.Thickness + dist).applyMatrix4(mat); this.m_Spaces.push(new Box3Ext().setFromPoints([p1, p2]), new Box3Ext().setFromPoints([p3, p4])); } diff --git a/src/Geometry/SpaceParse/SurroundSpaceParse.ts b/src/Geometry/SpaceParse/SurroundSpaceParse.ts index d66e26452..efebe6251 100644 --- a/src/Geometry/SpaceParse/SurroundSpaceParse.ts +++ b/src/Geometry/SpaceParse/SurroundSpaceParse.ts @@ -129,7 +129,7 @@ export class SurroundSpaceParse extends SpaceParse return Math.abs(lMinPt.x + rMinPt.x) > Math.max(this.m_LeftBoard.Thickness, this.m_RightBoard.Thickness) && Math.abs(lMinPt.y - rMinPt.y) + 1e-6 < Math.max(this.m_LeftBoard.Width, this.m_RightBoard.Width) - && Math.abs(lMinPt.z - rMinPt.z) + 1e-6 < Math.max(this.m_LeftBoard.Lenght, this.m_RightBoard.Lenght); + && Math.abs(lMinPt.z - rMinPt.z) + 1e-6 < Math.max(this.m_LeftBoard.Length, this.m_RightBoard.Length); } return false; @@ -231,7 +231,7 @@ export class SurroundSpaceParse extends SpaceParse if ((equaln(lMinPt.y, rMinPt.y) && equaln(lMinPt.z, rMinPt.z) && equaln(this.m_LeftBoard.Width, this.m_RightBoard.Width) - && equaln(this.m_LeftBoard.Lenght, this.m_RightBoard.Lenght)) + && equaln(this.m_LeftBoard.Length, this.m_RightBoard.Length)) ) { this.m_StandardBoard = this.m_LeftBoard; diff --git a/src/UI/Components/Board/BehindBoardModal.tsx b/src/UI/Components/Board/BehindBoardModal.tsx index b7983f262..03c0ae2bd 100644 --- a/src/UI/Components/Board/BehindBoardModal.tsx +++ b/src/UI/Components/Board/BehindBoardModal.tsx @@ -29,12 +29,12 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore return ( <> - +
加工数据
diff --git a/src/UI/Components/Board/BoardCommon.tsx b/src/UI/Components/Board/BoardCommon.tsx index d136e5814..26e4cb0ea 100644 --- a/src/UI/Components/Board/BoardCommon.tsx +++ b/src/UI/Components/Board/BoardCommon.tsx @@ -1,7 +1,8 @@ import { Checkbox, Classes, Radio, RadioGroup } from '@blueprintjs/core'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { BoardConfigOption, BoardOption, BrRelativePos, TBBoardOption } from '../../Store/BoardInterface'; +import { BoardType } from '../../../DatabaseServices/Board'; +import { BehindBoardOption, BoardConfigOption, BoardOption, BrRelativePos, LayerBoardOption, TBBoardOption, VerticalBoardOption } from '../../Store/BoardInterface'; import { BoardStore } from '../../Store/BoardStore'; interface ISetItemOption @@ -148,8 +149,9 @@ export const BoardModel = () => ) } + export const BoardConfigBlock = observer( - ({ opt, opt1 }: { opt: BoardConfigOption, opt1: Map }) => + ({ opt, opt1 }: { opt: VerticalBoardOption | LayerBoardOption | BehindBoardOption, opt1: Map }) => { let pars = new Map( [["spaceSize", "空间"], ["count", "板数"], ["thickness", "板厚"]]); @@ -214,16 +216,36 @@ export const Notes = () => ) } -export const BoardName = observer(({ store, className }: { store?: BoardStore, className?: string }) => +export const BoardName = observer(({ opt, className }: { opt?: BoardConfigOption, className?: string }) => ) +export const BoardTypeComponent = observer(({ opt }: { opt?: BoardConfigOption }) => + +) + diff --git a/src/UI/Components/Board/BoardConfigModal.tsx b/src/UI/Components/Board/BoardConfigModal.tsx new file mode 100644 index 000000000..f63861308 --- /dev/null +++ b/src/UI/Components/Board/BoardConfigModal.tsx @@ -0,0 +1,52 @@ +import { Button, Checkbox } from "@blueprintjs/core"; +import { observer } from "mobx-react"; +import * as React from 'react'; +import { BoardData } from '../../Store/BoardInterface'; +import { BoardName, BoardTypeComponent, SetBoardDataBlock } from "./BoardCommon"; + +export const BoardConfigModal = + (observer((data: BoardData) => + { + let pars = new Map([["height", "显示高"], ["width", "显示宽"], ["thickness", "显示厚"], + ]); + let groovePars = new Map([ + ["spliteHeight", "拆单高"], ["spliteWidth", "拆单宽"], ["spliteThickness", "拆单厚"], + ["knifeRad", "刀具半径"], + ["grooveAddLength", "槽加长"], ["grooveAddWidth", "槽加宽"], ["grooveAddDepth", "槽加深"] + ]); + let rotatePars = new Map([ + ["rotateX", "旋转X"], ["rotateY", "旋转Y"], ["rotateZ", "旋转Z"] + ]); + return ( +
+ + + + + +
+ +
+
+ +
+
+ ) + })); diff --git a/src/UI/Components/Board/BoardOptionModal.tsx b/src/UI/Components/Board/BoardOptionModal.tsx new file mode 100644 index 000000000..21aa7d2bc --- /dev/null +++ b/src/UI/Components/Board/BoardOptionModal.tsx @@ -0,0 +1,166 @@ +import { Button, Classes } from '@blueprintjs/core'; +import { observable } from 'mobx'; +import * as React from 'react'; +import { Euler, Math, Matrix4 } from 'three'; +import { app } from '../../../ApplicationServices/Application'; +import { Board } from '../../../DatabaseServices/Board'; +import { equaln } from '../../../Geometry/GeUtils'; +import { BoardProcessOption, SingleBoardOption } from '../../Store/BoardInterface'; +import { Notes } from './BoardCommon'; +import { BoardConfigModal } from './BoardConfigModal'; +import { BoardProcessModal } from './BoardProcessModal'; +import { FixedNotZero } from '../../../Common/Utils'; + +export class BoardOptionModal extends React.Component<{ board: Board }, {}> +{ + @observable private m_ConfigOption: SingleBoardOption; + @observable private m_ProcessOption: BoardProcessOption; + private m_BoardMap: Map = new Map(); + constructor(props) + { + super(props); + let br = this.props.board; + this.SetBrConfig(br); + this.m_ProcessOption = Object.assign({}, br.m_BoardProcessOption); + } + SetBrConfig = (br: Board) => + { + let rotaMat = new Matrix4().extractRotation(br.BoardOCS); + let euler = new Euler().setFromRotationMatrix(rotaMat); + let newConfig = { + name: br.Name, + type: br.BoardType, + height: FixedNotZero(br.Length, 2), + width: FixedNotZero(br.Width, 2), + thickness: FixedNotZero(br.Thickness, 2), + rotateX: FixedNotZero(Math.radToDeg(euler.x), 2), + rotateY: FixedNotZero(Math.radToDeg(euler.y), 2), + rotateZ: FixedNotZero(Math.radToDeg(euler.z), 2), + } + if (this.m_ConfigOption) + { + Object.assign(this.m_ConfigOption, newConfig); + } + else + { + this.m_ConfigOption = newConfig; + } + } + handleComfirmOption = () => + { + let board = this.props.board; + Object.assign(board.m_BoardProcessOption, this.m_ProcessOption); + board.Name = this.m_ConfigOption.name; + board.Length = parseFloat(this.m_ConfigOption.height); + board.Width = parseFloat(this.m_ConfigOption.width); + board.Thickness = parseFloat(this.m_ConfigOption.thickness); + board.BoardType = this.m_ConfigOption.type; + + //应用旋转分量 + let oldEuler = new Euler().setFromRotationMatrix(new Matrix4().extractRotation(board.BoardOCS)); + let newEuler = new Euler( + Math.degToRad(parseFloat(this.m_ConfigOption.rotateX)), + Math.degToRad(parseFloat(this.m_ConfigOption.rotateY)), + Math.degToRad(parseFloat(this.m_ConfigOption.rotateZ)) + ) + if (!equaln(oldEuler.x, newEuler.x) + || !equaln(oldEuler.y, newEuler.y) + || !equaln(oldEuler.z, newEuler.z)) + { + let pos = board.Position; + board + .ApplyMatrix(board.BoardOCSInv) + .ApplyMatrix(new Matrix4().makeRotationFromEuler(newEuler)) + .ApplyMatrix(new Matrix4().setPosition(pos)); + } + app.m_Editor.UpdateScreen(); + app.m_Editor.m_ModalManage.Clear() + } + componentWillMount() + { + app.m_Viewer.Scene.children.forEach(en => + { + let br = en.userData; + if (br + && br instanceof Board && br.Id + && br.m_BoardProcessOption.roomName === this.props.board.m_BoardProcessOption.roomName) + { + this.m_BoardMap.set(br.Id.Index.toString(), br); + } + }) + } + render() + { + return ( +
+
+
+ +

板件属性

+ +
+
+
+
+ +
+
+
+
+
板件尺寸
+ +
+
+
封边信息
+ +
+
+ +
+
+
+
+
+
+
+
+
+ ); + } +} diff --git a/src/UI/Components/Board/BoardProcessModal.tsx b/src/UI/Components/Board/BoardProcessModal.tsx index 69f7540bb..67c8344c0 100644 --- a/src/UI/Components/Board/BoardProcessModal.tsx +++ b/src/UI/Components/Board/BoardProcessModal.tsx @@ -1,8 +1,9 @@ -import { Checkbox, Classes } from '@blueprintjs/core'; +import { Classes } from '@blueprintjs/core'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { BoardProcessOption, DrillType, FaceDirType } from '../../Store/BoardInterface'; +import { BoardProcessOption, ComposingType, DrillType, LinesType, PXLFaceType } from '../../Store/BoardInterface'; import { BoardModel, SetBoardDataBlock, SetBoardDataItem2 } from './BoardCommon'; + export const BoardProcessModal = observer(({ opt }: { opt: BoardProcessOption }) => { let pars = new Map([ @@ -38,15 +39,15 @@ export const BoardProcessModal = observer(({ opt }: { opt: BoardProcessOption }) 纹路
@@ -54,14 +55,14 @@ export const BoardProcessModal = observer(({ opt }: { opt: BoardProcessOption }) 大孔面
@@ -85,40 +86,19 @@ export const BoardProcessModal = observer(({ opt }: { opt: BoardProcessOption }) 排版面
-
材料封边
横条类型
opt.type = e.currentTarget.value as StripType} - selectedValue={opt.type} + onChange={e => opt.striptype = e.currentTarget.value as StripType} + selectedValue={opt.striptype} > diff --git a/src/UI/Components/Board/LayerBoardModal.tsx b/src/UI/Components/Board/LayerBoardModal.tsx index 72b4809e8..a4de1d873 100644 --- a/src/UI/Components/Board/LayerBoardModal.tsx +++ b/src/UI/Components/Board/LayerBoardModal.tsx @@ -16,7 +16,7 @@ export const LayerBoardModal = let nailOpt = props.store.layerNailOption; return ( <> - +
板件尺寸
diff --git a/src/UI/Components/Board/SingleBoardModal.tsx b/src/UI/Components/Board/SingleBoardModal.tsx index 798daf23e..0d18083c4 100644 --- a/src/UI/Components/Board/SingleBoardModal.tsx +++ b/src/UI/Components/Board/SingleBoardModal.tsx @@ -1,42 +1,33 @@ -import * as React from 'react'; import { observer } from "mobx-react"; -import { BoardType } from "../../../DatabaseServices/Board"; +import * as React from 'react'; import { SingleBoardStore } from "../../Store/BoardStore"; -import { BoardName, SetBoardDataBlock } from "./BoardCommon"; +import { BoardName, BoardTypeComponent, SetBoardDataBlock } from "./BoardCommon"; export const SingleBoardModal = (observer((props: { store?: SingleBoardStore }) => { let pars = new Map([["height", "板高"], ["width", "柜宽"], ["thickness", "板厚"], - ["spliteHeight", "拆单高"], ["spliteWidth", "拆单宽"], ["spliteThickness", "拆单厚"], ["rotateX", "旋转X"], ["rotateY", "旋转Y"], ["rotateZ", "旋转Z"] ]); + let processPars = new Map([ + ["spliteHeight", "拆单高"], ["spliteWidth", "拆单宽"], ["spliteThickness", "拆单厚"] + ]) let opt = props.store.m_BoardOption; + let processOpt = props.store.m_BoardProcessOption; return (
- - + + +
) })); diff --git a/src/UI/Components/Board/VerticalBoardModal.tsx b/src/UI/Components/Board/VerticalBoardModal.tsx index bdead32e7..40c266256 100644 --- a/src/UI/Components/Board/VerticalBoardModal.tsx +++ b/src/UI/Components/Board/VerticalBoardModal.tsx @@ -13,7 +13,7 @@ export const VerticalBoardModal = const brOpt = store.m_BoardOption; return ( <> - +
立板大小
diff --git a/src/UI/Components/Modal/LightModal.tsx b/src/UI/Components/Modal/LightModal.tsx index be0e42e61..a814baae8 100644 --- a/src/UI/Components/Modal/LightModal.tsx +++ b/src/UI/Components/Modal/LightModal.tsx @@ -6,11 +6,6 @@ import { Entity } from '../../../DatabaseServices/Entity'; import { PointLight } from '../../../DatabaseServices/PointLight'; import { app } from '../../../ApplicationServices/Application'; -export interface LightModalProps -{ - selectedObj: Entity; - update: Function, -} export interface LightModalState { @@ -29,18 +24,18 @@ export interface LightModalState decay: string } -export class LightModal extends React.Component { - constructor(props: LightModalProps) +export class LightModal extends React.Component<{ selectedObj: Entity }, LightModalState> { + constructor(props) { super(props); let obj = this.props.selectedObj as PointLight; this.state = { - x: obj.Position.x + "", - y: obj.Position.y + "", - z: obj.Position.z + "", - intensity: obj.Intensity + "", - distance: obj.Distance + "", - decay: obj.Decay + "", + x: obj.Position.x.toString(), + y: obj.Position.y.toString(), + z: obj.Position.z.toString(), + intensity: obj.Intensity.toString(), + distance: obj.Distance.toString(), + decay: obj.Decay.toString(), isFocus: false, color: "#" + obj.Color.getHexString() } @@ -65,14 +60,14 @@ export class LightModal extends React.Component { let light = this.props.selectedObj as PointLight; light.Color = new Color(color.hex); this.setState({ color: color.hex }); - this.props.update(); + app.m_Editor.UpdateScreen(); } handleChangePosition = (e: React.ChangeEvent) => { @@ -102,7 +97,7 @@ export class LightModal extends React.Component { light.Color = new Color(e.target.value); - this.props.update(); + app.m_Editor.UpdateScreen(); }} /> { diff --git a/src/UI/Components/Modal/Modal.less b/src/UI/Components/Modal/Modal.less index a8a4864d0..7c8c3e8b4 100644 --- a/src/UI/Components/Modal/Modal.less +++ b/src/UI/Components/Modal/Modal.less @@ -260,7 +260,16 @@ margin-bottom: 0; } } - +//板件属性 +#boardModal>.board-config .bp3-dialog-footer{ + justify-content: flex-end; +} +#boardModal>.board-config .flexWrap{ + width: 20rem; +} +#boardModal>.board-config .br-set>span{ + width: 4.5rem; +} // /**************阵列模态框样式*************/ #arrayModal h5{ diff --git a/src/UI/Components/Modal/ModalsManage.tsx b/src/UI/Components/Modal/ModalsManage.tsx index cf3c55db7..9aea19b50 100644 --- a/src/UI/Components/Modal/ModalsManage.tsx +++ b/src/UI/Components/Modal/ModalsManage.tsx @@ -1,18 +1,11 @@ import * as React from 'react'; import * as ReactDOM from 'react-dom'; -import * as xaop from 'xaop'; import { app } from '../../../ApplicationServices/Application'; import { KeyBoard } from '../../../Common/KeyEnum'; -import { PointLight } from '../../../DatabaseServices/PointLight'; -import { Text } from '../../../DatabaseServices/Text/Text'; +import { Sleep } from '../../../Common/Utils'; import { commandMachine } from '../../../Editor/CommandMachine'; import { Editor } from '../../../Editor/Editor'; -import { PointPick } from '../../../Editor/PointPick'; -import { LightModal } from './LightModal'; import './Modal.less'; -import { Sleep } from '../../../Common/Utils'; -import { Singleton } from '../../../Common/Singleton'; -import { TextArea } from '../../../DatabaseServices/Text/TextArea'; export enum ModalPosition { @@ -86,11 +79,6 @@ export class ModalManage //捕获蒙版的事件 this.m_Masking.addEventListener('keydown', e => e.stopPropagation()); this.m_Masking.addEventListener('click', e => e.stopPropagation()); - - xaop.end(this.m_ed.m_MouseCtrl, this.m_ed.m_MouseCtrl.onDBMouseDown, () => - { - this.OnMouseDbClick() - }); } OnKeyDown(e: KeyboardEvent) { @@ -114,12 +102,11 @@ export class ModalManage //设置初始位置 if (pos === ModalPosition.Right) { - this.m_ModalContainer.style.left = window.innerWidth - this.m_ModalContainer.clientWidth + "px"; + this.m_ModalContainer.style.left = window.innerWidth - this.m_ModalContainer.clientWidth - 10 + "px"; this.m_ModalContainer.style.top = "40px"; } else if (pos === ModalPosition.Center) { - let commandHeight = document.getElementsByClassName("lm_item lm_row")[0].clientHeight; this.m_ModalContainer.style.left = `calc( 50% - ${this.m_ModalContainer.clientWidth / 2}px)`; this.m_ModalContainer.style.top = `calc( 50% - ${(this.m_ModalContainer.clientHeight) / 2}px)`; } @@ -133,25 +120,6 @@ export class ModalManage this.m_IsModal = true; this.m_Masking.style.zIndex = "2"; } - OnMouseDbClick() - { - let en = PointPick(app.m_Editor.m_MouseCtrl.m_CurMousePointVCS, app.m_Viewer)[0]; - if (!en) return; - - app.m_Editor.m_SelectCtrl.Cancel(); - - if (en && en.userData instanceof PointLight) - { - let light = en.userData as PointLight; - - this.RenderModeless(LightModal, ModalPosition.Right, { selectedObj: light, clear: this.Clear, update: this.UpdateView }) - } - else if (en && en.userData instanceof Text) - { - let textarea = Singleton.GetInstance(TextArea); - textarea.StartEditorText(en) - } - } async ExecCmd() { if (app.m_Editor.m_CommandStore.isCmdIng) diff --git a/src/UI/Store/BoardInterface.ts b/src/UI/Store/BoardInterface.ts index 36c303c6a..52e89a898 100644 --- a/src/UI/Store/BoardInterface.ts +++ b/src/UI/Store/BoardInterface.ts @@ -1,46 +1,38 @@ import { BoardType } from "../../DatabaseServices/Board"; export interface BoardOption { } + +//板件数据,配置信息+加工信息 export interface BoardData { boardConfig: BoardConfigOption; boardProcess: BoardProcessOption; } -export interface BoardProcessOption extends BoardOption -{ - roomName: string; - cabinetName: string; - boardName: string; - material: string; - color: string; - lines: FaceDirType; - bigHoleDir: FaceDirType; - drillType: DrillType; - composingFace: FaceDirType; - isPositive: boolean; - isReverse: boolean; - sealedUp: string; - sealedDown: string; - sealedLeft: string; - sealedRight: string; - -} +//排钻类型 export enum DrillType { Three = "three", Two = "two", None = "no" } -/** - *面方向类型,正,反,可翻转,侧 - */ -export enum FaceDirType + +//偏心轮类型 +export enum PXLFaceType { - Positive = 0, - Reverse = 1, - Side = 2, - CanReversal = 3, - All = 4 + Positive, + Reverse +} + +//纹路类型 +export enum LinesType +{ + Positive, Reverse, CanReversal +} + +// 排版面 +export enum ComposingType +{ + Positive, Reverse, Arbitrary } /** *背板靠上还是靠下 @@ -71,7 +63,30 @@ export enum BrRelativePos Right = "right", Div = "div" } +export interface BoardProcessOption extends BoardOption +{ + roomName?: string; + cabinetName?: string;//柜名 + boardName?: string;//板材名 + material?: string;//材料 + color?: string; + lines?: LinesType;//纹路 + bigHoleDir?: PXLFaceType;//大孔面 + drillType?: DrillType;//排钻类型 + composingFace?: ComposingType;//排版面 + sealedUp?: string;//封边上下左右 + sealedDown?: string; + sealedLeft?: string; + sealedRight?: string; + knifeRad?: string;//刀具半径 + grooveAddLength?: string;//槽加长/宽/高 + grooveAddWidth?: string; + grooveAddDepth?: string; + spliteHeight?: string;//拆单高/宽/厚 + spliteWidth?: string; + spliteThickness?: string; +} /** *板件参数 * @@ -80,14 +95,15 @@ export enum BrRelativePos */ export interface BoardConfigOption extends BoardOption { + type: BoardType; name: string; - thickness?: string; //厚度 - height?: string; //长 - width?: string //宽 - spaceSize?: string; - count?: string; - boardRelative?: BrRelativePos; - + thickness?: string; + height?: string; + width?: string; +} +export interface SideBoardOption extends BoardConfigOption +{ + spaceSize?: string; //空间宽度 } /** @@ -99,16 +115,19 @@ export interface BoardConfigOption extends BoardOption */ export interface BehindBoardOption extends BoardConfigOption { + //上下左右延伸 leftExt: string; rightExt: string; topExt: string; bottomExt: string; - knifeRad: string; - grooveAddLength: string; - grooveAddWidth: string; - grooveAddDepth: string; + //板件位置 boardPosition: BehindHeightPositon; moveDist: string; + + spaceSize?: string; + count?: string; + //板件相对位置 + boardRelative?: BrRelativePos; } /** @@ -120,11 +139,15 @@ export interface BehindBoardOption extends BoardConfigOption */ export interface LayerBoardOption extends BoardConfigOption { + //前后左右缩 frontShrink: string; leftShrink: string; rightShrink: string; isTotalLength: boolean; isActive: boolean; + spaceSize?: string; + count?: string; + boardRelative?: BrRelativePos; } /** @@ -146,6 +169,7 @@ export interface LayerNailOption rad: string; length: string; depth: string; + } /** @@ -161,27 +185,27 @@ export interface VerticalBoardOption extends BoardConfigOption bottomShrink: string;//底缩 isTotalLength: boolean; //是否取总高 isTotalWidth: boolean;//是否取总宽 + count?: string; + spaceSize?: string; + boardRelative?: BrRelativePos; } export interface TBBoardOption extends BoardConfigOption { isDraw: boolean; - forwardDistance: string; - behindDistance: string; + forwardDistance: string; //前距 + behindDistance: string; //后距 isWrapSide: boolean; leftExt: string; rightExt: string; offset: string; - footThickness: string; + footThickness: string; //地脚厚 } export interface SingleBoardOption extends BoardConfigOption { - type: BoardType; rotateX: string; rotateY: string; rotateZ: string; - spliteHeight: string; - spliteWidth: string; - spliteThickness: string; + } export enum StripType { @@ -191,5 +215,5 @@ export enum StripType export interface ClosingStripOption extends BoardConfigOption { boardRelative: BrRelativePos; - type: StripType; + striptype: StripType;//收口条类型 } diff --git a/src/UI/Store/BoardStore.ts b/src/UI/Store/BoardStore.ts index 78113e49c..21ca804d6 100644 --- a/src/UI/Store/BoardStore.ts +++ b/src/UI/Store/BoardStore.ts @@ -3,12 +3,11 @@ import { observable, toJS } from 'mobx'; import { app } from '../../ApplicationServices/Application'; import { BoardType } from '../../DatabaseServices/Board'; import { configOption } from '../Components/Board/BoardModal'; -import { BehindBoardOption, BehindHeightPositon, BoardConfigOption, BrRelativePos, ClosingStripOption, LayerBoardOption, LayerNailOption, SingleBoardOption, StripType, TBBoardOption, VerticalBoardOption, BoardProcessOption, FaceDirType, DrillType } from './BoardInterface'; +import { BehindBoardOption, BehindHeightPositon, BoardConfigOption, BrRelativePos, ClosingStripOption, LayerBoardOption, LayerNailOption, SingleBoardOption, StripType, TBBoardOption, VerticalBoardOption, BoardProcessOption, PXLFaceType, DrillType, LinesType, ComposingType, SideBoardOption } from './BoardInterface'; import { ModalState } from '../Components/Modal/ModalsManage'; export class BoardStore { - name: string; m_BoardOption: BoardConfigOption; title: string; @observable m_BoardProcessOption: BoardProcessOption = { @@ -17,16 +16,21 @@ export class BoardStore boardName: "", material: "", color: "", - lines: FaceDirType.Positive, - bigHoleDir: FaceDirType.Positive, + lines: LinesType.Positive, + bigHoleDir: PXLFaceType.Positive, drillType: DrillType.Three, - composingFace: FaceDirType.All, - isPositive: true, - isReverse: true, + composingFace: ComposingType.Arbitrary, sealedUp: "1.0", sealedDown: "1.0", sealedLeft: "1.0", - sealedRight: "1.0" + sealedRight: "1.0", + knifeRad: "0", + grooveAddLength: "0", + grooveAddWidth: "0", + grooveAddDepth: "0", + spliteHeight: "", + spliteWidth: "", + spliteThickness: "" } async OnOk(state: number, isClose: boolean = true) @@ -89,7 +93,8 @@ export class BoardStore export class SideBoardStore extends BoardStore { //板数据 - @observable m_BoardOption: BoardConfigOption = { + @observable m_BoardOption: SideBoardOption = { + type: BoardType.Vertical, name: "", height: "1200", width: "600", @@ -102,6 +107,7 @@ export class SideBoardStore extends BoardStore export class TopBottomBoardStore extends BoardStore { @observable topBoardOption: TBBoardOption = { + type: BoardType.Layer, name: "顶板", isDraw: true, thickness: "18", @@ -114,6 +120,7 @@ export class TopBottomBoardStore extends BoardStore footThickness: "18" }; @observable bottomBoardOption: TBBoardOption = { + type: BoardType.Layer, name: "底板", isDraw: true, thickness: "18", @@ -157,18 +164,14 @@ export class TopBottomBoardStore extends BoardStore export class BehindBoardStore extends BoardStore { title = "背板"; - @observable m_BoardOption: BehindBoardOption = { + type: BoardType.Behind, name: "背板", leftExt: "0", rightExt: "0", topExt: "0", bottomExt: "0", thickness: "18", - knifeRad: "3", - grooveAddLength: "0", - grooveAddWidth: "0", - grooveAddDepth: "0", boardPosition: BehindHeightPositon.AllHeight, height: "H", moveDist: "0", @@ -176,12 +179,18 @@ export class BehindBoardStore extends BoardStore spaceSize: "0", count: "1" }; + constructor() + { + super(); + this.m_BoardProcessOption.knifeRad = "3"; + } } export class LayerBoardStore extends BoardStore { title = "层板"; @observable m_BoardOption: LayerBoardOption = { + type: BoardType.Layer, name: "层板", frontShrink: "0", leftShrink: "0", @@ -235,6 +244,7 @@ export class VerticalBoardStore extends BoardStore title = "立板"; @observable m_BoardOption: VerticalBoardOption = { + type: BoardType.Vertical, name: "立板", frontShrink: "0", bottomShrink: "0", @@ -260,18 +270,16 @@ export class SingleBoardStore extends BoardStore thickness: "18", rotateX: "0", rotateY: "0", - rotateZ: "0", - spliteHeight: "", - spliteWidth: "", - spliteThickness: "" + rotateZ: "0" } } export class ClosingStripStore extends BoardStore { title = "收口条"; @observable m_BoardOption: ClosingStripOption = { + type: BoardType.Vertical, name: "收口条", - type: StripType.H, + striptype: StripType.H, boardRelative: BrRelativePos.Left, width: "50", thickness: "18"