!286 收口条,标注优化,bug修复

Merge pull request !286 from ZoeLeeFZ/optClosedSlip
pull/286/MERGE
ChenX 6 years ago
parent 1048de1d99
commit 29baf903fe

@ -62,7 +62,9 @@ export class DrawClosingStrip implements Command
let pos = new Vector3();
let thickness = opt.thickness;
let width = opt.width;
let frontShrink = opt.frontShrink;
let br: Board;
let br2: Board; //左右横板以及上竖板会成对绘制收口条
//靠上,横板为层板,基点位置为前右上方的点往上移动一个厚度 竖板为背板,基点为前左上方点
if (opt.boardRelative === BrRelativePos.Top)
@ -72,57 +74,74 @@ export class DrawClosingStrip implements Command
br = Board.CreateBoard(size.x, width, thickness,
BoardType.Layer);
pos.set(max.x, min.y, max.z);
pos.set(max.x, min.y + frontShrink, max.z);
}
else
{
br = Board.CreateBoard(width, size.x, thickness,
BoardType.Behind);
pos.set(min.x, min.y + thickness, max.z);
br2 = Board.CreateBoard(size.x, width, thickness,
BoardType.Layer);
br2.Position = new Vector3(max.x, min.y + frontShrink + thickness, max.z)
}
}
else
{
br = Board.CreateBoard(size.z, width, thickness,
opt.striptype === StripType.H ? BoardType.Behind : BoardType.Vertical);
//靠左,横板为背板,基点为左下角点往x移动一个宽度,竖板为立板,基点为左下角点
//靠右,横板基点为右下角点,竖板基点为左下角点右移动一个厚度
if (opt.striptype === StripType.H)
{
br = Board.CreateBoard(size.z, width, thickness, BoardType.Behind);
br2 = Board.CreateBoard(size.z, width, thickness, BoardType.Vertical);
}
else
br = Board.CreateBoard(size.z, width, thickness, BoardType.Vertical);
if (opt.boardRelative === BrRelativePos.Left)
{
if (opt.striptype === StripType.H)
{
pos.set(min.x - width, min.y + thickness, min.z);
pos.set(min.x - width, min.y + thickness + frontShrink, min.z);
br2.Position = min.clone().add(new Vector3(-thickness, frontShrink + thickness));
}
else
{
pos.copy(min.add(new Vector3(-thickness)));
pos.copy(min.clone().add(new Vector3(-thickness, frontShrink)));
}
}
else
{
if (opt.striptype === StripType.H)
{
pos.set(max.x, min.y + thickness, min.z);
pos.set(max.x, min.y + thickness + frontShrink, min.z);
br2.Position = min.clone().add(new Vector3(0, frontShrink + thickness)).setX(max.x);
}
else
{
pos.copy(min).setX(max.x);
pos.copy(min.clone().add(new Vector3(0, frontShrink))).setX(max.x);
}
}
}
br.Name = opt.name;
br.BoardProcessOption = this.store.m_BoardProcessOption;
let brs = [br];
br2 && brs.push(br2);
//收口条颜色
br.ColorIndex = 4;
br.ApplyMatrix(MoveMatrix(pos));
br.Position = pos;
//更新总空间
totalSpace.union(br.BoundingBox);
br.ApplyMatrix(rot);
app.m_Database.ModelSpace.Append(br);
for (let b of brs)
{
b.Name = opt.name;
b.BoardProcessOption = this.store.m_BoardProcessOption;
//收口条颜色
b.ColorIndex = 4;
b.ApplyMatrix(rot);
app.m_Database.ModelSpace.Append(b);
}
app.m_Editor.UpdateScreen();
}
}

@ -10,6 +10,7 @@ import { Command } from '../../Editor/CommandMachine';
import { JigUtils } from '../../Editor/JigUtils';
import { PromptStatus } from '../../Editor/PromptResult';
import { ContinueDrawDimension } from './Command_DimContinue';
import { equaln } from '../../Geometry/GeUtils';
export enum DimensionType
{
@ -90,16 +91,28 @@ export class DrawAlignedDimension implements Command
alDim.FootP2 = footPt2;
alDim.ArmP2 = footPt2;
let vec = footPt1.clone().sub(footPt2)
JigUtils.Draw(alDim);
const getPt = (v: Vector3) =>
{
let p = v.clone();
if (equaln(vec.z, 0))
p.setZ(footPt1.z);
else
p.setY(footPt1.y);
return p;
}
let ptRes = await app.m_Editor.GetPoint({
Msg: "指定尺寸线位置:",
Callback: (v) => { alDim.TextPosition = v; }
Callback: (v) => { alDim.TextPosition = getPt(v); }
});
if (ptRes.Status == PromptStatus.OK)
{
alDim.TextPosition = ptRes.Point;
alDim.TextPosition = getPt(ptRes.Point);
app.m_Database.ModelSpace.Append(alDim);
await ContinueDrawDimension(alDim);
}

@ -38,7 +38,7 @@ export class Point3SpaceParse extends ISpaceParse
if (ptRes.Status !== PromptStatus.OK)
return;
let zVec = ptRes.Point.sub(basePt).normalize();
let zVec = ptRes.Point.sub(basePt);
let yVec = zVec.clone().cross(xVec).normalize();
if (!isPerpendicularityTo(zVec, yVec))
@ -52,7 +52,6 @@ export class Point3SpaceParse extends ISpaceParse
let distRes = await app.m_Editor.GetDistance({
Msg: "点选或者输入深度",
BasePoint: basePt,
});
if (distRes.Status !== PromptStatus.OK)
return;

@ -93,7 +93,7 @@ export class PointSelectBoards
{
let edgeP = edgePts[i];
let selectLine = new SelectLine(this.view, mouseP, edgeP);
selectLine.Select(undefined);
selectLine.Select(undefined, { filterTypes: [Board] });
let brs = selectLine.SelectEntityList as Board[];

@ -12,6 +12,10 @@ import { MaterialOut, deflate } from './SourceManage/SerializeMaterial';
import { request, RequestStatus } from '../../Common/Request';
import { AppToaster } from './Toaster';
import { ImgsUrl, MaterialUrls } from '../../Common/HostUrl';
import { Vector3 } from 'three';
import { PointPick } from '../../Editor/PointPick';
import { Board } from '../../DatabaseServices/Board';
import { GetEntity } from '../../Common/Utils';
//蓝图.
const RootStyle: CSSProperties = {
@ -87,11 +91,13 @@ export class Asset extends React.Component<{ material: PhysicalMaterialRecord },
{
this.removeCall.push(xaop.end(this.props.material, this.props.material.Update, this.UpdateRenderPreview));
this.UpdateRenderPreview();
document.addEventListener("drop", this.handleDrop);
}
componentWillUnmount()
{
this.Destroy();
document.removeEventListener("drop", this.handleDrop);
}
handleDoubleClick = () =>
{
@ -151,6 +157,22 @@ export class Asset extends React.Component<{ material: PhysicalMaterialRecord },
{
app.m_Database.MaterialTable.Remove(this.props.material as PhysicalMaterialRecord);
}
handleDrop = (e: DragEvent) =>
{
let material = this.props.material as PhysicalMaterialRecord;
let pt = new Vector3(e.offsetX, e.offsetY, 0);
let selectObj = PointPick(pt, app.m_Viewer);
if (selectObj)
{
for (let o of selectObj)
{
let en = GetEntity(o);
if (en && en instanceof Board)
en.Material = material.Id;
}
app.m_Editor.UpdateScreen();
}
}
render()
{
return (

@ -33,6 +33,7 @@ interface ISetBlockOption
isInline?: boolean;
onChange?: Function;
disabled?: boolean;
children?: React.ReactNode;
}
interface TBProps
{
@ -88,6 +89,9 @@ export const SetBoardDataBlock = observer(
/>
)
}
{
props.children
}
</div>
);

@ -11,7 +11,8 @@ export const ClosingStripModal =
(observer((props: { store?: ClosingStripStore }) =>
{
let opt = props.store.m_Option;
let pars = [["width", "宽度"], ["thickness", "厚度"]];
let uiOption = props.store.UIOption;
let pars = [["width", "宽度"], ["thickness", "厚度"], ["frontShrink", "前缩"]];
return (
<div>
<div>
@ -39,7 +40,8 @@ export const ClosingStripModal =
<SetBoardDataBlock
type={CheckObjectType.BR}
pars={pars}
option={props.store.m_Option}
option={opt}
uiOption={uiOption}
/>
</div>
)

@ -114,11 +114,6 @@ export class UploadComponent extends React.Component<IUploadProps, {}> {
}
componentDidMount()
{
//阻止浏览器的默认拖拽行为
document.ondragleave = e => e.preventDefault();
document.ondrop = e => e.preventDefault();
document.ondragenter = e => e.preventDefault();
document.ondragover = e => e.preventDefault();
this.fileReader.onloadend = () =>
{
if (this.fileReader.result)

@ -231,6 +231,7 @@ export interface ClosingStripOption extends BoardConfigOption
{
boardRelative: BrRelativePos;
striptype: StripType;//收口条类型
frontShrink: number; //前缩
}
export interface IGrooveOption

@ -316,8 +316,9 @@ export class ClosingStripStore extends BoardStore
name: "收口条",
striptype: StripType.H,
boardRelative: BrRelativePos.Left,
width: 50,
thickness: 18
width: 60,
thickness: 18,
frontShrink: 0,
}
}
export class SpecialShapeStore extends BoardStore

@ -22,6 +22,10 @@ document.addEventListener("selectionchange", () =>
document.body.className = " light-golden";
//禁止右键
document.oncontextmenu = () => false;
//取消浏览器默认拖拽行为
document.ondragleave = e => e.preventDefault();
document.ondragenter = e => e.preventDefault();
document.ondragover = e => e.preventDefault();
window.onload = function ()
{

Loading…
Cancel
Save