zhgdyun/public/bim.html

97 lines
3.2 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>My first BIMFACE app</title>
</head>
<body>
<div id="domId" style="width: 100%; height: 95vh"></div>
2023-12-04 21:28:51 +08:00
<script
src="https://static.bimface.com/api/BimfaceSDKLoader/BimfaceSDKLoader@latest-release.js"
charset="utf-8"
></script>
<script>
2023-12-02 18:00:01 +08:00
let model3D;
2023-12-04 21:28:51 +08:00
let viewer3D;
let app;
let modelState;
let configValue = {
hideArr: [],
colorArr: [],
};
const bimCallback = (viewToken) => {
// let viewToken = '11b0d307c09f43bfa5fa3922bcce0342'
2023-12-04 21:28:51 +08:00
let loaderConfig = new BimfaceSDKLoaderConfig();
loaderConfig.viewToken = viewToken;
BimfaceSDKLoader.load(loaderConfig, successCallback, failureCallback);
function successCallback(viewMetaData) {
2023-12-04 21:28:51 +08:00
let domShow = document.getElementById("domId");
let webAppConfig = new Glodon.Bimface.Application.WebApplication3DConfig();
webAppConfig.domElement = domShow;
app = new Glodon.Bimface.Application.WebApplication3D(webAppConfig);
app.addView(viewToken);
viewer3D = app.getViewer();
// 监听添加view完成的事件
viewer3D.addEventListener(
Glodon.Bimface.Viewer.Viewer3DEvent.ViewAdded,
function() {
// 调用viewer3D对象的Method可以继续扩展功能
// 从viewer3D对象中获取模型对象model3D
model3D = viewer3D.getModel();
// 获取模型状态
modelState = viewer3D.getCurrentState();
// 渲染3D模型
viewer3D.render();
// 操作模型
renderConfigModel();
}
);
2023-12-02 18:00:01 +08:00
// 添加构件单击事件
2023-12-04 21:28:51 +08:00
viewer3D.addEventListener(
Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked,
(data) => {
console.log(data);
// 往父级传递
window.parent.postMessage({ msg: data.elementId });
}
);
}
function failureCallback(error) {
2023-12-04 21:28:51 +08:00
console.log(error);
}
2023-12-04 21:28:51 +08:00
};
function renderConfigModel() {
// 恢复模型状态
viewer3D.setState(modelState);
model3D.hideComponentsById(configValue.hideArr);
configValue.colorArr.map((item) => {
model3D.overrideComponentsColorById(
[item.name],
new Glodon.Web.Graphics.Color(item.color, 1)
);
});
viewer3D.render();
}
2023-12-04 21:28:51 +08:00
// 监听父组件的信息传递
window.addEventListener("message", async function(e) {
2022-08-19 18:24:37 +08:00
// const modelId = e.data.modelId
2023-12-04 21:28:51 +08:00
const data = e.data || {};
if (data.token) {
2022-08-19 18:24:37 +08:00
// removeModel(modelId)
2023-12-04 21:28:51 +08:00
document.getElementById("domId").innerHTML = "";
await bimCallback(data.token);
if (data.hideArr && data.colorArr) {
configValue.hideArr = data.hideArr;
configValue.colorArr = data.colorArr;
2023-12-02 18:00:01 +08:00
}
2023-12-04 21:28:51 +08:00
}
// console.log(e.data, '父级页面传来的数据')
// setTimeout(() => {
// window.parent.postMessage({ msg: 'hello' })
// }, 2000)
2023-12-04 21:28:51 +08:00
});
</script>
</body>
</html>