!1681 新增:收口条,单板,层板,左右侧板,板件属性界面等添加尺寸拾取功能

pull/1720/head
黄诗津 3 years ago committed by ChenX
parent 83690b5e3b
commit 9c98cdd38f

@ -7,6 +7,7 @@ import { app } from "../../ApplicationServices/Application";
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
import { DataAdapter } from "../../Common/DataAdapter";
import { KeyBoard } from "../../Common/KeyEnum";
import { FixedNotZero } from "../../Common/Utils";
import { Board } from "../../DatabaseServices/Entity/Board";
import { DefaultBatchModifyPanelOption } from "../../Editor/DefaultConfig";
import { PromptStatus } from "../../Editor/PromptResult";
@ -86,13 +87,9 @@ export class BatchModifyPanelModal extends React.Component<IBatchModifyPanelProp
if (distRes.Status === PromptStatus.OK)
{
const store = this.props.store;
let dist = distRes.Distance;
if (optKey === "length")
store.m_Option.length = dist.toFixed(2);
else if (optKey === "width")
store.m_Option.width = dist.toFixed(2);
else if (optKey === "thick")
store.m_Option.thick = dist.toFixed(2);
let dist = Math.abs(distRes.Distance);
if (dist !== 0)
store.m_Option[optKey] = FixedNotZero(dist, 2);
store.UpdateOption({ option: toJS(store.m_Option) });
}
app.Editor.ModalManage.ToggleShow();

@ -1,11 +1,14 @@
import { Classes, Radio, RadioGroup } from '@blueprintjs/core';
import { Button, Classes, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observable } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
import { app } from '../../../ApplicationServices/Application';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { FixedNotZero } from '../../../Common/Utils';
import { PromptStatus } from '../../../Editor/PromptResult';
import { BehindHeightPositon, BrRelativePos } from '../../Store/BoardInterface';
import { BehindBoardStore } from '../../Store/BoardStore';
import { BoardDirectionIcon, ItemName, SetBoardDataBlock, SetBoardDataItem, BoardRePosBlock } from './BoardCommon';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { BoardDirectionIcon, BoardRePosBlock, ItemName, SetBoardDataBlock, SetBoardDataItem } from './BoardCommon';
@observer
export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore; }, {}>
@ -76,23 +79,41 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore
<Radio label="靠上" value={BehindHeightPositon.ForTop} />
<Radio label="靠下" value={BehindHeightPositon.ForBottom} />
</RadioGroup>
<div className="flexWrap">
<SetBoardDataItem
type={CheckObjectType.BR}
optKey="calcHeight"
option={store.m_Option}
uiOption={store.UIOption}
title="板高"
isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
<SetBoardDataItem
type={CheckObjectType.BR}
optKey="calcMoveDist"
option={store.m_Option}
uiOption={store.UIOption}
title={this.moveDir}
isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
<div >
<div className="pick-br">
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey="calcHeight"
option={store.m_Option}
uiOption={store.UIOption}
title="板高"
isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
<Button
icon="arrow-right"
onClick={() => this.getSizeValue("calcHeight")}
disabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
</Label>
</div>
<div className="pick-br">
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey="calcMoveDist"
option={store.m_Option}
uiOption={store.UIOption}
title={this.moveDir}
isDisabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
<Button
icon="arrow-right"
onClick={() => this.getSizeValue("calcMoveDist")}
disabled={store.UIOption.boardPosition === BehindHeightPositon.AllHeight}
/>
</Label>
</div>
</div>
</div>
<BoardRePosBlock
@ -140,4 +161,20 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore
</>
);
}
private getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist = distRes.Distance;
this.props.store.m_Option[optKey] = FixedNotZero(dist, 2);
this.props.store.UIOption[optKey] = FixedNotZero(dist, 2);
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
}

@ -1,12 +1,13 @@
import { Button, Checkbox, Classes, HTMLSelect, Intent, Radio, RadioGroup } from '@blueprintjs/core';
import { Button, Checkbox, Classes, HTMLSelect, Intent, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observer } from 'mobx-react';
import * as React from 'react';
import { app } from '../../../ApplicationServices/Application';
import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { safeEval } from '../../../Common/eval';
import { GetEntity } from '../../../Common/Utils';
import { FixedNotZero, GetEntity } from '../../../Common/Utils';
import { Board } from '../../../DatabaseServices/Entity/Board';
import { PromptStatus } from '../../../Editor/PromptResult';
import { TempEditor } from '../../../Editor/TempEditor';
import { userConfig } from '../../../Editor/UserConfig';
import { AnyObject, BoardConfigOption, BoardProcessOption, BoardType, BrRelativePos, DrillType, IBaseOption, IDrawBoardAutoCutOption, IHightDrillOption, IUiOption, TBBoardOption } from '../../Store/BoardInterface';
@ -51,6 +52,7 @@ interface ISetBlockOption
}
interface TBProps
{
par: string[][];
pars: string[][];
option: TBBoardOption;
uiOption: Object;
@ -114,6 +116,22 @@ export const SetBoardDataBlock = observer(
export const TBBoardDataBlock = observer(
(props: TBProps) =>
{
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist = distRes.Distance;
props.option[optKey] = parseFloat(dist.toFixed(2));
(props.uiOption as TBBoardOption)[optKey] = parseFloat(dist.toFixed(2));
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
return (
<div className="pt-card pt-elevation-0 tb-br">
<Checkbox
@ -135,27 +153,52 @@ export const TBBoardDataBlock = observer(
<Radio className="widthHalf" label={props.istop ? "侧包顶" : "侧包底"} value="0" />
<Radio className="widthHalf" label={props.istop ? "顶包侧" : "底包侧"} value="1" />
</RadioGroup>
<div className="flexWrap">
{
props.pars.map(([k, v]) =>
{
if (k === "offset" && !props.istop)
v = "下留";
return (
<SetBoardDataItem
type={CheckObjectType.BR}
title={v}
optKey={k}
key={k}
option={props.option}
uiOption={props.uiOption}
isDisabled={
((k === "rightExt" || k === "leftExt") && !props.option.isWrapSide) ||
(k === "offset" && props.option.isWrapSide)
} />
);
})
}
<div >
<>
<div className="pick-br">
{
props.par.map(([k, v]) =>
{
if (k === "offset" && !props.istop)
v = "下留";
return (
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={props.option}
uiOption={props.uiOption}
title={v}
isDisabled={k === "offset" && props.option.isWrapSide}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
disabled={k === "offset" && props.option.isWrapSide}
/>
</Label>
);
})}
</div>
<div className="flexWrap">
{
props.pars.map(([k, v]) =>
{
return (
<SetBoardDataItem
type={CheckObjectType.BR}
title={v}
optKey={k}
key={k}
option={props.option}
uiOption={props.uiOption}
isDisabled={(k === "rightExt" || k === "leftExt") && !props.option.isWrapSide}
/>
);
})}
</div>
</>
</div>
</div>
);
@ -181,8 +224,7 @@ interface BroadPosProps
@observer
export class BoardRePosBlock extends React.Component<BroadPosProps> {
private pars =
[["calcSpaceSize", "空间"], ["count", "板数"], ["thickness", "板厚"]];
private pars = [["calcSpaceSize", "空间"], ["thickness", "板厚"]];
private spaceSizeInputEl: HTMLInputElement;
private countInputEl: HTMLInputElement;
private updateFocus = (k: string) =>
@ -224,6 +266,34 @@ export class BoardRePosBlock extends React.Component<BroadPosProps> {
}
}, 0);
};
private getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let option = this.props.option;
let uiOption = this.props.uiOption;
let dist: number;
if (optKey === "calcSpaceSize")
{
dist = distRes.Distance;
option.calcSpaceSize = dist.toFixed(2);
uiOption.calcSpaceSize = FixedNotZero(dist, 2);
}
else if (optKey === "thickness")
{
dist = Math.abs(distRes.Distance);
option.thickness = parseFloat(dist.toFixed(2));
uiOption.thickness = option.thickness.toString();
}
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
componentDidMount()
{
setTimeout(() =>
@ -249,28 +319,47 @@ export class BoardRePosBlock extends React.Component<BroadPosProps> {
}
<Radio label="等分" value={BrRelativePos.Div} />
</RadioGroup>
<div className="flexWrap">
{
this.pars.map(([k, v]) =>
<SetBoardDataItem
inputRef={el =>
{
if (k === "calcSpaceSize")
this.spaceSizeInputEl = el;
else if (k === 'count')
this.countInputEl = el;
}}
type={CheckObjectType.BR}
key={k}
optKey={k}
uiOption={this.props.uiOption}
option={this.props.option}
title={v}
isDisabled={(k === "calcSpaceSize" && this.props.option.boardRelative === BrRelativePos.Div)}
mounted={() => this.updateFocus(k)}
/>
)
}
<div >
<div className="pick-br">
{
this.pars.map(([k, v]) =>
<Label>
<SetBoardDataItem
inputRef={el =>
{
if (k === "calcSpaceSize")
this.spaceSizeInputEl = el;
}}
type={CheckObjectType.BR}
key={k}
optKey={k}
uiOption={this.props.uiOption}
option={this.props.option}
title={v}
isDisabled={(k === "calcSpaceSize" && this.props.option.boardRelative === BrRelativePos.Div)}
mounted={() => this.updateFocus(k)}
/>
<Button
icon="arrow-right"
onClick={() => this.getSizeValue(k)}
disabled={(k === "calcSpaceSize" && this.props.option.boardRelative === BrRelativePos.Div)}
/>
</Label>
)
}
</div>
<div>
<SetBoardDataItem
inputRef={el => { this.countInputEl = el; }}
type={CheckObjectType.BR}
key={"count"}
optKey={"count"}
uiOption={this.props.uiOption}
option={this.props.option}
title={"数量"}
mounted={() => this.updateFocus("count")}
/>
</div>
</div>
</div>
);

@ -1,4 +1,4 @@
import { Button, Checkbox, Intent } from "@blueprintjs/core";
import { Button, Checkbox, Intent, Label } from "@blueprintjs/core";
import { IObservableValue } from "mobx";
import { observer } from "mobx-react";
import * as React from 'react';
@ -20,6 +20,7 @@ import { Polyline } from "../../../DatabaseServices/Entity/Polyline";
import { Region } from "../../../DatabaseServices/Entity/Region";
import { CommandWrap } from "../../../Editor/CommandMachine";
import { JigUtils } from "../../../Editor/JigUtils";
import { PromptStatus } from "../../../Editor/PromptResult";
import { SelectBox, SelectType } from "../../../Editor/SelectBox";
import { CreateContours } from "../../../Geometry/CreateContour2";
import { ContourTreeNode } from "../../../Geometry/ExtrudeEdgeGeometry2";
@ -29,7 +30,7 @@ import { RightPanelStore } from "../../Store/RightPanelStore/RightPanelStore";
import { RightTabId } from "../RightPanel/RightPanel";
import { AppToaster } from "../Toaster";
import { TempEditor } from './../../../Editor/TempEditor';
import { BoardTypeComponent, ItemName, SetBoardDataBlock } from "./BoardCommon";
import { BoardTypeComponent, ItemName, SetBoardDataBlock, SetBoardDataItem } from "./BoardCommon";
import { LastExtractBoardContour } from "./LastExtractBoardContour";
interface BoardConfigProps
@ -80,13 +81,25 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
<div>
<BoardTypeComponent opt={boardConfig} className="long-select" />
<ItemName title="板名称" opt={boardConfig} className="br-name" />
<SetBoardDataBlock
type={CheckObjectType.BR}
className="flexWrap"
pars={this.pars}
option={boardConfig}
uiOption={this.props.uiBoardConfig}
/>
<div className="pick-br">
{
this.pars.map(([k, v]) =>
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={boardConfig}
uiOption={this.props.uiBoardConfig}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => this.getSizeValue(k)}
/>
</Label>
)
}
</div>
<SetBoardDataBlock
type={CheckObjectType.BR}
className="flexWrap"
@ -165,6 +178,30 @@ export class BoardConfigModal extends React.Component<BoardConfigProps, {}>{
</div>
);
}
/**
*
*/
private getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入",
});
if (distRes.Status === PromptStatus.OK)
{
let dist = Math.abs(distRes.Distance);
if (dist !== 0)
{
let boardConfig = this.props.boardConfig;
let uiBoardConfig = this.props.uiBoardConfig;
boardConfig[optKey] = parseFloat(dist.toFixed(2));
uiBoardConfig[optKey] = parseFloat(dist.toFixed(2));
}
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
/**
*
*/

@ -1,12 +1,14 @@
import { Button, Checkbox, Classes, Label, Radio, RadioGroup } from '@blueprintjs/core';
import { observer } from 'mobx-react';
import * as React from 'react';
import { ClosingStripStore } from '../../Store/BoardStore';
import { Classes, RadioGroup, Radio, Checkbox } from '@blueprintjs/core';
import { BrRelativePos, StripType } from '../../Store/BoardInterface';
import { SetBoardDataBlock } from './BoardCommon';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { app } from '../../../ApplicationServices/Application';
import { EBoardKeyList } from '../../../Common/BoardKeyList';
import { ClosingStripReg } from '../../../Common/Utils';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { ClosingStripReg, FixedNotZero } from '../../../Common/Utils';
import { PromptStatus } from '../../../Editor/PromptResult';
import { BrRelativePos, StripType } from '../../Store/BoardInterface';
import { ClosingStripStore } from '../../Store/BoardStore';
import { SetBoardDataItem } from './BoardCommon';
export const ClosingStripModal =
@ -18,6 +20,30 @@ export const ClosingStripModal =
let pars = [["width", "宽度"], ["thickness", "厚度"], ["frontShrink", "前缩"]];
let pars2 = [["fzWidth", "宽度"], ["fzThickness", "厚度"]];
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist: number;
if (optKey === "frontShrink")
dist = distRes.Distance;
else
dist = Math.abs(distRes.Distance);
if (optKey === "frontShrink" || dist !== 0)
{
opt[optKey] = parseFloat(dist.toFixed(2));
uiOption[optKey] = FixedNotZero(dist, 2);
}
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
const processOption = store.m_BoardProcessOption;
return (
<div>
@ -58,24 +84,50 @@ export const ClosingStripModal =
</RadioGroup>
</div>
<h6 className={Classes.HEADING}></h6>
<SetBoardDataBlock
type={CheckObjectType.BR}
pars={pars}
option={opt}
uiOption={uiOption}
/>
<div className="pick-br">
{
pars.map(([k, v]) =>
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={opt}
uiOption={uiOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
<h6></h6>
<Checkbox
label="是否绘制"
checked={opt.isDrawFuZhu}
onChange={() => opt.isDrawFuZhu = !opt.isDrawFuZhu}
/>
<SetBoardDataBlock
type={CheckObjectType.BR}
pars={pars2}
option={opt}
uiOption={uiOption}
/>
<div className="pick-br">
{
pars2.map(([k, v]) =>
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={opt}
uiOption={uiOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
</div>
);
}));

@ -1,15 +1,20 @@
import { Button, Label } from "@blueprintjs/core";
import { observer } from "mobx-react";
import * as React from 'react';
import { DataAdapter } from '../../../Common/DataAdapter';
import { SingleBoardStore } from "../../Store/BoardStore";
import { BoardTypeComponent, ItemName, SetBoardDataBlock } from "./BoardCommon";
import { app } from "../../../ApplicationServices/Application";
import { CheckObjectType } from "../../../Common/CheckoutVaildValue";
import { Board } from "../../../DatabaseServices/Entity/Board";
import { PromptStatus } from "../../../Editor/PromptResult";
import { SingleBoardStore } from "../../Store/BoardStore";
import { BoardTypeComponent, ItemName, SetBoardDataBlock, SetBoardDataItem } from "./BoardCommon";
export const SingleBoardModal =
(observer((props: { store?: SingleBoardStore; }) =>
{
let pars = [["height", "板高"], ["width", "板宽"], ["thickness", "板厚"],
["rotateX", "旋转X"], ["rotateY", "旋转Y"], ["rotateZ", "旋转Z"]
];
let rotatePars = [
["rotateX", "旋转X"], ["rotateY", "旋转Y"], ["rotateZ", "旋转Z"]
];
let processPars = [
["spliteHeight", "拆单高"], ["spliteWidth", "拆单宽"], ["spliteThickness", "拆单厚"]
@ -18,13 +23,72 @@ export const SingleBoardModal =
let opt = props.store.m_Option;
let uiOpt = props.store.UIOption;
let processOpt = props.store.m_BoardProcessOption;
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
const store = props.store;
let dist = Math.abs(distRes.Distance);
if (dist !== 0)
store.m_Option[optKey] = parseFloat(dist.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
let getlrBoardValue = async () =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
const store = props.store;
let brRes = await app.Editor.GetEntity({ Msg: "选择板件", NotNone: true, Filter: { filterTypes: [Board] } });
if (brRes.Status === PromptStatus.OK)
{
let br = brRes.Entity as Board;
store.m_Option.height = parseFloat(br.Height.toFixed(2));
store.m_Option.width = parseFloat(br.Width.toFixed(2));
store.m_Option.thickness = parseFloat(br.Thickness.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
return (
<div>
<BoardTypeComponent opt={opt} />
<ItemName title="板名称" opt={props.store.m_Option} />
<div className="br-lkg">
<div >
{
pars.map(([k, v]) =>
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={props.store.m_Option}
uiOption={props.store.UIOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
<Button text="拾取" intent="success" onClick={() => getlrBoardValue()} />
</div>
<SetBoardDataBlock
type={CheckObjectType.BR}
pars={pars}
pars={rotatePars}
option={opt}
uiOption={uiOpt}
isInline={true}

@ -10,8 +10,9 @@ export const TopBottomBoardModal =
{
let store = props.store;
let par = [["offset", "上留"]];
let pars = [
["offset", "上留"], ["frontDist", "前缩"], ["behindDistance", "后缩"],
["frontDist", "前缩"], ["behindDistance", "后缩"],
["leftExt", "左延伸"], ["rightExt", "右延伸"]
];
@ -21,12 +22,14 @@ export const TopBottomBoardModal =
<TBBoardDataBlock
option={store.topBoardOption}
uiOption={store.TopUiOption}
par={par}
pars={pars}
istop={true}
/>
<TBBoardDataBlock
option={store.bottomBoardOption}
uiOption={store.BottomUiOption}
par={par}
pars={pars}
istop={false}
/>

@ -1,21 +1,107 @@
import { Button, Label } from '@blueprintjs/core';
import { observer } from 'mobx-react';
import * as React from 'react';
import { SideBoardStore } from '../../Store/BoardStore';
import { SetBoardDataBlock } from './BoardCommon';
import { app } from '../../../ApplicationServices/Application';
import { CheckObjectType } from '../../../Common/CheckoutVaildValue';
import { Board } from '../../../DatabaseServices/Entity/Board';
import { PromptStatus } from '../../../Editor/PromptResult';
import { SideBoardStore } from '../../Store/BoardStore';
import { SetBoardDataBlock, SetBoardDataItem } from './BoardCommon';
export const LeftRightBoardModal =
(observer((props: { store?: SideBoardStore; }) =>
{
let pars = [["height", "柜高"], ["width", "柜深"], ["thickness", "板厚"], ["spaceSize", "总宽"], ["leftShrink", "左内缩"], ["rightShrink", "右内缩"]];
let sizepars = [["height", "柜高"], ["width", "柜深"], ["thickness", "板厚"]];
let pars = [["leftShrink", "左内缩"], ["rightShrink", "右内缩"]];
let getSizeValue = async (optKey: string) =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
let distRes = await app.Editor.GetDistance({
Msg: "点取距离或者输入"
});
if (distRes.Status === PromptStatus.OK)
{
let dist: number;
if (optKey === "spaceSize")
dist = distRes.Distance;
else
dist = Math.abs(distRes.Distance);
const store = props.store;
if (optKey === 'spaceSize' || dist !== 0)
store.m_Option[optKey] = parseFloat(dist.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
let getlrBoardValue = async () =>
{
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.Clear();
const store = props.store;
let brRes = await app.Editor.GetEntity({ Msg: "选择板件", NotNone: true, Filter: { filterTypes: [Board] } });
if (brRes.Status === PromptStatus.OK)
{
let br = brRes.Entity as Board;
store.m_Option.height = parseFloat(br.Height.toFixed(2));
store.m_Option.width = parseFloat(br.Width.toFixed(2));
store.m_Option.thickness = parseFloat(br.Thickness.toFixed(2));
store.UpdateOption({ option: store.m_Option });
}
app.Editor.ModalManage.ToggleShow();
app.Editor.MaskManage.ShowMask();
};
return (
<SetBoardDataBlock
type={CheckObjectType.BR}
pars={pars}
uiOption={props.store.UIOption}
option={props.store.m_Option}
className="lr-br"
/>
<div >
<div className="br-lkg">
<div >
{
sizepars.map(([k, v]) =>
<Label >
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={k}
option={props.store.m_Option}
uiOption={props.store.UIOption}
title={v}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue(k)}
/>
</Label>
)
}
</div>
<Button text="拾取" intent="success" onClick={() => getlrBoardValue()} />
</div>
<div>
<Label className="interval">
<SetBoardDataItem
type={CheckObjectType.BR}
optKey={"spaceSize"}
option={props.store.m_Option}
uiOption={props.store.UIOption}
title={"总宽"}
/>
<Button
icon="arrow-right"
onClick={() => getSizeValue("spaceSize")}
/>
</Label>
</div>
<div>
<SetBoardDataBlock
type={CheckObjectType.BR}
pars={pars}
uiOption={props.store.UIOption}
option={props.store.m_Option}
className="lr-br"
/>
</div>
</div>
);
}));

@ -7,6 +7,30 @@
width: @infoSelectWidth;
}
/*板件属性尺寸拾取*/
.br-size{
.bp3-label{
display: flex;
margin-bottom: 0;
&>div{
display: flex;
:last-child{
margin-top: 0;
width: 60px;
}
}
.bp3-button {
min-height: 10px;
width: 45px;
height: 17px;
margin-left: 5px;
}
}
}
.board-info>.bp3-label input {
width: @infoSelectWidth;
}
@ -91,13 +115,90 @@
/* 板材信息 */
#commonModal {
.bp3-input,
.lr-br .bp3-input {
width: @inputWidth;
.bp3-input,
.lr-br .bp3-input {
width: @inputWidth;
}
.boardSize .bp3-input {
width: 3rem;
}
}
/* 板长宽厚尺寸拾取,板件拾取*/
#commonModal {
.br-lkg{
display: flex;
&>div{
.bp3-label{
display: flex;
margin-bottom: 0;
&>div{
display: flex;
:last-child{
margin-top: 0;
}
}
.bp3-button {
min-height: 10px;
width: 30px;
height: 17px;
margin-left: 3px;
margin-right: 5px;
}
}
}
&>button{
width: 2rem;
height: 75px;
}
}
.boardSize .bp3-input {
width: 3rem;
.interval{
display: flex;
&>div{
display: flex;
margin-bottom: 5px;
:last-child{
margin-top: 0;
}
}
.bp3-button {
min-height: 10px;
width: 30px;
height: 17px;
margin-left: 3px;
margin-right: 5px;
}
}
}
/* 尺寸拾取*/
#modal .pick-br{
.bp3-label{
display: flex;
&>div{
display: flex;
margin-bottom: 0;
:last-child{
margin-top: 0;
}
}
.bp3-button {
min-height: 10px;
width: 30px;
height: 17px;
margin-left: 3px;
}
}
}

@ -1,5 +1,5 @@
import { Intent, IToastOptions, Position, Toaster, Tooltip } from "@blueprintjs/core";
import { observable } from "mobx";
import { autorun, observable } from "mobx";
import { observer } from "mobx-react";
import * as React from 'react';
import { CheckObjectType, CheckoutValid } from "../../Common/CheckoutVaildValue";
@ -63,6 +63,7 @@ export class ToasterInput extends React.Component<IToasterInputProps, {}>
static defaultProps = {
isUpper: false
};
getErrorMsg = (v: string) =>
{
this.errorMsg = CheckoutValid.CheckOption(this.props.type, this.props.optKey, v);
@ -90,14 +91,14 @@ export class ToasterInput extends React.Component<IToasterInputProps, {}>
{
e.target.classList.remove("bp3-intent-danger");
}
if (typeof this.showData[this.props.optKey] === "number")
{
let val = safeEval(newVal);
if (!isNaN(val))
this.showData[this.props.optKey] = val;
}
else
this.showData[this.props.optKey] = newVal;
// if (typeof this.showData[this.props.optKey] === "number")
// {
// let val = safeEval(newVal);
// if (!isNaN(val))
// this.showData[this.props.optKey] = val;
// }
// else
this.showData[this.props.optKey] = newVal;
if (this.hideErrorMsg && typeof this.props.option[this.props.optKey] === 'number')
{
@ -148,10 +149,23 @@ export class ToasterInput extends React.Component<IToasterInputProps, {}>
intent: Intent.DANGER,
});
}
private DisposeMobxAutorun: Function;
componentDidMount()
{
this.getErrorMsg(this.showData[this.props.optKey]);
this.DisposeMobxAutorun = autorun(() =>
{
this.getErrorMsg(this.showData[this.props.optKey]);
});
}
componentWillUnmount()
{
if (this.DisposeMobxAutorun) this.DisposeMobxAutorun();
this.DisposeMobxAutorun = undefined;
}
UNSAFE_componentWillReceiveProps(nextProps)
{
if (this.props.type === CheckObjectType.BBS)

Loading…
Cancel
Save