186 lines
6.0 KiB
HTML
186 lines
6.0 KiB
HTML
<!--
|
||
* @Author: Billy Chen
|
||
* @Date: 2021-02-26 11:50:20
|
||
* @LastEditors: Billy
|
||
* @LastEditTime: 2021-07-01 11:45:18
|
||
* @Description: iframe 封装 viewer
|
||
-->
|
||
|
||
<!DOCTYPE html>
|
||
<html>
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||
<meta name="viewport" content="width=device-width,user-scalable=no,minimum-scale=1.0,maximum-scale=1.0">
|
||
<link rel="icon" href="../favicon.ico">
|
||
<title>I3V_EIM_3D</title>
|
||
|
||
<link href="../eim-0225/EIMMODEL.min.css" rel="stylesheet">
|
||
<link href="../eim-0225/bar-custom.css" rel="stylesheet">
|
||
|
||
<style>
|
||
html {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
body {
|
||
width: 100%;
|
||
height: 100%;
|
||
margin: 0px;
|
||
overflow: hidden;
|
||
}
|
||
|
||
#viewer {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
#link-contact {
|
||
z-index: 1000;
|
||
position: absolute;
|
||
right: 10px;
|
||
bottom: 10px;
|
||
}
|
||
</style>
|
||
|
||
<!-- <script src="../eim-0225/EIMMODEL.min.js" charset="utf-8"></script> -->
|
||
<script src="../eim-0225/EIMMODEL.js" charset="utf-8"></script>
|
||
</head>
|
||
|
||
<body>
|
||
<div id="viewer">
|
||
<a id="link-contact" target="_blank" href="../#/login?routeName=Model">联系我们</a>
|
||
</div>
|
||
|
||
<script>
|
||
var toolOption = {
|
||
home: true, // 是否显示初始化按钮
|
||
fit: true, // 是否显示自适应按钮
|
||
restore: true, // 是否显示还原按钮
|
||
roam: true, // 是否显示漫游按钮
|
||
multiple: true, // 是否显示框选按钮
|
||
hide: true, // 是否显示隐藏按钮
|
||
isolation: true, // 是否显示隔离按钮
|
||
sectioning: true, // 是否显示剖切按钮
|
||
color: true, // 是否显示设置颜色按钮
|
||
setting: true, // 是否显示设置按钮
|
||
attribute: false, // 是否显示属性按钮
|
||
measurement: false, // 是否显示测距按钮
|
||
mark: false, // 标签
|
||
snapshot: false, // 快照
|
||
postil: false // 批注
|
||
};
|
||
</script>
|
||
|
||
<script>
|
||
var args = {} // 获取url以get方式传入的参数
|
||
// 截取?后面的片段包含的键值
|
||
window.location.search.substr(1).split('&').forEach(item => {
|
||
var [k, v] = item.split('=');
|
||
args[k] = v;
|
||
});
|
||
|
||
if (!args.projectKey) console.error('url 参数必须包括 projectKey');
|
||
if (!args.modelKeys) console.error('url 参数必须包括 modelKeys');
|
||
|
||
var MODEL_KEYS = args.modelKeys ? args.modelKeys.split(',') : [];
|
||
var PROJECT_KEY = args.projectKey || ""; // modelDb
|
||
var HOST = args.host || "http://139.9.215.236:82";
|
||
|
||
// 是否显示工具栏(url传参true为字符串),默认值为true
|
||
var HAS_TOOLBAR = args.hasToolBar === "false" ? false : true;
|
||
// 控制是否显示viewer右上角的6面体(url传参true为字符串),默认值为true
|
||
var HAS_CONTROLLER = args.hasController === "false" ? false : true;
|
||
// viewer的背景颜色
|
||
var BG_COLOR = args.bgColor;
|
||
|
||
// 1、用于更新本页面(timeStrmp一旦改变,则意味iframe的src改变,src改变会使iframe会自动刷新)
|
||
// 2、用于唯一标识本页面
|
||
var TIMESTAMP = args.timeStamp;
|
||
|
||
var IS_AUTO_RESIZE = args.isAutoResize ? args.isAutoResize : false;
|
||
|
||
var SHARE = args.share ? args.share : false;
|
||
</script>
|
||
|
||
<script>
|
||
if (!SHARE) {
|
||
window.document.getElementById('link-contact').style.display = 'none';
|
||
}
|
||
</script>
|
||
|
||
<script>
|
||
var option = {
|
||
host: HOST,
|
||
viewport: "viewer"
|
||
}; // viewport指上面div的id
|
||
|
||
EIMMODEL.GlobalData.EnableViewController = HAS_CONTROLLER; // 显示viewer右上角的6面体
|
||
var viewer3D = new EIMMODEL.Viewer(option);
|
||
|
||
// 添加viewer的背景颜色
|
||
if (BG_COLOR) viewer3D.setSceneBackGroundColor(BG_COLOR);
|
||
|
||
// 添加viewer的工具条
|
||
if (HAS_TOOLBAR) {
|
||
var bosToolBar = new EIMMODEL.UI.ToolBar(viewer3D);
|
||
// bosToolBar.createTool(toolOption);
|
||
bosToolBar.createTool();
|
||
}
|
||
</script>
|
||
|
||
<script>
|
||
var modelKeysLoaded = [];
|
||
// viewer3D.viewerImpl.modelManager.addEventListener(
|
||
viewer3D.registerModelEventListener(
|
||
EIMMODEL.EVENTS.ON_LOAD_COMPLETE,
|
||
function (event) {
|
||
if (MODEL_KEYS.includes(event.modelKey)) {
|
||
modelKeysLoaded.push(event.modelKey);
|
||
}
|
||
if (modelKeysLoaded.length >= MODEL_KEYS.length) {
|
||
// 此时证明模型全加载完了
|
||
var bEvent = new CustomEvent("allmodelsloaded", {
|
||
detail: {
|
||
timeStamp: Number(TIMESTAMP),
|
||
modelKeys: MODEL_KEYS
|
||
},
|
||
bubbles: true, // 是否冒泡
|
||
cancelable: true // 是否可以取消事件的默认行为
|
||
});
|
||
|
||
window.parent.dispatchEvent(bEvent);
|
||
}
|
||
}
|
||
);
|
||
</script>
|
||
|
||
<script>
|
||
// 往viewer添加模型
|
||
if (PROJECT_KEY) {
|
||
if (MODEL_KEYS.length) {
|
||
// 加载所有模型
|
||
MODEL_KEYS.forEach(modelKey => {
|
||
viewer3D.addView(modelKey, PROJECT_KEY);
|
||
});
|
||
} else {
|
||
console.error('必须至少提供一个 modelKey');
|
||
}
|
||
} else {
|
||
console.error('projectKey 不能为空');
|
||
}
|
||
</script>
|
||
|
||
<script>
|
||
if (IS_AUTO_RESIZE) {
|
||
window.addEventListener("resize", function () {
|
||
// viewer3D.autoResize();
|
||
viewer3D.getViewerImpl().resize(window.innerWidth, window.innerHeight);
|
||
});
|
||
}
|
||
</script>
|
||
</body>
|
||
|
||
</html> |