[Frontend] 函式輸入更改為device_guid: 燈光關燈、燈光改變顏色和強度

This commit is contained in:
wanli 2023-01-09 16:32:28 +08:00
parent f4e837212d
commit 46f9ca1642
2 changed files with 79 additions and 59 deletions

View File

@ -48,6 +48,7 @@
setLightColor(); setLightColor();
} }
if (arr.indexOf(3) != -1) { if (arr.indexOf(3) != -1) {
getLightPoint();
getHotspotPoint(() => { getHotspotPoint(() => {
show3DModel(data.urn_3D); show3DModel(data.urn_3D);
}); });
@ -447,11 +448,49 @@
} }
async function getLightPoint(callback = 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 myDataList = [];
$.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);
myDataList.push(item);
})
console.log("2", myDataList)
setLightPoint(myDataList);
callback ? callback() : "";
}
}, null, "POST").send();
}
function setHotspotPoint(myDataList = []) { function setHotspotPoint(myDataList = []) {
console.log(myDataList) console.log(myDataList)
getHopspotPoint(myDataList); getHopspotPoint(myDataList);
} }
async function setLightPoint(myDataList = []) {
console.log(myDataList)
getLightData(myDataList);
}
var parentEle = ""; var parentEle = "";
onEvent("autodesk:click:sprite", "[name=forgeViewer]", function (e, obj) { onEvent("autodesk:click:sprite", "[name=forgeViewer]", function (e, obj) {
forgeUnFocusAll(); forgeUnFocusAll();

View File

@ -330,15 +330,6 @@ class elevator3D {
} }
function onDocumentLoadSuccess(doc, eleOption) { function onDocumentLoadSuccess(doc, eleOption) {
//取得燈光清單
if (lightDataList != undefined && lightDataList != null && lightDataList.length > 0) {
lightDataList.forEach((myData, index) => {
//if (myData.priority == 5) {
const position = JSON.parse(myData.device_node_coordinate_3d);
lightList.push({ dbid: myData.forge_dbid, spotLight: newLight(position) });
//}
});
}
var viewables = doc.getRoot().getDefaultGeometry(); var viewables = doc.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(doc, viewables).then(i => { viewer.loadDocumentNode(doc, viewables).then(i => {
@ -727,15 +718,26 @@ function hideColor(nodeId) {//顏色改成透明
} }
//------------------ 紀錄熱點座標 --------------- //紀錄燈具座標
function getHopspotPoint(data) { async function getLightData(data) {
//var av = Autodesk.Viewing; lightDataList = data;
myDataList = data; }
//viewer.addEventListener(av.GEOMETRY_LOADED_EVENT, addHotPoint, {
// once: true, async function testNewLight(dataList) {
//}); dataList.forEach((myData, index) => {
const position = JSON.parse(myData.device_node_coordinate_3d);
lightList.push({ dbid: myData.forge_dbid, device_guid: myData.device_guid, lightObject: new THREE.SpotLight(0xff0000, 200, 20, 0.6, 0.5, 10) });
lightList[index].lightObject.position.set(position.x, position.y, position.z);
lightList[index].lightObject.castShadow = true;
lightList[index].lightObject.visible = true;
lightList[index].lightObject.target.position.set(position.x, position.y, position.z - 20);
viewer.scene.add(lightList[index].lightObject.target);
viewer.scene.add(lightList[index].lightObject);
viewer.impl.sceneUpdated(true);
});
} }
//-------------------- end ----------------------
//------------------- 加入熱點 ----------------- //------------------- 加入熱點 -----------------
async function addHotPoint(data) { async function addHotPoint(data) {
@ -753,13 +755,10 @@ async function addHotPoint(data) {
const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon); const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon);
//取得燈光清單 if (lightDataList != undefined && lightDataList != null && lightDataList.length > 0) {
//if (lightDataList != undefined && lightDataList != null && lightDataList.length > 0) { testNewLight(lightDataList);
// lightDataList.forEach((myData, index) => { }
// const position = JSON.parse(myData.device_node_coordinate_3d);
// lightList.push({ dbid: myData.forge_dbid, spotLight: newLight(position) });
// });
//}
//熱點 點擊事件註冊 //熱點 點擊事件註冊
viewer.addEventListener(DataVizCore.MOUSE_CLICK, onSpriteClicked);// SPRITE_SELECTED viewer.addEventListener(DataVizCore.MOUSE_CLICK, onSpriteClicked);// SPRITE_SELECTED
@ -790,12 +789,16 @@ async function addHotPoint(data) {
if (event != undefined && event != null) { if (event != undefined && event != null) {
if (event.dbId >= dbIdStart) {//event.dbId > 0 && event.dbId < 19 if (event.dbId >= dbIdStart) {//event.dbId > 0 && event.dbId < 19
console.log(`Sprite clicked: ${event.dbId}`); console.log(`Sprite clicked: ${event.dbId}`);
openHotspotModal();
for (let i = dbIdStart; i <= myDataList.length + 10; i++) { for (let i = dbIdStart; i <= myDataList.length + 10; i++) {
changeColorForHotspot(i); changeColorForHotspot(i);
changeScaleForHotspot(i, false); changeScaleForHotspot(i, false);
} }
let myData = myDataList.filter(x => x._dbId == event.dbId)[0]; let myData = myDataList.filter(x => x._dbId == event.dbId)[0];
if (lightList != undefined && lightList != null && lightList.length > 0) {
//setLightOpenOrClose(false, myData.device_guid);//關燈測試
//setLightValues(myData.device_guid, 20, 0x00ff00);//更改燈光顏色和強度的測試
}
$(selector).trigger("autodesk:click:sprite", { event, myData }); $(selector).trigger("autodesk:click:sprite", { event, myData });
} else { } else {
$(selector).trigger("autodesk:clickOut:sprite", { event }); $(selector).trigger("autodesk:clickOut:sprite", { event });
@ -817,7 +820,6 @@ async function addHotPoint(data) {
// if (dbIds.length > 0) { // if (dbIds.length > 0) {
// // 處理已選取元件的邏輯 // // 處理已選取元件的邏輯
// $(selector).trigger("autodesk:click:sprite", event); // $(selector).trigger("autodesk:click:sprite", event);
// //openHotspotModal();
// console.log(`------ name: ${viewer.model.getInstanceTree().getNodeName(dbIds)} , dbId: ${dbIds}`);//, id: ${event.clickInfo.object.id}, position.x: ${event.clickInfo.point.x}, y: ${event.clickInfo.point.y}, z: ${event.clickInfo.point.z} // console.log(`------ name: ${viewer.model.getInstanceTree().getNodeName(dbIds)} , dbId: ${dbIds}`);//, id: ${event.clickInfo.object.id}, position.x: ${event.clickInfo.point.x}, y: ${event.clickInfo.point.y}, z: ${event.clickInfo.point.z}
// } else { // } else {
// // 處理沒有選取元件的邏輯 // // 處理沒有選取元件的邏輯
@ -864,22 +866,7 @@ async function changeScaleForHotspot(dbId, type = true) {
//------------------- end -------------- //------------------- end --------------
//----------------- 開關熱點小視窗 ----------------------
function openHotspotModal() {
//var modal = document.getElementById("hotspotModal");
//modal.style.display = "block";
//$("#pills-register-tab").removeClass("active");
//$("#pills-alarm-tab").removeClass("active");
//$("#pills-operation-tab").removeClass("active");
//$("#pills-login-tab").tab("show");
}
function closeHotspotModal() {
//var modal = document.getElementById("hotspotModal");
//modal.style.display = "none";
}
//------------------ end --------------------------------
//------------------ 熱圖 ------------------------------- //------------------ 熱圖 -------------------------------
async function loadHeatmaps(model) { async function loadHeatmaps(model) {
@ -1118,25 +1105,24 @@ async function newLight(lightPosition) {
} }
//調整燈光 強度、顏色 //調整燈光 強度、顏色
async function setLightValues(dbid, intensity, color) { async function setLightValues(deviceGuid, intensity, color) {
for (var i = 0; i < lightList.length; i++) { for (var i = 0; i < lightList.length; i++) {
if (lightList[i].dbid == dbid) { if (lightList[i].device_guid == deviceGuid) {
lightList[i].spotLight.intensity = intensity; lightList[i].lightObject.intensity = intensity;
var tempcolor = new THREE.Color().setHex(color); var tempcolor = new THREE.Color().setHex(color);
lightList[i].spotLight.color = tempcolor; lightList[i].lightObject.color = tempcolor;
}
}
viewer.impl.sceneUpdated(true); viewer.impl.sceneUpdated(true);
} }
}
}
//燈光開關 //燈光開關
function setLightOpenOrClose(value, light) { async function setLightOpenOrClose(value, deviceGuid) {
if (value) { for (var i = 0; i < lightList.length; i++) {
light.visible = true; if (lightList[i].device_guid == deviceGuid) {
lightList[i].lightObject.visible = value;
} }
else {
light.visible = false;
} }
viewer.impl.sceneUpdated(true); viewer.impl.sceneUpdated(true);
} }
@ -1173,11 +1159,6 @@ function getHopspotPoint(data) {
myDataList = data; myDataList = data;
} }
//紀錄燈具座標
async function getLightData(data) {
lightDataList = data;
}
//呼叫載入熱圖 //呼叫載入熱圖
async function toLoadHeatmap(roomArr) { async function toLoadHeatmap(roomArr) {
const model = viewer.model; const model = viewer.model;