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 { app } from '../ApplicationServices/Application';
|
||||
import { CreateBoardUtil } from '../ApplicationServices/mesh/createBoard';
|
||||
import { MaterialNeedUpdateKey } from '../DatabaseServices/MaterialDictionary';
|
||||
import { Command } from '../Editor/CommandMachine';
|
||||
import { MoveMatrix } from '../Geometry/GeUtils';
|
||||
import { Command } from '../../Editor/CommandMachine';
|
||||
import { MaterialNeedUpdateKey } from '../../DatabaseServices/MaterialDictionary';
|
||||
import { MoveMatrix } from '../../Geometry/GeUtils';
|
||||
import { CreateBoardUtil } from '../../ApplicationServices/mesh/createBoard';
|
||||
import { app } from '../../ApplicationServices/Application';
|
||||
|
||||
export class Command_DrawBoard implements Command
|
||||
{
|
@ -1,24 +1,26 @@
|
||||
import { Vector3 } from 'three';
|
||||
import { app } from '../ApplicationServices/Application';
|
||||
import { Board, BoardType } from '../DatabaseServices/Board';
|
||||
import { Command } from '../Editor/CommandMachine';
|
||||
import { PromptStatus } from '../Editor/PromptResult';
|
||||
import { MoveMatrix } from '../Geometry/GeUtils';
|
||||
import { ModalState, SideBoardStore } from '../UI/Store/BoardStore';
|
||||
import { SideBoardStore, ModalState } from '../../UI/Store/BoardStore';
|
||||
import { BoardType, Board } from '../../DatabaseServices/Board';
|
||||
import { Command } from '../../Editor/CommandMachine';
|
||||
import { app } from '../../ApplicationServices/Application';
|
||||
import { MoveMatrix } from '../../Geometry/GeUtils';
|
||||
import { PromptStatus } from '../../Editor/PromptResult';
|
||||
import { LeftRightBoardModal } from '../../UI/Components/Board/leftRightBoardModal';
|
||||
|
||||
|
||||
export class DrawLeftRight implements Command
|
||||
{
|
||||
async exec()
|
||||
{
|
||||
app.m_Editor.m_ModalManage.RenderLeftRightBoard();
|
||||
let sideBoardStore = SideBoardStore.Store();
|
||||
let store = SideBoardStore.Store();
|
||||
|
||||
let state = await sideBoardStore.GetBoardOption();
|
||||
app.m_Editor.m_ModalManage.RenderBoardModal(store, LeftRightBoardModal);
|
||||
|
||||
let state = await store.GetBoardOption();
|
||||
|
||||
if (state === ModalState.Ok)
|
||||
{
|
||||
let data = sideBoardStore.boardOption;
|
||||
let data = store.boardOption;
|
||||
let lenght = data.lenght ? parseFloat(data.lenght) : 0;
|
||||
let width = data.width ? parseFloat(data.width) : 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