[Frontend][系統監控] 增加讀取 forge 3D Loading 遮罩 | 總攬及電梯系統隱藏全部物件(不包含設備)程序建置 | [圖資管理] 階層新增選擇程序調整 | [全域功能] forge3D 增加讀取失敗回調 Callback | hideAllObjects 隱藏全物件 不包含某些 dbid 程序調整
This commit is contained in:
		
							parent
							
								
									dd2a66075c
								
							
						
					
					
						commit
						58c95ae806
					
				@ -16,7 +16,7 @@
 | 
			
		||||
                    <div class="d-flex" id="graTree"></div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="col-10">
 | 
			
		||||
                    <div class="row my-2">
 | 
			
		||||
                    <div class="row my-2 mx-0">
 | 
			
		||||
                        <a href="javascript:;" id="creGraMan" class="btn btn-success">
 | 
			
		||||
                            +新增
 | 
			
		||||
                        </a>
 | 
			
		||||
@ -65,7 +65,7 @@
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div class="col-md-12 mt-2">
 | 
			
		||||
                            <label>原設計</label>
 | 
			
		||||
                            <label>檔案</label>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div class="col-md-12">
 | 
			
		||||
 | 
			
		||||
@ -278,8 +278,8 @@
 | 
			
		||||
        let dowLoaEle = YT.Alert.Tip("準備下載中...", "show", true);
 | 
			
		||||
        let rowData = graTable.row($(this).closest("tr")).data();
 | 
			
		||||
        let apiUrl = baseApiUrl + `/File/Download?type=graph&savename=${rowData.oriSavName}&oriname=${rowData.oriOrgName}`;
 | 
			
		||||
        let extname = rowData.oriOrgName?.split(".").slice(-1) || "dwg";
 | 
			
		||||
        download(token, apiUrl, rowData.name + "_原設計圖" + "." + extname, function () {
 | 
			
		||||
        
 | 
			
		||||
        download(token, apiUrl, rowData.oriOrgName, function () {
 | 
			
		||||
            $(dowLoaEle.ele).YTAlert().hide();
 | 
			
		||||
        });
 | 
			
		||||
    })
 | 
			
		||||
@ -390,8 +390,8 @@
 | 
			
		||||
                        Create: {
 | 
			
		||||
                            label: "新增",
 | 
			
		||||
                            _disabled: function (data) {
 | 
			
		||||
                                if (depth >= 3) {
 | 
			
		||||
                                    return true;   //第五層後無法新增
 | 
			
		||||
                                if (depth >= 4) {
 | 
			
		||||
                                    return true;   //第三層後無法新增
 | 
			
		||||
                                }
 | 
			
		||||
                                return false;
 | 
			
		||||
                            },
 | 
			
		||||
@ -405,6 +405,12 @@
 | 
			
		||||
                        },
 | 
			
		||||
                        Rename: {
 | 
			
		||||
                            label: "重新命名",
 | 
			
		||||
                            _disabled: function (data) {
 | 
			
		||||
                                if ($node.id == "0") {
 | 
			
		||||
                                    return true;   //最上層無法編輯
 | 
			
		||||
                                }
 | 
			
		||||
                                return false;
 | 
			
		||||
                            },
 | 
			
		||||
                            action: function (obj) {
 | 
			
		||||
                                tree.edit($node);
 | 
			
		||||
                                /*                                tree.sort($node, true)*/
 | 
			
		||||
@ -412,6 +418,12 @@
 | 
			
		||||
                        },
 | 
			
		||||
                        Remove: {
 | 
			
		||||
                            label: "移除",
 | 
			
		||||
                            _disabled: function (data) {
 | 
			
		||||
                                if ($node.id == "0") {
 | 
			
		||||
                                    return true;   //最上層無法移除
 | 
			
		||||
                                }
 | 
			
		||||
                                return false;
 | 
			
		||||
                            },
 | 
			
		||||
                            action: function (obj) {
 | 
			
		||||
                                tree.delete_node($node);
 | 
			
		||||
                            }
 | 
			
		||||
@ -426,18 +438,27 @@
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function treeEvent() {
 | 
			
		||||
        let selectedNode = [];
 | 
			
		||||
        $('#graTree').on("loaded.jstree", function (e, data) {
 | 
			
		||||
            let topNode = $('#graTree').jstree(true).get_node("#");
 | 
			
		||||
            let topNode = $('#graTree').jstree(true).get_node("0");
 | 
			
		||||
            $('#graTree').jstree(true).select_node(topNode.children[0]);
 | 
			
		||||
            $("#graTree").jstree("open_node", 0);
 | 
			
		||||
        })
 | 
			
		||||
        $('#graTree').on("select_node.jstree", function (e, data) {
 | 
			
		||||
            dtAjaxResetSendData(graTable, { layer_id: parseInt(data.node.id) });
 | 
			
		||||
            graTable.ajax.reload();
 | 
			
		||||
 | 
			
		||||
            curLayerId = parseInt(data.node.id);
 | 
			
		||||
            $("#graLayer").text(levelNameByNodeId(data.node));
 | 
			
		||||
            $("#curLevText").text(levelNameByNodeId(data.node));
 | 
			
		||||
            if (data.node.id != "0") {
 | 
			
		||||
                dtAjaxResetSendData(graTable, { layer_id: parseInt(data.node.id) });
 | 
			
		||||
                graTable.ajax.reload();
 | 
			
		||||
                selectedNode.unshift(data.node.id);
 | 
			
		||||
                if (selectedNode.length > 3) {
 | 
			
		||||
                    selectedNode.splice(selectedNode.length - 1, 1);
 | 
			
		||||
                }
 | 
			
		||||
                curLayerId = parseInt(data.node.id);
 | 
			
		||||
                $("#graLayer").text(levelNameByNodeId(data.node));
 | 
			
		||||
                $("#curLevText").text(levelNameByNodeId(data.node));
 | 
			
		||||
            } else {
 | 
			
		||||
                $("#graTree").jstree(true).deselect_node(data.node);
 | 
			
		||||
                $("#graTree").jstree(true).select_node(selectedNode[0]);
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
        $("#graTree").on('create_node.jstree', function (e, data) {
 | 
			
		||||
            let main = {};
 | 
			
		||||
@ -537,14 +558,14 @@
 | 
			
		||||
        let names = [];
 | 
			
		||||
        let curNode = $('#graTree').jstree(true).get_node(node);
 | 
			
		||||
        let parents = curNode.parents.reverse();
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        for (let i = parents.length - 1; i >= 0; i--) {
 | 
			
		||||
            if (parents[i] != "#") { 
 | 
			
		||||
            if (parents[i] != "#") {
 | 
			
		||||
                let node = $('#graTree').jstree(true).get_node(parents[i]);
 | 
			
		||||
                names.push(node.text);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        names.push(curNode.text);
 | 
			
		||||
        return names.join("/");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2371,8 +2371,9 @@
 | 
			
		||||
 | 
			
		||||
    //載入3D模型
 | 
			
		||||
    function load3DModel() {
 | 
			
		||||
 | 
			
		||||
        launchViewer(pageAct.urn, (viewer) => {
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
            let elevOption = {
 | 
			
		||||
                selector: "#forgeViewer",
 | 
			
		||||
                viewer: viewer,
 | 
			
		||||
@ -2382,12 +2383,16 @@
 | 
			
		||||
            // 電梯移動訂閱程序載入
 | 
			
		||||
            let forge3DElev = new Forge3DElevFull(elevOption);
 | 
			
		||||
            forge3DElev.bajaEndCallback = function () {
 | 
			
		||||
                debugger
 | 
			
		||||
                hideAllObjects(this.getNodeIds());
 | 
			
		||||
                endPageLoading();
 | 
			
		||||
            }
 | 
			
		||||
            forge3DElev.bajaChaCallback = function (data) {
 | 
			
		||||
                subDeviceSetStatus(data);
 | 
			
		||||
            }
 | 
			
		||||
            forge3DElev.init();
 | 
			
		||||
             
 | 
			
		||||
            
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -45,9 +45,7 @@
 | 
			
		||||
                setLightColor();
 | 
			
		||||
            }
 | 
			
		||||
            if (arr.indexOf(3) != -1) {
 | 
			
		||||
                
 | 
			
		||||
                getHotspotPoint(() => {
 | 
			
		||||
                    getLightDevice();
 | 
			
		||||
                    show3DModel(data.urn_3D);
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
@ -264,7 +262,11 @@
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function show3DModel(urn) {
 | 
			
		||||
        $(loadEle).Loading("start");
 | 
			
		||||
        launchViewerForHotspot(urn, (viewer, nodeIds) => {
 | 
			
		||||
            let devDbIds = allDevList.map(x => x.forge_dbid);
 | 
			
		||||
            hideAllObjects(devDbIds);
 | 
			
		||||
            $(loadEle).Loading("close");
 | 
			
		||||
            let devices = allDevList.map(x => {
 | 
			
		||||
                return {
 | 
			
		||||
                    roomDbId: !isNaN(parseInt(x.room_dbid)) ? parseInt(x.room_dbid) : -1,
 | 
			
		||||
@ -300,6 +302,8 @@
 | 
			
		||||
                endPageLoading();
 | 
			
		||||
            }
 | 
			
		||||
            forge3DElev.init();
 | 
			
		||||
        }, () => {
 | 
			
		||||
            $(loadEle).Loading("close");
 | 
			
		||||
        }, "[name=forgeViewer]");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -337,50 +341,11 @@
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async function getLightDevice() {//callback = null
 | 
			
		||||
        getLightData(null);
 | 
			
		||||
        let url = baseApiUrl + "/api/GetDevNodeForCor";
 | 
			
		||||
        let sendData = {
 | 
			
		||||
            "device_area_tag": pageAct.AreaTag,
 | 
			
		||||
            "device_building_tag": pageAct.buiTag,
 | 
			
		||||
            "device_system_tag": pageAct.sysMainTag,
 | 
			
		||||
            "device_name_tag": pageAct.sysSubTag,
 | 
			
		||||
        };
 | 
			
		||||
        objSendData.Data = sendData;
 | 
			
		||||
        ytAjax = new YourTeam.Ajax(url, objSendData, function (res) {
 | 
			
		||||
            if (!res || res.code != "0000" || !res.data) {
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
 | 
			
		||||
                let myLightList = [];
 | 
			
		||||
                $.each(res.data, (idx, data) => {
 | 
			
		||||
                    let item = {};
 | 
			
		||||
                    item.position = {};
 | 
			
		||||
                    if (data.device_node_coordinate_3d != null && isJSON(data.device_node_coordinate_3d)) {
 | 
			
		||||
                        item.position = JSON.parse(data.device_node_coordinate_3d);
 | 
			
		||||
                    }
 | 
			
		||||
                    $.extend(item, data);
 | 
			
		||||
                    myLightList.push(item);
 | 
			
		||||
                })
 | 
			
		||||
 | 
			
		||||
                console.log("2", myLightList);
 | 
			
		||||
                setLightList(myLightList);
 | 
			
		||||
                //callback ? callback() : "";
 | 
			
		||||
            }
 | 
			
		||||
        }, null, "POST").send();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function setHotspotPoint(myDataList = []) {
 | 
			
		||||
        console.log(myDataList)
 | 
			
		||||
        getHopspotPoint(myDataList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async function setLightList(myDataList = []) {
 | 
			
		||||
        console.log(myDataList);
 | 
			
		||||
        getLightData(myDataList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var parentEle = "";
 | 
			
		||||
    onEvent("autodesk:click:sprite", "[name=forgeViewer]", function (e, obj) {
 | 
			
		||||
        forgeUnFocusAll();
 | 
			
		||||
 | 
			
		||||
@ -1034,10 +1034,11 @@
 | 
			
		||||
 | 
			
		||||
    // show 3D 模型
 | 
			
		||||
    function show3DModel(urn) {
 | 
			
		||||
        $(loadEle).Loading("start");
 | 
			
		||||
        launchViewerForHotspot(urn, (viewer, nodeIds) => {
 | 
			
		||||
            let nextFloor = getNextFloor(pageAct.floGuid);
 | 
			
		||||
            let curFloTag = pageAct.floTag;
 | 
			
		||||
            debugger
 | 
			
		||||
            
 | 
			
		||||
            if (!nextFloor) {
 | 
			
		||||
                toast_warning("超出樓層範圍");
 | 
			
		||||
                return;
 | 
			
		||||
@ -1050,7 +1051,9 @@
 | 
			
		||||
                nextFloor = nextFloor.split("U")[1];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            getLevelsData(curFloTag, nextFloor);
 | 
			
		||||
            getLevelsData(curFloTag, nextFloor, function () {
 | 
			
		||||
                $(loadEle).Loading("close");
 | 
			
		||||
            });
 | 
			
		||||
            setHeatMap();
 | 
			
		||||
 | 
			
		||||
            let elevOption = {
 | 
			
		||||
@ -1066,6 +1069,8 @@
 | 
			
		||||
                endPageLoading();
 | 
			
		||||
            }
 | 
			
		||||
            forge3DElev.init();
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -140,7 +140,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
			
		||||
                    <!--we need this logo when user switches to nav-function-top-->
 | 
			
		||||
                    <div class="page-logo">
 | 
			
		||||
                        <a href="javascript:;" name="topFunBtn" data-page="dashboard" class="page-logo-link press-scale-down d-flex align-items-center position-relative">
 | 
			
		||||
                            <img name="webLogo" src="img/logo.png" alt="SmartAdmin WebApp" aria-roledescription="logo">
 | 
			
		||||
                            <img src="img/logo.png" alt="SmartAdmin WebApp" aria-roledescription="logo">
 | 
			
		||||
 | 
			
		||||
                            <!--<span class="page-logo-text mr-1">SmartAdmin WebApp</span>-->
 | 
			
		||||
                            <!--<span class="position-absolute text-white opacity-50 small pos-top pos-right mr-2 mt-n2"></span>
 | 
			
		||||
@ -824,7 +824,6 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
			
		||||
            function isValidLogin() {
 | 
			
		||||
                $("#app").load("_dashboard.html", loadCallback);
 | 
			
		||||
 | 
			
		||||
                getLogo();
 | 
			
		||||
                getUserInfo();
 | 
			
		||||
                iniFroList();
 | 
			
		||||
                showMainSys();
 | 
			
		||||
@ -1457,7 +1456,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            let li = creEle("li");
 | 
			
		||||
                            let a = creA(subSysObj.full_name, { "href": "javascript:;" }, [], `subSysBtn${subSysObj.sub_system_tag}`, { page: page, tabname: page }, "topFunBtn");
 | 
			
		||||
                            let a = creA(subSysObj.full_name, { "href": "javascript:;" }, [], `subSysBtn${subSysObj.sub_system_tag}`, { page: page, tabname: "systemMonitor" }, "topFunBtn");
 | 
			
		||||
                            li.append(a);
 | 
			
		||||
                            a.data("subSysObj", subSysObj)
 | 
			
		||||
                            subSysObj.main_system_tag = mainSysObj.main_system_tag;
 | 
			
		||||
@ -1468,17 +1467,6 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
			
		||||
            }, null, "POST").send();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		function getLogo() {
 | 
			
		||||
			$.ajax({
 | 
			
		||||
				method: "post",
 | 
			
		||||
				url: 'api/GetLogo',
 | 
			
		||||
				async: false,
 | 
			
		||||
				success: function (rel) {
 | 
			
		||||
					$('[name=webLogo]').attr('src', 'img/' + rel);
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
        function getUserInfo() {
 | 
			
		||||
            let url = baseApiUrl + varApiUrl + "getUserFull";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ var levels;//剖面用
 | 
			
		||||
var lowerIdx;//剖面的下方樓層
 | 
			
		||||
var upperIdx;//剖面的上方樓層
 | 
			
		||||
 | 
			
		||||
function launchViewer(urn, callback, _selector = "#forgeViewer") {
 | 
			
		||||
function launchViewer(urn, callback,failCallback, _selector = "#forgeViewer") {
 | 
			
		||||
    selector = _selector;
 | 
			
		||||
    var options = {
 | 
			
		||||
        env: 'AutodeskProduction',
 | 
			
		||||
@ -29,7 +29,9 @@ function launchViewer(urn, callback, _selector = "#forgeViewer") {
 | 
			
		||||
        $(selector).on("autodesk:loaded", function (e, nodeIds) {
 | 
			
		||||
            callback ? callback(viewer, nodeIds) : "";
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        $(selector).on("autodesk:loaded:fail", function (e) {
 | 
			
		||||
            failCallback ? failCallback(viewer) : "";
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        //test 
 | 
			
		||||
        // for (let i = 0; i < urn.length; i++) {
 | 
			
		||||
@ -58,7 +60,7 @@ function launchViewer(urn, callback, _selector = "#forgeViewer") {
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function launchViewerForHotspot(urn, callback, _selector = "#forgeViewer") {
 | 
			
		||||
function launchViewerForHotspot(urn, callback, failCallback, _selector = "#forgeViewer") {
 | 
			
		||||
    selector = _selector;
 | 
			
		||||
    var av = Autodesk.Viewing;
 | 
			
		||||
    var options = {
 | 
			
		||||
@ -80,10 +82,14 @@ function launchViewerForHotspot(urn, callback, _selector = "#forgeViewer") {
 | 
			
		||||
        $(selector).on("autodesk:loaded", function (e, nodeIds) {
 | 
			
		||||
            callback ? callback(viewer, nodeIds) : "";
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        $(selector).on("autodesk:loaded:fail", function (e) {
 | 
			
		||||
            failCallback ? failCallback(viewer) : "";
 | 
			
		||||
        })
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function launchViewerNoTools(urn, callback, _selector = "#forgeViewer") {
 | 
			
		||||
function launchViewerNoTools(urn, callback, failCallback, _selector = "#forgeViewer") {
 | 
			
		||||
    selector = _selector;
 | 
			
		||||
    var options = {
 | 
			
		||||
        env: 'AutodeskProduction',
 | 
			
		||||
@ -101,6 +107,10 @@ function launchViewerNoTools(urn, callback, _selector = "#forgeViewer") {
 | 
			
		||||
        $(selector).on("autodesk:loaded", function (e, nodeIds) {
 | 
			
		||||
            callback ? callback(viewer, nodeIds) : "";
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        $(selector).on("autodesk:loaded:fail", function (e) {
 | 
			
		||||
            failCallback ? failCallback(viewer) : "";
 | 
			
		||||
        })
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -495,7 +505,7 @@ function getAllDbIds(viewer) {
 | 
			
		||||
 * Autodesk.Viewing.Document.load() failuire callback.
 | 
			
		||||
 */
 | 
			
		||||
function onDocumentLoadFailure(viewerErrorCode) {
 | 
			
		||||
    $(selector).trigger("autodesk:loaded");
 | 
			
		||||
    $(selector).trigger("autodesk:loaded:fail");
 | 
			
		||||
    console.error("onDocumentLoadFailure() - errorCode:" + viewerErrorCode);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1001,7 +1011,7 @@ async function getRemoteLevels() {
 | 
			
		||||
    return levels2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function getLevelsData(lowerFloor, upperFloor) {
 | 
			
		||||
async function getLevelsData(lowerFloor, upperFloor, callback = null) {
 | 
			
		||||
    // 樓層正規化 取得樓層 
 | 
			
		||||
    const floorRegex = /[\d|\w]+F/gmi;
 | 
			
		||||
    const data = await this.getRemoteLevels();
 | 
			
		||||
@ -1015,7 +1025,7 @@ async function getLevelsData(lowerFloor, upperFloor) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    this.levels = data;
 | 
			
		||||
    profile();
 | 
			
		||||
    profile(callback);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getCutPlaneParam(idx, n) {
 | 
			
		||||
@ -1036,12 +1046,13 @@ function getCutPlaneParam(idx, n) {
 | 
			
		||||
    return new THREE.Vector4(0, 0, n, d);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function profile() {
 | 
			
		||||
function profile(callback = null) {
 | 
			
		||||
    //const upperIdx = 6;
 | 
			
		||||
    const upperCutPlaneParam = this.getCutPlaneParam(upperIdx, 1);
 | 
			
		||||
    //const lowerIdx = 7;
 | 
			
		||||
    const lowerCutPlaneParam = this.getCutPlaneParam(lowerIdx, -1);
 | 
			
		||||
    this.viewer.setCutPlanes([upperCutPlaneParam, lowerCutPlaneParam]);
 | 
			
		||||
    callback ? callback() : "";
 | 
			
		||||
}
 | 
			
		||||
//----------------- end -----------------------------------------------
 | 
			
		||||
//新增燈光
 | 
			
		||||
@ -1090,12 +1101,16 @@ function changeColorTransparency(nodeId, color) {//變綠色
 | 
			
		||||
    viewer.setThemingColor(nodeId, color);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//隱藏全物件
 | 
			
		||||
function hideAllObjects() {
 | 
			
		||||
//隱藏全物件 (篩選 dbids 除外)
 | 
			
		||||
function hideAllObjects(filDbids = []) {
 | 
			
		||||
    //viewer.hide(4);//只針對一個物件(dbid為4)做隱藏
 | 
			
		||||
    for (var i = 0; i < allDbIdsStr.length; i++) {
 | 
			
		||||
        viewer.hide(parseInt(allDbIdsStr[i]));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (var i = 0; i < filDbids.length; i++) {
 | 
			
		||||
        viewer.show(parseInt(filDbids[i]), viewer.model);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
//顯示全物件
 | 
			
		||||
function showAllObjects() {
 | 
			
		||||
 | 
			
		||||
@ -604,4 +604,8 @@ class Forge3DElevFull {
 | 
			
		||||
            }
 | 
			
		||||
        }, null, "POST").send();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getNodeIds = function () {
 | 
			
		||||
        return this.elev3DObj.map(x => x.nodeId);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user