CADViewComponent/src/ViewSrc/index.ts

96 lines
2.3 KiB
TypeScript
Raw Normal View History

2018-08-17 21:26:32 +08:00
// import { Color, Face3, MeshBasicMaterial, Object3D, Vector2, Vector3 } from "three";
// import "./style.css";
2018-10-29 14:49:40 +08:00
import { Vector3 } from "three";
2018-08-17 21:26:32 +08:00
import { CameraControlState } from "../CameraControls";
2018-10-29 14:49:40 +08:00
import { data } from "../data";
import { GetBox } from "../GeUtils";
2018-08-17 21:26:32 +08:00
import { LoadBoard } from "../Utils";
2018-10-29 14:49:40 +08:00
import { Viewer } from "../Viewer";
2018-08-17 21:26:32 +08:00
let btn = document.createElement("button");
btn.innerHTML = "载入"
document.body.appendChild(btn);
let btn2 = document.createElement("button");
btn2.innerHTML = "清理"
document.body.appendChild(btn2);
2018-10-29 14:49:40 +08:00
let btn3 = document.createElement("button");
btn3.innerHTML = "爆炸图"
document.body.appendChild(btn3);
2018-08-17 21:26:32 +08:00
let el = document.createElement("canvas");
el.style.width = "80%";
el.style.height = "80%";
document.body.appendChild(el);
let view = new Viewer(el);
//修改这个顺序 改变1 2 3 个触摸点时的触发状态.
view.m_CameraCtrl.m_TouthTypeList = [CameraControlState.Rotate, CameraControlState.Scale, CameraControlState.Pan];
//例如,修改单指滑动为平移.
view.m_CameraCtrl.m_TouthTypeList = [CameraControlState.Pan, CameraControlState.Scale, CameraControlState.Rotate];
//加载
btn.onclick = () =>
{
console.time();
for (let i = 0; i < 1; i++)
LoadBoard(view, data);
console.timeEnd();
}
btn2.onclick = () =>
{
// LoadBoard(view, []);
}
2018-10-29 14:49:40 +08:00
btn3.onclick = () =>
{
let box = GetBox(view.m_Scene);
let cen = box.getCenter(new Vector3());
let m = [];
for (let obj of view.m_Scene.children)
{
if (obj.userData && obj.userData instanceof Vector3)
{
let objCen = GetBox(obj).getCenter(new Vector3());
let v = objCen.clone().sub(cen);
let zv = obj.userData as Vector3;
if (zv instanceof Vector3)
{
let d = zv.dot(v);
// m.set(obj, zv.clone().multiplyScalar(d));
m.push([obj, zv.clone().multiplyScalar(d)]);
}
}
}
let count = 0;
let t = setInterval(() =>
{
for (let [o, v] of m)
{
o.position.add(
v.clone().multiplyScalar(1.5 / 120)
);
o.updateMatrix();
}
view.ZoomAll();
view.m_bNeedUpdate = true;
count++;
if (count === 60)
clearInterval(t);
}, 16)
}