Merge branch 'master' of https://gitea.mjm-staging.developers-homelab.net/BIMS/BIMS
This commit is contained in:
commit
c49bb86d81
@ -47,6 +47,10 @@
|
|||||||
<button type="button" class="btn btn-dark" onclick="cancelTransparentModel()">取消透明物件</button>
|
<button type="button" class="btn btn-dark" onclick="cancelTransparentModel()">取消透明物件</button>
|
||||||
<button type="button" class="btn btn-danger" onclick="proFile()">剖面</button>
|
<button type="button" class="btn btn-danger" onclick="proFile()">剖面</button>
|
||||||
<button type="button" class="btn btn-dark" onclick="getLevels()">取得levels</button>
|
<button type="button" class="btn btn-dark" onclick="getLevels()">取得levels</button>
|
||||||
|
<div style="height: 50px">
|
||||||
|
<canvas id="iot-heatmap-legend" width="300" height="50"></canvas>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn btn-info" onclick="showHeat()">顯示熱圖圖示</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>
|
||||||
@ -191,7 +195,9 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var curLightIsOpen = true;
|
var curLightIsOpen = true;
|
||||||
var light;
|
//var light;
|
||||||
|
var cavas;
|
||||||
|
this.canvas = document.getElementById('iot-heatmap-legend');
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDLm53ZA');
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDLm53ZA');
|
||||||
@ -351,16 +357,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function openOrCloseLight() {
|
function openOrCloseLight() {
|
||||||
if (light != null) {
|
//if (light != null) {
|
||||||
if (curLightIsOpen) {
|
if (curLightIsOpen) {
|
||||||
curLightIsOpen = false;
|
curLightIsOpen = false;
|
||||||
setLightOpenOrClose(curLightIsOpen, light);
|
setLightOpenOrClose(curLightIsOpen);//, light
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
curLightIsOpen = true;
|
curLightIsOpen = true;
|
||||||
setLightOpenOrClose(curLightIsOpen, light);
|
setLightOpenOrClose(curLightIsOpen);//, light
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeColorHotspot() {
|
function changeColorHotspot() {
|
||||||
@ -396,6 +402,41 @@
|
|||||||
profile();
|
profile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showHeat() {
|
||||||
|
const labels = [
|
||||||
|
`${(10).toFixed(2) }${"°C"}`,
|
||||||
|
`${(40 / 2).toFixed(2)}${"°C"}`,
|
||||||
|
`${(30).toFixed(2) }${"°C"}`
|
||||||
|
];
|
||||||
|
const colorStops = ['blue', 'green', 'yellow', 'red'];
|
||||||
|
createHeatmapRect(labels, colorStops);
|
||||||
|
}
|
||||||
|
|
||||||
|
function createHeatmapRect(labels, colorStops) {
|
||||||
|
if (!this.canvas) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const context = this.canvas.getContext('2d');
|
||||||
|
let i, len;
|
||||||
|
context.clearRect(0, 0, 300, 50);
|
||||||
|
context.fillStyle = 'back';//white
|
||||||
|
for (i = 0, len = labels.length; i < len; i++) {
|
||||||
|
let x = 10 + 280 * i / (len - 1);
|
||||||
|
if (i === len - 1) {
|
||||||
|
x -= context.measureText(labels[i]).width;
|
||||||
|
}
|
||||||
|
else if (i > 0) {
|
||||||
|
x -= 0.5 * context.measureText(labels[i]).width;
|
||||||
|
}
|
||||||
|
context.fillText(labels[i], x, 10);
|
||||||
|
}
|
||||||
|
const gradient = context.createLinearGradient(0, 0, 300, 0);
|
||||||
|
for (i = 0, len = colorStops.length; i < len; i++) {
|
||||||
|
gradient.addColorStop(i / (len - 1), colorStops[i]);
|
||||||
|
}
|
||||||
|
context.fillStyle = gradient;
|
||||||
|
context.fillRect(10, 20, 280, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,12 +4,14 @@ var targetFloorZ;
|
|||||||
var elevatorSpeed;
|
var elevatorSpeed;
|
||||||
var allDbIdsStr;
|
var allDbIdsStr;
|
||||||
let bulbLight;//點燈
|
let bulbLight;//點燈
|
||||||
let spotLight;//聚光燈
|
var spotLight;//聚光燈
|
||||||
var myDataList;//設備清單
|
var myDataList;//設備清單
|
||||||
var viewableData;
|
var viewableData;
|
||||||
var dataVizExtn;
|
var dataVizExtn;
|
||||||
var spriteColorRed;
|
var spriteColorRed;
|
||||||
var levels;//剖面用
|
var levels;//剖面用
|
||||||
|
var light;
|
||||||
|
let pointLightHelper;
|
||||||
|
|
||||||
function launchViewer(urn) {
|
function launchViewer(urn) {
|
||||||
var av = Autodesk.Viewing;
|
var av = Autodesk.Viewing;
|
||||||
@ -71,7 +73,7 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
var currSelection = viewer.getSelection();
|
var currSelection = viewer.getSelection();
|
||||||
var domElem = document.getElementById('id_printer');
|
var domElem = document.getElementById('id_printer');
|
||||||
domElem.innerText = currSelection[0];
|
domElem.innerText = currSelection[0];
|
||||||
var a = newLight();
|
/*var a = newLight();*/
|
||||||
|
|
||||||
|
|
||||||
//var color = new THREE.Vector4(255 / 255, 0, 0, 1);
|
//var color = new THREE.Vector4(255 / 255, 0, 0, 1);
|
||||||
@ -464,8 +466,8 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
//spotLight.target = cube;
|
//spotLight.target = cube;
|
||||||
//viewer.scene.add(spotLight);
|
//viewer.scene.add(spotLight);
|
||||||
|
|
||||||
//var light = newLight();
|
//light = newLight();
|
||||||
/*newLight();*/
|
newLight();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -480,7 +482,7 @@ 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();
|
||||||
//function onSpriteClicked(event) {
|
//function onSpriteClicked(event) {
|
||||||
// console.log(`Sprite clicked: ${event.dbId}`);
|
// console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
//}
|
//}
|
||||||
@ -519,6 +521,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)
|
||||||
console.log(`Sprite clicked: ${event.dbId}`);
|
console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
openHotspotModal();
|
openHotspotModal();
|
||||||
}
|
}
|
||||||
@ -1139,8 +1142,10 @@ async function loadHeatmaps(model) {
|
|||||||
// Setup surface shading
|
// Setup surface shading
|
||||||
await dataVizExtn.setupSurfaceShading(model, heatmapData);
|
await dataVizExtn.setupSurfaceShading(model, heatmapData);
|
||||||
|
|
||||||
//dataVizExtn.registerSurfaceShadingColors("co2", [0x00ff00, 0xff0000]);
|
const sensorColors = [0x0000ff, 0x00ff00, 0xffff00, 0xff0000];//0 ~ 1 藍綠黃紅
|
||||||
dataVizExtn.registerSurfaceShadingColors("temperature", [0xff0000, 0x0000ff]);
|
|
||||||
|
//dataVizExtn.registerSurfaceShadingColors("co2", [0x00ff00, 0xff0000]); 0~1
|
||||||
|
dataVizExtn.registerSurfaceShadingColors("temperature", sensorColors);//[0xff0000, 0x0000ff]
|
||||||
|
|
||||||
function getSensorValue(device, sensorType) {
|
function getSensorValue(device, sensorType) {
|
||||||
return sensorVals[parseInt(device.id.slice(-1)) - 1]; // 值: 0~1之間
|
return sensorVals[parseInt(device.id.slice(-1)) - 1]; // 值: 0~1之間
|
||||||
@ -1382,33 +1387,31 @@ async function newLight() {
|
|||||||
//angle - 光從其上界為 Math.PI / 2 的方向散射的最大角度。
|
//angle - 光從其上界為 Math.PI / 2 的方向散射的最大角度。
|
||||||
//半影 - 由於半影而衰減的聚光燈錐體的百分比。取值介於 0 和 1 之間。默認值為零。
|
//半影 - 由於半影而衰減的聚光燈錐體的百分比。取值介於 0 和 1 之間。默認值為零。
|
||||||
//decay - 光沿光的距離變暗的量。
|
//decay - 光沿光的距離變暗的量。
|
||||||
spotLight = new THREE.SpotLight(0xffffff, 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;
|
||||||
//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(43.72, -15.65, -46); //set(-17.33, 51.03, -10);//-4.52 // -7.58, 18.20, -1
|
|
||||||
//cube.scale.set(0.5, 0.5, 0.5);
|
|
||||||
//viewer.scene.add(cube);
|
|
||||||
//spotLight.target = cube;
|
|
||||||
|
|
||||||
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(0xff0000, 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;
|
||||||
//viewer.scene.add(bulbLight);
|
bulbLight.visible = true;
|
||||||
//viewer.impl.sceneUpdated(true);
|
viewer.scene.add(bulbLight);
|
||||||
|
|
||||||
|
//pointLightHelper = new THREE.PointLightHelper(pointLight);
|
||||||
|
//viewer.scene.add(pointLightHelper);
|
||||||
|
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------- 更改燈光範圍 --------------------------
|
//-------------- 更改燈光範圍 --------------------------
|
||||||
@ -1418,23 +1421,31 @@ function setLightPower(value) {
|
|||||||
viewer.impl.sceneUpdated(true);
|
viewer.impl.sceneUpdated(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setLightValues(intensity, distance, angle, penumbra, decay) {
|
function setLightValues(intensity, color) {// distance, angle, penumbra, decay,
|
||||||
|
viewer.scene.remove(spotLight)
|
||||||
spotLight.intensity = intensity;
|
spotLight.intensity = intensity;
|
||||||
spotLight.distance = distance;
|
//spotLight.distance = distance;
|
||||||
spotLight.angle = angle;
|
//spotLight.angle = angle;
|
||||||
spotLight.penumbra = penumbra;
|
//spotLight.penumbra = penumbra;
|
||||||
spotLight.decay = decay;
|
//spotLight.decay = decay;
|
||||||
|
var tempcolor = new THREE.Color().setHex(color);
|
||||||
|
spotLight.color = tempcolor;
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
|
||||||
|
viewer.scene.add(spotLight);
|
||||||
viewer.impl.sceneUpdated(true);
|
viewer.impl.sceneUpdated(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
light.visible = false;
|
//light.visible = false;
|
||||||
//spotLight.visible = false;
|
//spotLight.visible = false;
|
||||||
|
bulbLight.visible = false;
|
||||||
}
|
}
|
||||||
viewer.impl.sceneUpdated(true);
|
viewer.impl.sceneUpdated(true);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user