!957 功能:板件自动切割放在绘制对话框中

pull/957/MERGE
肖诗雅 4 years ago committed by ChenX
parent bffa010a9c
commit f773ae8903

@ -7,7 +7,7 @@ export class AutoCuttingReactor
{
constructor()
{
const cuttingCommands = new Set(["DD", "左右侧板", "立板", "层板", "背板", "单板", "编辑背板", "编辑层板", "编辑立板", "DOOR", "购买模块并插入", "插入模块", "DRAWER"]);
const cuttingCommands = new Set(["DOOR", "购买模块并插入", "插入模块", "DRAWER"]);
app.CommandReactor.OnCommandEnd((cmdName, changeObjects, createObjects) =>
{
@ -39,3 +39,26 @@ export class AutoCuttingReactor
CuttingBoardByBoard(brs, ents);
}
}
/**
*
*/
export function AutoCutting(isRelevance: boolean)
{
let knifBoards = app.CommandReactor._createObejcts.filter(o => !o.IsErase && o instanceof Board) as Board[];
//编辑层立板时,需要对修改的实体进行作为刀处理
let changeObjects = app.Database.hm.ChangeObjects;
for (let obj of app.CommandReactor._createObejcts)
changeObjects.delete(obj);
for (let o of changeObjects)
if (o instanceof Board)
knifBoards.push(o);
let meatBoards: Board[] = [];
for (let ent of app.Database.ModelSpace.Entitys)
{
if (!ent.IsErase && ent instanceof Board && !knifBoards.includes(ent))
meatBoards.push(ent);
}
CuttingBoardByBoard(meatBoards, knifBoards, isRelevance);
}

@ -1,21 +1,40 @@
import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { Board } from "../../DatabaseServices/Entity/Board";
import { app } from "../../ApplicationServices/Application";
import { Log } from "../../Common/Log";
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole";
export function CuttingBoardByBoard(meats: Board[], knifs: Board[])
import { Board } from "../../DatabaseServices/Entity/Board";
import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
export function CuttingBoardByBoard(meats: Board[], knifs: Board[], isRelevance = true)
{
for (let br of meats)
{
//用于校验是否已经关联切割
let knifIds = new Set<number>();
for (let id of br.RelevanceKnifs)
knifIds.add(id.Index);
try
{
for (let kf of knifs)
if (isRelevance)
for (let kf of knifs)
{
if (!kf.Id) continue; //避免空id关联
if (knifIds.has(kf.Id.Index)) continue;//避免重复切割
let tempEn = br.Clone() as Board;
let ok = tempEn.Subtract([kf], [tempEn]);
if (ok)
br.RelevanceSubtract(kf);
}
else
{
let tempEn = br.Clone() as Board;
let ok = tempEn.Subtract([kf], [tempEn]);
if (ok)
let outputBoards: Board[] = [];
br.Subtract(knifs, outputBoards);
for (let nb of outputBoards)
{
br.RelevanceKnifs.push(kf.Id);
kf.RelevanceMeats.push(br.Id);
app.Database.ModelSpace.Append(nb);
nb.RepairRelevance();
}
}
}
@ -23,6 +42,7 @@ export function CuttingBoardByBoard(meats: Board[], knifs: Board[])
{
Log("自动切割失败!");
}
}
}
export function CuttingBoardByHardware(meats: Board[], hardwares: HardwareCompositeEntity[])
@ -47,15 +67,23 @@ export function CuttingBoardByHardware(meats: Board[], hardwares: HardwareCompos
for (let br of meats)
try
{
//用于校验是否已经关联切割
let hwknifIds = new Set<number>();
for (let id of br.RelativeHardware)
hwknifIds.add(id.Index);
for (let kf of hardwareEnts)
{
let hw = knifeIdMap.get(kf);
if (hwknifIds.has(hw.Id.Index)) continue;//避免重复加入五金
let tempEn = br.Clone() as Board;
let ok = tempEn.Subtract([kf], [tempEn]);
if (ok)
{
let hw = knifeIdMap.get(kf);
br.RelativeHardware.push(hw.Id);
hw.RelevanceBoards.push(br.Id);
hwknifIds.add(hw.Id.Index);
}
}
}

@ -165,23 +165,18 @@ export class LinearCutting implements Command
if (cus.length === 0)
continue;
let splitBoards: Board[] = [];
//造型应用
for (let i = 1; i < cus.length; i++)
{
let br2 = br.Clone();
br2.ContourCurve = cus[i];
br2.GrooveCheckAll(splitBoards);
app.Database.ModelSpace.Append(br2);
br2.RepairRelevance();
br2.GrooveCheckAllAutoSplit();
}
br.ContourCurve = cus[0];
br.GrooveCheckAll(splitBoards);
for (let nb of splitBoards)
app.Database.ModelSpace.Append(nb);
br.GrooveCheckAllAutoSplit();
}
app.Editor.UCSMatrix = oldUcs;
}
}

@ -147,20 +147,17 @@ export class ReferenceCutting implements Command
return;
}
let outputBrs: Board[] = [];
//造型应用
for (let i = 1; i < contours.length; i++)
{
let br2 = br.Clone();
br2.ContourCurve = contours[i];
br2.GrooveCheckAll(outputBrs);
app.Database.ModelSpace.Append(br2);
br2.GrooveCheckAllAutoSplit();
br2.RepairRelevance();
}
br.ContourCurve = contours[0];
br.GrooveCheckAll(outputBrs);
for (let br of outputBrs)
app.Database.ModelSpace.Append(br);
br.GrooveCheckAllAutoSplit();
}
app.Editor.Prompt(`切割成功: 有效${brs.length - failCount}个, 无效${failCount}`);
}

@ -8,6 +8,7 @@ import { BehindBoardStore, LayerBoardStore, VerticalBoardStore } from '../../UI/
import { ISpaceParse } from '../../Geometry/SpaceParse/ISpaceParse';
import { userConfig } from '../../Editor/UserConfig';
import { BoardType } from '../../UI/Store/BoardInterface';
import { AutoCutting } from '../BoardCutting/AutoCuttingReactor';
export abstract class DrawBoardTool implements Command
{
@ -39,6 +40,8 @@ export abstract class DrawBoardTool implements Command
app.Editor.ModalManage.SetCallback(async () =>
{
await this.SelectAndBuildBoard();
if (this.store.autoCutOption.isAutoCut)
AutoCutting(this.store.autoCutOption.isRelevance);
});
}
private async SelectAndBuildBoard()

@ -1,5 +1,8 @@
import { Intent } from '@blueprintjs/core';
import { Matrix4, Vector3 } from 'three';
import { begin } from 'xaop';
import { app } from '../../ApplicationServices/Application';
import { EBoardKeyList } from '../../Common/BoardKeyList';
import { Board } from '../../DatabaseServices/Entity/Board';
import { Command } from '../../Editor/CommandMachine';
import { PromptStatus } from '../../Editor/PromptResult';
@ -8,11 +11,9 @@ import { TotalSpaceParse } from '../../Geometry/SpaceParse/TotalSpaceParse';
import { BoardModal, BoardModalType } from '../../UI/Components/Board/BoardModal';
import { ModalState } from '../../UI/Components/Modal/ModalInterface';
import { AppToaster } from '../../UI/Components/Toaster';
import { BrRelativePos, StripType, LinesType, BoardType } from '../../UI/Store/BoardInterface';
import { BoardType, BrRelativePos, LinesType, StripType } from '../../UI/Store/BoardInterface';
import { ClosingStripStore } from '../../UI/Store/BoardStore';
import { EBoardKeyList } from '../../Common/BoardKeyList';
import { begin } from 'xaop';
import { Intent } from '@blueprintjs/core';
import { AutoCutting } from '../BoardCutting/AutoCuttingReactor';
//补收口条默认宽度
const DEFAULT_STRIP_WIDTH = 80;
@ -78,6 +79,9 @@ export class DrawClosingStrip implements Command
break;
}
AppToaster.clear();
if (this.store.autoCutOption.isAutoCut)
AutoCutting(this.store.autoCutOption.isRelevance);
}
}
//构建收口条,更新总空间

@ -12,6 +12,7 @@ import { PointSelectSpaceClamp } from '../../Geometry/SpaceParse/PointSelectSpac
import { BoardModal, BoardModalType } from '../../UI/Components/Board/BoardModal';
import { AnyObject, BoardType } from '../../UI/Store/BoardInterface';
import { SideBoardStore } from '../../UI/Store/BoardStore';
import { AutoCutting } from '../BoardCutting/AutoCuttingReactor';
export class DrawLeftRight implements Command
{
@ -24,13 +25,11 @@ export class DrawLeftRight implements Command
app.Editor.ModalManage.SetCallback(async (d: AnyObject) =>
{
if (d?.isDym)
{
await this.InsertBySpace();
}
else
{
await this.InsertByPoint();
}
if (store.autoCutOption.isAutoCut)
AutoCutting(store.autoCutOption.isRelevance);
});
}
private GetLRBoards()

@ -7,12 +7,13 @@ import { PromptStatus } from '../../Editor/PromptResult';
import { MoveMatrix } from '../../Geometry/GeUtils';
import { BoardModal, BoardModalType } from '../../UI/Components/Board/BoardModal';
import { SingleBoardStore } from '../../UI/Store/BoardStore';
import { AutoCutting } from '../BoardCutting/AutoCuttingReactor';
export class DrawSingleBoard implements Command
{
async exec()
{
let store = SingleBoardStore.GetInstance();
let store = SingleBoardStore.GetInstance() as SingleBoardStore;
app.Editor.ModalManage.RenderModeless(BoardModal, { store, type: BoardModalType.Sg });
app.Editor.ModalManage.SetCallback(async () =>
@ -42,6 +43,9 @@ export class DrawSingleBoard implements Command
let vec = ptRes.Point.sub(board.MinPoint);
board.ApplyMatrix(MoveMatrix(vec));
app.Database.ModelSpace.Append(board);
if (store.autoCutOption.isAutoCut)
AutoCutting(store.autoCutOption.isRelevance);
}
});
}

@ -51,7 +51,7 @@ export function BoardApplyContour(contour: ExtureContour, brs: Board[], isKeepSi
let oldLength = br.Height;
let oldWidth = br.Width;
ExtrudeApplyContour(br, contour);
br.GrooveCheckAll([]);
br.GrooveCheckAllAutoSplit();
if (isKeepSize)
{
br.Height = oldLength;

@ -8,6 +8,7 @@ import { PointSelectSpaceClamp } from "../../Geometry/SpaceParse/PointSelectSpac
import { BoardModal, BoardModalType } from "../../UI/Components/Board/BoardModal";
import { ModalState } from "../../UI/Components/Modal/ModalInterface";
import { TopBottomBoardStore } from "../../UI/Store/BoardStore";
import { AutoCutting } from "../BoardCutting/AutoCuttingReactor";
import { BuildTopBottomBoards } from "./BuildTopBottomBoardTool";
export class DrawTopBottomBoard implements Command
@ -45,6 +46,9 @@ export class DrawTopBottomBoard implements Command
temp.BoardProcessOption = store.BoardProcessOption;
app.Database.TemplateTable.Append(temp);
await SetTemplatePositionAndSetParent(selectSpace.SpaceParse, temp);
if (store.autoCutOption.isAutoCut)
AutoCutting(store.autoCutOption.isRelevance);
}
}
}

@ -13,6 +13,7 @@ import { IConfigOption } from "../../UI/Components/Board/UserConfig";
import { BoardConfigOption, SideBoardOption } from "../../UI/Store/BoardInterface";
import { BehindBoardStore, BoardStore, LayerBoardStore, SideBoardStore, TopBottomBoardStore, VerticalBoardStore } from "../../UI/Store/BoardStore";
import { FixedNotZero } from "../../Common/Utils";
import { AutoCutting } from "../BoardCutting/AutoCuttingReactor";
export class EditorBoardTemplate implements Command
{
@ -109,6 +110,9 @@ export class EditorBoardTemplate implements Command
}
await template.UpdateTemplateTree();
app.Editor.UpdateScreen();
if (store.autoCutOption.isAutoCut)
AutoCutting(store.autoCutOption.isRelevance);
});
}
}

@ -239,7 +239,6 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare
br.AppendGroove(ext);
}
br.GrooveCheckAll([]);
//设置排钻边
if (drillData?.drillSides.length > 0)
@ -317,6 +316,7 @@ function ParseModel(model: KJL_ParamModel, roomName: string, gName: string, pare
}
app.Database.ModelSpace.Append(br);
br.GrooveCheckAllAutoSplit();
return br;
}
else

@ -250,6 +250,7 @@ export class Board extends ExtrudeSolid
}
}
}
ClearRelevance(en?: ExtrudeSolid)
{
for (let id of this.RelativeHardware)
@ -477,7 +478,7 @@ export class Board extends ExtrudeSolid
if (isSuccess)
{
this.height = v;
this.GrooveCheckAll([]);
this.GrooveCheckAllAutoSplit();
this.Update();
}
}
@ -501,7 +502,7 @@ export class Board extends ExtrudeSolid
if (isSuccess)
{
this.width = v;
this.GrooveCheckAll([]);
this.GrooveCheckAllAutoSplit();
this.Update();
}
}

@ -1,6 +1,6 @@
import { BoxGeometry, BufferGeometry, ExtrudeGeometry, ExtrudeGeometryOptions, LineSegments, Matrix3, Matrix4, Mesh, Object3D, Path, Vector3, Line as TLine } from "three";
import { Line2 } from "three/examples/jsm/lines/Line2";
import { arrayClone, arrayLast, arrayRemoveIf, arraySortByNumber, arraySum } from "../../Common/ArrayExt";
import { arrayClone, arrayLast, arrayRemoveIf, arrayRemoveOnce, arraySortByNumber, arraySum } from "../../Common/ArrayExt";
import { ColorMaterial } from "../../Common/ColorPalette";
import { equalCurve } from "../../Common/CurveUtils";
import { DisposeThreeObj } from "../../Common/Dispose";
@ -528,6 +528,19 @@ export class ExtrudeSolid extends Entity
Subtract(extrudes: ExtrudeSolid[], output: ExtrudeSolid[] = undefined): boolean
{
//清除原先的关联关系
if (this.Id)
{
let ids = new Set<number>();
for (let e of extrudes)
{
if (!e.Id) continue;
arrayRemoveOnce(e.RelevanceMeats, this.Id);
ids.add(e.Id.Index);
}
arrayRemoveIf(this.RelevanceKnifs, id => ids.has(id.Index));
}
let grooves: ExtrudeSolid[] = [];
for (let br of extrudes)
{
@ -555,6 +568,50 @@ export class ExtrudeSolid extends Entity
return false;
}
RelevanceSubtract(knif: ExtrudeSolid, check = false)
{
if (!this.Id || !knif.Id) return;
//判断是否已经存在
if (check)
{
let index = this.RelevanceKnifs.findIndex(id => id.Index === knif.Id.Index);
if (index !== -1) return;
}
this.RelevanceKnifs.push(knif.Id);
knif.RelevanceMeats.push(this.Id);
}
/**
* ,,
*/
RepairRelevance()
{
if (!this.Id)
{
console.error("不能修复未加入到图纸的板件!");
return;
}
for (let id of this.RelevanceKnifs)
{
if (id && !id.IsErase)
{
let br = id.Object as ExtrudeSolid;
br.RelevanceMeats.push(this.Id);
}
}
for (let id of this.RelevanceMeats)
{
if (id && !id.IsErase)
{
let br = id.Object as ExtrudeSolid;
br.RelevanceKnifs.push(this.Id);
}
}
}
AppendGroove(groove: ExtrudeSolid)
{
this.WriteAllObjectRecord();
@ -1272,7 +1329,10 @@ export class ExtrudeSolid extends Entity
{
let record = this._Owner.Object as BlockTableRecord;
for (let e of splitEntitys)
{
record.Add(e);
e.RepairRelevance();
}
}
}
@ -1468,6 +1528,7 @@ export class ExtrudeSolid extends Entity
}
this.Update();
}
private _MeshGeometry: BufferGeometry;
get MeshGeometry(): BufferGeometry
{

@ -18,8 +18,8 @@ function UpdateRelevanceGroove(ents: CADObject[])
{
if (e instanceof Board)
{
//只需要更新被切割的肉,如果当前实体被切割了,那么它Update会自己更新的.
e.RelevanceMeats.forEach(id => needUpdateBoardSet.add(id));
needUpdateBoardSet.add(e.Id);//修改逻辑,该实体可能被添加新的关联切割,所以没有更新槽
}
else if (e instanceof HardwareCompositeEntity)
{

@ -12,6 +12,9 @@ import { ToasterInput } from '../Toaster';
import { GetEntity } from '../../../Common/Utils';
import { safeEval } from '../../../Common/eval';
import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { observable } from 'mobx';
import { userConfig } from '../../../Editor/UserConfig';
import { BoardStore } from '../../Store/BoardStore';
export interface ISetItemOption
{
@ -597,3 +600,33 @@ export class DrillTypeSelectCom extends React.Component<IDrillTypeSelect, { isDa
}
}
}
@observer
export class AutoCutCheckbox extends React.Component<{ store: BoardStore; }, {}>
{
ToggleValue = (type: number) =>
{
if (type === 0)//autoCut
this.props.store.autoCutOption.isAutoCut = !this.props.store.autoCutOption.isAutoCut;
else//relevanceCut
this.props.store.autoCutOption.isRelevance = !this.props.store.autoCutOption.isRelevance;
};
render()
{
const { isAutoCut, isRelevance } = this.props.store.autoCutOption;
return (
<div className="brModal-autoCut" style={{ paddingTop: 20 }}>
<Checkbox
checked={isAutoCut}
label="自动切割"
onChange={() => this.ToggleValue(0)}
/>
<Checkbox
checked={isRelevance}
label="关联切割"
disabled={!isAutoCut}
onChange={() => this.ToggleValue(1)}
/>
</div>
);
}
}

@ -267,7 +267,7 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
let applyMatrix = ExtrudeApplyContour(br, contour);
if (contour instanceof Region)
br.GrooveCheckAll([]);//校验造型
br.GrooveCheckAllAutoSplit();//校验造型
else
br.ClearBoardModeling();//清除造型
@ -383,11 +383,7 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
}
}
let splits: Board[] = [];
br.GrooveCheckAll(splits);
for (let br of splits)
app.Database.ModelSpace.Append(br);
br.GrooveCheckAllAutoSplit();
br.Update();
}
};

@ -7,7 +7,7 @@ import { KeyBoard } from '../../../Common/KeyEnum';
import { BehindBoardStore, BoardStore, ClosingStripStore, LayerBoardStore, SideBoardStore, SingleBoardStore, TopBottomBoardStore, VerticalBoardStore } from '../../Store/BoardStore';
import { ModalState } from '../Modal/ModalInterface';
import { BehindBoardModal } from './BehindBoardModal';
import { Notes } from './BoardCommon';
import { Notes, AutoCutCheckbox } from './BoardCommon';
import { BoardProcessModal } from './BoardProcessModal';
import { ClosingStripModal } from './ClosingStripModal';
import { LayerBoardModal } from './LayerBoardModal';
@ -17,6 +17,7 @@ import { TopBottomBoardModal } from './TopBottomBoardModal';
import { VerticalBoardModal } from './VerticalBoardModal';
import { CommonModal } from './../Modal/ModalContainer';
import { AnyObject, DrillType } from '../../Store/BoardInterface';
import { userConfig } from '../../../Editor/UserConfig';
export enum BoardModalType
{
@ -58,6 +59,7 @@ export interface BoardModalProps
export class BoardModal extends React.Component<BoardModalProps, {}>
{
private event: Function;
private isAutoCut_backup: boolean;
constructor(props: BoardModalProps)
{
super(props);
@ -114,6 +116,7 @@ export class BoardModal extends React.Component<BoardModalProps, {}>
{
//注册事件
this.registerEvent();
this.isAutoCut_backup = userConfig.openAutoCuttingReactor;
}
componentWillUnmount()
{
@ -154,10 +157,15 @@ export class BoardModal extends React.Component<BoardModalProps, {}>
}
>
<div className="flex">
<div className={Classes.CARD}>
{
this.renderBoardModal()
}
<div className={Classes.CARD} style={{ display: "flex", flexDirection: "column", justifyContent: "space-between" }}>
<div>
{
this.renderBoardModal()
}
</div>
<div>
<AutoCutCheckbox store={store} />
</div>
</div>
{
!this.props.store.EditorTemplate &&
@ -191,5 +199,6 @@ export class BoardModal extends React.Component<BoardModalProps, {}>
store.m_BoardProcessOption.drillType = DrillType.More;
store.OnOk(ModalState.Ok, this.props.type != BoardModalType.Skt, data);
userConfig.openAutoCuttingReactor = this.isAutoCut_backup;
};
}

@ -2,7 +2,7 @@ import { Button, InputGroup, Intent, Menu, MenuItem, Popover, Position } from '@
import { observable } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
import { BoardProcessOption, IGrooveOption, LayerNailOption, TBBoardOption, AnyObject } from '../../Store/BoardInterface';
import { BoardProcessOption, IGrooveOption, LayerNailOption, TBBoardOption, AnyObject, IDrawBoardAutoCutOption } from '../../Store/BoardInterface';
import { IConfigStore } from '../../Store/BoardStore';
import { DrillingOption } from '../../Store/drillInterface';
import { userConfigStore, UserConfigStore } from '../../Store/UserConfigStore';
@ -22,6 +22,7 @@ export interface IConfigOption<T = AnyObject>
grooveData?: IGrooveOption; //槽数据
doorsInfo?: (IDrawerInfo | IDoorInfo)[];
processGroupCategory?: string[];//加工组(工序组)数据
autoCutOption?: IDrawBoardAutoCutOption;//绘制板件时是否自动切割&&关联切割
}
interface UserConfigState

@ -327,3 +327,9 @@ export interface ISmoothEdgeOption extends IBaseOption
scale: number;//见光比例
filterArr: string[];//
}
export interface IDrawBoardAutoCutOption
{
isAutoCut: boolean;//是否自动切割
isRelevance: boolean;//是否关联切割
}

@ -12,7 +12,7 @@ import { DefaultBehindBoardConfig, DefaultLayerBoardConfig, DefaultVerticalBoard
import { userConfig } from '../../Editor/UserConfig';
import { IConfigOption } from '../Components/Board/UserConfig';
import { ModalState } from '../Components/Modal/ModalInterface';
import { BehindBoardOption, BoardConfigOption, IBaseOption, BoardProcessOption, BrRelativePos, ClosingStripOption, DrillType, FaceDirection, IGrooveOption, LayerBoardOption, LayerNailOption, SideBoardOption, SingleBoardOption, StripType, TBBoardOption, VerticalBoardOption, IUiOption, AnyObject, BoardType, IHightDrillOption } from './BoardInterface';
import { BehindBoardOption, BoardConfigOption, IBaseOption, BoardProcessOption, BrRelativePos, ClosingStripOption, DrillType, FaceDirection, IGrooveOption, LayerBoardOption, LayerNailOption, SideBoardOption, SingleBoardOption, StripType, TBBoardOption, VerticalBoardOption, IUiOption, AnyObject, BoardType, IHightDrillOption, IDrawBoardAutoCutOption } from './BoardInterface';
import { begin } from 'xaop';
import { AppToaster } from '../Components/Toaster';
import { Intent } from '@blueprintjs/core';
@ -41,6 +41,7 @@ export class BoardStore extends Singleton implements IConfigStore
@observable m_BoardProcessOption: BoardProcessOption = { ...DefaultBoardProcessOption };
@observable remarks: [string, string][] = Array.from({ length: 12 }, () => ["", ""]);
@observable rectDrillOption: IHightDrillOption = { up: "", down: "", left: "", right: "" };
@observable autoCutOption: IDrawBoardAutoCutOption = { isAutoCut: false, isRelevance: false };
constructor()
{
super();
@ -160,6 +161,7 @@ export class BoardStore extends Singleton implements IConfigStore
let newConfig: IConfigOption = {};
newConfig.option = toJS(this.m_Option);
newConfig.processData = this.BoardProcessOption;
newConfig.autoCutOption = toJS(this.autoCutOption);
newConfig.processData.highDrill = [
this.rectDrillOption.down,
this.rectDrillOption.right,
@ -180,6 +182,9 @@ export class BoardStore extends Singleton implements IConfigStore
if (!cof.processData) return;
Object.assign(this.m_BoardProcessOption, cof.processData);
if (cof.autoCutOption)
this.autoCutOption = cof.autoCutOption;
this.UpdateRemarks(cof);
this.InitDrillType();
this.InitRectDrillData(cof.processData.highDrill);
@ -212,6 +217,7 @@ export class SideBoardStore extends BoardStore
//板数据
@observable m_Option: SideBoardOption = Object.assign({}, DefaultSideBoardOption);
title = "左右侧板";
autoCutOption: IDrawBoardAutoCutOption = { isAutoCut: false, isRelevance: false };
constructor()
{
super();
@ -245,6 +251,7 @@ export class TopBottomBoardStore extends BoardStore
title = "顶底板";
topUiOption: IUiOption<TBBoardOption>;
bottomUiOption: IUiOption<TBBoardOption>;
autoCutOption: IDrawBoardAutoCutOption = { isAutoCut: false, isRelevance: false };
get TopUiOption()
{
if (!this.topUiOption)
@ -328,6 +335,7 @@ export class BehindBoardStore extends BoardStore
grooveAddDepth: "0",
knifeRadius: "3",
};
autoCutOption: IDrawBoardAutoCutOption = { isAutoCut: false, isRelevance: false };
constructor()
{
super();
@ -364,6 +372,7 @@ export class LayerBoardStore extends BoardStore
@observable m_Option: LayerBoardOption = Object.assign({}, DefaultLayerBoardConfig);
@observable layerNailOption: LayerNailOption = Object.assign({}, DefaultNailOption);
uiLayerNailOption: IUiOption<LayerNailOption>;
autoCutOption: IDrawBoardAutoCutOption = { isAutoCut: false, isRelevance: false };
constructor()
{
super();
@ -425,6 +434,7 @@ export class VerticalBoardStore extends BoardStore
title = "立板";
@observable m_Option: VerticalBoardOption = Object.assign({}, DefaultVerticalBoardConfig);
autoCutOption: IDrawBoardAutoCutOption = { isAutoCut: false, isRelevance: false };
InitOption()
{
Object.assign(this.m_Option, DefaultVerticalBoardConfig);
@ -446,6 +456,7 @@ export class SingleBoardStore extends BoardStore
rotateY: 0,
rotateZ: 0
};
autoCutOption: IDrawBoardAutoCutOption = { isAutoCut: false, isRelevance: false };
InitOption()
{
Object.assign(this.m_Option, DefaultSingleBoardOption);

Loading…
Cancel
Save