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