lixiaojun
2024-09-24 efa99a6d5d1f6868969a02e772f77cd17de3ea83
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>3D模型交互</title>
    <style media="screen">
        * {
            margin: 0;
            padding: 0;
        }
 
        html, body {
            height: 100%
        }
 
        .main {
            display: flex;
            flex-direction: column;
            overflow: hidden;
            height: 100%;
            width: 100%;
        }
 
        .model {
            flex: 1;
        }
    </style>
    <link href="css/Panel.css" rel="stylesheet" />
    <!-- 引用BIMFACE的JavaScript显示组件库 -->
    <script src="https://static.bimface.com/api/BimfaceSDKLoader/BimfaceSDKLoader@latest-release.js" charset="utf-8"></script>
    <script type="text/javascript" src="https://spump.oss-cn-shanghai.aliyuncs.com/assets/jq/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div class='main'>
        <div class='model' id="domId"></div>
    </div>
 
    <script type="text/javascript">
 
        //视图对象
        var _viewer = null;
        var _modeler = null;
        let _callBackObj;//交互对象
 
 
        //网页加载完成
        $(document).ready(function () {
            _callBackObj = window.chrome.webview.hostObjects.callBackObj;
            _callBackObj.LoadCompleted();
        })
 
        //加载Bim模型(WinFrm调用)
        function loadView(viewtoken) {
            var options = new BimfaceSDKLoaderConfig();
            options.viewToken = viewtoken;
            BimfaceSDKLoader.load(options, successCallback, failureCallback);
        }
 
        //Bim模型加载成功后触发
        function successCallback(viewMetaData) {
            // 获取DOM元素
            var dom4Show = document.getElementById('domId');
            //判断是否为3d模型
            if (viewMetaData.viewType == "3DView" || viewMetaData.viewType == "rfaView") {
                var webAppConfig = new Glodon.Bimface.Application.WebApplication3DConfig();
                webAppConfig.domElement = dom4Show;
                // 创建WebApplication
                var app = new Glodon.Bimface.Application.WebApplication3D(webAppConfig);
                // 添加待显示的模型
                app.addView(viewMetaData.viewToken);
                // 从WebApplication获取m_viewer3D对象
                _viewer = app.getViewer();
                // 监听添加view完成的事件
                _viewer.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.ViewAdded, function () {
                    // 调用viewer3D对象的Method,可以继续扩展功能
                    //自适应屏幕大小
                    window.onresize = function () {
                        _viewer.resize(document.documentElement.clientWidth, document.documentElement.clientHeight - 40)
                    }
                    // 渲染3D模型
                    _modeler = _viewer.getModel();
                    _viewer.render();
                    _callBackObj.LoadViewCompleted();
                });
                // 监听添加view点击构件的监听事件
                _viewer.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked, function (objectdata) {
                    //获取点击构件的相关属性
                    if (objectdata.objectId !== undefined) {
                        _callBackObj.ClickIn(JSON.stringify(objectdata));
                    }
                    else {
                        _callBackObj.ClickOut(JSON.stringify(objectdata));
                    }
                });
            }
            else {
                _callBackObj.LoadViewFailed("未定义ViewType:" + viewMetaData.viewType);
            }
        }
 
        //BIM模型加载失败后触发
        function failureCallback(error) {
            _callBackObj.LoadViewFailed(JSON.stringify(error));
        }
 
 
 
 
 
    </script>
</body>
</html>
<script src="../js/ComponentsTranslucent.js"></script>
<script src="../js/ComponentsVisible.js"></script>
<script src="../js/ComponentsSelected.js"></script>
<script src="../js/Zoom.js"></script>
<script src="../js/ComponentsBlink.js"></script>
<script src="../js/ComponentsColor.js"></script>
<script src="../js/CustomLabels.js"></script>
 
<script src="js/Background.js"></script>
<script src="js/CameraStatus.js"></script>
<script src="js/ContextMenu.js"></script>
<script src="js/GetComponents.js"></script>
<script src="js/Layer.js"></script>
<script src="js/Panel.js"></script>
<script src="js/WalkThrough.js"></script>