|
|
@ -2,7 +2,7 @@ import { Button, Card, Classes, Intent } from '@blueprintjs/core';
|
|
|
|
import { observable } from 'mobx';
|
|
|
|
import { observable } from 'mobx';
|
|
|
|
import { observer } from 'mobx-react';
|
|
|
|
import { observer } from 'mobx-react';
|
|
|
|
import React, { Component } from 'react';
|
|
|
|
import React, { Component } from 'react';
|
|
|
|
import { Box3, Mesh, Vector3 } from 'three';
|
|
|
|
import { Mesh } from 'three';
|
|
|
|
import { app } from '../../../ApplicationServices/Application';
|
|
|
|
import { app } from '../../../ApplicationServices/Application';
|
|
|
|
import { Solid3D } from '../../../Common/InterfereUtil';
|
|
|
|
import { Solid3D } from '../../../Common/InterfereUtil';
|
|
|
|
import { ColorMaterial } from './../../../Common/ColorPalette';
|
|
|
|
import { ColorMaterial } from './../../../Common/ColorPalette';
|
|
|
@ -12,7 +12,7 @@ import { CommonModal } from './ModalContainer';
|
|
|
|
interface IInterfereProps
|
|
|
|
interface IInterfereProps
|
|
|
|
{
|
|
|
|
{
|
|
|
|
count: number,
|
|
|
|
count: number,
|
|
|
|
data: Map<Mesh, [Solid3D, Solid3D]>;
|
|
|
|
data: [Mesh, [Solid3D, Solid3D]][];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@observer
|
|
|
|
@observer
|
|
|
@ -42,7 +42,7 @@ export class InterfereModal extends Component<IInterfereProps, {}> {
|
|
|
|
<h5>共{count}个干涉对象</h5>
|
|
|
|
<h5>共{count}个干涉对象</h5>
|
|
|
|
<div className="flex-between">
|
|
|
|
<div className="flex-between">
|
|
|
|
<span>找到干涉点对</span>
|
|
|
|
<span>找到干涉点对</span>
|
|
|
|
<span>{data.size}</span>
|
|
|
|
<span>{data.length}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="flex-col" style={{ width: "40%" }}>
|
|
|
|
<div className="flex-col" style={{ width: "40%" }}>
|
|
|
@ -57,7 +57,7 @@ export class InterfereModal extends Component<IInterfereProps, {}> {
|
|
|
|
intent={Intent.SUCCESS}
|
|
|
|
intent={Intent.SUCCESS}
|
|
|
|
onClick={this.next}
|
|
|
|
onClick={this.next}
|
|
|
|
/>{
|
|
|
|
/>{
|
|
|
|
this.currentIndex >= 0 && <span>第{this.currentIndex + 1}个,共{data.size}个</span>
|
|
|
|
this.currentIndex >= 0 && <span>第{this.currentIndex + 1}个,共{data.length}个</span>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</Card>
|
|
|
|
</Card>
|
|
|
@ -67,40 +67,35 @@ export class InterfereModal extends Component<IInterfereProps, {}> {
|
|
|
|
private close = () =>
|
|
|
|
private close = () =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
app.Editor.ModalManage.Destory();
|
|
|
|
app.Editor.ModalManage.Destory();
|
|
|
|
app.Viewer.OutlinePass.selectedObjects = [];
|
|
|
|
app.Editor.SetSelection([]);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
private restore = (os: Mesh[]) =>
|
|
|
|
private restore = () =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
for (let o of os)
|
|
|
|
for (let lst of this.props.data)
|
|
|
|
o.material = ColorMaterial.GetConceptualMaterial(1);
|
|
|
|
{
|
|
|
|
app.Viewer.OutlinePass.selectedObjects = [];
|
|
|
|
let mesh = lst[0];
|
|
|
|
|
|
|
|
mesh.material = ColorMaterial.GetConceptualMaterial(1);
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
private next = () =>
|
|
|
|
private next = () =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let os = [...this.props.data.keys()];
|
|
|
|
this.restore();
|
|
|
|
this.restore(os);
|
|
|
|
this.currentIndex = FixIndex(this.currentIndex + 1, this.props.data);
|
|
|
|
this.currentIndex = FixIndex(this.currentIndex + 1, os.length);
|
|
|
|
this.update(this.props.data[this.currentIndex]);
|
|
|
|
this.update(os[this.currentIndex]);
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
private previos = () =>
|
|
|
|
private previos = () =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let os = [...this.props.data.keys()];
|
|
|
|
this.restore();
|
|
|
|
this.restore(os);
|
|
|
|
this.currentIndex = FixIndex(this.currentIndex - 1, this.props.data);
|
|
|
|
if (this.currentIndex < 0)
|
|
|
|
if (this.currentIndex < 0) this.currentIndex = 0;
|
|
|
|
this.currentIndex = 0;
|
|
|
|
this.update(this.props.data[this.currentIndex]);
|
|
|
|
this.currentIndex = FixIndex(this.currentIndex - 1, os.length);
|
|
|
|
|
|
|
|
this.update(os[this.currentIndex]);
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
private update = (o: Mesh) =>
|
|
|
|
private update = (group: [Mesh, [Solid3D, Solid3D]]) =>
|
|
|
|
{
|
|
|
|
|
|
|
|
o.material = ColorMaterial.GetConceptualMaterial(5);
|
|
|
|
|
|
|
|
let box = new Box3();
|
|
|
|
|
|
|
|
app.Viewer.OutlinePass.selectedObjects = this.props.data.get(o).map(e =>
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
box.union(e.BoundingBox);
|
|
|
|
if (!group) return;
|
|
|
|
return e.DrawObject;
|
|
|
|
let [mesh, ens] = group;
|
|
|
|
});
|
|
|
|
mesh.material = ColorMaterial.GetConceptualMaterial(5);
|
|
|
|
app.Viewer.CameraCtrl.ZoomExtensBox3(box);
|
|
|
|
app.Editor.SetSelection(ens);
|
|
|
|
app.Viewer.Zoom(1, box.getCenter(new Vector3));
|
|
|
|
app.Viewer.ZoomtoEntitys(ens);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|