Merge branch 'master' of https://gitea.mjm-staging.developers-homelab.net/BIMS/BIMS
This commit is contained in:
commit
84bddaaa94
@ -761,13 +761,42 @@ namespace Backend.Controllers
|
|||||||
{
|
{
|
||||||
if (post.Count > 0)
|
if (post.Count > 0)
|
||||||
{
|
{
|
||||||
|
//清空device_node資料表
|
||||||
|
//await backendRepository.TruncateTable("device_node");
|
||||||
|
|
||||||
|
//int node_priority = 1;
|
||||||
foreach(var idfc in post)
|
foreach(var idfc in post)
|
||||||
{
|
{
|
||||||
|
//if(idfc.device_number.IndexOf("_LT_L1") > -1)
|
||||||
|
//{
|
||||||
|
// //取得device_guid
|
||||||
|
// var sWhere = $@"where deleted = 0 and device_number = " + idfc.device_number;
|
||||||
|
// var device_guid = await backendRepository.GetOneAsync<string>("device_node", sWhere, "device_guid");
|
||||||
|
|
||||||
|
// //燈具
|
||||||
|
// Dictionary<string, object> device = new Dictionary<string, object>();
|
||||||
|
// device.Add("@device_node_guid", Guid.NewGuid());
|
||||||
|
// device.Add("@deleted", 0);
|
||||||
|
// device.Add("@device_guid", device_guid);
|
||||||
|
// device.Add("@device_node_coordinate_3d", idfc.device_coordinate_3d);
|
||||||
|
// device.Add("@forge_dbid", idfc.forge_dbid);
|
||||||
|
// device.Add("@priority", node_priority);
|
||||||
|
// device.Add("@created_by", myUserInfo.Userinfo_guid);
|
||||||
|
// device.Add("@created_at", DateTime.Now);
|
||||||
|
|
||||||
|
// node_priority++;
|
||||||
|
// await backendRepository.AddOneByCustomTableReturnId(device, "device_node", false);
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
Dictionary<string, object> device = new Dictionary<string, object>();
|
Dictionary<string, object> device = new Dictionary<string, object>();
|
||||||
device.Add("@device_coordinate_3d", idfc.device_coordinate_3d);
|
device.Add("@device_coordinate_3d", idfc.device_coordinate_3d);
|
||||||
device.Add("@forge_dbid", idfc.forge_dbid);
|
device.Add("@forge_dbid", idfc.forge_dbid);
|
||||||
|
|
||||||
await backendRepository.UpdateOneByCustomTable(device, "device", $@" device_number = '{idfc.device_number}'");
|
await backendRepository.UpdateOneByCustomTable(device, "device", $@" device_number = '{idfc.device_number}'");
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
apiResult.Code = "0000";
|
apiResult.Code = "0000";
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
<!--<!DOCTYPE html>
|
|
||||||
<html>-->
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<title>Autodesk Forge Tutorial</title>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<link rel="shortcut icon" href="https://github.com/Autodesk-Forge/learn.forge.viewmodels/raw/master/img/favicon.ico">
|
|
||||||
<!-- Common packages: jQuery, Bootstrap, jsTree -->
|
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
|
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.7/jstree.min.js"></script>
|
|
||||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">
|
|
||||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.7/themes/default/style.min.css" />
|
|
||||||
<!-- Autodesk Forge Viewer files -->
|
|
||||||
<link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css" type="text/css">
|
|
||||||
<script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script>
|
|
||||||
<!-- this project files -->
|
|
||||||
<link href="css/main.css" rel="stylesheet" />
|
|
||||||
<script src="js/ForgeTree.js"></script>
|
|
||||||
<script src="js/ForgeViewer.js"></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
@{
|
|
||||||
ViewData["MainNum"] = "1";
|
|
||||||
ViewData["SubNum"] = "4";
|
|
||||||
ViewData["Title"] = "forge管理";
|
|
||||||
}
|
|
||||||
<!-- Fixed navbar by Bootstrap: https://getbootstrap.com/examples/navbar-fixed-top/ -->
|
|
||||||
<nav class="navbar navbar-default navbar-fixed-top">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<ul class="nav navbar-nav left">
|
|
||||||
<li>
|
|
||||||
<a href="http://developer.autodesk.com" target="_blank">
|
|
||||||
<img alt="Autodesk Forge" src="//developer.static.autodesk.com/images/logo_forge-2-line.png" height="20">
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<!-- End of navbar -->
|
|
||||||
<div class="container-fluid fill">
|
|
||||||
<div class="row fill">
|
|
||||||
<div class="col-sm-4 fill">
|
|
||||||
<div class="panel panel-default fill">
|
|
||||||
<div class="panel-heading" data-toggle="tooltip">
|
|
||||||
Buckets & Objects
|
|
||||||
<span id="refreshBuckets" class="glyphicon glyphicon-refresh" style="cursor: pointer"></span>
|
|
||||||
<button class="btn btn-xs btn-info" style="float: right" id="showFormCreateBucket" data-toggle="modal" data-target="#createBucketModal">
|
|
||||||
<span class="glyphicon glyphicon-folder-close"></span> New bucket
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div id="appBuckets">
|
|
||||||
tree here
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-8 fill">
|
|
||||||
<div id="forgeViewer"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<form id="uploadFile" method='post' enctype="multipart/form-data">
|
|
||||||
<input id="hiddenUploadField" type="file" name="theFile" style="visibility:hidden" />
|
|
||||||
</form>
|
|
||||||
<!-- Modal Create Bucket -->
|
|
||||||
<div class="modal fade" id="createBucketModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
|
|
||||||
<div class="modal-dialog" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Cancel">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
<h4 class="modal-title" id="myModalLabel">Create new bucket</h4>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<input type="text" id="newBucketKey" class="form-control"> For demonstration purposes, objects (files)
|
|
||||||
are NOT automatically translated. After you upload, right click on
|
|
||||||
the object and select "Translate". Note: Technically your bucket name is required to be globally unique across
|
|
||||||
the entire platform - to keep things simple with this tutorial your client ID will be prepended by default to
|
|
||||||
your bucket name and in turn masked by the UI so you only have to make sure your bucket name is unique within
|
|
||||||
your current Forge app.
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
|
||||||
<button type="button" class="btn btn-primary" id="createNewBucket">Go ahead, create the bucket</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
<!--</html>-->
|
|
@ -7,16 +7,20 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-2">
|
<div class="col-2">
|
||||||
|
<div class="row d-inline-block col-12 alert alert-secondary p-1 px-2 mb-0">
|
||||||
|
<span><i class="fas fa-exclamation-circle mr-2"></i>按右鍵即可展開選單</span>
|
||||||
|
</div>
|
||||||
<div class="row d-inline-block col-12 p-0 my-2 text-center">
|
<div class="row d-inline-block col-12 p-0 my-2 text-center">
|
||||||
<input id="graCatSearch" name="graCatSearch" type="text" class="form-control form-control-sm d-inline-block" placeholder="搜尋" />
|
<input id="graCatSearch" name="graCatSearch" type="text" class="form-control form-control-sm d-inline-block" placeholder="搜尋" />
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex" id="graTree"></div>
|
<div class="d-flex" id="graTree"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-10">
|
<div class="col-10">
|
||||||
<div class="my-2">
|
<div class="row my-2">
|
||||||
<a href="javascript:;" id="creGraMan" class="btn btn-success">
|
<a href="javascript:;" id="creGraMan" class="btn btn-success">
|
||||||
+新增
|
+新增
|
||||||
</a>
|
</a>
|
||||||
|
<label id="curLevText" class="ml-3 mb-0 row m-0 align-items-center fs-1"></label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<table id="graTable" class="table table-bordered table-striped text-center m-0">
|
<table id="graTable" class="table table-bordered table-striped text-center m-0">
|
||||||
@ -42,7 +46,7 @@
|
|||||||
<form id="uploadForm">
|
<form id="uploadForm">
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<!--<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="form-label" for="upPicNum">圖號</label>
|
<label class="form-label" for="upPicNum">圖號</label>
|
||||||
<input type="text" id="graPicNum" name="graPicNum" class="form-control">
|
<input type="text" id="graPicNum" name="graPicNum" class="form-control">
|
||||||
@ -53,14 +57,14 @@
|
|||||||
<label class="form-label" for="upPicName">圖名</label>
|
<label class="form-label" for="upPicName">圖名</label>
|
||||||
<input type="text" id="graPicName" name="graPicName" class="form-control">
|
<input type="text" id="graPicName" name="graPicName" class="form-control">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>-->
|
||||||
<div class="col-md-6 mt-3">
|
<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="form-label" for="graSelMain">圖資類別</label>
|
<label class="form-label" for="graSelMain">圖資類別</label>
|
||||||
<label id="graLayer" class="m-0 fs-1 col-12 p-0"></label>
|
<label id="graLayer" class="m-0 fs-1 col-12 p-0"></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12 mt-6">
|
<div class="col-md-12 mt-2">
|
||||||
<label>原設計</label>
|
<label>原設計</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
@ -82,7 +86,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12 mt-3">
|
<!--<div class="col-md-12 mt-3">
|
||||||
<label>竣工圖</label>
|
<label>竣工圖</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
@ -100,7 +104,7 @@
|
|||||||
<input name="file" type="file" multiple />
|
<input name="file" type="file" multiple />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
@ -159,39 +163,25 @@
|
|||||||
let tag = "#graTable";
|
let tag = "#graTable";
|
||||||
|
|
||||||
let column_defs = [
|
let column_defs = [
|
||||||
{ "targets": [0], "width": "10%", "sortable": true },
|
{ "targets": [0], "width": "20%", "sortable": true },
|
||||||
{ "targets": [1], "width": "25%", "sortable": true },
|
{ "targets": [1], "width": "60%", "sortable": true },
|
||||||
{ "targets": [2], "width": "25%", "sortable": true },
|
{ "targets": [2], "width": "20%", "sortable": true },
|
||||||
{ "targets": [3], "width": "25%", "sortable": true },
|
|
||||||
{ "targets": [4], "width": "15%", "sortable": false },
|
|
||||||
];
|
];
|
||||||
|
|
||||||
let columns = [
|
let columns = [
|
||||||
{
|
{
|
||||||
"title": "圖號",
|
"title": "編號",
|
||||||
"data": "code",
|
"data": "id",
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "圖名",
|
"title": "檔案",
|
||||||
"data": "name",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "原設計",
|
|
||||||
"data": "oriOrgName",
|
"data": "oriOrgName",
|
||||||
"render": function (data, type, row, meta) {
|
"render": function (data, type, row, meta) {
|
||||||
return `<a id="oriDwgDown${row.id}" href="javascript:;">${row.oriOrgName ?? ""}</a>`;
|
return `<a id="oriDwgDown${row.id}" href="javascript:;">${row.oriOrgName ?? ""}</a>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "竣工圖",
|
|
||||||
"data": "donOrgName",
|
|
||||||
"render": function (data, type, row, meta) {
|
|
||||||
return `<a id="donDwgDown${row.id}" href="javascript:;">${row.donOrgName ?? ""}</a>`;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"title": "功能",
|
"title": "功能",
|
||||||
"data": "id",
|
"data": "id",
|
||||||
@ -246,25 +236,25 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
uploader.graMyDesignDiagram = $("#graMyDesignDiagram").dropzone(option);
|
uploader.graMyDesignDiagram = $("#graMyDesignDiagram").dropzone(option);
|
||||||
uploader.graMyAsBuilt = $("#graMyAsBuilt").dropzone(option);
|
/*uploader.graMyAsBuilt = $("#graMyAsBuilt").dropzone(option);*/
|
||||||
|
|
||||||
uploader["graMyDesignDiagram"][0].dropzone.on("addedfile", file => {
|
uploader["graMyDesignDiagram"][0].dropzone.on("addedfile", file => {
|
||||||
uploadFiles["graMyDesignDiagram"] = file;
|
uploadFiles["graMyDesignDiagram"] = file;
|
||||||
})
|
})
|
||||||
|
|
||||||
uploader["graMyAsBuilt"][0].dropzone.on("addedfile", file => {
|
//uploader["graMyAsBuilt"][0].dropzone.on("addedfile", file => {
|
||||||
uploadFiles["graMyAsBuilt"] = file;
|
// uploadFiles["graMyAsBuilt"] = file;
|
||||||
})
|
//})
|
||||||
|
|
||||||
uploader["graMyDesignDiagram"][0].dropzone.on("removedfile", file => {
|
uploader["graMyDesignDiagram"][0].dropzone.on("removedfile", file => {
|
||||||
uploadFiles["graMyDesignDiagram"] = {};
|
uploadFiles["graMyDesignDiagram"] = {};
|
||||||
file.previewElement.remove();
|
file.previewElement.remove();
|
||||||
})
|
})
|
||||||
|
|
||||||
uploader["graMyAsBuilt"][0].dropzone.on("removedfile", file => {
|
//uploader["graMyAsBuilt"][0].dropzone.on("removedfile", file => {
|
||||||
uploadFiles["graMyAsBuilt"] = {};
|
// uploadFiles["graMyAsBuilt"] = {};
|
||||||
file.previewElement.remove();
|
// file.previewElement.remove();
|
||||||
})
|
//})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增資料
|
// 新增資料
|
||||||
@ -319,8 +309,6 @@
|
|||||||
fileHelper.readAndPreviewImages(this.files, 'upForAsBuilt', 0, 86, '<div class="file-item">', '<button class="del-small-trash" name="btnDelImg" ><i class="fa fa-times"></i></button></div>');
|
fileHelper.readAndPreviewImages(this.files, 'upForAsBuilt', 0, 86, '<div class="file-item">', '<button class="del-small-trash" name="btnDelImg" ><i class="fa fa-times"></i></button></div>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 關閉 modal
|
// 關閉 modal
|
||||||
$('#uploadPicture').on('hidden.bs.modal', function (e) {
|
$('#uploadPicture').on('hidden.bs.modal', function (e) {
|
||||||
console.log("123456789");
|
console.log("123456789");
|
||||||
@ -349,11 +337,11 @@
|
|||||||
$("#graPicNum").val("");
|
$("#graPicNum").val("");
|
||||||
$("#graPicName").val("");
|
$("#graPicName").val("");
|
||||||
uploadFiles["graMyDesignDiagram"] = {};
|
uploadFiles["graMyDesignDiagram"] = {};
|
||||||
uploadFiles["graMyAsBuilt"] = {};
|
/*uploadFiles["graMyAsBuilt"] = {};*/
|
||||||
uploader["graMyDesignDiagram"][0].dropzone.removeAllFiles(true);
|
uploader["graMyDesignDiagram"][0].dropzone.removeAllFiles(true);
|
||||||
$("#graMyDesignDiagram .dz-preview").remove();
|
$("#graMyDesignDiagram .dz-preview").remove();
|
||||||
uploader["graMyAsBuilt"][0].dropzone.removeAllFiles(true);
|
//uploader["graMyAsBuilt"][0].dropzone.removeAllFiles(true);
|
||||||
$("#graMyAsBuilt .dz-preview").remove();
|
//$("#graMyAsBuilt .dz-preview").remove();
|
||||||
})
|
})
|
||||||
|
|
||||||
function getGraCatList(callback) {
|
function getGraCatList(callback) {
|
||||||
@ -365,18 +353,19 @@
|
|||||||
} else {
|
} else {
|
||||||
res.data.forEach(x => x.parent = x.system_parent_id);
|
res.data.forEach(x => x.parent = x.system_parent_id);
|
||||||
res.data.forEach(x => x.text = x.system_key);
|
res.data.forEach(x => x.text = x.system_key);
|
||||||
res.data.forEach(x => x.parent = x.parent == 0 ? "#" : x.parent);
|
res.data.forEach(x => x.parent = x.parent);
|
||||||
callback ? callback(res.data) : "";
|
callback ? callback(res.data) : "";
|
||||||
}
|
}
|
||||||
}, null, "POST").send();
|
}, null, "POST").send();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initTree(data) {
|
function initTree(data) {
|
||||||
|
|
||||||
treeEvent();
|
treeEvent();
|
||||||
let option = {
|
let option = {
|
||||||
core: {
|
core: {
|
||||||
"check_callback": true,
|
"check_callback": true,
|
||||||
data: data,
|
data: setTreeData(data),
|
||||||
themes: {
|
themes: {
|
||||||
name: "default-dark"
|
name: "default-dark"
|
||||||
},
|
},
|
||||||
@ -440,6 +429,7 @@
|
|||||||
$('#graTree').on("loaded.jstree", function (e, data) {
|
$('#graTree').on("loaded.jstree", function (e, data) {
|
||||||
let topNode = $('#graTree').jstree(true).get_node("#");
|
let topNode = $('#graTree').jstree(true).get_node("#");
|
||||||
$('#graTree').jstree(true).select_node(topNode.children[0]);
|
$('#graTree').jstree(true).select_node(topNode.children[0]);
|
||||||
|
$("#graTree").jstree("open_node", 0);
|
||||||
})
|
})
|
||||||
$('#graTree').on("select_node.jstree", function (e, data) {
|
$('#graTree').on("select_node.jstree", function (e, data) {
|
||||||
dtAjaxResetSendData(graTable, { layer_id: parseInt(data.node.id) });
|
dtAjaxResetSendData(graTable, { layer_id: parseInt(data.node.id) });
|
||||||
@ -447,6 +437,7 @@
|
|||||||
|
|
||||||
curLayerId = parseInt(data.node.id);
|
curLayerId = parseInt(data.node.id);
|
||||||
$("#graLayer").text(levelNameByNodeId(data.node));
|
$("#graLayer").text(levelNameByNodeId(data.node));
|
||||||
|
$("#curLevText").text(levelNameByNodeId(data.node));
|
||||||
})
|
})
|
||||||
$("#graTree").on('create_node.jstree', function (e, data) {
|
$("#graTree").on('create_node.jstree', function (e, data) {
|
||||||
let main = {};
|
let main = {};
|
||||||
@ -479,7 +470,7 @@
|
|||||||
toast_error(res.msg || common.SysErr);
|
toast_error(res.msg || common.SysErr);
|
||||||
} else {
|
} else {
|
||||||
getGraCatList((graCatData) => {
|
getGraCatList((graCatData) => {
|
||||||
data.instance.settings.core.data = graCatData;
|
data.instance.settings.core.data = setTreeData(graCatData);
|
||||||
data.instance.refresh(true);
|
data.instance.refresh(true);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -509,6 +500,12 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setTreeData(dataList) {
|
||||||
|
let parent = { parent: "#", text: "圖資管理", id: 0 };
|
||||||
|
dataList.push(parent);
|
||||||
|
return dataList;
|
||||||
|
}
|
||||||
|
|
||||||
function readGraph(id) {
|
function readGraph(id) {
|
||||||
let url = baseApiUrl + "/GraphManage/GraManRead";
|
let url = baseApiUrl + "/GraphManage/GraManRead";
|
||||||
objSendData.Data = { id: parseInt(id) };
|
objSendData.Data = { id: parseInt(id) };
|
||||||
@ -524,13 +521,13 @@
|
|||||||
$("#graPicName").val(res.data?.name);
|
$("#graPicName").val(res.data?.name);
|
||||||
$("#graLayer").text(levelNameByNodeId(res.data?.layer_id));
|
$("#graLayer").text(levelNameByNodeId(res.data?.layer_id));
|
||||||
if (res.data?.oriSavName != null) {
|
if (res.data?.oriSavName != null) {
|
||||||
fileObj = { name: res.data?.oriOrgName, dataUrl: baseApiUrl + varGraPath + res.data?.oriSavName, savename: res.data?.oriSavName, size:res.data?.oriSize };
|
fileObj = { name: res.data?.oriOrgName, dataUrl: baseApiUrl + varGraPath + res.data?.oriSavName, savename: res.data?.oriSavName, size: res.data?.oriSize };
|
||||||
uploader["graMyDesignDiagram"][0].dropzone?.displayExistingFile(fileObj);
|
uploader["graMyDesignDiagram"][0].dropzone?.displayExistingFile(fileObj);
|
||||||
}
|
}
|
||||||
if (res.data?.donSavName != null) {
|
//if (res.data?.donSavName != null) {
|
||||||
fileObj = { name: res.data?.donOrgName, dataUrl: baseApiUrl + varGraPath + res.data?.donSavName, savename: res.data?.donSavName, size: res.data?.donSize };
|
// fileObj = { name: res.data?.donOrgName, dataUrl: baseApiUrl + varGraPath + res.data?.donSavName, savename: res.data?.donSavName, size: res.data?.donSize };
|
||||||
uploader["graMyAsBuilt"][0].dropzone?.displayExistingFile(fileObj);
|
// uploader["graMyAsBuilt"][0].dropzone?.displayExistingFile(fileObj);
|
||||||
}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
}, null, "POST").send();
|
}, null, "POST").send();
|
||||||
@ -539,13 +536,14 @@
|
|||||||
function levelNameByNodeId(node) {
|
function levelNameByNodeId(node) {
|
||||||
let names = [];
|
let names = [];
|
||||||
let curNode = $('#graTree').jstree(true).get_node(node);
|
let curNode = $('#graTree').jstree(true).get_node(node);
|
||||||
|
let parents = curNode.parents.reverse();
|
||||||
|
|
||||||
$.each(curNode.parents, (idx, nodeId) => {
|
for (let i = parents.length - 1; i >= 0; i--) {
|
||||||
if (nodeId != "#") {
|
if (parents[i] != "#") {
|
||||||
let node = $('#graTree').jstree(true).get_node(nodeId);
|
let node = $('#graTree').jstree(true).get_node(parents[i]);
|
||||||
names.push(node.text);
|
names.push(node.text);
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
|
||||||
names.push(curNode.text);
|
names.push(curNode.text);
|
||||||
return names.join("/");
|
return names.join("/");
|
||||||
@ -556,17 +554,17 @@
|
|||||||
let cookies = new YourTeam.Utility.Cookie();
|
let cookies = new YourTeam.Utility.Cookie();
|
||||||
let url = "";
|
let url = "";
|
||||||
let graMyDesDiaFile = uploader["graMyDesignDiagram"][0].dropzone.files.filter(x => x.accepted == true)[0];
|
let graMyDesDiaFile = uploader["graMyDesignDiagram"][0].dropzone.files.filter(x => x.accepted == true)[0];
|
||||||
let graMyAsBuiFile = uploader["graMyAsBuilt"][0].dropzone.files.filter(x => x.accepted == true)[0];
|
/*let graMyAsBuiFile = uploader["graMyAsBuilt"][0].dropzone.files.filter(x => x.accepted == true)[0];*/
|
||||||
let fd = new FormData();
|
let fd = new FormData();
|
||||||
fd.append("code", $("#graPicNum").val());
|
fd.append("code", $("#graPicNum").val());
|
||||||
fd.append("layer_id", curLayerId);
|
fd.append("layer_id", curLayerId);
|
||||||
fd.append("name", $("#graPicName").val());
|
fd.append("name", $("#graPicName").val());
|
||||||
fd.append("oriOrgName", graMyDesDiaFile?.name ?? null);
|
fd.append("oriOrgName", graMyDesDiaFile?.name ?? null);
|
||||||
fd.append("donOrgName", graMyAsBuiFile?.name ?? null);
|
/*fd.append("donOrgName", graMyAsBuiFile?.name ?? null);*/
|
||||||
fd.append("oriSavName", graMyDesDiaFile?.savename ?? null);
|
fd.append("oriSavName", graMyDesDiaFile?.savename ?? null);
|
||||||
fd.append("donSavName", graMyAsBuiFile?.savename ?? null);
|
/*fd.append("donSavName", graMyAsBuiFile?.savename ?? null);*/
|
||||||
fd.append("oriFile", graMyDesDiaFile?.savename ? null : graMyDesDiaFile ?? null);
|
fd.append("oriFile", graMyDesDiaFile?.savename ? null : graMyDesDiaFile ?? null);
|
||||||
fd.append("donFile", graMyAsBuiFile?.savename ? null : graMyAsBuiFile ?? null);
|
/*fd.append("donFile", graMyAsBuiFile?.savename ? null : graMyAsBuiFile ?? null);*/
|
||||||
|
|
||||||
if (curActGraid == 0) {
|
if (curActGraid == 0) {
|
||||||
url = baseApiUrl + "/GraphManage/SaveGraMan";
|
url = baseApiUrl + "/GraphManage/SaveGraMan";
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<p style="text-align: center; font-weight: bold;">Robot Controls</p>
|
<p style="text-align: center; font-weight: bold;">Robot Controls</p>
|
||||||
<p id="id_printer">Selected_ID: </p>
|
<p id="id_printer">Selected_ID: </p>
|
||||||
<p id="all_id">All_ID: </p>
|
<p id="all_id">All_ID: </p>
|
||||||
<button id="1F1oor" onclick="move1Floor()">1 Floor</button>
|
<!--<button id="1F1oor" onclick="move1Floor()">1 Floor</button>
|
||||||
<button id="2F1oor" onclick="move2Floor()">2 Floor</button>
|
<button id="2F1oor" onclick="move2Floor()">2 Floor</button>
|
||||||
<button id="3F1oor" onclick="move3Floor()">3 Floor</button>
|
<button id="3F1oor" onclick="move3Floor()">3 Floor</button>
|
||||||
|
|
||||||
@ -30,7 +30,14 @@
|
|||||||
<button id="10F1oor" onclick="move10Floor()">10 Floor</button>
|
<button id="10F1oor" onclick="move10Floor()">10 Floor</button>
|
||||||
<button id="11F1oor" onclick="move11Floor()">11 Floor</button>
|
<button id="11F1oor" onclick="move11Floor()">11 Floor</button>
|
||||||
<button id="12F1oor" onclick="move12Floor()">12 Floor</button>
|
<button id="12F1oor" onclick="move12Floor()">12 Floor</button>
|
||||||
<button id="13F1oor" onclick="moveB1Floor()">B1 Floor</button>
|
<button id="13F1oor" onclick="moveB1Floor()">B1 Floor</button>-->
|
||||||
|
<label>Intensity:</label><input id="LightIntensity" />
|
||||||
|
<label>Distance:</label><input id="LightDistance" />
|
||||||
|
<label>Angle:</label><input id="LightAngle" />
|
||||||
|
<label>Penumbra:</label><input id="LightPenumbra" />
|
||||||
|
<label>Decay:</label><input id="LightDecay" />
|
||||||
|
<button onclick="setLightValue()">設定燈光</button>
|
||||||
|
<button id="Light1" onclick="newALight()">新增燈光</button>
|
||||||
<button type="button" class="btn btn-secondary" onclick="openOrCloseLight()">電源</button>
|
<button type="button" class="btn btn-secondary" onclick="openOrCloseLight()">電源</button>
|
||||||
<button type="button" class="btn btn-danger" onclick="changeColorHotspot()">變更熱點顏色</button>
|
<button type="button" class="btn btn-danger" onclick="changeColorHotspot()">變更熱點顏色</button>
|
||||||
<button type="button" class="btn btn-dark" onclick="loadHeatMap()">載入熱圖</button>
|
<button type="button" class="btn btn-dark" onclick="loadHeatMap()">載入熱圖</button>
|
||||||
@ -184,6 +191,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var curLightIsOpen = true;
|
var curLightIsOpen = true;
|
||||||
|
var light;
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDLm53ZA');
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDLm53ZA');
|
||||||
@ -230,11 +238,11 @@
|
|||||||
//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');
|
||||||
launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDK01FUCVFNiU4QiU4NiVFNyVCMyVCQiVFNyVCNSVCMV8lRTUlOEQlOEElRTklODAlOEYlRTYlOTglOEUlRTUlQkIlQkElRTclQUYlODlfMTJfMzAubndk');
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDK01FUCVFNiU4QiU4NiVFNyVCMyVCQiVFNyVCNSVCMV8lRTUlOEQlOEElRTklODAlOEYlRTYlOTglOEUlRTUlQkIlQkElRTclQUYlODlfMTJfMzAubndk');
|
||||||
|
|
||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwQVJDJUUzJTgwJTkxXzIwMjJfMTJfMTMubndk');//new ARC
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwQVJDJUUzJTgwJTkxXzIwMjJfMTJfMTMubndk');//new ARC
|
||||||
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwTUVQJUUzJTgwJTkxXzIwMjJfMTJfMTMubndj');//new MEP
|
//launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwTUVQJUUzJTgwJTkxXzIwMjJfMTJfMTMubndj');//new MEP
|
||||||
@ -244,82 +252,96 @@
|
|||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
function move1Floor() {
|
//function move1Floor() {
|
||||||
setElevatorSpeed(0.2);
|
// setElevatorSpeed(0.2);
|
||||||
setElevatorFloor(0);
|
// setElevatorFloor(0);
|
||||||
requestAnimationFrame(movElevator);
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move2Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(1);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move3Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(2);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move4Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(3);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move5Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(4);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move6Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(5);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move7Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(6);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move8Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(7);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move9Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(8);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move10Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(9);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move11Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(10);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function move12Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(11);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//function moveB1Floor() {
|
||||||
|
// setElevatorSpeed(0.2);
|
||||||
|
// setElevatorFloor(-1);
|
||||||
|
// requestAnimationFrame(movElevator);
|
||||||
|
//}
|
||||||
|
|
||||||
|
function newALight() {
|
||||||
|
//light = newLight();
|
||||||
|
//newLight();
|
||||||
}
|
}
|
||||||
|
|
||||||
function move2Floor() {
|
function setLightValue() {
|
||||||
setElevatorSpeed(0.2);
|
var intensity = document.getElementById("LightIntensity").value;
|
||||||
setElevatorFloor(1);
|
var distance = document.getElementById("LightDistance").value;
|
||||||
requestAnimationFrame(movElevator);
|
var angle = document.getElementById("LightAngle").value;
|
||||||
}
|
var penumbra = document.getElementById("LightPenumbra").value;
|
||||||
|
var decay = document.getElementById("LightDecay").value;
|
||||||
function move3Floor() {
|
setLightValues(intensity, distance, angle, penumbra, decay);
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(2);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move4Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(3);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move5Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(4);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move6Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(5);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move7Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(6);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move8Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(7);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move9Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(8);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move10Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(9);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move11Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(10);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function move12Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(11);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveB1Floor() {
|
|
||||||
setElevatorSpeed(0.2);
|
|
||||||
setElevatorFloor(-1);
|
|
||||||
requestAnimationFrame(movElevator);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeLightPower() {
|
function changeLightPower() {
|
||||||
@ -329,13 +351,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function openOrCloseLight() {
|
function openOrCloseLight() {
|
||||||
|
if (light != null) {
|
||||||
if (curLightIsOpen) {
|
if (curLightIsOpen) {
|
||||||
curLightIsOpen = false;
|
curLightIsOpen = false;
|
||||||
setLightOpenOrClose(curLightIsOpen);
|
setLightOpenOrClose(curLightIsOpen, light);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
curLightIsOpen = true;
|
curLightIsOpen = true;
|
||||||
setLightOpenOrClose(curLightIsOpen);
|
setLightOpenOrClose(curLightIsOpen, light);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,8 @@ let fragProxy;
|
|||||||
var targetFloorZ;
|
var targetFloorZ;
|
||||||
var elevatorSpeed;
|
var elevatorSpeed;
|
||||||
var selector = "#forgeViewer";
|
var selector = "#forgeViewer";
|
||||||
let myDataList;
|
var myDataList;
|
||||||
|
var lightList = [];//燈光清單
|
||||||
var levels;//剖面用
|
var levels;//剖面用
|
||||||
var lowerIdx;//剖面的下方樓層
|
var lowerIdx;//剖面的下方樓層
|
||||||
var upperIdx;//剖面的上方樓層
|
var upperIdx;//剖面的上方樓層
|
||||||
@ -675,15 +676,7 @@ function hideColor(nodeId) {//顏色改成透明
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------ 紀錄熱點座標 ---------------
|
|
||||||
function getHopspotPoint(data) {
|
|
||||||
//var av = Autodesk.Viewing;
|
|
||||||
myDataList = data;
|
|
||||||
//viewer.addEventListener(av.GEOMETRY_LOADED_EVENT, addHotPoint, {
|
|
||||||
// once: true,
|
|
||||||
//});
|
|
||||||
}
|
|
||||||
//-------------------- end ----------------------
|
|
||||||
|
|
||||||
//------------------- 加入熱點 -----------------
|
//------------------- 加入熱點 -----------------
|
||||||
async function addHotPoint(data) {
|
async function addHotPoint(data) {
|
||||||
@ -714,10 +707,13 @@ async function addHotPoint(data) {
|
|||||||
|
|
||||||
myDataList.forEach((myData, index) => {
|
myDataList.forEach((myData, index) => {
|
||||||
const dbId = 10 + index;
|
const dbId = 10 + index;
|
||||||
const myPosition = myData.position;
|
const myPosition = JSON.parse(myData.device_coordinate_3d);
|
||||||
const viewable = new DataVizCore.SpriteViewable(myPosition, style, dbId);
|
const viewable = new DataVizCore.SpriteViewable(myPosition, style, dbId);
|
||||||
myData._dbId = dbId;
|
myData._dbId = dbId;
|
||||||
viewableData.addViewable(viewable);
|
viewableData.addViewable(viewable);
|
||||||
|
if (myData.device_number.indexOf("_LT_L1_") > -1) {
|
||||||
|
lightList.push({ dbid: myData.forge_dbid, name: myData.device_number, spotLight: newLight(myPosition) });
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
await viewableData.finish();
|
await viewableData.finish();
|
||||||
@ -730,7 +726,6 @@ async function addHotPoint(data) {
|
|||||||
if (event != undefined && event != null) {
|
if (event != undefined && event != null) {
|
||||||
if (event.dbId >= dbIdStart && event.dbId <= dbIdEnd) {//event.dbId > 0 && event.dbId < 19
|
if (event.dbId >= dbIdStart && event.dbId <= dbIdEnd) {//event.dbId > 0 && event.dbId < 19
|
||||||
console.log(`Sprite clicked: ${event.dbId}`);
|
console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
openHotspotModal();
|
|
||||||
for (let i = dbIdStart; i <= dbIdEnd; i++) {
|
for (let i = dbIdStart; i <= dbIdEnd; i++) {
|
||||||
changeColorForHotspot(i, false);
|
changeColorForHotspot(i, false);
|
||||||
changeScaleForHotspot(i, false);
|
changeScaleForHotspot(i, false);
|
||||||
@ -757,7 +752,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 {
|
||||||
// // 處理沒有選取元件的邏輯
|
// // 處理沒有選取元件的邏輯
|
||||||
@ -802,49 +796,14 @@ async function changeScaleForHotspot(dbId, type = true) {
|
|||||||
|
|
||||||
//------------------- end --------------
|
//------------------- end --------------
|
||||||
|
|
||||||
//----------------- 開關熱點小視窗 ----------------------
|
//------------------------------ 熱圖 ---------------------------------
|
||||||
function openHotspotModal() {
|
async function loadHeatmaps(model, roomsArr) {
|
||||||
//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) {
|
|
||||||
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
||||||
|
var devices = [];
|
||||||
|
|
||||||
//取三個空調設備的位置打點
|
myDataList.forEach((myData, index) => {
|
||||||
const devices = [
|
devices.push({ id: index, position: JSON.parse(myData.device_coordinate_3d), sensorTypes: ["temperature", "humidity"] });
|
||||||
{
|
});
|
||||||
id: "Oficina 5",
|
|
||||||
//name: "Oficina-",
|
|
||||||
position: { x: 6.98, y: -19.00, z: 16.86 }, // x: 0, y: 25, z: -2.5 (-4.93, -20.61, 16.86)
|
|
||||||
sensorTypes: ["temperature", "humidity"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "Oficina 4",
|
|
||||||
//name: "Oficina-",
|
|
||||||
position: { x: 35.85, y: -2.24, z: 16.86 }, // x: 0, y: 25.03, z: -2.52 (23.94, -3.85, 16.86)
|
|
||||||
sensorTypes: ["temperature", "humidity"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "Oficina 3",
|
|
||||||
//name: "Oficina-",
|
|
||||||
position: { x: 6.98, y: -2.24, z: 16.86 }, // x: 0, y: 25.03, z: -2.52 (-4.93, -3.85, 16.86)
|
|
||||||
sensorTypes: ["temperature", "humidity"]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
//冷氣N5: (-4.93, -20.61, 16.86), N4: (23.94, -3.85, 16.86), N3: (-4.93, -3.85, 16.86)
|
|
||||||
|
|
||||||
// Initialize sensor values
|
// Initialize sensor values
|
||||||
let sensorVals = [];
|
let sensorVals = [];
|
||||||
@ -853,7 +812,9 @@ async function loadHeatmaps(model) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const roomDbIds = [];
|
const roomDbIds = [];
|
||||||
roomDbIds.push(7567);
|
for (var i = 0; i < roomsArr.length; i++) {
|
||||||
|
roomDbIds.push(roomsArr[i]);
|
||||||
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
SurfaceShadingData,
|
SurfaceShadingData,
|
||||||
@ -878,11 +839,10 @@ async function loadHeatmaps(model) {
|
|||||||
|
|
||||||
// Setup surface shading
|
// Setup surface shading
|
||||||
await dataVizExtn.setupSurfaceShading(model, heatmapData);
|
await dataVizExtn.setupSurfaceShading(model, heatmapData);
|
||||||
|
|
||||||
dataVizExtn.registerSurfaceShadingColors("temperature", [0xff0000, 0x0000ff]);
|
dataVizExtn.registerSurfaceShadingColors("temperature", [0xff0000, 0x0000ff]);
|
||||||
|
|
||||||
function getSensorValue(device, sensorType) {
|
function getSensorValue(device, sensorType) {
|
||||||
return sensorVals[parseInt(device.id.slice(-1)) - 1];
|
return sensorVals[parseInt(device.id)];
|
||||||
}
|
}
|
||||||
|
|
||||||
dataVizExtn.renderSurfaceShading("Room Panel", "temperature", getSensorValue);
|
dataVizExtn.renderSurfaceShading("Room Panel", "temperature", getSensorValue);
|
||||||
@ -895,95 +855,7 @@ async function loadHeatmaps(model) {
|
|||||||
dataVizExtn.updateSurfaceShading(getSensorValue);
|
dataVizExtn.updateSurfaceShading(getSensorValue);
|
||||||
}, 2000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
//------------------ end --------------------------------
|
//------------------------------ end ----------------------------------
|
||||||
async function loadHeatmapsForFloor(model) {
|
|
||||||
|
|
||||||
const dataVizExtn = await viewer.loadExtension("Autodesk.DataVisualization");
|
|
||||||
|
|
||||||
//x: -17.33, y: 51.03, z: -2.52
|
|
||||||
const devices = [
|
|
||||||
{
|
|
||||||
id: "Oficina 5",
|
|
||||||
//name: "Oficina-",
|
|
||||||
position: { x: 6.98, y: -19.00, z: 16.86 }, // x: 0, y: 25, z: -2.5 (-4.93, -20.61, 16.86)
|
|
||||||
sensorTypes: ["temperature", "humidity"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "Oficina 4",
|
|
||||||
//name: "Oficina-",
|
|
||||||
position: { x: 35.85, y: -2.24, z: 16.86 }, // x: 0, y: 25.03, z: -2.52 (23.94, -3.85, 16.86)
|
|
||||||
sensorTypes: ["temperature", "humidity"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "Oficina 3",
|
|
||||||
//name: "Oficina-",
|
|
||||||
position: { x: 6.98, y: -2.24, z: 16.86 }, // x: 0, y: 25.03, z: -2.52 (-4.93, -3.85, 16.86)
|
|
||||||
sensorTypes: ["temperature", "humidity"]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
// Initialize sensor values
|
|
||||||
let sensorVals = [];
|
|
||||||
for (let i = 0; i < devices.length; i++) {
|
|
||||||
sensorVals[i] = Math.random();
|
|
||||||
}
|
|
||||||
|
|
||||||
const roomDbIds = [];
|
|
||||||
|
|
||||||
roomDbIds.push(7567);
|
|
||||||
|
|
||||||
const {
|
|
||||||
SurfaceShadingData,
|
|
||||||
SurfaceShadingPoint,
|
|
||||||
SurfaceShadingNode,
|
|
||||||
} = Autodesk.DataVisualization.Core;
|
|
||||||
|
|
||||||
const shadingNode = new SurfaceShadingNode("Room Panel", roomDbIds);
|
|
||||||
|
|
||||||
devices.forEach((device) => {
|
|
||||||
const shadingPoint = new SurfaceShadingPoint(
|
|
||||||
device.id,
|
|
||||||
device.position,
|
|
||||||
device.sensorTypes
|
|
||||||
);
|
|
||||||
shadingNode.addPoint(shadingPoint);
|
|
||||||
});
|
|
||||||
|
|
||||||
const heatmapData = new SurfaceShadingData();
|
|
||||||
heatmapData.addChild(shadingNode);
|
|
||||||
heatmapData.initialize(model);
|
|
||||||
|
|
||||||
// Setup surface shading
|
|
||||||
await dataVizExtn.setupSurfaceShading(model, heatmapData);
|
|
||||||
|
|
||||||
//dataVizExtn.registerSurfaceShadingColors("co2", [0x00ff00, 0xff0000]);
|
|
||||||
dataVizExtn.registerSurfaceShadingColors("temperature", [0xff0000, 0x0000ff]);
|
|
||||||
|
|
||||||
function getSensorValue(device, sensorType) {
|
|
||||||
return sensorVals[parseInt(device.id.slice(-1)) - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
dataVizExtn.renderSurfaceShading("Room Panel", "temperature", getSensorValue);
|
|
||||||
|
|
||||||
setInterval(() => {
|
|
||||||
// Modify sensor values.
|
|
||||||
for (let i = 0; i < devices.length; i++) {
|
|
||||||
sensorVals[i] = Math.random();
|
|
||||||
}
|
|
||||||
dataVizExtn.updateSurfaceShading(getSensorValue);
|
|
||||||
}, 2000);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
async function loadHeatmap() {
|
|
||||||
const model = viewer.model;
|
|
||||||
loadHeatmaps(model);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function loadHeatmapForFloor() {
|
|
||||||
const model = viewer.model;
|
|
||||||
loadHeatmapsForFloor(model);
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------ 剖面 ----------------------
|
//------------ 剖面 ----------------------
|
||||||
async function getRemoteLevels() {
|
async function getRemoteLevels() {
|
||||||
@ -1038,3 +910,48 @@ function profile() {
|
|||||||
this.viewer.setCutPlanes([upperCutPlaneParam, lowerCutPlaneParam]);
|
this.viewer.setCutPlanes([upperCutPlaneParam, lowerCutPlaneParam]);
|
||||||
}
|
}
|
||||||
//----------------- end -----------------------------------------------
|
//----------------- end -----------------------------------------------
|
||||||
|
//新增燈光
|
||||||
|
async function newLight(lightPosition) {
|
||||||
|
//聚光燈
|
||||||
|
spotLight = new THREE.SpotLight(0xff0000, 200, 20, 0.6, 0.5, 10);
|
||||||
|
spotLight.position.set(lightPosition.x, lightPosition.y, lightPosition.z);
|
||||||
|
spotLight.castShadow = false;
|
||||||
|
spotLight.visible = true;
|
||||||
|
spotLight.target.position.set(lightPosition.x, lightPosition.y, lightPosition.z-20);
|
||||||
|
viewer.scene.add(spotLight.target);
|
||||||
|
viewer.scene.add(spotLight);
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
|
||||||
|
return spotLight;
|
||||||
|
}
|
||||||
|
|
||||||
|
//調整燈光參數 setLightValues(13593, 10, 10, 0.1, 0.3, 1, 0xffff00);
|
||||||
|
async function setLightValues(dbid, intensity, distance, angle, penumbra, decay, color) {
|
||||||
|
for (var i = 0; i < lightList.length; i++) {
|
||||||
|
if (lightList[i].dbid == dbid) {
|
||||||
|
lightList[i].spotLight.intensity = intensity;
|
||||||
|
lightList[i].spotLight.distance = distance;
|
||||||
|
lightList[i].spotLight.angle = angle;
|
||||||
|
lightList[i].spotLight.penumbra = penumbra;
|
||||||
|
lightList[i].spotLight.decay = decay;
|
||||||
|
|
||||||
|
var tempcolor = new THREE.Color().setHex(color);
|
||||||
|
lightList[i].spotLight.color = tempcolor;
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//======================== 外部呼叫function ===========================
|
||||||
|
//紀錄熱點座標
|
||||||
|
function getHopspotPoint(data) {
|
||||||
|
myDataList = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
//呼叫載入熱圖
|
||||||
|
async function toLoadHeatmap(roomArr) {
|
||||||
|
const model = viewer.model;
|
||||||
|
loadHeatmaps(model, roomArr);
|
||||||
|
}
|
||||||
|
//============================= end ===================================
|
@ -5,7 +5,7 @@ var elevatorSpeed;
|
|||||||
var allDbIdsStr;
|
var allDbIdsStr;
|
||||||
let bulbLight;//點燈
|
let bulbLight;//點燈
|
||||||
let spotLight;//聚光燈
|
let spotLight;//聚光燈
|
||||||
var myDataList;
|
var myDataList;//設備清單
|
||||||
var viewableData;
|
var viewableData;
|
||||||
var dataVizExtn;
|
var dataVizExtn;
|
||||||
var spriteColorRed;
|
var spriteColorRed;
|
||||||
@ -71,6 +71,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 color = new THREE.Vector4(255 / 255, 0, 0, 1);
|
//var color = new THREE.Vector4(255 / 255, 0, 0, 1);
|
||||||
@ -172,7 +173,7 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
const fragList = model.getFragmentList();
|
const fragList = model.getFragmentList();
|
||||||
|
|
||||||
|
|
||||||
loadHeatmaps(model);
|
//loadHeatmaps(model);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -270,7 +271,7 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
e.properties.forEach(function (item) {
|
e.properties.forEach(function (item) {
|
||||||
if (item.displayName == "【tag_id】") { // Tag_name tag_id 【tag_id】
|
if (item.displayName == "【tag_id】") { // Tag_name tag_id 【tag_id】
|
||||||
if (item.displayValue != "") {
|
if (item.displayValue != "") {
|
||||||
if ((item.displayValue).indexOf('TPE_B1_ME_M10') > -1) {
|
if ((item.displayValue).indexOf('TPE_B1_LT_L1') > -1) {// TPE_B1_ME_M10
|
||||||
console.log("--------------------------------------------------");
|
console.log("--------------------------------------------------");
|
||||||
console.log("Tag_name dbid: " + e.dbId);
|
console.log("Tag_name dbid: " + e.dbId);
|
||||||
console.log("value: " + item.displayValue);
|
console.log("value: " + item.displayValue);
|
||||||
@ -295,7 +296,7 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
bounds.union(box);
|
bounds.union(box);
|
||||||
}, true);
|
}, true);
|
||||||
var position = bounds.center();
|
var position = bounds.center();
|
||||||
if ((item.displayValue).indexOf('TPE_B1_ME_M10') > -1) {
|
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("position: (" + (position.x).toFixed(2) + ", " + (position.y).toFixed(2) + ", " + (position.z).toFixed(2) + ")");
|
||||||
console.log("--------------------------------------------------");
|
console.log("--------------------------------------------------");
|
||||||
}
|
}
|
||||||
@ -463,6 +464,9 @@ function onDocumentLoadSuccess(doc) {
|
|||||||
//spotLight.target = cube;
|
//spotLight.target = cube;
|
||||||
//viewer.scene.add(spotLight);
|
//viewer.scene.add(spotLight);
|
||||||
|
|
||||||
|
//var light = newLight();
|
||||||
|
/*newLight();*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------- 加入熱點 -----------------
|
//------------------- 加入熱點 -----------------
|
||||||
@ -477,28 +481,24 @@ async function addHotPoint(data) {
|
|||||||
|
|
||||||
const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon);
|
const style = new DataVizCore.ViewableStyle(viewableType, spriteColor, spriteIcon);
|
||||||
|
|
||||||
|
|
||||||
//function onSpriteClicked(event) {
|
//function onSpriteClicked(event) {
|
||||||
// console.log(`Sprite clicked: ${event.dbId}`);
|
// console.log(`Sprite clicked: ${event.dbId}`);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//熱點 點擊事件註冊
|
//熱點 點擊事件註冊
|
||||||
viewer.addEventListener(DataVizCore.MOUSE_CLICK, onSpriteClicked);//MOUSE_CLICK SPRITE_SELECTED
|
viewer.addEventListener(DataVizCore.MOUSE_CLICK, onSpriteClicked);//MOUSE_CLICK SPRITE_SELECTED
|
||||||
//viewer.addEventListener(DataVizCore.MOUSE_CLICK_OUT, onSpriteClickedOut);
|
|
||||||
//viewer.addEventListener(DataVizCore.MOUSE_DOWN, onSpriteClicked);
|
|
||||||
//viewer.addEventListener(DataVizCore.MOUSE_HOVERING, onSpriteHovering);
|
|
||||||
|
|
||||||
viewer.addEventListener(
|
//viewer.addEventListener(
|
||||||
Autodesk.Viewing.SELECTION_CHANGED_EVENT,
|
// Autodesk.Viewing.SELECTION_CHANGED_EVENT,
|
||||||
onSelectionChange
|
// onSelectionChange
|
||||||
);
|
//);
|
||||||
|
|
||||||
viewableData = new DataVizCore.ViewableData();
|
viewableData = new DataVizCore.ViewableData();
|
||||||
viewableData.spriteSize = 24; // Sprites as points of size 24 x 24 pixels
|
viewableData.spriteSize = 24; // Sprites as points of size 24 x 24 pixels
|
||||||
|
|
||||||
//熱圖 打點 x: 0, y: 25.03, z: -2.52 三菱
|
//熱圖 打點 x: 0, y: 25.03, z: -2.52 三菱 43.72, -15.65, -44.96 // 43.72, -15.65, -44.96
|
||||||
myDataList = [{ position: { x: -21.95, y: 8.92, z: 63.27 } }, //-21.95, 8.92, 63.27
|
myDataList = [{ position: { x: 43.72, y: -15.65, z: -44.96 } }, //-21.95, 8.92, 63.27 // -7.58, 18.20, -0.25
|
||||||
{ position: { x: -21.95, y: 7.61, z: 63.27 } },//-21.95, 7.61, 63.27
|
{ position: { x: 43.72, y: -15.65, z: -60 } },//-21.95, 7.61, 63.27
|
||||||
{ position: { x: -21.95, y: 6.43, z: 63.27 } },//-21.95, 6.43, 63.27
|
{ position: { x: -21.95, y: 6.43, z: 63.27 } },//-21.95, 6.43, 63.27
|
||||||
{ position: { x: -21.95, y: 5.31, z: 63.27 } }//-21.95, 5.31, 63.27
|
{ position: { x: -21.95, y: 5.31, z: 63.27 } }//-21.95, 5.31, 63.27
|
||||||
];// x: -17.33, y: 51.03, z: -2.52 ; x: -23.21, y: 51.03, z: -2.52
|
];// x: -17.33, y: 51.03, z: -2.52 ; x: -23.21, y: 51.03, z: -2.52
|
||||||
@ -571,6 +571,7 @@ async function addHotPoint(data) {
|
|||||||
// console.log(`The mouse hovers off ${targetDbId}`);
|
// console.log(`The mouse hovers off ${targetDbId}`);
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
//------------------- end --------------
|
//------------------- end --------------
|
||||||
|
|
||||||
@ -622,21 +623,21 @@ function changeColorForHotspot(dbId) {
|
|||||||
// // event (e.g., update UI to a state where no selection is made).
|
// // event (e.g., update UI to a state where no selection is made).
|
||||||
//}
|
//}
|
||||||
|
|
||||||
function onSelectionChange(event) {
|
//function onSelectionChange(event) {
|
||||||
if (event != undefined && event != null) {
|
// if (event != undefined && event != null) {
|
||||||
const dbIds = event.dbIdArray;
|
// const dbIds = event.dbIdArray;
|
||||||
|
|
||||||
if (dbIds.length > 0) {
|
// if (dbIds.length > 0) {
|
||||||
// 處理已選取元件的邏輯
|
// // 處理已選取元件的邏輯
|
||||||
|
|
||||||
//openHotspotModal();
|
// //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 {
|
||||||
// 處理沒有選取元件的邏輯
|
// // 處理沒有選取元件的邏輯
|
||||||
console.log("no item");
|
// console.log("no item");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
//---------------- end -----------------------------
|
//---------------- end -----------------------------
|
||||||
|
|
||||||
//----------------- 開關熱點小視窗 ----------------------
|
//----------------- 開關熱點小視窗 ----------------------
|
||||||
@ -657,30 +658,6 @@ function closeHotspotModal() {
|
|||||||
}
|
}
|
||||||
//------------------ end --------------------------------
|
//------------------ end --------------------------------
|
||||||
|
|
||||||
//-------------- 更改燈光範圍 --------------------------
|
|
||||||
function setLightPower(value) {
|
|
||||||
//bulbLight.intensity = (value * 10);
|
|
||||||
//bulbLight.distance = value;
|
|
||||||
viewer.impl.sceneUpdated(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setLightOpenOrClose(value) {
|
|
||||||
if (value)
|
|
||||||
spotLight.visible = true;
|
|
||||||
else {
|
|
||||||
spotLight.visible = false;
|
|
||||||
}
|
|
||||||
viewer.impl.sceneUpdated(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setLightTransparency(value) {
|
|
||||||
bulbLight.intensity = (value * 10);
|
|
||||||
//bulbLight.
|
|
||||||
viewer.impl.sceneUpdated(true);
|
|
||||||
}
|
|
||||||
//------------- end -----------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
//function getPosition(nodeId) {
|
//function getPosition(nodeId) {
|
||||||
function getFragmentWorldMatrixByNodeId(nodeId, viewer) {
|
function getFragmentWorldMatrixByNodeId(nodeId, viewer) {
|
||||||
let tree = viewer.model.getData().instanceTree;
|
let tree = viewer.model.getData().instanceTree;
|
||||||
@ -1394,3 +1371,78 @@ function profile() {
|
|||||||
this.viewer.setCutPlanes([upperCutPlaneParam, lowerCutPlaneParam]);
|
this.viewer.setCutPlanes([upperCutPlaneParam, lowerCutPlaneParam]);
|
||||||
}
|
}
|
||||||
//----------------- end -----------------------------------------------
|
//----------------- end -----------------------------------------------
|
||||||
|
|
||||||
|
//--------------------------- 聚光燈 ----------------------------------
|
||||||
|
async function newLight() {
|
||||||
|
//聚光燈
|
||||||
|
//var spotLight;//聚光燈
|
||||||
|
//color -(可選)燈光的十六進制顏色。默認值為 0xffffff(白色)。
|
||||||
|
//強度 -(可選)光強度 / 強度的數值。默認值為 1。
|
||||||
|
//distance - 燈光的最大範圍。默認值為 0(無限制)。
|
||||||
|
//angle - 光從其上界為 Math.PI / 2 的方向散射的最大角度。
|
||||||
|
//半影 - 由於半影而衰減的聚光燈錐體的百分比。取值介於 0 和 1 之間。默認值為零。
|
||||||
|
//decay - 光沿光的距離變暗的量。
|
||||||
|
spotLight = new THREE.SpotLight(0xffffff, 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.castShadow = false;
|
||||||
|
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
|
||||||
|
viewer.scene.add(spotLight.target);
|
||||||
|
|
||||||
|
viewer.scene.add(spotLight);
|
||||||
|
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
|
||||||
|
//return spotLight;
|
||||||
|
|
||||||
|
//加入點燈光
|
||||||
|
//bulbLight = new THREE.PointLight(0xff0000, 50, 20, 2);//0xff0000
|
||||||
|
//bulbLight.position.set(43.72, -15.65, -44.96);//17.880840301513672
|
||||||
|
//bulbLight.castShadow = true;
|
||||||
|
//viewer.scene.add(bulbLight);
|
||||||
|
//viewer.impl.sceneUpdated(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------- 更改燈光範圍 --------------------------
|
||||||
|
function setLightPower(value) {
|
||||||
|
//bulbLight.intensity = (value * 10);
|
||||||
|
//bulbLight.distance = value;
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setLightValues(intensity, distance, angle, penumbra, decay) {
|
||||||
|
spotLight.intensity = intensity;
|
||||||
|
spotLight.distance = distance;
|
||||||
|
spotLight.angle = angle;
|
||||||
|
spotLight.penumbra = penumbra;
|
||||||
|
spotLight.decay = decay;
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setLightOpenOrClose(value, light) {
|
||||||
|
if (value) {
|
||||||
|
light.visible = true;
|
||||||
|
//spotLight.visible = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
light.visible = false;
|
||||||
|
//spotLight.visible = false;
|
||||||
|
}
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setLightTransparency(value) {
|
||||||
|
bulbLight.intensity = (value * 10);
|
||||||
|
//bulbLight.
|
||||||
|
viewer.impl.sceneUpdated(true);
|
||||||
|
}
|
||||||
|
//------------- end -----------------------------------
|
||||||
|
|
||||||
|
@ -888,5 +888,41 @@ namespace Repository.BaseRepository.Implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion AddOneReturnId
|
#endregion AddOneReturnId
|
||||||
|
|
||||||
|
#region TruncateTable (清空資料表)
|
||||||
|
/// <summary>
|
||||||
|
/// 清空資料表資料
|
||||||
|
/// TRUNCATE TABLE {tableName}
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="table_name"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual async Task TruncateTable(string table_name)
|
||||||
|
{
|
||||||
|
using (IDbConnection conn = GetDbConnection())
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
using (var trans = conn.BeginTransaction())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sql = $"TRUNCATE TABLE {table_name}";
|
||||||
|
await conn.ExecuteAsync(sql, null, trans);
|
||||||
|
|
||||||
|
trans.Commit();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
trans.Rollback();
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion TruncateTable
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -181,5 +181,12 @@ namespace Repository.BaseRepository.Interface
|
|||||||
/// <returns>
|
/// <returns>
|
||||||
/// </returns>
|
/// </returns>
|
||||||
Task<int> AddOneByCustomTableReturnId(Dictionary<string, object> dict, string Table_name, bool returnId = true);
|
Task<int> AddOneByCustomTableReturnId(Dictionary<string, object> dict, string Table_name, bool returnId = true);
|
||||||
|
/// <summary>
|
||||||
|
/// 清空table資料
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="table_name">資料表名稱</param>
|
||||||
|
/// <returns>
|
||||||
|
/// </returns>
|
||||||
|
Task TruncateTable(string table_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user