!96 修复板件测试bug,修复点击画布错误获取焦点

Merge pull request !96 from ZoeLeeFZ/board_fix
pull/97/MERGE
ChenX 6 years ago
commit 829a49f3f6

@ -50,7 +50,7 @@ export class Command_Array implements Command
}
else if (keyWord.StringResult == "2P")
{
app.m_Editor.m_CommandStore.Prompt("请选择中心点:");
app.m_Editor.Prompt("请选择中心点:");
let ptRes = await app.m_Editor.GetPoint();
if (ptRes.Status != PromptStatus.OK)
{ return; }

@ -50,7 +50,7 @@ export class CMD_Divide implements Command
let divCount = numRes.Value;
if (divCount === 0)
{
app.m_Editor.m_CommandStore.Prompt("您不能等分0");
app.m_Editor.Prompt("您不能等分0");
return;
}
if (enRes.Entity instanceof Curve)
@ -78,7 +78,7 @@ export class CMD_Divide implements Command
let divLen = numRes.Value;
if (divLen === 0)
{
app.m_Editor.m_CommandStore.Prompt("分段长度不能为0");
app.m_Editor.Prompt("分段长度不能为0");
return;
}
if (enRes.Entity instanceof Curve)
@ -87,7 +87,7 @@ export class CMD_Divide implements Command
let len = cu.Length;
if (divLen > len)
{
app.m_Editor.m_CommandStore.Prompt("分段长度不能超过对象长度");
app.m_Editor.Prompt("分段长度不能超过对象长度");
return;
}
let divCount = len / divLen;

@ -47,17 +47,22 @@ export class DrawBehindBoard extends DrawBoardTool
let thickness = parseFloat(opt.thickness);
let board = Board.CreateBoard(height, size.x, thickness, BoardType.Behind);
//等分单层空间大小
let singleSize = (size.y - (thickness * count)) / (count + 1);
//构建板件
for (let i = 1; i <= count; i++)
{
let b = board.Clone() as Board;
let b = board.Clone();
if (relPos === BrRelativePos.Front)
b.ApplyMatrix(MoveMatrix(newBox.min.clone().add(new Vector3(0, spaceSize * i, 0))));
b.ApplyMatrix(MoveMatrix(newBox.min.clone().add(new Vector3(0, spaceSize * i + (i - 1) * thickness, 0))));
else if (relPos === BrRelativePos.Back)
b.ApplyMatrix(MoveMatrix(newBox.min.clone().add(new Vector3(0, size.y - spaceSize * i - thickness, 0))));
b.ApplyMatrix(MoveMatrix(newBox.min.clone().add(
new Vector3(0, size.y - spaceSize * i - i * thickness, 0)
)));
else
b.ApplyMatrix(MoveMatrix(newBox.min.clone().add(new Vector3(0, size.y / (count + 1) * i - thickness / 2, 0))));
b.ApplyMatrix(MoveMatrix(newBox.min.clone().add(
new Vector3(0, singleSize * i + (i - 1) * thickness, 0)
)));
b.ApplyMatrix(ro);
app.m_Database.ModelSpace.Append(b);

@ -76,7 +76,7 @@ export abstract class DrawBoardTool implements Command
if (spaceParse.Spaces.length === 0)
{
app.m_Editor.m_CommandStore.Prompt("生成b板件失败,没分析出有效空间");
app.m_Editor.Prompt("生成板件失败,没分析出有效空间");
continue;
}
@ -111,7 +111,7 @@ export abstract class DrawBoardTool implements Command
}
else
{
app.m_Editor.m_CommandStore.Prompt("请选择有效的板件,或者周围没有效板件");
app.m_Editor.Prompt("请选择有效的板件,或者周围没有效板件");
}
}
@ -158,7 +158,7 @@ export abstract class DrawBoardTool implements Command
if (spaceParse.Spaces.length === 0)
{
app.m_Editor.m_CommandStore.Prompt("生成板失败");
app.m_Editor.Prompt("生成失败");
return;
}
let mat = spaceParse.SpaceOCS;
@ -170,7 +170,7 @@ export abstract class DrawBoardTool implements Command
}
else
{
app.m_Editor.m_CommandStore.Prompt("请选择板件")
app.m_Editor.Prompt("请选择板件")
}
}
private async DrawInALlBoxes(opt: BoardOption)
@ -188,7 +188,7 @@ export abstract class DrawBoardTool implements Command
if (spaceParse.Spaces.length === 0)
{
app.m_Editor.m_CommandStore.Prompt("生成板失败");
app.m_Editor.Prompt("生成失败");
return;
}
let ro = new Matrix4().extractRotation(spaceParse.SpaceOCS);
@ -201,7 +201,7 @@ export abstract class DrawBoardTool implements Command
}
else
{
app.m_Editor.m_CommandStore.Prompt("请选择板件")
app.m_Editor.Prompt("请选择板件")
}
}

@ -28,16 +28,28 @@ export class DrawLayerBoard extends DrawBoardTool
let board = Board.CreateBoard(size.x - leftShrink - rightShrink, width, thickness, BoardType.Layer);
//等分单层空间大小
let singleSize = (size.z - (thickness * count)) / (count + 1);
for (let i = 1; i <= count; i++)
{
let b = board.Clone() as Board;
if (type === BrRelativePos.Top)
b.ApplyMatrix(MoveMatrix(box.min.clone().add(new Vector3(size.x - leftShrink, frontShrink, size.z - spaceSize * i))));
b.ApplyMatrix(MoveMatrix(box.min.clone().add(
new Vector3(size.x - leftShrink, frontShrink, size.z - spaceSize * i - (i - 1) * thickness)
)));
else if (type === BrRelativePos.Bottom)
b.ApplyMatrix(MoveMatrix(box.min.clone().add(new Vector3(size.x - leftShrink, frontShrink, spaceSize * i))));
b.ApplyMatrix(
MoveMatrix(box.min.clone().add(
new Vector3(size.x - leftShrink, frontShrink, (spaceSize + thickness) * i)
)));
else
b.ApplyMatrix(MoveMatrix(box.min.clone().add(new Vector3(size.x - leftShrink, frontShrink, size.z / (count + 1) * i + thickness / 2))));
{
b.ApplyMatrix(
MoveMatrix(box.min.clone().add(
new Vector3(size.x - leftShrink, frontShrink, (singleSize + thickness) * i))
));
}
b.ApplyMatrix(ro);
app.m_Database.ModelSpace.Append(b);
}

@ -45,6 +45,9 @@ export class DrawLeftRight implements Command
if (ptRes.Status === PromptStatus.OK)
{
let vec = ptRes.Value.clone().sub(leftBoard.Position);
leftBoard.ApplyMatrix(MoveMatrix(vec));
rightBoard.ApplyMatrix(MoveMatrix(vec))
app.m_Database.ModelSpace.Append(leftBoard);
app.m_Database.ModelSpace.Append(rightBoard);
}

@ -23,7 +23,7 @@ export class DrawTopBottomBoard implements Command
let boardCus = exSsRes.SelectSet.SelectEntityList.filter(en =>
en instanceof Board) as Board[];
if (boardCus.length >= 2)
if (boardCus.length >= 2)
{
let spaceParse = new SurroundSpaceParse(boardCus);
@ -48,37 +48,44 @@ export class DrawTopBottomBoard implements Command
}
else
{
app.m_Editor.m_CommandStore.Prompt("选择板无效")
app.m_Editor.Prompt("选择板无效");
}
}
else
{
app.m_Editor.m_CommandStore.Prompt("不是选择2块板或者板类型不正确")
app.m_Editor.Prompt("不是选择2块板或者板类型不正确");
}
}
buildTBBoard(spaceParse: SurroundSpaceParse, opt: TBBoardOption, wrapPt: Vector3, noWrapPt: Vector3, isTop = false)
{
let board: Board;
let basePt: Vector3;
let length: number;
let thickness = parseFloat(opt.thickness);
let offset = parseFloat(opt.offset);
let forwardDistance = parseFloat(opt.forwardDistance);
let rot = spaceParse.SpaceOCS;
let leftExt = parseFloat(opt.leftExt);
let rightExt = parseFloat(opt.rightExt);
if (opt.isWrapSide)
{
length = spaceParse.TotalLength;
basePt = wrapPt;
//如果是包侧,则如果是顶面则需上移一个厚度
isTop && basePt.add(new Vector3(0, 0, thickness));
}
else
{
length = spaceParse.SpaceLength;
basePt = noWrapPt;
//侧包时左右延伸无效
leftExt = 0;
rightExt = 0;
//如果是侧包,底面需上移一个厚度
!isTop && basePt.add(new Vector3(0, 0, thickness));
basePt.add(new Vector3(0, 0, offset * (isTop ? -1 : 1)));
if (!isTop)
if (!isTop && offset > 0)
{
let footBoard = Board.CreateBoard(offset, spaceParse.SpaceLength, parseFloat(opt.footThickness), BoardType.Behind);
footBoard.ApplyMatrix(MoveMatrix(spaceParse.BaseFootPoint));
@ -86,8 +93,10 @@ export class DrawTopBottomBoard implements Command
app.m_Database.ModelSpace.Append(footBoard);
}
}
//移动右缩和前距的距离
basePt.add(new Vector3(rightExt, -forwardDistance));
board = Board.CreateBoard(length, spaceParse.SpaceWidth - parseFloat(opt.forwardDistance) + parseFloat(opt.behindDistance), thickness, BoardType.Layer)
let board = Board.CreateBoard(length + leftExt + rightExt, spaceParse.SpaceWidth + forwardDistance + parseFloat(opt.behindDistance), thickness, BoardType.Layer)
board.ApplyMatrix(MoveMatrix(basePt));
board.ApplyMatrix(rot);
app.m_Database.ModelSpace.Append(board);

@ -29,16 +29,24 @@ export class DrawVerticalBoard extends DrawBoardTool
let thickness = parseFloat(opt.thickness);
let board = Board.CreateBoard(length, width, thickness, BoardType.Vertical);
//等分单层空间大小
let singleSize = (size.x - (thickness * count)) / (count + 1);
for (let i = 1; i <= count; i++)
{
let b = board.Clone() as Board;
if (type === BrRelativePos.Left)
b.ApplyMatrix(MoveMatrix(box.min.clone().add(new Vector3(spaceSize * i, frontShrink, bottomShink))));
b.ApplyMatrix(MoveMatrix(box.min.clone().add(
new Vector3((spaceSize + thickness) * i, frontShrink, bottomShink)
)));
else if (type === BrRelativePos.Right)
b.ApplyMatrix(MoveMatrix(box.min.clone().add(new Vector3(size.x - spaceSize * i, frontShrink, bottomShink))));
b.ApplyMatrix(MoveMatrix(box.min.clone().add(
new Vector3(size.x - spaceSize * i - (i - 1) * thickness, frontShrink, bottomShink)
)));
else
b.ApplyMatrix(MoveMatrix(box.min.clone().add(new Vector3(size.x / (count + 1) * i + thickness / 2, frontShrink, bottomShink))));
b.ApplyMatrix(MoveMatrix(box.min.clone().add(
new Vector3((singleSize + thickness) * i, frontShrink, bottomShink)
)));
b.ApplyMatrix(ro);
app.m_Database.ModelSpace.Append(b);

@ -15,7 +15,7 @@ export class DrawAlignedDimension implements Command
protected DimType = DimensionType.Align;
async exec()
{
app.m_Editor.m_CommandStore.Prompt("请指定第一条尺寸线原点:");
app.m_Editor.Prompt("请指定第一条尺寸线原点:");
let ptRes = await app.m_Editor.GetPoint({ Msg: "请指定第一条尺寸线原点:" });
if (ptRes.Status != PromptStatus.OK)
{
@ -23,7 +23,7 @@ export class DrawAlignedDimension implements Command
}
let startPt = ptRes.Value;
app.m_Editor.m_CommandStore.Prompt("请输入第二条尺寸线原点:");
app.m_Editor.Prompt("请输入第二条尺寸线原点:");
ptRes = await app.m_Editor.GetPoint({
Msg: "请输入第二条尺寸线原点:",
BasePoint: startPt,
@ -49,7 +49,7 @@ export class DrawAlignedDimension implements Command
app.m_Editor.AddNoSnapEntity(alDim);
app.m_Database.ModelSpace.Append(alDim);
app.m_Editor.m_CommandStore.Prompt("指定尺寸线位置:");
app.m_Editor.Prompt("指定尺寸线位置:");
ptRes = await app.m_Editor.GetPoint({
Msg: "指定尺寸线位置:",
KeyWordList: [{ msg: "多行文字", key: "M" }, { msg: "文字", key: "T" }, { msg: "角度", key: "A" }],

@ -14,7 +14,7 @@ export class DrawEllipse implements Command
{
async exec()
{
app.m_Editor.m_CommandStore.Prompt("指定椭圆中心:");
app.m_Editor.Prompt("指定椭圆中心:");
app.m_Editor.UpdateScreen();
let ptRes = await app.m_Editor.GetPoint({
Msg: "指定椭圆中心",

@ -1,49 +1,49 @@
import * as THREE from 'three';
import { app } from '../ApplicationServices/Application';
import { Command } from '../Editor/CommandMachine';
/**
* .
*
* @export
* @class DrawGripStretch
* @implements {Command}
*/
export class DrawGripStretch implements Command
{
async exec()
{
if (app.m_Viewer.m_OutlinePass.selectedObjects.length === 0)
{
app.m_Editor.m_CommandStore.Prompt("未选择对象:");
return;
}
let geometry = new THREE.Geometry();
let material = new THREE.PointsMaterial({
size: 15,
color: 0x001dfa,
sizeAttenuation: false
});
for (let en of app.m_Viewer.m_OutlinePass.selectedObjects)
{
if (en instanceof THREE.Mesh || en instanceof THREE.Line)
{
if (en.geometry instanceof THREE.Geometry)
{
for (let p of en.geometry.vertices)
{
geometry.vertices.push(p.clone().applyMatrix4(en.matrix));
}
}
}
let pts = new THREE.Points(geometry, material);
app.m_Viewer.Scene.add(pts);
}
}
}
import * as THREE from 'three';
import { app } from '../ApplicationServices/Application';
import { Command } from '../Editor/CommandMachine';
/**
* .
*
* @export
* @class DrawGripStretch
* @implements {Command}
*/
export class DrawGripStretch implements Command
{
async exec()
{
if (app.m_Viewer.m_OutlinePass.selectedObjects.length === 0)
{
app.m_Editor.Prompt("未选择对象:");
return;
}
let geometry = new THREE.Geometry();
let material = new THREE.PointsMaterial({
size: 15,
color: 0x001dfa,
sizeAttenuation: false
});
for (let en of app.m_Viewer.m_OutlinePass.selectedObjects)
{
if (en instanceof THREE.Mesh || en instanceof THREE.Line)
{
if (en.geometry instanceof THREE.Geometry)
{
for (let p of en.geometry.vertices)
{
geometry.vertices.push(p.clone().applyMatrix4(en.matrix));
}
}
}
let pts = new THREE.Points(geometry, material);
app.m_Viewer.Scene.add(pts);
}
}
}

@ -9,7 +9,7 @@ export class DrawSpline implements Command
{
async exec()
{
app.m_Editor.m_CommandStore.Prompt("请输入一个点:");
app.m_Editor.Prompt("请输入一个点:");
let ptRes = await app.m_Editor.GetPoint({ Msg: "请输入第一个点:" });
if (ptRes.Status != PromptStatus.OK)
return;
@ -27,7 +27,7 @@ export class DrawSpline implements Command
{
app.m_Database.ModelSpace.Append(spline);
}
app.m_Editor.m_CommandStore.Prompt("请输入点2:");
app.m_Editor.Prompt("请输入点2:");
ptRes = await app.m_Editor.GetPoint({
Msg: "请输入点2:",
BasePoint: ptLast,

@ -18,7 +18,7 @@ export class Command_Explode implements Command
{
if (en instanceof Line || en instanceof Arc || en instanceof Circle)
{
app.m_Editor.m_CommandStore.Prompt('无法分解');
app.m_Editor.Prompt('无法分解');
continue;
}
let ens = en.Explode();

@ -60,14 +60,14 @@ export class CommandFillet implements Command
let arcP1 = new_cu1.GetClosestPointTo(center, true);
if (!new_cu1.PtOnCurve(arcP1))
{
app.m_Editor.m_CommandStore.Prompt("半径过大");
app.m_Editor.Prompt("半径过大");
return;
}
//圆弧点2
let arcP2 = new_cu2.GetClosestPointTo(center, true);
if (!new_cu2.PtOnCurve(arcP2))
{
app.m_Editor.m_CommandStore.Prompt("半径过大");
app.m_Editor.Prompt("半径过大");
return;
}
@ -200,7 +200,7 @@ export class CommandFillet implements Command
case PromptStatus.OK:
if (enRes.Entity === oldCurve)
{
app.m_Editor.m_CommandStore.Prompt("重复的对象!");
app.m_Editor.Prompt("重复的对象!");
}
else if (enRes.Entity && enRes.Entity instanceof Curve)
{

@ -61,7 +61,7 @@ export class OffsetX implements Command
if (step === 0)
{
app.m_Editor.m_CommandStore.Prompt("步长不能为0,已经帮你转换成" + dis / 10);
app.m_Editor.Prompt("步长不能为0,已经帮你转换成" + dis / 10);
step = dis / 10;
}
let count = dis / step;

@ -52,7 +52,7 @@ export class PasteClip
}
catch (error)
{
app.m_Editor.m_CommandStore.Prompt("黏贴遇到错误:" + error);
app.m_Editor.Prompt("黏贴遇到错误:" + error);
}
}

@ -14,7 +14,7 @@ export class Command_RevPl implements Command
if (en instanceof Curve)
{
en.Reverse();
app.m_Editor.m_CommandStore.Prompt("成功翻转曲线");
app.m_Editor.Prompt("成功翻转曲线");
}
}
app.m_Editor.UpdateScreen();

@ -15,7 +15,7 @@ export class Command_Rotate implements Command
if (ss.Status != PromptStatus.OK)
return;
app.m_Editor.m_CommandStore.Prompt("请输入第一个点:");
app.m_Editor.Prompt("请输入第一个点:");
let ptRes = await app.m_Editor.GetPoint();
if (ptRes.Status != PromptStatus.OK)
{ return; }
@ -23,7 +23,7 @@ export class Command_Rotate implements Command
let pt1 = ptRes.Value;
let ucsInv = new Matrix4().getInverse(app.m_Editor.UCSMatrix);
let pt1Ucs = pt1.clone().applyMatrix4(ucsInv);
app.m_Editor.m_CommandStore.Prompt("请输入第二个点:");
app.m_Editor.Prompt("请输入第二个点:");
let enMap = new Map<Entity, CADFile>();

@ -18,7 +18,7 @@ export class Sweep implements Command
return;
if (!enRes.Entity.IsClose)
{
app.m_Editor.m_CommandStore.Prompt("您选择的多段线没有闭合!");
app.m_Editor.Prompt("您选择的多段线没有闭合!");
return;
}
}
@ -30,7 +30,7 @@ export class Sweep implements Command
{
if (!(enRes.Entity instanceof Curve))
{
app.m_Editor.m_CommandStore.Prompt("您选择的路径不是曲线!");
app.m_Editor.Prompt("您选择的路径不是曲线!");
return;
}

@ -15,7 +15,7 @@ export class Test implements Command
{
constructor()
{
app.m_Editor.m_CommandStore.Prompt("载入成功!");
app.m_Editor.Prompt("载入成功!");
}
async exec()
{

@ -1,7 +1,7 @@
export async function log(msg)
{
let app = (await import("../ApplicationServices/Application")).app;
app.m_Editor.m_CommandStore.Prompt(msg);
app.m_Editor.Prompt(msg);
}
export function IsNumber(keyCode: number)

@ -15,10 +15,10 @@ export class CommandMachine
{
if (this.m_CommandIng)
{
app.m_Editor.m_CommandStore.Prompt('系统正忙!');
app.m_Editor.Prompt('系统正忙!');
return;
}
app.m_Editor.m_CommandStore.Prompt(cmdName);
app.m_Editor.Prompt(cmdName);
if (this.m_CommandList.has(cmdName))
{
if (cmdName !== "SAVE")
@ -37,14 +37,14 @@ export class CommandMachine
}
catch (error)
{
app.m_Editor.m_CommandStore.Prompt("抱歉,命令造成了错误,请联系开发人员.");
app.m_Editor.Prompt("抱歉,命令造成了错误,请联系开发人员.");
console.error(error);
}
this.CommandEnd(cmdName, abort);
}
else
{
app.m_Editor.m_CommandStore.Prompt('输入命令有误');
app.m_Editor.Prompt('输入命令有误');
this.CommandEnd(cmdName);
}
}

@ -131,7 +131,7 @@ export class GetPointServices implements EditorService
}
catch (error)
{
app.m_Editor.m_CommandStore.Prompt("动态拾取点回调错误!");
app.m_Editor.Prompt("动态拾取点回调错误!");
console.log(error);
}
app.m_Editor.UpdateScreen();
@ -239,7 +239,7 @@ export class GetPointServices implements EditorService
if (prompt.Msg)
{
app.m_Editor.m_CommandStore.commandPrompt = prompt.Msg;
// app.m_Editor.m_CommandStore.Prompt(prompt.Msg);
// app.m_Editor.Prompt(prompt.Msg);
this.removeCalls.push(() =>
{
app.m_Editor.m_CommandStore.commandPrompt = "";

@ -49,7 +49,7 @@ export class SnapDragServices implements EditorService
this.DestroyPreLine();
app.m_Viewer.m_bNeedUpdate = true;
app.m_Editor.m_CommandStore.Prompt("拽拖开始:");
app.m_Editor.Prompt("拽拖开始:");
app.m_Editor.m_CommandStore.isCmdIng = true;
app.m_Database.hm.StartCmd("drag");

@ -69,14 +69,14 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore
</RadioGroup>
<div className="flexWrap">
<SetBoardDataItem
k="height"
opt={store.m_BoardOption}
optKey="height"
option={store.m_BoardOption}
title="板高"
isDisabled={store.m_BoardOption.boardPosition === BehindHeightPositon.AllHeight}
/>
<SetBoardDataItem
k="moveDist"
opt={store.m_BoardOption}
optKey="moveDist"
option={store.m_BoardOption}
title={this.moveDir}
isDisabled={store.m_BoardOption.boardPosition === BehindHeightPositon.AllHeight}
/>
@ -89,13 +89,13 @@ export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore
<div>
<h6 className={Classes.HEADING}></h6>
<div className="boardSize center">
<SetBoardDataItem2 title="上延伸" k="topExt" opt={store.m_BoardOption} />
<SetBoardDataItem2 title="上延伸" optKey="topExt" option={store.m_BoardOption} />
<div>
<SetBoardDataItem2 title="左延伸" k="leftExt" opt={store.m_BoardOption} />
<SetBoardDataItem2 title="左延伸" optKey="leftExt" option={store.m_BoardOption} />
<BoardModel />
<SetBoardDataItem2 title="右延伸" k="rightExt" opt={store.m_BoardOption} />
<SetBoardDataItem2 title="右延伸" optKey="rightExt" option={store.m_BoardOption} />
</div>
<SetBoardDataItem2 title="下延伸" k="bottomExt" opt={store.m_BoardOption} />
<SetBoardDataItem2 title="下延伸" optKey="bottomExt" option={store.m_BoardOption} />
</div>
</div>
</>

@ -4,108 +4,134 @@ import * as React from 'react';
import { BoardOption, BrRelativePos, TBBoardOption } from '../../Store/BoardInterface';
import { BoardStore } from '../../Store/BoardStore';
interface ISetItemOption
{
optKey: string;
title: string;
option: BoardOption;
isDisabled?: boolean;
}
interface ISetBlockOption
{
pars: Map<string, string>,
opt: BoardOption
className?: string,
isInline?: boolean,
}
//设置板件数据组件
export const SetBoardDataItem = observer(({ k, opt, title, isDisabled = false }: { k: string, title: string, isDisabled?: boolean, opt: BoardOption }) =>
<div className="br-set">
<span>
{title}:
export const SetBoardDataItem = observer(
({ optKey, option, title, isDisabled = false }: ISetItemOption) =>
<div className="br-set">
<span>
{title}:
</span>
<input
className={BoardStore.IsVailOption(k, opt[k]) ? "bp3-input" : "bp3-input bp3-intent-danger"}
value={opt[k]}
disabled={isDisabled}
onChange={e =>
{
if (!BoardStore.IsVailOption(k, e.target.value))
{
e.target.className += " bp3-intent-danger"
}
else
<input
className={BoardStore.IsVailOption(optKey, option[optKey]) ? "bp3-input" : "bp3-input bp3-intent-danger"}
value={option[optKey]}
disabled={isDisabled}
onChange={e =>
{
e.target.className = "bp3-input"
}
opt[k] = e.target.value;
}}
/>
</div>
if (!BoardStore.IsVailOption(optKey, e.target.value))
{
e.target.className += " bp3-intent-danger"
}
else
{
e.target.className = "bp3-input"
}
option[optKey] = e.target.value;
}}
/>
</div>
);
//设置板件数据组件
export const SetBoardDataItem2 = observer(({ k, opt, title }: { k: string, title: string, opt: BoardOption }) =>
<label className="bp3-label bp3-inline">
<span>{title}</span>
<input
className={BoardStore.IsVailOption(k, opt[k]) ? "bp3-input" : "bp3-input bp3-intent-danger"}
value={opt[k]}
onChange={e =>
{
if (!BoardStore.IsVailOption(k, e.target.value))
{
e.target.className += " bp3-intent-danger"
}
else
export const SetBoardDataItem2 = observer(
({ optKey, option, title }: ISetItemOption) =>
<label className="bp3-label bp3-inline">
<span>{title}</span>
<input
className={BoardStore.IsVailOption(optKey, option[optKey]) ? "bp3-input" : "bp3-input bp3-intent-danger"}
value={option[optKey]}
onChange={e =>
{
e.target.className = "bp3-input"
}
opt[k] = e.target.value;
}}
dir="auto" />
</label>
if (!BoardStore.IsVailOption(optKey, e.target.value))
{
e.target.className += " bp3-intent-danger"
}
else
{
e.target.className = "bp3-input"
}
option[optKey] = e.target.value;
}}
dir="auto" />
</label>
);
export const SetBoardDataBlock = observer(({ pars, opt, className, isInline = false }: { pars: Map<string, string>, className?: string, isInline?: boolean, opt: BoardOption }) =>
<div className={className}>
{
Array.from(pars.keys()).map(k =>
isInline ?
<SetBoardDataItem2
key={k}
k={k}
opt={opt}
title={pars.get(k)}
/> : <SetBoardDataItem
key={k}
k={k}
opt={opt}
title={pars.get(k)}
/>
)
}
</div>
);
export const TBBoardDataBlock = observer(({ pars, opt, istop }: { pars: Map<string, string>, opt: TBBoardOption, istop: boolean }) =>
<div className="pt-card pt-elevation-0 tb-br">
<h6 className={Classes.HEADING}>{istop ? "顶板" : "底板"}</h6>
<Checkbox
checked={opt.isDraw}
label="是否绘制"
onChange={() => opt.isDraw = !opt.isDraw}
/>
<RadioGroup
className="flex"
onChange={e => opt.isWrapSide = e.currentTarget.value === "1"}
selectedValue={opt.isWrapSide ? "1" : "0"}
>
<Radio className="widthHalf" label={istop ? "侧包顶" : "侧包底"} value="0" />
<Radio className="widthHalf" label={istop ? "顶包侧" : "底包侧"} value="1" />
</RadioGroup>
<div className="flexWrap">
export const SetBoardDataBlock = observer(
({ pars, opt, className, isInline = false }: ISetBlockOption) =>
<div className={className}>
{
Array.from(pars.keys()).map(k =>
<SetBoardDataItem
title={pars.get(k)}
k={k}
key={k}
opt={opt}
isDisabled={
((k === "rightExt" || k === "leftExt") && !opt.isWrapSide) ||
((k === "offset" || k === "footThickness") && opt.isWrapSide)
} />
isInline ?
<SetBoardDataItem2
key={k}
optKey={k}
option={opt}
title={pars.get(k)}
/> : <SetBoardDataItem
key={k}
optKey={k}
option={opt}
title={pars.get(k)}
/>
)
}
</div>
</div>
);
export const TBBoardDataBlock =
observer(
({ pars, opt, istop }: { pars: Map<string, string>, opt: TBBoardOption, istop: boolean }) =>
{
return (
<div className="pt-card pt-elevation-0 tb-br">
<h6 className={Classes.HEADING}>{istop ? "顶板" : "底板"}</h6>
<Checkbox
checked={opt.isDraw}
label="是否绘制"
onChange={() => opt.isDraw = !opt.isDraw}
/>
<RadioGroup
className="flex"
onChange={e => opt.isWrapSide = e.currentTarget.value === "1"}
selectedValue={opt.isWrapSide ? "1" : "0"}
>
<Radio className="widthHalf" label={istop ? "侧包顶" : "侧包底"} value="0" />
<Radio className="widthHalf" label={istop ? "顶包侧" : "底包侧"} value="1" />
</RadioGroup>
<div className="flexWrap">
{
Array.from(pars.keys()).map(k =>
{
if (k !== "footThickness" || (k === "footThickness" && !istop))
return (
<SetBoardDataItem
title={pars.get(k)}
optKey={k}
key={k}
option={opt}
isDisabled={
((k === "rightExt" || k === "leftExt") && !opt.isWrapSide) ||
((k === "offset" || k === "footThickness") && opt.isWrapSide)
} />
)
})
}
</div>
</div>
)
});
export const BoardModel = () =>
{
@ -117,45 +143,46 @@ export const BoardModel = () =>
</label>
)
}
export const BoardConfigBlock = observer(({ opt, opt1 }: { opt: BoardOption, opt1: Map<BrRelativePos, string> }) =>
{
let pars = new Map(
[["spaceSize", "空间"], ["count", "板数"], ["thickness", "板厚"]]);
return (
<div>
<h6 className={Classes.HEADING}></h6>
<RadioGroup
className="boardRadio"
onChange={e =>
{
let value = e.currentTarget.value as BrRelativePos;
opt.boardRelative = value;
}}
selectedValue={opt.boardRelative}
>
{
Array.from(opt1.keys()).map((k, i) =>
<Radio key={i} label={opt1.get(k)} value={k} />
)
}
<Radio label="等分" value={BrRelativePos.Div} />
</RadioGroup>
<div className="flexWrap">
{
Array.from(pars.keys()).map(k =>
<SetBoardDataItem
key={k}
k={k}
opt={opt}
title={pars.get(k)}
isDisabled={(k === "spaceSize" && opt.boardRelative === BrRelativePos.Div)}
/>
)
}
export const BoardConfigBlock = observer(
({ opt, opt1 }: { opt: BoardOption, opt1: Map<BrRelativePos, string> }) =>
{
let pars = new Map(
[["spaceSize", "空间"], ["count", "板数"], ["thickness", "板厚"]]);
return (
<div>
<h6 className={Classes.HEADING}></h6>
<RadioGroup
className="boardRadio"
onChange={e =>
{
let value = e.currentTarget.value as BrRelativePos;
opt.boardRelative = value;
}}
selectedValue={opt.boardRelative}
>
{
Array.from(opt1.keys()).map((k, i) =>
<Radio key={i} label={opt1.get(k)} value={k} />
)
}
<Radio label="等分" value={BrRelativePos.Div} />
</RadioGroup>
<div className="flexWrap">
{
Array.from(pars.keys()).map(k =>
<SetBoardDataItem
key={k}
optKey={k}
option={opt}
title={pars.get(k)}
isDisabled={(k === "spaceSize" && opt.boardRelative === BrRelativePos.Div)}
/>
)
}
</div>
</div>
</div>
)
});
)
});
export const BoardInfo = (props: { store?: any }) =>
{

@ -16,6 +16,7 @@ import { VerticalBoardModal } from './VerticalBoardModal';
import * as xaop from 'xaop';
import { app } from '../../../ApplicationServices/Application';
import { ModalState } from '../Modal/ModalsManage';
import { arrayLast } from '../../../Common/ArrayExt';
export enum BoardModalType
{
@ -176,11 +177,12 @@ export class BoardModal extends React.Component<BoardModalProps, BoardModalState
{
let dbstore = await IndexedDbStore.CADStore();
let type = this.props.type;
let brDataMap = await dbstore.Get(StoreName.ConfigData, type) as Map<string, configOption> || new Map();
let brDataMap: Map<string, configOption> = await dbstore.Get(StoreName.ConfigData, type) || new Map();
this.setState({ configs: brDataMap });
let confNames = Array.from(brDataMap.keys());
//如果没保存过配置,添加一个默认
//如果没保存过配置,添加一个默认,否则显示最后保存得配置和配置名称
if (confNames.length === 0)
{
this.setState({ configName: "默认" });
@ -188,7 +190,7 @@ export class BoardModal extends React.Component<BoardModalProps, BoardModalState
}
else
{
this.setState({ configName: confNames[0] });
this.setState({ configName: arrayLast(confNames) });
}
//注册事件
@ -247,14 +249,16 @@ export class BoardModal extends React.Component<BoardModalProps, BoardModalState
this.setState({ configName: e.target.value })
}}
rightElement={
< Popover
<Popover
autoFocus={true}
enforceFocus={false}
modifiers={{
arrow: { enabled: false },
flip: { enabled: true },
keepTogether: { enabled: true },
preventOverflow: { enabled: true, boundariesElement: "scrollParent" }
}}
usePortal={false}
content={
<Menu>
{

@ -48,8 +48,8 @@ export const LayerBoardModal =
Array.from(scalePars.keys()).map(k =>
<SetBoardDataItem
key={k}
k={k}
opt={brOpt}
optKey={k}
option={brOpt}
title={scalePars.get(k)}
isDisabled={(k === "height" && brOpt.isTotalLength)}
/>
@ -75,8 +75,8 @@ export const LayerBoardModal =
Array.from(nailPars1.keys()).map(k =>
<SetBoardDataItem
key={k}
k={k}
opt={nailOpt}
optKey={k}
option={nailOpt}
title={nailPars1.get(k)}
isDisabled={(k === "addCount" || k === "dist") && (!brOpt.isActive || !nailOpt.isDraw)}
/>

@ -36,8 +36,8 @@ export const VerticalBoardModal =
Array.from(scalePars.keys()).map(k =>
<SetBoardDataItem
key={k}
k={k}
opt={store.m_BoardOption}
optKey={k}
option={store.m_BoardOption}
title={scalePars.get(k)}
isDisabled={(k === "width" && store.m_BoardOption.isTotalWidth)
|| (k === "height" && store.m_BoardOption.isTotalLength)

@ -69,20 +69,6 @@ export class ModalManage
{
this.m_ModalContainer.addEventListener('keydown', e => this.OnKeyDown(e));
let canvas = document.getElementById("Webgl");
canvas.addEventListener("click", () =>
{
this.m_ModalContainer.focus();
this.m_ModalContainer.blur();
});
this.m_ModalContainer.addEventListener("click", (e: MouseEvent) =>
{
let el = (e.target as HTMLElement);
if (el.nodeName !== "INPUT" && el.nodeName !== "SELECT")
{
this.m_ModalContainer.focus();
}
});
this.m_ModalContainer.addEventListener('focus', () =>
{

Loading…
Cancel
Save