mirror of https://gitee.com/cf-fz/WebCAD.git
parent
e2cfeb67f4
commit
24be219cb5
@ -0,0 +1,56 @@
|
|||||||
|
import { Matrix4, Vector3 } from 'three';
|
||||||
|
import { TopBottomBoardStore, ModalState, BehindBoardStore } from '../../UI/Store/BoardStore';
|
||||||
|
import { app } from '../../ApplicationServices/Application';
|
||||||
|
import { PromptStatus } from '../../Editor/PromptResult';
|
||||||
|
import { Board, BoardType } from '../../DatabaseServices/Board';
|
||||||
|
import { TopAndBottomSpaceParse } from '../../Geometry/SpaceParse';
|
||||||
|
import { Command } from '../../Editor/CommandMachine';
|
||||||
|
import { MoveMatrix } from '../../Geometry/GeUtils';
|
||||||
|
import { BehindBoardModal } from '../../UI/Components/Board/BehindBoardModal';
|
||||||
|
export class DrawBehindBoard implements Command
|
||||||
|
{
|
||||||
|
async exec()
|
||||||
|
{
|
||||||
|
let exSsRes = await app.m_Editor.GetSelection({ Msg: "请选择对象<全部选择>:", UseSelect: true });
|
||||||
|
if (exSsRes.Status === PromptStatus.Cancel)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let boardCus = exSsRes.SelectSet.SelectEntityList.filter(en =>
|
||||||
|
en instanceof Board) as Board[];
|
||||||
|
|
||||||
|
if (boardCus.length >= 2)
|
||||||
|
{
|
||||||
|
let spaceParse = new TopAndBottomSpaceParse(boardCus, false);
|
||||||
|
|
||||||
|
await spaceParse.SpaceParse();
|
||||||
|
|
||||||
|
if (spaceParse.IsVail)
|
||||||
|
{
|
||||||
|
let store = BehindBoardStore.Store();
|
||||||
|
|
||||||
|
app.m_Editor.m_ModalManage.RenderBoardModal(store, BehindBoardModal);
|
||||||
|
|
||||||
|
let state = await store.GetBoardOption();
|
||||||
|
|
||||||
|
if (state === ModalState.Ok)
|
||||||
|
{
|
||||||
|
let board = Board.CreateBoard(spaceParse.BehindLength, spaceParse.SpaceLength, parseFloat(store.behindBoardOption.thickness), BoardType.Behind);
|
||||||
|
spaceParse.BaseBehindPoint.add(new Vector3(0, -parseFloat(store.behindBoardOption.thickness)))
|
||||||
|
|
||||||
|
board.ApplyMatrix(MoveMatrix(spaceParse.BaseBehindPoint));
|
||||||
|
let rot = new Matrix4().extractRotation(spaceParse.OCS)
|
||||||
|
board.ApplyMatrix(rot);
|
||||||
|
app.m_Database.ModelSpace.Append(board);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
app.m_Editor.m_CommandStore.Prompt("选择板无效")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
app.m_Editor.m_CommandStore.Prompt("不是选择2块板或者板类型不正确")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,10 @@
|
|||||||
//绘制板件
|
//绘制板件
|
||||||
import * as THREE from 'three';
|
import * as THREE from 'three';
|
||||||
|
import { Command } from '../../Editor/CommandMachine';
|
||||||
import { app } from '../ApplicationServices/Application';
|
import { MaterialNeedUpdateKey } from '../../DatabaseServices/MaterialDictionary';
|
||||||
import { CreateBoardUtil } from '../ApplicationServices/mesh/createBoard';
|
import { MoveMatrix } from '../../Geometry/GeUtils';
|
||||||
import { MaterialNeedUpdateKey } from '../DatabaseServices/MaterialDictionary';
|
import { CreateBoardUtil } from '../../ApplicationServices/mesh/createBoard';
|
||||||
import { Command } from '../Editor/CommandMachine';
|
import { app } from '../../ApplicationServices/Application';
|
||||||
import { MoveMatrix } from '../Geometry/GeUtils';
|
|
||||||
|
|
||||||
export class Command_DrawBoard implements Command
|
export class Command_DrawBoard implements Command
|
||||||
{
|
{
|
@ -1,24 +1,26 @@
|
|||||||
import { Vector3 } from 'three';
|
import { Vector3 } from 'three';
|
||||||
import { app } from '../ApplicationServices/Application';
|
import { SideBoardStore, ModalState } from '../../UI/Store/BoardStore';
|
||||||
import { Board, BoardType } from '../DatabaseServices/Board';
|
import { BoardType, Board } from '../../DatabaseServices/Board';
|
||||||
import { Command } from '../Editor/CommandMachine';
|
import { Command } from '../../Editor/CommandMachine';
|
||||||
import { PromptStatus } from '../Editor/PromptResult';
|
import { app } from '../../ApplicationServices/Application';
|
||||||
import { MoveMatrix } from '../Geometry/GeUtils';
|
import { MoveMatrix } from '../../Geometry/GeUtils';
|
||||||
import { ModalState, SideBoardStore } from '../UI/Store/BoardStore';
|
import { PromptStatus } from '../../Editor/PromptResult';
|
||||||
|
import { LeftRightBoardModal } from '../../UI/Components/Board/leftRightBoardModal';
|
||||||
|
|
||||||
|
|
||||||
export class DrawLeftRight implements Command
|
export class DrawLeftRight implements Command
|
||||||
{
|
{
|
||||||
async exec()
|
async exec()
|
||||||
{
|
{
|
||||||
app.m_Editor.m_ModalManage.RenderLeftRightBoard();
|
let store = SideBoardStore.Store();
|
||||||
let sideBoardStore = SideBoardStore.Store();
|
|
||||||
|
|
||||||
let state = await sideBoardStore.GetBoardOption();
|
app.m_Editor.m_ModalManage.RenderBoardModal(store, LeftRightBoardModal);
|
||||||
|
|
||||||
|
let state = await store.GetBoardOption();
|
||||||
|
|
||||||
if (state === ModalState.Ok)
|
if (state === ModalState.Ok)
|
||||||
{
|
{
|
||||||
let data = sideBoardStore.boardOption;
|
let data = store.boardOption;
|
||||||
let lenght = data.lenght ? parseFloat(data.lenght) : 0;
|
let lenght = data.lenght ? parseFloat(data.lenght) : 0;
|
||||||
let width = data.width ? parseFloat(data.width) : 0;
|
let width = data.width ? parseFloat(data.width) : 0;
|
||||||
let thickness = data.thickness ? parseFloat(data.thickness) : 0;
|
let thickness = data.thickness ? parseFloat(data.thickness) : 0;
|
@ -0,0 +1,75 @@
|
|||||||
|
import { Button, Dialog } from '@blueprintjs/core';
|
||||||
|
import { inject, observer } from 'mobx-react';
|
||||||
|
import * as React from 'react';
|
||||||
|
import { KeyBoard } from '../../../Common/KeyEnum';
|
||||||
|
import { BehindBoardStore, ModalState } from '../../Store/BoardStore';
|
||||||
|
|
||||||
|
|
||||||
|
@inject("store")
|
||||||
|
@observer
|
||||||
|
export class BehindBoardModal extends React.Component<{ store?: BehindBoardStore }, {}> {
|
||||||
|
constructor(props)
|
||||||
|
{
|
||||||
|
super(props);
|
||||||
|
}
|
||||||
|
render()
|
||||||
|
{
|
||||||
|
let store = this.props.store;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Dialog
|
||||||
|
iconName="inbox"
|
||||||
|
isOpen={true}
|
||||||
|
onClose={() => store.OnOk(ModalState.Cancel)}
|
||||||
|
canOutsideClickClose={false}
|
||||||
|
enforceFocus={false}
|
||||||
|
title="背板"
|
||||||
|
>
|
||||||
|
<div className="pt-dialog-body" onKeyDown={e =>
|
||||||
|
{
|
||||||
|
if (e.keyCode === KeyBoard.Enter)
|
||||||
|
{
|
||||||
|
store.OnOk(ModalState.Ok);
|
||||||
|
}
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
}>
|
||||||
|
|
||||||
|
{
|
||||||
|
Array.from(store.m_Parameter.keys()).map(k =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<div key={k}>
|
||||||
|
<label htmlFor="">{store.m_Parameter.get(k)}:</label>
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
value={store.behindBoardOption[k]}
|
||||||
|
onChange={e =>
|
||||||
|
{
|
||||||
|
store.behindBoardOption[k] = e.target.value;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="pt-dialog-footer">
|
||||||
|
<div className="pt-dialog-footer-actions">
|
||||||
|
<Button className="LeftRightBtn" text="确定" onClick={() =>
|
||||||
|
{
|
||||||
|
store.OnOk(ModalState.Ok);
|
||||||
|
}} />
|
||||||
|
|
||||||
|
<Button className="LeftRightBtn" text="取消" onClick={() =>
|
||||||
|
{
|
||||||
|
store.OnOk(ModalState.Cancel);
|
||||||
|
}} />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ Dialog>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue