[Frontend] 函式輸入更改為device_guid: 燈光關燈、燈光改變顏色和強度
This commit is contained in:
parent
f4e837212d
commit
46f9ca1642
@ -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();
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user