forgemodel.js 合併
This commit is contained in:
commit
05ecdb90ee
@ -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);
|
||||||
});
|
});
|
||||||
@ -462,11 +463,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();
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
<canvas id="iot-heatmap-legend" width="300" height="50"></canvas>
|
<canvas id="iot-heatmap-legend" width="300" height="50"></canvas>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="btn btn-info" onclick="showHeat()">顯示熱圖圖示</button>
|
<button type="button" class="btn btn-info" onclick="showHeat()">顯示熱圖圖示</button>
|
||||||
|
<button type="button" class="btn btn-default" onclick="showList()">顯示設備清單</button>
|
||||||
<!--<input id="lightBar" type="range" min="0" max="100" step="5" onchange="changeLightPower()">亮度-->
|
<!--<input id="lightBar" type="range" min="0" max="100" step="5" onchange="changeLightPower()">亮度-->
|
||||||
<!-- <input type="range">Main Axis</input> -->
|
<!-- <input type="range">Main Axis</input> -->
|
||||||
</div>
|
</div>
|
||||||
@ -244,7 +245,7 @@
|
|||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6LW1pdHN1YmlzaGkvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDJUU5JTlCJTk5JUU5JUExJUFGXzEyMjgubndk');
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6LW1pdHN1YmlzaGkvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDJUU5JTlCJTk5JUU5JUExJUFGXzEyMjgubndk');
|
||||||
|
|
||||||
//12.30 整棟樓 ARC + MEP
|
//12.30 整棟樓 ARC + MEP
|
||||||
launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDK01FUCVFNiU4QiU4NiVFNyVCMyVCQiVFNyVCNSVCMV8xMl8zMC5ud2Q');
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDK01FUCVFNiU4QiU4NiVFNyVCMyVCQiVFNyVCNSVCMV8xMl8zMC5ud2Q');
|
||||||
|
|
||||||
//12.30 整棟樓 ARC + MEP 半透明
|
//12.30 整棟樓 ARC + MEP 半透明
|
||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDK01FUCVFNiU4QiU4NiVFNyVCMyVCQiVFNyVCNSVCMV8lRTUlOEQlOEElRTklODAlOEYlRTYlOTglOEUlRTUlQkIlQkElRTclQUYlODlfMTJfMzAubndk');
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDK01FUCVFNiU4QiU4NiVFNyVCMyVCQiVFNyVCNSVCMV8lRTUlOEQlOEElRTklODAlOEYlRTYlOTglOEUlRTUlQkIlQkElRTclQUYlODlfMTJfMzAubndk');
|
||||||
@ -254,8 +255,11 @@
|
|||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwTUVQJUUzJTgwJTkxXzIwMjJfMTJfMTMubndj');//new MEP
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwTUVQJUUzJTgwJTkxXzIwMjJfMTJfMTMubndj');//new MEP
|
||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwQVJDJUUzJTgwJTkxJUU1JTg1JUE4JUU2JUEzJTlGXzIwMjJfMTJfMTMubndj');//全棟 ARC
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwQVJDJUUzJTgwJTkxJUU1JTg1JUE4JUU2JUEzJTlGXzIwMjJfMTJfMTMubndj');//全棟 ARC
|
||||||
|
|
||||||
|
//01.06 加上room_id(樓層有燈具)
|
||||||
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDJUU5JTlCJTk5JUU2JUE4JUExJUU1JUJDJThGK01FUCVFNiU4QiU4NiVFNyVCMyVCQiVFNyVCNSVCMV8yMDIzXzAxXzA2Lm53ZA');
|
||||||
|
|
||||||
|
//01.06 樓層刪除燈具
|
||||||
|
launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6LW1vZGVsX3Rlc3QxMTIxLyVFMyU4MCU5MCVFNSU4RiVCMCVFNSU4QyU5NyVFNCVCOCVBRCVFOCU4RiVCMSVFNSVBNCVBNyVFNiVBOCU5MyVFMyU4MCU5MUFSQyVFOSU5QiU5OSVFNiVBOCVBMSVFNSVCQyU4RitNRVAlRTYlOEIlODYlRTclQjMlQkIlRTclQjUlQjFfJUU1JTg4JUFBJUU3JTg3JTg4JUU1JTg1JUI3XzIwMjNfMDFfMDYubndk');
|
||||||
|
|
||||||
});
|
});
|
||||||
//function move1Floor() {
|
//function move1Floor() {
|
||||||
@ -412,6 +416,10 @@
|
|||||||
createHeatmapRect(labels, colorStops);
|
createHeatmapRect(labels, colorStops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showList() {
|
||||||
|
consoleList();
|
||||||
|
}
|
||||||
|
|
||||||
function createHeatmapRect(labels, colorStops) {
|
function createHeatmapRect(labels, colorStops) {
|
||||||
if (!this.canvas) {
|
if (!this.canvas) {
|
||||||
return;
|
return;
|
||||||
@ -438,7 +446,7 @@
|
|||||||
context.fillRect(10, 20, 280, 20);
|
context.fillRect(10, 20, 280, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -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_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(0xffffff, 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,17 @@ 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);//更改燈光顏色和強度的測試
|
||||||
|
moveViewToDevice(myData.forge_dbid);//移動視角至該設備
|
||||||
|
}
|
||||||
$(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 +821,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 +867,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 +1106,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);
|
||||||
}
|
}
|
||||||
@ -1209,11 +1196,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;
|
||||||
@ -1225,4 +1207,15 @@ function setShadowShow(type = false) {
|
|||||||
viewer.impl.sceneUpdated(true);
|
viewer.impl.sceneUpdated(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
//============================= end ===================================
|
//============================= end ===================================
|
||||||
|
|
||||||
|
function moveViewToDevice(letter) {
|
||||||
|
if (letter != "") {
|
||||||
|
viewer.clearSelection();
|
||||||
|
viewer.select(letter);
|
||||||
|
viewer.fitToView([letter]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
viewer.clearSelection();
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,7 @@ var elevatorSpeed;
|
|||||||
var allDbIdsStr;
|
var allDbIdsStr;
|
||||||
let bulbLight;//點燈
|
let bulbLight;//點燈
|
||||||
var spotLight;//聚光燈
|
var spotLight;//聚光燈
|
||||||
|
let testLight;
|
||||||
var myDataList;//設備清單
|
var myDataList;//設備清單
|
||||||
var viewableData;
|
var viewableData;
|
||||||
var dataVizExtn;
|
var dataVizExtn;
|
||||||
@ -12,7 +13,9 @@ var spriteColorRed;
|
|||||||
var levels;//剖面用
|
var levels;//剖面用
|
||||||
var light;
|
var light;
|
||||||
let pointLightHelper;
|
let pointLightHelper;
|
||||||
|
var tagIdDevList = [];//模型設備List: device_number、device_coordinate_3d、forge_dbid
|
||||||
|
var roomDataList = [];//模型房間List: room_id、room_name
|
||||||
|
|
||||||
function launchViewer(urn) {
|
function launchViewer(urn) {
|
||||||
var av = Autodesk.Viewing;
|
var av = Autodesk.Viewing;
|
||||||
var options = {
|
var options = {
|
||||||
@ -139,12 +142,10 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
|
|
||||||
|
|
||||||
viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () {
|
viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () {
|
||||||
var instanceTree = viewer.model.getData().instanceTree;
|
var instanceTree = viewer.model.getData().instanceTree;
|
||||||
|
var domElem = document.getElementById('all_id');
|
||||||
var domElem = document.getElementById('all_id');
|
allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex);
|
||||||
allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex);
|
domElem.innerText = allDbIdsStr;
|
||||||
domElem.innerText = allDbIdsStr;
|
|
||||||
|
|
||||||
//parseInt(allDbIdsStr[i]
|
//parseInt(allDbIdsStr[i]
|
||||||
//for (var i = 0; i < allDbIdsStr.length; i++) {
|
//for (var i = 0; i < allDbIdsStr.length; i++) {
|
||||||
// //setTransparency(parseInt(allDbIdsStr[i]), 0.2);
|
// //setTransparency(parseInt(allDbIdsStr[i]), 0.2);
|
||||||
@ -161,105 +162,152 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
// })
|
// })
|
||||||
//}
|
//}
|
||||||
|
|
||||||
// ------------------ 取得tag_id底下的nodeId --------------------------------------
|
//// ------------------ 取得tag_id底下的nodeId --------------------------------------
|
||||||
var curDbId = 0;
|
//var curDbId = 0;
|
||||||
var tagId = 0;
|
////var tagId = 0;
|
||||||
var _parentId = 0;
|
////var _parentId = 0;
|
||||||
var _childId = 0;
|
////var _childId = 0;
|
||||||
var itemName = '';
|
////var itemName = '';
|
||||||
var childIdArr = new Array();
|
////var childIdArr = new Array();
|
||||||
let evelMap = new Map();
|
////let evelMap = new Map();
|
||||||
|
|
||||||
let tree = viewer.model.getData().instanceTree;
|
//let tree = viewer.model.getData().instanceTree;
|
||||||
const model = viewer.model;
|
//const model = viewer.model;
|
||||||
const fragList = model.getFragmentList();
|
//const fragList = model.getFragmentList();
|
||||||
|
|
||||||
|
|
||||||
//loadHeatmaps(model);
|
// //loadHeatmaps(model);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////allDbIdsStr.forEach((dbId) => {
|
||||||
|
//// curDbId = parseInt(dbId);
|
||||||
|
//// viewer.getProperties(curDbId, function (e) {
|
||||||
|
//// e.properties.forEach(function (item) {
|
||||||
|
//// if (item.displayName == "tag_id" && e.name == "【電梯】") {
|
||||||
|
|
||||||
|
//// //getFragmentWorldMatrixByNodeId(e.dbId, viewer);
|
||||||
|
//// //let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
||||||
|
|
||||||
|
//// tree.enumNodeFragments(e.dbId, function (frag) {
|
||||||
|
|
||||||
|
//// let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
||||||
|
//// let matrix = new THREE.Matrix4();
|
||||||
|
//// console.log("proxy: " + fragProxy.position);
|
||||||
|
|
||||||
|
//// fragProxy.getWorldMatrix(matrix);
|
||||||
|
|
||||||
|
//// });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//// tagId = e.dbId;
|
||||||
|
//// viewer.getProperties(tagId, function (e2) {
|
||||||
|
//// e2.properties.forEach(function (item2) {
|
||||||
|
//// if (item2.displayName == "child") {
|
||||||
|
//// _parentId = item2.displayValue;
|
||||||
|
|
||||||
|
//// viewer.getProperties(_parentId, function (e3) {
|
||||||
|
//// let itemMap = new Map();
|
||||||
|
//// e3.properties.forEach(function (item3) {
|
||||||
|
//// if (item3.displayName == "child") {
|
||||||
|
//// _childId = item3.displayValue;
|
||||||
|
//// childIdArr.push(_childId);
|
||||||
|
|
||||||
|
//// var n = 0;
|
||||||
|
//// viewer.getProperties(childIdArr[n], function (e5) {
|
||||||
|
//// e5.properties.forEach(function (item5) {
|
||||||
|
//// if (item5.displayName == "Name") {
|
||||||
|
//// itemName = item5.displayValue;
|
||||||
|
//// itemMap.set(childIdArr[0], itemName)
|
||||||
|
//// console.log("childIdArr[0] ", childIdArr[0])
|
||||||
|
//// console.log("item name: ", itemName);
|
||||||
|
//// n += 3;
|
||||||
|
//// }
|
||||||
|
//// });
|
||||||
|
//// })
|
||||||
|
|
||||||
|
//// n = 1;
|
||||||
|
//// viewer.getProperties(childIdArr[n], function (e6) {
|
||||||
|
//// e6.properties.forEach(function (item6) {
|
||||||
|
//// if (item6.displayName == "Name") {
|
||||||
|
//// itemName = item6.displayValue;
|
||||||
|
//// itemMap.set(childIdArr[1], itemName)
|
||||||
|
//// console.log("childIdArr[1] ", childIdArr[1])
|
||||||
|
//// console.log("item name: ", itemName);
|
||||||
|
//// n += 3;
|
||||||
|
//// }
|
||||||
|
//// });
|
||||||
|
//// })
|
||||||
|
|
||||||
|
//// n = 2;
|
||||||
|
//// viewer.getProperties(childIdArr[n], function (e7) {
|
||||||
|
//// e7.properties.forEach(function (item7) {
|
||||||
|
//// if (item7.displayName == "Name") {
|
||||||
|
//// itemName = item7.displayValue;
|
||||||
|
//// itemMap.set(childIdArr[2], itemName)
|
||||||
|
//// console.log("childIdArr[2] ", childIdArr[2])
|
||||||
|
//// console.log("item name: ", itemName);
|
||||||
|
//// n += 3;
|
||||||
|
//// }
|
||||||
|
//// });
|
||||||
|
//// })
|
||||||
|
|
||||||
|
//// }
|
||||||
|
//// });
|
||||||
|
//// evelMap.set(item.displayValue, itemMap)
|
||||||
|
//// })
|
||||||
|
|
||||||
|
//// }
|
||||||
|
//// });
|
||||||
|
//// })
|
||||||
|
//// }
|
||||||
|
//// });
|
||||||
|
|
||||||
|
//// })
|
||||||
|
|
||||||
|
////})
|
||||||
|
|
||||||
//allDbIdsStr.forEach((dbId) => {
|
//allDbIdsStr.forEach((dbId) => {
|
||||||
// curDbId = parseInt(dbId);
|
// curDbId = parseInt(dbId);
|
||||||
// viewer.getProperties(curDbId, function (e) {
|
// viewer.getProperties(curDbId, function (e) {
|
||||||
// e.properties.forEach(function (item) {
|
// e.properties.forEach(function (item) {
|
||||||
// if (item.displayName == "tag_id" && e.name == "【電梯】") {
|
// if (item.displayName == "【tag_id】") { // Tag_name tag_id 【tag_id】
|
||||||
|
// if (item.displayValue != "") {
|
||||||
|
// if ((item.displayValue).indexOf('TPE_B1_LT_L1') > -1) {// TPE_B1_ME_M10
|
||||||
|
// console.log("--------------------------------------------------");
|
||||||
|
// console.log("Tag_name dbid: " + e.dbId);
|
||||||
|
// console.log("value: " + item.displayValue);
|
||||||
|
// }
|
||||||
|
// //var v = getFragmentWorldMatrixByNodeId(e.dbId, viewer);
|
||||||
|
// //console.log("v: " + v);
|
||||||
|
|
||||||
|
|
||||||
|
// //tree.enumNodeFragments(e.dbId, function (frag) {
|
||||||
|
// // fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
||||||
|
// // fragProxy.getAnimTransform();
|
||||||
|
// // console.log("postion: " + fragProxy.position + ", fragP: " + fragProxy.fragPosition);
|
||||||
|
// //});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// let bounds = new THREE.Box3();
|
||||||
|
|
||||||
|
// instanceTree.enumNodeFragments(e.dbId, (fragId) => {
|
||||||
|
// let box = new THREE.Box3();
|
||||||
|
// fragList.getWorldBounds(fragId, box);
|
||||||
|
// bounds.union(box);
|
||||||
|
// }, true);
|
||||||
|
// var position = bounds.center();
|
||||||
|
// if ((item.displayValue).indexOf('TPE_B1_LT_L1') > -1) {
|
||||||
|
// console.log("position: (" + (position.x).toFixed(2) + ", " + (position.y).toFixed(2) + ", " + (position.z).toFixed(2) + ")");
|
||||||
|
// console.log("--------------------------------------------------");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
// //getFragmentWorldMatrixByNodeId(e.dbId, viewer);
|
// //getFragmentWorldMatrixByNodeId(e.dbId, viewer);
|
||||||
// //let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
// //let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
||||||
|
|
||||||
// tree.enumNodeFragments(e.dbId, function (frag) {
|
|
||||||
|
|
||||||
// let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
|
||||||
// let matrix = new THREE.Matrix4();
|
|
||||||
// console.log("proxy: " + fragProxy.position);
|
|
||||||
|
|
||||||
// fragProxy.getWorldMatrix(matrix);
|
|
||||||
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// tagId = e.dbId;
|
|
||||||
// viewer.getProperties(tagId, function (e2) {
|
|
||||||
// e2.properties.forEach(function (item2) {
|
|
||||||
// if (item2.displayName == "child") {
|
|
||||||
// _parentId = item2.displayValue;
|
|
||||||
|
|
||||||
// viewer.getProperties(_parentId, function (e3) {
|
|
||||||
// let itemMap = new Map();
|
|
||||||
// e3.properties.forEach(function (item3) {
|
|
||||||
// if (item3.displayName == "child") {
|
|
||||||
// _childId = item3.displayValue;
|
|
||||||
// childIdArr.push(_childId);
|
|
||||||
|
|
||||||
// var n = 0;
|
|
||||||
// viewer.getProperties(childIdArr[n], function (e5) {
|
|
||||||
// e5.properties.forEach(function (item5) {
|
|
||||||
// if (item5.displayName == "Name") {
|
|
||||||
// itemName = item5.displayValue;
|
|
||||||
// itemMap.set(childIdArr[0], itemName)
|
|
||||||
// console.log("childIdArr[0] ", childIdArr[0])
|
|
||||||
// console.log("item name: ", itemName);
|
|
||||||
// n += 3;
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// })
|
|
||||||
|
|
||||||
// n = 1;
|
|
||||||
// viewer.getProperties(childIdArr[n], function (e6) {
|
|
||||||
// e6.properties.forEach(function (item6) {
|
|
||||||
// if (item6.displayName == "Name") {
|
|
||||||
// itemName = item6.displayValue;
|
|
||||||
// itemMap.set(childIdArr[1], itemName)
|
|
||||||
// console.log("childIdArr[1] ", childIdArr[1])
|
|
||||||
// console.log("item name: ", itemName);
|
|
||||||
// n += 3;
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// })
|
|
||||||
|
|
||||||
// n = 2;
|
|
||||||
// viewer.getProperties(childIdArr[n], function (e7) {
|
|
||||||
// e7.properties.forEach(function (item7) {
|
|
||||||
// if (item7.displayName == "Name") {
|
|
||||||
// itemName = item7.displayValue;
|
|
||||||
// itemMap.set(childIdArr[2], itemName)
|
|
||||||
// console.log("childIdArr[2] ", childIdArr[2])
|
|
||||||
// console.log("item name: ", itemName);
|
|
||||||
// n += 3;
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// })
|
|
||||||
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// evelMap.set(item.displayValue, itemMap)
|
|
||||||
// })
|
|
||||||
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// })
|
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
|
|
||||||
@ -267,54 +315,64 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
|
|
||||||
//})
|
//})
|
||||||
|
|
||||||
allDbIdsStr.forEach((dbId) => {
|
////---------------------- end ---------------------------------------------------
|
||||||
curDbId = parseInt(dbId);
|
|
||||||
viewer.getProperties(curDbId, function (e) {
|
// ------------------ 2023.01.06 取得tag_id、底下的nodeId --------------------------------------
|
||||||
e.properties.forEach(function (item) {
|
var curDbId = 0;
|
||||||
if (item.displayName == "【tag_id】") { // Tag_name tag_id 【tag_id】
|
|
||||||
if (item.displayValue != "") {
|
let tree = viewer.model.getData().instanceTree;
|
||||||
if ((item.displayValue).indexOf('TPE_B1_LT_L1') > -1) {// TPE_B1_ME_M10
|
const model = viewer.model;
|
||||||
console.log("--------------------------------------------------");
|
const fragList = model.getFragmentList();
|
||||||
console.log("Tag_name dbid: " + e.dbId);
|
|
||||||
console.log("value: " + item.displayValue);
|
|
||||||
|
allDbIdsStr.forEach((dbId) => {
|
||||||
|
curDbId = parseInt(dbId);
|
||||||
|
viewer.getProperties(curDbId, function (e) {
|
||||||
|
e.properties.forEach(function (item) {
|
||||||
|
if (item.displayName == "【tag_id】") { // Tag_name tag_id 【tag_id】
|
||||||
|
if (item.displayValue != "") {
|
||||||
|
////if ((item.displayValue).indexOf('TPE_B1_LT_L1') > -1) {// TPE_B1_ME_M10
|
||||||
|
//console.log("--------------------------------------------------");
|
||||||
|
//console.log("Tag_name dbid: " + e.dbId);
|
||||||
|
//console.log("value: " + item.displayValue);
|
||||||
|
////}
|
||||||
|
var str = item.displayValue.split('_');
|
||||||
|
if (str.length == 2) { //兩段為房間 ex: U7F_01
|
||||||
|
roomDataList.push({ room_id: e.dbId, room_name: item.displayValue });
|
||||||
|
}
|
||||||
|
else if (str.length == 8) { //八段為設備 ex: TPE_B1_ME_M10_U7F_NA_FCU_N1
|
||||||
|
//取得座標
|
||||||
|
let bounds = new THREE.Box3();
|
||||||
|
instanceTree.enumNodeFragments(e.dbId, (fragId) => {
|
||||||
|
let box = new THREE.Box3();
|
||||||
|
fragList.getWorldBounds(fragId, box);
|
||||||
|
bounds.union(box);
|
||||||
|
}, true);
|
||||||
|
var position = bounds.center();
|
||||||
|
////if ((item.displayValue).indexOf('TPE_B1_LT_L1') > -1) {
|
||||||
|
//console.log("position: (" + (position.x).toFixed(2) + ", " + (position.y).toFixed(2) + ", " + (position.z).toFixed(2) + ")");
|
||||||
|
//console.log("--------------------------------------------------");
|
||||||
|
////}
|
||||||
|
tagIdDevList.push({ device_number: item.displayValue, device_coordinate_3d: '{ "x": ' + (position.x).toFixed(2) + ', "y": ' + (position.y).toFixed(2) + ', "z": ' + (position.z).toFixed(2) + ' }', forge_dbid: e.dbId });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//var v = getFragmentWorldMatrixByNodeId(e.dbId, viewer);
|
|
||||||
//console.log("v: " + v);
|
|
||||||
|
|
||||||
|
|
||||||
//tree.enumNodeFragments(e.dbId, function (frag) {
|
|
||||||
// fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
|
||||||
// fragProxy.getAnimTransform();
|
|
||||||
// console.log("postion: " + fragProxy.position + ", fragP: " + fragProxy.fragPosition);
|
|
||||||
//});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let bounds = new THREE.Box3();
|
|
||||||
|
|
||||||
instanceTree.enumNodeFragments(e.dbId, (fragId) => {
|
|
||||||
let box = new THREE.Box3();
|
|
||||||
fragList.getWorldBounds(fragId, box);
|
|
||||||
bounds.union(box);
|
|
||||||
}, true);
|
|
||||||
var position = bounds.center();
|
|
||||||
if ((item.displayValue).indexOf('TPE_B1_LT_L1') > -1) {
|
|
||||||
console.log("position: (" + (position.x).toFixed(2) + ", " + (position.y).toFixed(2) + ", " + (position.z).toFixed(2) + ")");
|
|
||||||
console.log("--------------------------------------------------");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//getFragmentWorldMatrixByNodeId(e.dbId, viewer);
|
});
|
||||||
//let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
|
||||||
|
|
||||||
|
})
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
//---------------------- end ---------------------------------------------------
|
||||||
})
|
|
||||||
|
|
||||||
//---------------------- end ---------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -359,116 +417,51 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
// })
|
// })
|
||||||
|
|
||||||
//})
|
//})
|
||||||
|
|
||||||
|
|
||||||
//let tree = viewer.model.getData().instanceTree;
|
|
||||||
let nodeId = 12112;//12104; //749; //10952;
|
|
||||||
let nodeId2 = 12111;//12105; //750;
|
|
||||||
let nodeId3 = 12110;//12104; //751;
|
|
||||||
|
|
||||||
tree.enumNodeFragments(nodeId, function (frag) {
|
|
||||||
fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
|
||||||
fragProxy.getAnimTransform();
|
|
||||||
let fragPosition = new THREE.Vector3(0, 0, 0);// 一樓0 二樓15 三樓 26
|
|
||||||
|
|
||||||
fragProxy.position = fragPosition
|
// //let tree = viewer.model.getData().instanceTree;
|
||||||
|
//let nodeId = 12112;//12104; //749; //10952;
|
||||||
|
//let nodeId2 = 12111;//12105; //750;
|
||||||
|
//let nodeId3 = 12110;//12104; //751;
|
||||||
|
|
||||||
fragProxy.updateAnimTransform()
|
//tree.enumNodeFragments(nodeId, function (frag) {
|
||||||
|
// fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
||||||
|
// fragProxy.getAnimTransform();
|
||||||
|
// let fragPosition = new THREE.Vector3(0, 0, 0);// 一樓0 二樓15 三樓 26
|
||||||
|
// fragProxy.position = fragPosition
|
||||||
|
// fragProxy.updateAnimTransform()
|
||||||
|
//});
|
||||||
|
//viewer.impl.sceneUpdated(true);
|
||||||
|
|
||||||
});
|
////------------ add -------------
|
||||||
viewer.impl.sceneUpdated(true);
|
//tree.enumNodeFragments(nodeId2, function (frag) {
|
||||||
|
// fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
||||||
|
// fragProxy.getAnimTransform();
|
||||||
|
// let fragPosition = new THREE.Vector3(0, 0, 0);// 一樓0 二樓15 三樓 26
|
||||||
|
|
||||||
//------------ add -------------
|
// fragProxy.position = fragPosition
|
||||||
tree.enumNodeFragments(nodeId2, function (frag) {
|
|
||||||
fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
|
||||||
fragProxy.getAnimTransform();
|
|
||||||
let fragPosition = new THREE.Vector3(0, 0, 0);// 一樓0 二樓15 三樓 26
|
|
||||||
|
|
||||||
fragProxy.position = fragPosition
|
// fragProxy.updateAnimTransform()
|
||||||
|
|
||||||
fragProxy.updateAnimTransform()
|
//});
|
||||||
|
//viewer.impl.sceneUpdated(true);
|
||||||
|
|
||||||
});
|
//tree.enumNodeFragments(nodeId3, function (frag) {
|
||||||
viewer.impl.sceneUpdated(true);
|
// fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
||||||
|
// fragProxy.getAnimTransform();
|
||||||
|
// let fragPosition = new THREE.Vector3(0, 0, 0);// 一樓0 二樓15 三樓 26
|
||||||
|
|
||||||
tree.enumNodeFragments(nodeId3, function (frag) {
|
// fragProxy.position = fragPosition
|
||||||
fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
|
|
||||||
fragProxy.getAnimTransform();
|
|
||||||
let fragPosition = new THREE.Vector3(0, 0, 0);// 一樓0 二樓15 三樓 26
|
|
||||||
|
|
||||||
fragProxy.position = fragPosition
|
// fragProxy.updateAnimTransform()
|
||||||
|
|
||||||
fragProxy.updateAnimTransform()
|
//});
|
||||||
|
//viewer.impl.sceneUpdated(true);
|
||||||
});
|
|
||||||
viewer.impl.sceneUpdated(true);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
//newLight();
|
||||||
//add toolbar fail
|
//testLight = new THREE.SpotLight();
|
||||||
//function ToolbarExtension(viewer, options) {
|
|
||||||
// Autodesk.Viewing.Extension.call(this, viewer, options);
|
|
||||||
//}
|
|
||||||
|
|
||||||
//ToolbarExtension.prototype = Object.create(Autodesk.Viewing.Extension.prototype);
|
|
||||||
//ToolbarExtension.prototype.constructor = ToolbarExtension;
|
|
||||||
|
|
||||||
//ToolbarExtension.prototype.load = function () {
|
|
||||||
// this.viewer.setLightPreset(6);
|
|
||||||
// this.viewer.setEnvMapBackground(true);
|
|
||||||
// this.viewer.fitToView();
|
|
||||||
// return true;
|
|
||||||
//};
|
|
||||||
|
|
||||||
//ToolbarExtension.prototype.unload = function () {
|
|
||||||
|
|
||||||
//};
|
|
||||||
//Autodesk.Viewing.theExtensionManager.registerExtension('ToolbarExtension', ToolbarExtension);
|
|
||||||
|
|
||||||
//ToolbarExtension.prototype.onToolbarCreated = function (toolbar) {
|
|
||||||
// //alert('TODO: customize Viewer toolbar');
|
|
||||||
|
|
||||||
// var viewer = this.viewer;
|
|
||||||
// var button1 = new Autodesk.Viewing.UI.Button('show-env-bg-button');
|
|
||||||
// button1.onClick = function (e) {
|
|
||||||
// viewer.setEnvMapBackground(true);
|
|
||||||
// };
|
|
||||||
// button1.addClass('show-env-bg-button');
|
|
||||||
// button1.setToolTip('Show Environment');
|
|
||||||
|
|
||||||
// //SubToolbar
|
|
||||||
// this.subToolbar = new Autodesk.Viewing.UI.ControlGroup('my-custom-toolbar');
|
|
||||||
// this.subToolbar.addControl(button1);
|
|
||||||
// toolbar.addControl(this.subToolbar);
|
|
||||||
|
|
||||||
//};
|
|
||||||
|
|
||||||
|
|
||||||
//加入點燈光
|
|
||||||
//bulbLight = new THREE.PointLight(0xffffff, 1, 1, 2);//0xff0000
|
|
||||||
//bulbLight.position.set(-17.33, 51.03, -2.52);//17.880840301513672
|
|
||||||
//bulbLight.castShadow = true;
|
|
||||||
//bulbLight.intensity = 50;
|
|
||||||
//bulbLight.distance = 1;
|
|
||||||
//bulbLight.emissiveIntensity = bulbLight.intensity / Math.pow(0.02, 2.0);
|
|
||||||
//viewer.scene.add(bulbLight);
|
|
||||||
|
|
||||||
//聚光燈
|
|
||||||
//spotLight = new THREE.SpotLight(0xffff00, 80, 10);//0xffffff
|
|
||||||
//spotLight.position.set(-7.58, 18.20, -0.25); //set(-17.33, 51.03, -2.52);
|
|
||||||
//spotLight.castShadow = true;
|
|
||||||
//spotLight.visible = true;
|
|
||||||
//var geom = new THREE.BoxGeometry(); //create 幾何對象 -17.33, 51.03, -4.52
|
|
||||||
//var material = new THREE.MeshLambertMaterial({ color: 0xffff00 });//0xff0000
|
|
||||||
//var cube = new THREE.Mesh(geom, material);
|
|
||||||
//cube.position.set(-7.58, 18.20, -1); //set(-17.33, 51.03, -10);//-4.52
|
|
||||||
//viewer.scene.add(cube);
|
|
||||||
//spotLight.target = cube;
|
|
||||||
//viewer.scene.add(spotLight);
|
|
||||||
|
|
||||||
//light = newLight();
|
|
||||||
newLight();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------- 加入熱點 -----------------
|
//------------------- 加入熱點 -----------------
|
||||||
@ -482,7 +475,8 @@ async function addHotPoint(data) {
|
|||||||
const spriteIcon = "https://d2zqnmauvnpnnm.cloudfront.net/assets-1/images/circle.svg"; //"/img/forge/hotspot.svg";
|
const spriteIcon = "https://d2zqnmauvnpnnm.cloudfront.net/assets-1/images/circle.svg"; //"/img/forge/hotspot.svg";
|
||||||
|
|
||||||
const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon);
|
const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon);
|
||||||
var a = newLight();
|
//var a = newLight();
|
||||||
|
newLight();
|
||||||
//function onSpriteClicked(event) {
|
//function onSpriteClicked(event) {
|
||||||
// console.log(`Sprite clicked: ${event.dbId}`);
|
// console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
//}
|
//}
|
||||||
@ -521,7 +515,7 @@ async function addHotPoint(data) {
|
|||||||
event.hasStopped = true;
|
event.hasStopped = true;
|
||||||
if (event != undefined && event != null) {
|
if (event != undefined && event != null) {
|
||||||
if (event.dbId >= 10 && event.dbId <= 13) {//event.dbId > 0 && event.dbId < 19
|
if (event.dbId >= 10 && event.dbId <= 13) {//event.dbId > 0 && event.dbId < 19
|
||||||
setLightValues(20, 0x00ff00)
|
setLightValues(20, 0x00ff00);
|
||||||
console.log(`Sprite clicked: ${event.dbId}`);
|
console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
openHotspotModal();
|
openHotspotModal();
|
||||||
}
|
}
|
||||||
@ -1387,26 +1381,26 @@ async function newLight() {
|
|||||||
//angle - 光從其上界為 Math.PI / 2 的方向散射的最大角度。
|
//angle - 光從其上界為 Math.PI / 2 的方向散射的最大角度。
|
||||||
//半影 - 由於半影而衰減的聚光燈錐體的百分比。取值介於 0 和 1 之間。默認值為零。
|
//半影 - 由於半影而衰減的聚光燈錐體的百分比。取值介於 0 和 1 之間。默認值為零。
|
||||||
//decay - 光沿光的距離變暗的量。
|
//decay - 光沿光的距離變暗的量。
|
||||||
//spotLight = new THREE.SpotLight(0xff0000, 200, 20, 0.6, 0.5, 10);//0xffffff 80, 10 //15, 20 , Math.PI / 12
|
spotLight = new THREE.SpotLight(0xff0000, 200, 20, 0.6, 0.5, 10);//0xffffff 80, 10 //15, 20 , Math.PI / 12
|
||||||
//spotLight.position.set(43.72, -15.65, -44.96); //set(-17.33, 51.03, -2.52); // -7.58, 18.20, -0.25 -44.96
|
spotLight.position.set(43.72, -15.65, -44.96); //set(-17.33, 51.03, -2.52); // -7.58, 18.20, -0.25 -44.96
|
||||||
//spotLight.castShadow = false;
|
spotLight.castShadow = false;
|
||||||
//spotLight.visible = true;
|
spotLight.visible = true;
|
||||||
|
|
||||||
//spotLight.target.position.set(43.72, -15.65, -60);// -15.65 -48
|
spotLight.target.position.set(43.72, -15.65, -60);// -15.65 -48
|
||||||
//viewer.scene.add(spotLight.target);
|
viewer.scene.add(spotLight.target);
|
||||||
|
|
||||||
//viewer.scene.add(spotLight);
|
viewer.scene.add(spotLight);
|
||||||
|
|
||||||
//viewer.impl.sceneUpdated(true);
|
viewer.impl.sceneUpdated(true);
|
||||||
|
|
||||||
//return spotLight;
|
//return spotLight;
|
||||||
|
|
||||||
//加入點燈光
|
//加入點燈光
|
||||||
bulbLight = new THREE.PointLight(0xff0000, 50, 20, 2);//0xff0000
|
//bulbLight = new THREE.PointLight(0xffffff, 50, 20, 2);//0xff0000
|
||||||
bulbLight.position.set(43.72, -15.65, -44.96);//17.880840301513672
|
//bulbLight.position.set(43.72, -15.65, -44.96);//17.880840301513672
|
||||||
bulbLight.castShadow = true;
|
//bulbLight.castShadow = true;
|
||||||
bulbLight.visible = true;
|
//bulbLight.visible = true;
|
||||||
viewer.scene.add(bulbLight);
|
//viewer.scene.add(bulbLight);
|
||||||
|
|
||||||
//pointLightHelper = new THREE.PointLightHelper(pointLight);
|
//pointLightHelper = new THREE.PointLightHelper(pointLight);
|
||||||
//viewer.scene.add(pointLightHelper);
|
//viewer.scene.add(pointLightHelper);
|
||||||
@ -1439,13 +1433,15 @@ function setLightValues(intensity, color) {// distance, angle, penumbra, decay,
|
|||||||
function setLightOpenOrClose(value) {//, light
|
function setLightOpenOrClose(value) {//, light
|
||||||
if (value) {
|
if (value) {
|
||||||
//light.visible = true;
|
//light.visible = true;
|
||||||
//spotLight.visible = true;
|
spotLight.visible = true;
|
||||||
bulbLight.visible = true;
|
//bulbLight.visible = true;
|
||||||
|
//testLight.visible = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//light.visible = false;
|
//light.visible = false;
|
||||||
//spotLight.visible = false;
|
spotLight.visible = false;
|
||||||
bulbLight.visible = false;
|
//bulbLight.visible = false;
|
||||||
|
//testLight.visible = false;
|
||||||
}
|
}
|
||||||
viewer.impl.sceneUpdated(true);
|
viewer.impl.sceneUpdated(true);
|
||||||
}
|
}
|
||||||
@ -1457,3 +1453,7 @@ function setLightTransparency(value) {
|
|||||||
}
|
}
|
||||||
//------------- end -----------------------------------
|
//------------- end -----------------------------------
|
||||||
|
|
||||||
|
function consoleList() {
|
||||||
|
console.log(tagIdDevList);
|
||||||
|
console.log(roomDataList);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user