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>
|