Merge remote-tracking branch 'origin/test'
This commit is contained in:
commit
4b2871b8d1
@ -6,7 +6,7 @@ NODE_ENV = 'development'
|
||||
# VUE_APP_BASE_API = 'https://joylink.club/jlcloud'
|
||||
# VUE_APP_BASE_API = 'http://192.168.3.4:9000'
|
||||
VUE_APP_BASE_API = 'http://192.168.3.6:9000'
|
||||
VUE_VOICE_API = 'https://test.joylink.club'
|
||||
VUE_APP_VOICE_API = 'https://test.joylink.club'
|
||||
|
||||
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
|
||||
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
|
||||
|
@ -4,4 +4,4 @@ VUE_APP_PRO = 'local'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = 'https://joylink.club/jlcloud'
|
||||
VUE_VOICE_API = 'https://joylink.club'
|
||||
VUE_APP_VOICE_API = 'https://joylink.club'
|
||||
|
@ -3,4 +3,4 @@ NODE_ENV = 'production'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = 'https://joylink.club/jlcloud'
|
||||
VUE_VOICE_API = 'https://joylink.club'
|
||||
VUE_APP_VOICE_API = 'https://joylink.club'
|
||||
|
@ -3,4 +3,4 @@ NODE_ENV = 'test'
|
||||
|
||||
# base api
|
||||
VUE_APP_BASE_API = 'https://test.joylink.club/jlcloud'
|
||||
VUE_VOICE_API = 'https://test.joylink.club'
|
||||
VUE_APP_VOICE_API = 'https://test.joylink.club'
|
||||
|
@ -310,3 +310,12 @@ export function getSimulationConversationIdNew(params, group) {
|
||||
params: params
|
||||
});
|
||||
}
|
||||
|
||||
// 获取、微信仿真聊天接口(新版地图)
|
||||
export function uploadAudioFileNew (group, lang, per, conversationId, file) {
|
||||
return request({
|
||||
url: `/simulation/${group}/wx/chat?conversationId=${conversationId}&lang=${lang}&per=${per}`,
|
||||
method: 'post',
|
||||
data: file
|
||||
});
|
||||
}
|
||||
|
@ -89,14 +89,14 @@ export function putMapOffLine(mapId) {
|
||||
});
|
||||
}
|
||||
|
||||
/** 修改发布地图名称*/
|
||||
export function updatePublishMapName(data) {
|
||||
return request({
|
||||
url: `/api/map/${data.mapId}/updateName`,
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
// /** 修改发布地图名称*/
|
||||
// export function updatePublishMapName(data) {
|
||||
// return request({
|
||||
// url: `/api/map/${data.mapId}/updateName`,
|
||||
// method: 'put',
|
||||
// data: data
|
||||
// });
|
||||
// }
|
||||
|
||||
// 检测地图名称唯一性
|
||||
export function checkMapName(name) {
|
||||
@ -123,10 +123,19 @@ export function hasDoorStationList(mapId) {
|
||||
});
|
||||
}
|
||||
|
||||
/** 修改发布地图城市*/
|
||||
export function updatePublishMapCity(data) {
|
||||
// /** 修改发布地图城市*/
|
||||
// export function updatePublishMapCity(data) {
|
||||
// return request({
|
||||
// url: `/api/map/${data.mapId}/city`,
|
||||
// method: 'put',
|
||||
// data: data
|
||||
// });
|
||||
// }
|
||||
|
||||
// 修改地图基本信息
|
||||
export function updatePublishMapInfo(data) {
|
||||
return request({
|
||||
url: `/api/map/${data.mapId}/city`,
|
||||
url: `/api/map/${data.mapId}/info`,
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
|
@ -247,6 +247,66 @@ export function updateRouting(data) {
|
||||
});
|
||||
}
|
||||
|
||||
/** 分页查询交路数据(新版)*/
|
||||
export function listRoutingData(mapId, params) {
|
||||
return request({
|
||||
url: `/api/mapBuild/${mapId}/routingData`,
|
||||
method: 'get',
|
||||
params: params
|
||||
});
|
||||
}
|
||||
|
||||
/** 创建交路(新版)*/
|
||||
export function addRoutingData(data) {
|
||||
return request({
|
||||
url: `/api/mapBuild/routingData`,
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除交路(新版)*/
|
||||
export function deleteRoutingData(routingId) {
|
||||
return request({
|
||||
url: `/api/mapBuild/routingData/${routingId}`,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取交路详情(新版)*/
|
||||
export function getRoutingData(routingId) {
|
||||
return request({
|
||||
url: `/api/mapBuild/routingData/${routingId}`,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
/** 生成交路区段数据(新版)*/
|
||||
export function gernateRoutingSection(data) {
|
||||
return request({
|
||||
url: `/api/mapBuild/routingData/generate`,
|
||||
method: 'PUT',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新交路(新版)*/
|
||||
export function updateRoutingData(data) {
|
||||
return request({
|
||||
url: `/api/mapBuild/routingData/${data.id}`,
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/** 根据地图交路区段生成站间运行等级(新版)*/
|
||||
export function generateStationRunData(routingId) {
|
||||
return request({
|
||||
url: `/api/draftMap/runLevel/generate/routing/${routingId}`,
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
|
||||
// 创建自动信号 old(旧数据)
|
||||
export function postAutoSignal(data) {
|
||||
return request({
|
||||
@ -575,3 +635,10 @@ export function getStationParkTimeList(mapId, params) {
|
||||
params
|
||||
});
|
||||
}
|
||||
/** 删除原有连锁关系,生成新联锁数据 */
|
||||
export function generateCI (mapId) {
|
||||
return request({
|
||||
url: `/api/mapBuild/${mapId}/ci/generateAndSave`,
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
|
@ -388,6 +388,14 @@ export function postGenerateLevel(data) {
|
||||
});
|
||||
}
|
||||
|
||||
/** 根据地图交路一键生成生成所有站间运行等级 (新版)*/
|
||||
export function generateAllStationRunData(mapId) {
|
||||
return request({
|
||||
url: `/api/draftMap/runLevel/generate/routing?mapId=${mapId}`,
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
|
||||
// 新建站间运行等级
|
||||
export function postSaveLevel(data) {
|
||||
return request({
|
||||
|
BIN
src/assets/iscs_icon/fire_hydrant.png
Normal file
BIN
src/assets/iscs_icon/fire_hydrant.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 330 B |
BIN
src/assets/iscs_icon/gas_fire_control.png
Normal file
BIN
src/assets/iscs_icon/gas_fire_control.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 705 B |
BIN
src/assets/iscs_icon/manual_alarm.png
Normal file
BIN
src/assets/iscs_icon/manual_alarm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 999 B |
BIN
src/assets/iscs_icon/smoke_detector.png
Normal file
BIN
src/assets/iscs_icon/smoke_detector.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 825 B |
336
src/components/PopMenu/popTip.vue
Normal file
336
src/components/PopMenu/popTip.vue
Normal file
@ -0,0 +1,336 @@
|
||||
<template>
|
||||
<div v-show="show" class="pop-menu pop_menu_tip" :style="{ height: height, left: tPosition.x+'px', top: tPosition.y+'px' }">
|
||||
<div v-if="tipMsg" class="tip-top" :style="{textAlign: textAlign}">
|
||||
<div>{{ tipMsg }}</div>
|
||||
<div>{{ tipSubhead }}</div>
|
||||
</div>
|
||||
<div v-for="(item, index) in menu" :key="index" class="" :style="{ width: width }">
|
||||
<div v-if="item.children">
|
||||
<el-popover
|
||||
placement="right-start"
|
||||
trigger="hover"
|
||||
:style="{width: calculateSubWidth(item)}"
|
||||
class="custom-popover"
|
||||
:popper-class="popClass"
|
||||
:offset="0"
|
||||
:close-delay="50"
|
||||
:visible-arrow="false"
|
||||
>
|
||||
<ul
|
||||
style="list-style: none; margin: 0px; padding: 0px; padding-right:0px; border-radius:0px;"
|
||||
>
|
||||
<li v-for="(child, idx) in item.children" :key="idx" class="hover-popover">
|
||||
<template v-if="child.type === 'separator'">
|
||||
<div class="separator"> </div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-button
|
||||
v-if="isShow(child)"
|
||||
type="text"
|
||||
class="dsp-block"
|
||||
:style="{color:checkIfDisabled(child)? '': 'black'}"
|
||||
:disabled="checkIfDisabled(child)"
|
||||
@click="child.handler(child)"
|
||||
>{{ child.label }}</el-button>
|
||||
</template>
|
||||
</li>
|
||||
</ul>
|
||||
<template v-if="item.type === 'separator'">
|
||||
<div class="separator"> </div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-button
|
||||
v-if="isShow(item)"
|
||||
slot="reference"
|
||||
class="dsp-block"
|
||||
type="text"
|
||||
:disabled="checkIfDisabled(item)"
|
||||
>
|
||||
{{ item.label }}
|
||||
<i class="el-icon-arrow-right" style="float: right;" />
|
||||
</el-button>
|
||||
</template>
|
||||
</el-popover>
|
||||
</div>
|
||||
<div v-else>
|
||||
<template v-if="item.type === 'separator'">
|
||||
<div class="separator"> </div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="isShow(item)">
|
||||
<el-button
|
||||
v-if="item.type ==='file'"
|
||||
type="text"
|
||||
class="uploadDemo"
|
||||
:disabled="checkIfDisabled(item)"
|
||||
>
|
||||
<input
|
||||
:ref="item.label"
|
||||
type="file"
|
||||
class="file_box"
|
||||
accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
|
||||
@change="openLoadFile(item)"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else
|
||||
id="testId"
|
||||
class="dsp-block"
|
||||
type="text"
|
||||
:disabled="checkIfDisabled(item)"
|
||||
@click="item.handler"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { checkRectCollision } from '@/utils/index';
|
||||
export default {
|
||||
name: 'PopMenu',
|
||||
props: {
|
||||
menu: {
|
||||
type: Array,
|
||||
required: true
|
||||
},
|
||||
popClass: {
|
||||
type: String,
|
||||
default() {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
tipMsg: {
|
||||
type: String,
|
||||
default() {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
tipSubhead: {
|
||||
type: String,
|
||||
default() {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
textAlign: {
|
||||
type: String,
|
||||
default() {
|
||||
return 'center';
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
defaultFontSize: 14,
|
||||
tPosition: {
|
||||
x: -1000,
|
||||
y: -1000
|
||||
},
|
||||
height: 'auto'
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
width() {
|
||||
let fontNum = 0;
|
||||
let newLabel = '';
|
||||
this.menu.forEach(elem => {
|
||||
newLabel = elem.label && elem.label.replace(/[^\u0000-\u00ff]/g, 'aa');
|
||||
if (elem.label && newLabel.length > fontNum) {
|
||||
fontNum = newLabel.length;
|
||||
// fontNum = elem.label.length;
|
||||
}
|
||||
});
|
||||
if (this.tipMsg) {
|
||||
newLabel = this.tipMsg.replace(/[^\u0000-\u00ff]/g, 'aa');
|
||||
if (newLabel.length > fontNum) {
|
||||
fontNum = newLabel.length;
|
||||
}
|
||||
}
|
||||
var width = fontNum / 2 * this.defaultFontSize + 60 + 'px';
|
||||
// if(this.$t('global.lanuage')==='en'){
|
||||
// width = fontNum/2 * this.defaultFontSize + 40 + 'px';
|
||||
// }
|
||||
return width;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
resetShowPosition(point) {
|
||||
if (point) {
|
||||
this.show = true;
|
||||
const self = this;
|
||||
this.$nextTick(() => {
|
||||
const gutter = 3;
|
||||
// 位置
|
||||
const height = self.$el.clientHeight;
|
||||
const width = self.$el.clientWidth;
|
||||
let px = 0;
|
||||
let py = 0;
|
||||
if (point.x + width > document.documentElement.clientWidth) {
|
||||
px = document.documentElement.clientWidth - width - gutter;
|
||||
} else {
|
||||
px = point.x;
|
||||
}
|
||||
if (point.y + height > document.documentElement.clientHeight) {
|
||||
py = document.documentElement.clientHeight - height - gutter;
|
||||
} else {
|
||||
py = point.y;
|
||||
}
|
||||
// 处理和提示框重叠问题
|
||||
const popTipDialog = document.getElementById('pop_tip_dialog');
|
||||
if (popTipDialog) {
|
||||
const tipRect = {
|
||||
point: { x: popTipDialog.offsetLeft, y: popTipDialog.offsetTop },
|
||||
width: popTipDialog.offsetWidth,
|
||||
height: popTipDialog.offsetHeight
|
||||
};
|
||||
const menuRect = {
|
||||
point: { x: px, y: py },
|
||||
width: self.$el.offsetWidth,
|
||||
height: self.$el.offsetHeight
|
||||
};
|
||||
const collision = checkRectCollision(tipRect, menuRect);
|
||||
// 若重叠,调整位置
|
||||
if (collision) {
|
||||
px = tipRect.point.x + tipRect.width + gutter;
|
||||
if (px + width > document.documentElement.clientWidth) {
|
||||
px = tipRect.point.x - menuRect.width - gutter;
|
||||
}
|
||||
}
|
||||
}
|
||||
self.tPosition.x = px;
|
||||
self.tPosition.y = py;
|
||||
});
|
||||
}
|
||||
},
|
||||
close() {
|
||||
this.show = false;
|
||||
// 关闭时立即影藏popover组件
|
||||
const popoverList = document.getElementsByClassName('el-popover');
|
||||
for (let i = 0; i < popoverList.length; i++) {
|
||||
popoverList[i].style.display = 'none';
|
||||
}
|
||||
},
|
||||
checkIfDisabled(menuObj) {
|
||||
return menuObj.disabled === true;
|
||||
},
|
||||
isShow(menuObj) {
|
||||
if (typeof (menuObj.show) === 'undefined') {
|
||||
return true;
|
||||
} else {
|
||||
return menuObj.show;
|
||||
}
|
||||
},
|
||||
calculateSubWidth(item) {
|
||||
const children = item.children;
|
||||
let width = 0;
|
||||
let fontNum = 0;
|
||||
children.forEach(elem => {
|
||||
if (elem.label.length > fontNum) {
|
||||
fontNum = elem.label.length;
|
||||
}
|
||||
});
|
||||
width = fontNum * this.defaultFontSize + 20 + 'px';
|
||||
return width;
|
||||
},
|
||||
openLoadFile(item) {
|
||||
const obj = this.$refs[item.label][0];
|
||||
if (obj.files) {
|
||||
const file = obj.files[0];
|
||||
item.handler(file);
|
||||
obj.value = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
$bg: #78e2ad;
|
||||
$hoverBg: #78e2ad;
|
||||
|
||||
.pop-menu {
|
||||
background-color: $bg;
|
||||
position: fixed;
|
||||
padding: 5px 0px;
|
||||
border: 1px solid gray;
|
||||
z-index: 9999;
|
||||
|
||||
.dsp-block {
|
||||
display: block;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
border-radius: unset;
|
||||
border: 2px solid transparent;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.dsp-block:hover {
|
||||
background-color: $hoverBg;
|
||||
border-top: 2px solid #fff;
|
||||
border-left: 2px solid #fff;
|
||||
border-right: 2px solid #284743;
|
||||
border-bottom: 2px solid #284743;
|
||||
}
|
||||
|
||||
.tip-top{
|
||||
width: 100%;
|
||||
background: #000;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
padding: 2px 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.hover-popover{
|
||||
border: 2px solid transparent;
|
||||
&:hover{
|
||||
background-color: $hoverBg;
|
||||
border-top: 2px solid #fff;
|
||||
border-left: 2px solid #fff;
|
||||
border-right: 2px solid #284743;
|
||||
border-bottom: 2px solid #284743;
|
||||
}
|
||||
}
|
||||
|
||||
.uploadDemo {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
border: 1px solid transparent;
|
||||
color: #000;
|
||||
|
||||
input {
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.uploadDemo:hover {
|
||||
background-color: $hoverBg;
|
||||
}
|
||||
|
||||
.el-button--text {
|
||||
padding: 6px 15px;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.separator {
|
||||
background: gray;
|
||||
width: 90%;
|
||||
height: 1px;
|
||||
margin: 0px 5%;
|
||||
}
|
||||
</style>
|
@ -1,45 +1,57 @@
|
||||
export default {
|
||||
bind(el) {
|
||||
const dragDom = el;
|
||||
dragDom.style.cursor = 'move';
|
||||
bind(el) {
|
||||
const dragDom = el;
|
||||
dragDom.style.cursor = 'move';
|
||||
|
||||
/** 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);*/
|
||||
const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
|
||||
/** 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);*/
|
||||
const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
|
||||
|
||||
dragDom.onmousedown = (e) => {
|
||||
/** 鼠标按下,计算当前元素距离可视区的距离*/
|
||||
const disX = e.clientX;
|
||||
const disY = e.clientY;
|
||||
dragDom.onmousedown = (e) => {
|
||||
/** 鼠标按下,计算当前元素距离可视区的距离*/
|
||||
const disX = e.clientX;
|
||||
const disY = e.clientY;
|
||||
|
||||
/** 获取到的值带px 正则匹配替换*/
|
||||
let styL, styT;
|
||||
/** 获取到的值带px 正则匹配替换*/
|
||||
let styL, styT;
|
||||
|
||||
/** 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px*/
|
||||
if (sty.left.includes('%')) {
|
||||
styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
|
||||
styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
|
||||
} else {
|
||||
styL = +sty.left.replace(/\px/g, '');
|
||||
styT = +sty.top.replace(/\px/g, '');
|
||||
}
|
||||
/** 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px*/
|
||||
if (sty.left.includes('%')) {
|
||||
styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
|
||||
styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
|
||||
} else {
|
||||
styL = +sty.left.replace(/\px/g, '');
|
||||
styT = +sty.top.replace(/\px/g, '');
|
||||
}
|
||||
|
||||
document.onmousemove = function (e) {
|
||||
/** 通过事件委托,计算移动的距离*/
|
||||
const l = e.clientX - disX;
|
||||
const t = e.clientY - disY;
|
||||
document.onmousemove = function (e) {
|
||||
/** 通过事件委托,计算移动的距离*/
|
||||
const l = e.clientX - disX;
|
||||
const t = e.clientY - disY;
|
||||
|
||||
/** 移动当前元素*/
|
||||
dragDom.style.left = `${l + styL}px`;
|
||||
dragDom.style.top = `${t + styT}px`;
|
||||
/** 移动当前元素*/
|
||||
if (l + styL < 0) {
|
||||
dragDom.style.left = `0px`;
|
||||
} else if (l + styL > document.body.clientWidth - dragDom.clientWidth - 10) {
|
||||
dragDom.style.left = `${document.body.clientWidth - dragDom.clientWidth - 10}px`;
|
||||
} else {
|
||||
dragDom.style.left = `${l + styL}px`;
|
||||
}
|
||||
if (t + styT < 0) {
|
||||
dragDom.style.top = `0px`;
|
||||
} else if (t + styT > document.body.clientHeight - dragDom.clientHeight - 10) {
|
||||
dragDom.style.top = `${document.body.clientHeight - dragDom.clientHeight - 10}px`;
|
||||
} else {
|
||||
dragDom.style.top = `${t + styT}px`;
|
||||
}
|
||||
|
||||
/** 将此时的位置传出去*/
|
||||
// binding.value({ x: e.pageX, y: e.pageY });
|
||||
};
|
||||
/** 将此时的位置传出去*/
|
||||
// binding.value({ x: e.pageX, y: e.pageY });
|
||||
};
|
||||
|
||||
document.onmouseup = function () {
|
||||
document.onmousemove = null;
|
||||
document.onmouseup = null;
|
||||
};
|
||||
};
|
||||
}
|
||||
document.onmouseup = function () {
|
||||
document.onmousemove = null;
|
||||
document.onmouseup = null;
|
||||
};
|
||||
};
|
||||
}
|
||||
};
|
||||
|
@ -52,7 +52,8 @@ export default {
|
||||
exitPlan: 'Exit Plan',
|
||||
back: 'Back',
|
||||
threeDimensionalView: 'Three-Dimensional View',
|
||||
passengerflow: 'Passenger Flow View',
|
||||
threeDimensionalStation: 'Three-Dimensional Station',
|
||||
passengerflow: 'CCTV View',
|
||||
deviceView: 'DeviceView',
|
||||
taskOperateSuccess: 'Task Operate success',
|
||||
getTimeFail: 'Failed to get time',
|
||||
|
@ -535,6 +535,8 @@ export default {
|
||||
blockCodingClomn: 'Block coding',
|
||||
|
||||
routing: 'Pay the way',
|
||||
generateStationRunDataSuccess:'Generate station run data success',
|
||||
generateStationRunDataFailed:'Generate station run data failed',
|
||||
|
||||
linkageSwitchList: 'Linkage switch list',
|
||||
|
||||
|
@ -52,7 +52,8 @@ export default {
|
||||
exitPlan: '退出计划',
|
||||
back: '返回',
|
||||
threeDimensionalView: '三维视图',
|
||||
passengerflow: '客流量视图',
|
||||
threeDimensionalStation: '三维车站',
|
||||
passengerflow: 'cctv视图',
|
||||
deviceView: '设备视图',
|
||||
taskOperateSuccess: '任务操作成功',
|
||||
getTimeFail: '获取时间失败',
|
||||
|
@ -530,6 +530,8 @@ export default {
|
||||
blockCodingClomn: '区段编码',
|
||||
|
||||
routing: '交路',
|
||||
generateStationRunDataSuccess:'站间运行数据生成成功',
|
||||
generateStationRunDataFailed:'站间运行数据生成失败',
|
||||
|
||||
linkageSwitchList: '联动道岔列表',
|
||||
|
||||
|
@ -123,12 +123,21 @@ deviceRender[deviceType.FireDamper] = {
|
||||
zlevel: 1,
|
||||
z: 4
|
||||
};
|
||||
|
||||
/** 排烟防火阀 */
|
||||
deviceRender[deviceType.SmookExhaustFd] = {
|
||||
_type: deviceType.SmookExhaustFd,
|
||||
zlevel: 1,
|
||||
z: 4
|
||||
};
|
||||
|
||||
/** 防烟防火阀 */
|
||||
deviceRender[deviceType.SmookProofFd] = {
|
||||
_type: deviceType.SmookProofFd,
|
||||
zlevel: 1,
|
||||
z: 4
|
||||
};
|
||||
|
||||
/** 闸机渲染配置 */
|
||||
deviceRender[deviceType.BrakeMachine] = {
|
||||
_type: deviceType.BrakeMachine,
|
||||
@ -163,7 +172,7 @@ deviceRender[deviceType.AirConditioner] = {
|
||||
deviceRender[deviceType.VolumeControlDamper] = {
|
||||
_type: deviceType.VolumeControlDamper,
|
||||
zlevel: 1,
|
||||
z: 4
|
||||
z: 5
|
||||
};
|
||||
/** 文字 */
|
||||
deviceRender[deviceType.IscsText] = {
|
||||
@ -219,6 +228,19 @@ deviceRender[deviceType.ArcStatus] = {
|
||||
_type: deviceType.ArcStatus,
|
||||
zlevel: 1,
|
||||
z: 4
|
||||
}
|
||||
};
|
||||
|
||||
/** 按钮 */
|
||||
deviceRender[deviceType.IscsButton] = {
|
||||
_type: deviceType.IscsButton,
|
||||
zlevel: 1,
|
||||
z: 4
|
||||
};
|
||||
/** 状态表 */
|
||||
deviceRender[deviceType.StateTable] = {
|
||||
_type: deviceType.StateTable,
|
||||
zlevel: 1,
|
||||
z: 5
|
||||
};
|
||||
|
||||
export default deviceRender;
|
||||
|
@ -20,6 +20,7 @@ const deviceType = {
|
||||
TunnelFan:'TunnelFan',
|
||||
FireDamper:'FireDamper',
|
||||
SmookProofFd:'SmookProofFd',
|
||||
SmookExhaustFd:'SmookExhaustFd',
|
||||
BrakeMachine: 'BrakeMachine',
|
||||
EntranceGuard: 'EntranceGuard',
|
||||
SemiAutomaticTicketMachine: 'SemiAutomaticTicketMachine',
|
||||
@ -33,7 +34,9 @@ const deviceType = {
|
||||
FasBrakeMachine:'FasBrakeMachine',
|
||||
Staircase:'Staircase',
|
||||
SingleStaircase: 'SingleStaircase',
|
||||
ArcStatus: 'ArcStatus'
|
||||
ArcStatus: 'ArcStatus',
|
||||
IscsButton: 'IscsButton',
|
||||
StateTable: 'StateTable'
|
||||
};
|
||||
|
||||
export default deviceType;
|
||||
|
File diff suppressed because one or more lines are too long
@ -252,11 +252,11 @@ class MouseController extends Eventful {
|
||||
const deviceList = Object.values(this.$iscs.iscsDevice);
|
||||
const includeDeviceList = [];
|
||||
deviceList.forEach( item =>{
|
||||
let deviceBoundingRect = item.instance.grouper.getBoundingRect();
|
||||
deviceBoundingRect = this.createFakeBoundingRect(item.instance, deviceBoundingRect);
|
||||
if (this.whetherInclude(boundingRect, deviceBoundingRect )) {
|
||||
includeDeviceList.push(item.instance);
|
||||
}
|
||||
let deviceBoundingRect = item.instance.grouper.getBoundingRect();
|
||||
deviceBoundingRect = this.createFakeBoundingRect(item.instance, deviceBoundingRect);
|
||||
if (this.whetherInclude(boundingRect, deviceBoundingRect )) {
|
||||
includeDeviceList.push(item.instance);
|
||||
}
|
||||
});
|
||||
this.deviceList = includeDeviceList;
|
||||
}
|
||||
|
@ -17,8 +17,12 @@ export default class airConditioner extends Group {
|
||||
position: [this.model.point.x, this.model.point.y]
|
||||
});
|
||||
this.path = createPathSvg(this.model);
|
||||
this.add(this.grouper);
|
||||
this.grouper.add(this.path);
|
||||
if (!this.model.isRight) {
|
||||
this.grouper.origin = [this.model.width / 2, this.model.width * 0.571 / 2];
|
||||
this.grouper.scale = [-1, -1];
|
||||
}
|
||||
this.add(this.grouper);
|
||||
}
|
||||
setModel(dx, dy) {
|
||||
this.model.point.x += dx;
|
||||
|
@ -31,7 +31,8 @@ export default class chiller extends Group {
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
lineWidth:2,
|
||||
fill:'rgba(0,0,0,0)'
|
||||
}
|
||||
});
|
||||
this.circle1 = new Circle({
|
||||
|
@ -1,8 +1,7 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
import Polyline from 'zrender/src/graphic/shape/Polyline';
|
||||
import Circle from 'zrender/src/graphic/shape/Circle';
|
||||
export default class smookProofFd extends Group {
|
||||
export default class fireDamper extends Group {
|
||||
constructor(device) {
|
||||
super();
|
||||
this.model = device.model;
|
||||
@ -17,15 +16,23 @@ export default class smookProofFd extends Group {
|
||||
id: this.model.code,
|
||||
position: [this.model.point.x, this.model.point.y]
|
||||
});
|
||||
this.polygon1 = new Polygon({
|
||||
const polygonW = this.model.width;
|
||||
let polygonH = this.model.width / 2;
|
||||
let cy = this.model.width / 4;
|
||||
if (this.model.direction == 'vertical') {
|
||||
polygonH = this.model.width * 2;
|
||||
cy = this.model.width / 2;
|
||||
}
|
||||
this.polygon1 = new Polyline({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
points:[
|
||||
[0, 0],
|
||||
[this.model.width, 0],
|
||||
[this.model.width, this.model.width / 2],
|
||||
[0, this.model.width / 2]
|
||||
[polygonW, 0],
|
||||
[polygonW, polygonH],
|
||||
[0, polygonH],
|
||||
[0, 0]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
@ -37,48 +44,18 @@ export default class smookProofFd extends Group {
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
cx:this.model.width / 2,
|
||||
cy:this.model.width / 4,
|
||||
r:this.model.width / 4
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
}
|
||||
});
|
||||
|
||||
this.polyline1 = new Polyline({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
points:[
|
||||
[0, 0],
|
||||
[this.model.width, this.model.width / 2]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
}
|
||||
});
|
||||
this.polyline2 = new Polyline({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
points:[
|
||||
[this.model.width, 0],
|
||||
[0, this.model.width / 2]
|
||||
]
|
||||
cx:polygonW / 2,
|
||||
cy:polygonH / 2,
|
||||
r:cy
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
fill:'rgba(0,0,0,0)',
|
||||
lineWidth:2
|
||||
}
|
||||
});
|
||||
this.grouper.add(this.polygon1);
|
||||
this.grouper.add(this.circle);
|
||||
this.grouper.add(this.polyline1);
|
||||
this.grouper.add(this.polyline2);
|
||||
this.add(this.grouper);
|
||||
}
|
||||
setModel(dx, dy) {
|
||||
|
@ -26,7 +26,8 @@ export default class frozenPump extends Group {
|
||||
},
|
||||
style: {
|
||||
stroke: this.model.color,
|
||||
lineWidth:2
|
||||
lineWidth:2,
|
||||
fill:'rgba(0,0,0,0)'
|
||||
}
|
||||
});
|
||||
this.triangle = new Polygon({
|
||||
|
97
src/iscs/shape/bas/smookExhaustFd.js
Normal file
97
src/iscs/shape/bas/smookExhaustFd.js
Normal file
@ -0,0 +1,97 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Polyline from 'zrender/src/graphic/shape/Polyline';
|
||||
import Circle from 'zrender/src/graphic/shape/Circle';
|
||||
export default class smookExhaustFd extends Group {
|
||||
constructor(device) {
|
||||
super();
|
||||
this.model = device.model;
|
||||
this._type = device.model._type;
|
||||
this._code = device.model.code;
|
||||
this.zlevel = device.model.zlevel;
|
||||
this.z = device.model.zlevel;
|
||||
this.create();
|
||||
}
|
||||
create() {
|
||||
this.grouper = new Group({
|
||||
id: this.model.code,
|
||||
position: [this.model.point.x, this.model.point.y]
|
||||
});
|
||||
const polygonW = this.model.width;
|
||||
let polygonH = this.model.width / 2;
|
||||
let cy = this.model.width / 4;
|
||||
if (this.model.direction == 'vertical') {
|
||||
polygonH = this.model.width * 2;
|
||||
cy = this.model.width / 2;
|
||||
}
|
||||
this.polygon1 = new Polyline({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
points:[
|
||||
[0, 0],
|
||||
[polygonW, 0],
|
||||
[polygonW, polygonH],
|
||||
[0, polygonH],
|
||||
[0, 0]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
}
|
||||
});
|
||||
|
||||
this.circle = new Circle({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
cx:polygonW / 2,
|
||||
cy:polygonH / 2,
|
||||
r:cy
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
fill:'rgba(0,0,0,0)',
|
||||
lineWidth:2
|
||||
}
|
||||
});
|
||||
|
||||
this.polyline1 = new Polyline({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
points:[
|
||||
[0, 0],
|
||||
[polygonW, polygonH]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
}
|
||||
});
|
||||
this.polyline2 = new Polyline({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
shape:{
|
||||
points:[
|
||||
[polygonW, 0],
|
||||
[0, polygonH]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
}
|
||||
});
|
||||
this.grouper.add(this.polygon1);
|
||||
this.grouper.add(this.circle);
|
||||
this.grouper.add(this.polyline1);
|
||||
this.grouper.add(this.polyline2);
|
||||
this.add(this.grouper);
|
||||
}
|
||||
setModel(dx, dy) {
|
||||
this.model.point.x += dx;
|
||||
this.model.point.y += dy;
|
||||
}
|
||||
}
|
@ -28,7 +28,8 @@ export default class smookProofFd extends Group {
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
lineWidth:2,
|
||||
fill:'rgba(0,0,0,0)'
|
||||
}
|
||||
});
|
||||
this.polyline1 = new Polyline({
|
||||
@ -86,7 +87,8 @@ export default class smookProofFd extends Group {
|
||||
},
|
||||
style: {
|
||||
stroke:this.model.color,
|
||||
lineWidth:2
|
||||
lineWidth:2,
|
||||
fill:'rgba(0,0,0,0)'
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -114,7 +114,12 @@ export default class ventilator extends Group {
|
||||
this.grouper.add(this.rhombus2);
|
||||
this.grouper.add(this.triangle);
|
||||
this.grouper.add(this.line);
|
||||
if (!this.model.isRight) {
|
||||
this.grouper.origin = [this.model.width / 2, this.model.width * 1.368 / 2];
|
||||
this.grouper.scale = [-1, 1];
|
||||
}
|
||||
this.add(this.grouper);
|
||||
|
||||
}
|
||||
setModel(dx, dy) {
|
||||
this.model.point.x += dx;
|
||||
|
@ -17,8 +17,10 @@ export default class volumeControlDamper extends Group {
|
||||
position: [this.model.point.x, this.model.point.y]
|
||||
});
|
||||
this.path = createPathSvg(this.model);
|
||||
this.add(this.grouper);
|
||||
this.grouper.add(this.path);
|
||||
this.grouper.origin = [this.model.width / 2, this.model.width * 1.368 / 2];
|
||||
this.grouper.rotation = Math.PI / 180 * (this.model.rotateAngle || 0);
|
||||
this.add(this.grouper);
|
||||
}
|
||||
setModel(dx, dy) {
|
||||
this.model.point.x += dx;
|
||||
|
63
src/iscs/shape/button.js
Normal file
63
src/iscs/shape/button.js
Normal file
@ -0,0 +1,63 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Rect from 'zrender/src/graphic/shape/Rect';
|
||||
import Text from 'zrender/src/graphic/Text';
|
||||
|
||||
export default class Button extends Group {
|
||||
constructor(device) {
|
||||
super();
|
||||
this.model = device.model;
|
||||
this._type = device.model._type;
|
||||
this._code = device.model.code;
|
||||
this.zlevel = device.model.zlevel;
|
||||
this._function = device.model.function;
|
||||
this.z = device.model.z;
|
||||
this.create();
|
||||
}
|
||||
create() {
|
||||
const model = this.model;
|
||||
this.grouper = new Group({
|
||||
id: model.code,
|
||||
position: [model.point.x, model.point.y]
|
||||
});
|
||||
this.buttonText = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z + 1,
|
||||
style: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
fontWeight: 'normal',
|
||||
fontSize: model.fontSize,
|
||||
fontFamily: 'consolas',
|
||||
text: model.context,
|
||||
textFill: '#FFF',
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
const textRect = this.buttonText.getBoundingRect();
|
||||
this.buttonText.setStyle('textLineHeight', textRect.height);
|
||||
this.buttonRect = new Rect({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
x: textRect.x - model.levelPadding,
|
||||
y: textRect.y - model.verticalPadding,
|
||||
width: textRect.width + 2 * model.levelPadding,
|
||||
height: textRect.height + 2 * model.verticalPadding
|
||||
},
|
||||
style: {
|
||||
fill: '#879096',
|
||||
stroke: '#132E48',
|
||||
lineWidth: 1
|
||||
}
|
||||
});
|
||||
this.grouper.add(this.buttonRect);
|
||||
this.grouper.add(this.buttonText);
|
||||
this.add(this.grouper);
|
||||
}
|
||||
setModel(dx, dy) {
|
||||
this.model.point.x += dx;
|
||||
this.model.point.y += dy;
|
||||
}
|
||||
}
|
@ -64,6 +64,8 @@ const map = {
|
||||
|
||||
export default function createPathSvg(model) {
|
||||
const svg = path.createFromString(map[model._type].path, {
|
||||
z:model.z,
|
||||
zlevel:model.zlevel,
|
||||
style: {
|
||||
fill: model.fill || '#00FF00'
|
||||
}
|
||||
|
@ -34,6 +34,9 @@ import FasBrakeMachine from './fasBrakeMachine';
|
||||
import Staircase from './staircase';
|
||||
import SingleStaircase from './singleStaircase';
|
||||
import ArcStatus from './ArcStatus';
|
||||
import IscsButton from './button';
|
||||
import SmookExhaustFd from './bas/smookExhaustFd';
|
||||
import StateTable from './stateTable';
|
||||
|
||||
const iscsShape = {};
|
||||
iscsShape[deviceType.ManualAlarmButton] = ManualAlarmButton;
|
||||
@ -56,6 +59,7 @@ iscsShape[deviceType.OrbitalVentilator] = OrbitalVentilator;
|
||||
iscsShape[deviceType.JetFan] = JetFan;
|
||||
iscsShape[deviceType.TunnelFan] = TunnelFan;
|
||||
iscsShape[deviceType.FireDamper] = FireDamper;
|
||||
iscsShape[deviceType.SmookExhaustFd] = SmookExhaustFd;
|
||||
iscsShape[deviceType.SmookProofFd] = SmookProofFd;
|
||||
iscsShape[deviceType.BrakeMachine] = BrakeMachine;
|
||||
iscsShape[deviceType.EntranceGuard] = EntranceGuard;
|
||||
@ -72,6 +76,8 @@ iscsShape[deviceType.FasBrakeMachine] = FasBrakeMachine;
|
||||
iscsShape[deviceType.Staircase] = Staircase;
|
||||
iscsShape[deviceType.SingleStaircase] = SingleStaircase;
|
||||
iscsShape[deviceType.ArcStatus] = ArcStatus;
|
||||
iscsShape[deviceType.IscsButton] = IscsButton;
|
||||
iscsShape[deviceType.StateTable] = StateTable;
|
||||
|
||||
function shapefactory(device, iscs) {
|
||||
const type = device.model._type;
|
||||
|
@ -33,6 +33,9 @@ export default class line extends Group {
|
||||
stroke: this.model.fillColor
|
||||
}
|
||||
});
|
||||
if (model.classify == 'dashed') {
|
||||
this.iscsLine.setStyle('lineDash', [2, 2]);
|
||||
}
|
||||
this.grouper.add(this.iscsLine);
|
||||
this.add(this.grouper);
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
const mean = {
|
||||
import Rect from 'zrender/src/graphic/shape/Rect';
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Text from 'zrender/src/graphic/Text';
|
||||
const stateMap = {
|
||||
slidingDoorEmergencyDoorOpenMalfunction : '滑动门&应急门开门故障',
|
||||
slidingDoorEmergencyDoorCloseMalfunction: '滑动门&应急门关门故障',
|
||||
slidingDoorsInterlockAllClear: '滑动门互锁解除报警',
|
||||
@ -16,7 +19,26 @@ const mean = {
|
||||
systemDrivePowerFailure: '系统驱动电源故障',
|
||||
systemControlPowerFailure: '系统控制电源故障',
|
||||
monitorPowerFailure: '监视电源故障',
|
||||
fieldBusFault:'现场总线故障'
|
||||
fieldBusFault:'现场总线故障',
|
||||
fasSystemFailure: { default: '正常'}, // 火灾系统故障
|
||||
facpAutoMode: { default: '手动' }, // FACP自动状态
|
||||
gesControlStatus: { default: '手动'}, // 气灭控制系统状态
|
||||
hydrantStartupStatus: { default: '停止'}, // 消火栓泵启动状态
|
||||
tscFireCondition: { default: '正常'}, // 感温电缆火警状态
|
||||
aEquipmentAreaFireDetector: { default: '正常'}, // 站厅A端设备区点型火灾探测器
|
||||
bEquipmentAreaFireDetector: { default: '正常'}, // 站厅B端设备区点型火灾探测器
|
||||
pcaFireDetector: { default: '正常' }, // 站台公共区点型火灾探测器
|
||||
scaFireDetector: { default: '正常'}, // 站厅公共区点型火灾探测器
|
||||
elevatorCutFirePowerSupply: { default: '正常'}, // 站内垂直电梯切非站台B消
|
||||
otherCutFirePowerSupply: { default: '正常'}, // 其他切非回路站台B消
|
||||
inDownLeftManualAlarm: { default: '正常' }, // 站内下行左线手动报警按钮
|
||||
inUpRightManualAlarm: { default: '正常'}, // 站内上行右线手动报警按钮
|
||||
outDownLeftManualAlarm: { default: '正常'}, // 站间下行左线手动报警按钮
|
||||
outUpRightManualAlarm: { default: '正常'}, // 站间上行右线手动报警按钮
|
||||
inDownLeftHydrant: { default: '正常'}, // 站内下行左线消火栓按钮
|
||||
inUpRightHydrant: { default: '正常'}, // 站内上行右线消火栓按钮
|
||||
outDownLeftHydrant: { default: '正常'}, // 站间下行左线消火栓按钮
|
||||
outUpRightHydrant: { default: '正常'} // 站间上行右线消火栓按钮
|
||||
};
|
||||
|
||||
export default class StateTable extends Group {
|
||||
@ -29,8 +51,147 @@ export default class StateTable extends Group {
|
||||
this._code = device.model.code;
|
||||
this.create();
|
||||
}
|
||||
cerate() {
|
||||
// this.header =
|
||||
create() {
|
||||
const model = this.model;
|
||||
this.grouper = new Group({
|
||||
id: model.code,
|
||||
position: [model.point.x, model.point.y]
|
||||
});
|
||||
this.lines = [];
|
||||
let columnWidth = 0;
|
||||
let rowNum = model.rowNum;
|
||||
let contentIndex = 2;
|
||||
if (model.headerType === 'none') {
|
||||
rowNum = model.rowNum - 1;
|
||||
contentIndex = 1;
|
||||
}
|
||||
model.columnWidthList.forEach(item => {
|
||||
columnWidth += item;
|
||||
const line = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
x1: columnWidth,
|
||||
y1: model.headerType === 'merge' ? model.rowHeight : 0,
|
||||
x2: columnWidth,
|
||||
y2: rowNum * model.rowHeight
|
||||
},
|
||||
style: {
|
||||
stroke: '#FFF',
|
||||
lineWidth: 2
|
||||
}
|
||||
});
|
||||
this.grouper.add(line);
|
||||
this.lines.push(line);
|
||||
});
|
||||
this.tabelBorder = new Rect({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: columnWidth,
|
||||
height: rowNum * model.rowHeight
|
||||
},
|
||||
style: {
|
||||
stroke: '#aFFF',
|
||||
fill: 'rgba(255, 255, 255, 0)',
|
||||
lineWidth: 2
|
||||
}
|
||||
});
|
||||
this.grouper.add(this.tabelBorder);
|
||||
for (let i = 0; i < rowNum; i++) {
|
||||
const line = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
x1: 0,
|
||||
y1: i * model.rowHeight,
|
||||
x2: columnWidth,
|
||||
y2: i * model.rowHeight
|
||||
},
|
||||
style: {
|
||||
stroke: '#FFF',
|
||||
lineWidth: 2
|
||||
}
|
||||
});
|
||||
this.grouper.add(line);
|
||||
this.lines.push(line);
|
||||
}
|
||||
this.header = [];
|
||||
if (model.headerType === 'merge') {
|
||||
const header = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z + 1,
|
||||
style: {
|
||||
x: columnWidth / 2,
|
||||
y: model.rowHeight,
|
||||
fontWeight: 'normal',
|
||||
fontSize: model.headerFontSize,
|
||||
fontFamily: 'consolas',
|
||||
text: model.headerContextList[0],
|
||||
textFill: '#FFF',
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textVerticalAlign: 'bottom',
|
||||
textLineHeight: model.rowHeight
|
||||
}
|
||||
});
|
||||
this.grouper.add(header);
|
||||
this.header.push(header);
|
||||
} else if (model.headerType === 'normal') {
|
||||
let width = 0;
|
||||
model.columnWidthList.forEach((item, i) => {
|
||||
const header = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z + 1,
|
||||
style: {
|
||||
x: item / 2 + width,
|
||||
y: model.rowHeight,
|
||||
fontWeight: 'normal',
|
||||
fontSize: model.headerFontSize,
|
||||
fontFamily: 'consolas',
|
||||
text: model.headerContextList[i],
|
||||
textFill: '#FFF',
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textVerticalAlign: 'bottom',
|
||||
textLineHeight: model.rowHeight
|
||||
}
|
||||
});
|
||||
width += item;
|
||||
this.grouper.add(header);
|
||||
this.header.push(header);
|
||||
});
|
||||
}
|
||||
this.tabelContent = [];
|
||||
model.tableData.forEach((item, i)=> {
|
||||
let width = 0;
|
||||
model.columnWidthList.forEach((elem, j) => {
|
||||
const text = new Text({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z + 1,
|
||||
_subType: stateMap[item['column' + (j + 1)]],
|
||||
style:{
|
||||
x: elem / 2 + width,
|
||||
y: model.rowHeight * (i + contentIndex),
|
||||
fontWeight: 'normal',
|
||||
fontSize: model.fontSize,
|
||||
fontFamily: 'consolas',
|
||||
text: stateMap[item['column' + (j + 1)]] ? stateMap[item['column' + (j + 1)]].default : item['column' + (j + 1)],
|
||||
textFill: stateMap[item['column' + (j + 1)]] ? '#38984F' : '#4CCDE4',
|
||||
textAlign: 'center',
|
||||
textPosition: 'inside',
|
||||
textVerticalAlign: 'bottom',
|
||||
textLineHeight: model.rowHeight
|
||||
}
|
||||
});
|
||||
this.grouper.add(text);
|
||||
this.tabelContent.push(text);
|
||||
width += elem;
|
||||
});
|
||||
});
|
||||
this.add(this.grouper);
|
||||
}
|
||||
setModel(dx, dy) {
|
||||
this.model.point.x += dx;
|
||||
|
@ -106,6 +106,9 @@ export function parser(data) {
|
||||
zrUtil.each(data.fireDamperList || [], elem =>{
|
||||
iscsDevice[elem.code] = deviceFactory(deviceType.FireDamper, elem);
|
||||
} );
|
||||
zrUtil.each(data.smookExhaustFdList || [], elem =>{
|
||||
iscsDevice[elem.code] = deviceFactory(deviceType.SmookExhaustFd, elem);
|
||||
} );
|
||||
zrUtil.each(data.smookProofFdList || [], elem =>{
|
||||
iscsDevice[elem.code] = deviceFactory(deviceType.SmookProofFd, elem);
|
||||
} );
|
||||
@ -148,6 +151,12 @@ export function parser(data) {
|
||||
zrUtil.each(data.singleStaircaseList || [], elem=> {
|
||||
iscsDevice[elem.code] = deviceFactory(deviceType.SingleStaircase, elem);
|
||||
});
|
||||
zrUtil.each(data.iscsButtonList || [], elem=> {
|
||||
iscsDevice[elem.code] = deviceFactory(deviceType.IscsButton, elem);
|
||||
});
|
||||
zrUtil.each(data.stateTableList || [], elem=> {
|
||||
iscsDevice[elem.code] = deviceFactory(deviceType.StateTable, elem);
|
||||
});
|
||||
}
|
||||
|
||||
return iscsDevice;
|
||||
@ -242,6 +251,9 @@ export function updateIscsData(state, device) {
|
||||
case deviceType.FireDamper:
|
||||
updateIscsListByDevice(state, 'fireDamperList', device);
|
||||
break;
|
||||
case deviceType.SmookExhaustFd:
|
||||
updateIscsListByDevice(state, 'smookExhaustFdList', device);
|
||||
break;
|
||||
case deviceType.SmookProofFd:
|
||||
updateIscsListByDevice(state, 'smookProofFdList', device);
|
||||
break;
|
||||
@ -275,6 +287,12 @@ export function updateIscsData(state, device) {
|
||||
case deviceType.ArcStatus:
|
||||
updateIscsListByDevice(state, 'arcStatusList', device);
|
||||
break;
|
||||
case deviceType.IscsButton:
|
||||
updateIscsListByDevice(state, 'iscsButtonList', device);
|
||||
break;
|
||||
case deviceType.StateTable:
|
||||
updateIscsListByDevice(state, 'stateTableList', device);
|
||||
break;
|
||||
}
|
||||
// store.dispatch('iscs/setIscsData', state.iscs);
|
||||
}
|
||||
|
@ -162,8 +162,8 @@ export function JLmap3dEdit(dom, data, mapid) {
|
||||
this.export = function(){
|
||||
let exporter = new THREE.OBJExporter();
|
||||
console.log(scope.mapdata);
|
||||
// let exportmodels = scope.mapdata.stationstandlist.group;
|
||||
let exportmodels = scope.mapdata.sectionlist.sectiongroup;
|
||||
let exportmodels = scope.mapdata.stationstandlist.group;
|
||||
// let exportmodels = scope.mapdata.sectionlist.sectiongroup;
|
||||
// let exportmodels = scope.mapdata.stationstandlist.group;
|
||||
let result = exporter.parse( exportmodels );
|
||||
|
||||
|
@ -109,6 +109,7 @@ export function Jl3ddeviceNew(dom,group,token) {
|
||||
|
||||
this.modelmanager = new ModelManager();
|
||||
this.modelmanager.loadpromise(Staticmodel, scope.mixers).then(function (data) {
|
||||
console.log(scope.modelmanager);
|
||||
animate();
|
||||
})
|
||||
|
||||
@ -157,9 +158,11 @@ export function Jl3ddeviceNew(dom,group,token) {
|
||||
scope.showmodel = scope.modelmanager.standmodel.mesh;
|
||||
scope.scene.add(scope.showmodel);
|
||||
}
|
||||
if(scope.showmodel){
|
||||
scope.showmodel.code = data.code;
|
||||
initstatus(data);
|
||||
}
|
||||
|
||||
scope.showmodel.code = data.code;
|
||||
initstatus(data);
|
||||
}
|
||||
} else {
|
||||
scope.nowcode = data.code;
|
||||
@ -170,19 +173,20 @@ export function Jl3ddeviceNew(dom,group,token) {
|
||||
// scope.scene.add(scope.showmodel);
|
||||
if (data.normalPosition == "0") {
|
||||
scope.modelmanager.switchmodel.normalPosition = "0";
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = 0;
|
||||
scope.modelmanager.switchmodel.action.timeScale = -1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
|
||||
if(scope.modelmanager.switchmodel.action){
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = 0;
|
||||
scope.modelmanager.switchmodel.action.timeScale = -1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
}
|
||||
} else if (data.normalPosition == "1") {
|
||||
scope.modelmanager.switchmodel.normalPosition = "1";
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
|
||||
scope.modelmanager.switchmodel.action.time = scope.modelmanager.switchmodel.action._clip.duration;
|
||||
scope.modelmanager.switchmodel.action.timeScale = 1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
|
||||
if(scope.modelmanager.switchmodel.action){
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = scope.modelmanager.switchmodel.action._clip.duration;
|
||||
scope.modelmanager.switchmodel.action.timeScale = 1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -209,14 +213,12 @@ export function Jl3ddeviceNew(dom,group,token) {
|
||||
scope.modelmanager.switchmodel.action.time = 0;
|
||||
scope.modelmanager.switchmodel.action.timeScale = 1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
|
||||
} else if (data.normal == "1") {
|
||||
scope.modelmanager.switchmodel.normalPosition = "1";
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = scope.modelmanager.switchmodel.action._clip.duration;
|
||||
scope.modelmanager.switchmodel.action.timeScale = -1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -274,17 +276,21 @@ export function Jl3ddeviceNew(dom,group,token) {
|
||||
if (data._type == "Switch") {
|
||||
if (data.normalPosition == "0") {
|
||||
scope.modelmanager.switchmodel.normalPosition = "0";
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = scope.modelmanager.switchmodel.action._clip.duration;
|
||||
scope.modelmanager.switchmodel.action.timeScale = 1;
|
||||
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
if(scope.modelmanager.switchmodel.action){
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = scope.modelmanager.switchmodel.action._clip.duration;
|
||||
scope.modelmanager.switchmodel.action.timeScale = 1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
}
|
||||
} else if (data.normalPosition == "1") {
|
||||
scope.modelmanager.switchmodel.normalPosition = "1";
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = 0;
|
||||
scope.modelmanager.switchmodel.action.timeScale = -1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
if(scope.modelmanager.switchmodel.action){
|
||||
scope.modelmanager.switchmodel.action.reset();
|
||||
scope.modelmanager.switchmodel.action.time = 0;
|
||||
scope.modelmanager.switchmodel.action.timeScale = -1;
|
||||
scope.modelmanager.switchmodel.action.play();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ function fbxpromise(asset,mixers,model){
|
||||
mixers.push(mixer);
|
||||
//model.action.play();
|
||||
}
|
||||
|
||||
console.log(object);
|
||||
|
||||
|
||||
resolve(asset.deviceType);
|
||||
|
@ -102,6 +102,41 @@ export function Jdqcontrol(){
|
||||
part.msg = "绝缘轴用冻石瓷料制成,抗冲击强度足够。";
|
||||
selectmodel.children[i].text = "绝缘轴";
|
||||
}
|
||||
if(selectmodel.children[i].name =="cichuihuqi"){
|
||||
part.text = "磁吹弧器";
|
||||
part.msg = "磁吹弧器。";
|
||||
selectmodel.children[i].text = "磁吹弧器";
|
||||
}
|
||||
if(selectmodel.children[i].name =="jiaqiangdongjiediandanyuan"){
|
||||
part.text = "加强接点单元";
|
||||
part.msg = "加强接点单元。";
|
||||
selectmodel.children[i].text = "加强接点单元";
|
||||
}
|
||||
if(selectmodel.children[i].name =="yunmugehupian"){
|
||||
part.text = "云母隔弧片";
|
||||
part.msg = "云母隔弧片。";
|
||||
selectmodel.children[i].text = "云母隔弧片";
|
||||
}
|
||||
if(selectmodel.children[i].name =="yapian1"){
|
||||
part.text = "压片";
|
||||
part.msg = "压片。";
|
||||
selectmodel.children[i].text = "压片";
|
||||
}
|
||||
if(selectmodel.children[i].name =="jiedian1"){
|
||||
part.text = "接点";
|
||||
part.msg = "接点。";
|
||||
selectmodel.children[i].text = "接点";
|
||||
}
|
||||
if(selectmodel.children[i].name =="ccichuihuqi"){
|
||||
part.text = "磁吹弧器";
|
||||
part.msg = "磁吹弧器。";
|
||||
selectmodel.children[i].text = "磁吹弧器";
|
||||
}
|
||||
|
||||
|
||||
// if(part.text == null){
|
||||
// console.log(selectmodel.children[i].name);
|
||||
// }
|
||||
|
||||
scope.devicelist.push(part);
|
||||
}
|
||||
|
@ -1,185 +1,541 @@
|
||||
|
||||
export function Moveanimate(){
|
||||
export function Moveanimate(main){
|
||||
let scope = this;
|
||||
|
||||
this.helpbox = null;
|
||||
this.textplane = null;
|
||||
//动画列表
|
||||
this.animatelist = [];
|
||||
|
||||
this.playlist = null;
|
||||
this.playorder = 0;
|
||||
//动画播放器开关
|
||||
this.enable = true;
|
||||
|
||||
//动画开关状态
|
||||
this.status = true;
|
||||
//当前动画模型
|
||||
this.nowmodelname = undefined;
|
||||
//定义所有继电器部件动画
|
||||
this.initlist = function(modellist){
|
||||
// let points = [];
|
||||
// points.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"select1",points,true);
|
||||
// this.initlist = function(modellist){
|
||||
//
|
||||
// for(let j=0,lenj=modellist.length;j<lenj;j++){
|
||||
//
|
||||
// for(let i=0,leni=modellist[j].children.length;i<leni;i++){
|
||||
//
|
||||
// if(modellist[j].children[i].name == "dizuo"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-150));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"dizuoon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-150));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"dizuooff",points2,0.5,true,0);
|
||||
//
|
||||
//
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "Lxing"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"Lxingon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"Lxingoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "jiaoxingxiantie"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+25));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"jiaoxingxiantieon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+25));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"jiaoxingxiantieoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "xianquan"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"xianquanon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"xianquanoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "zhongchuipian"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-25,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"zhongchuipianon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+25,modellist[j].children[i].position.z));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"zhongchuipianoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "lagan"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+50));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"laganon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+50));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"laganoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "dongjiedianzhou"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+25));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"dongjiedianzhouon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+25));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"dongjiedianzhouoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "neibu"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"neibuon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"neibuoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "jiedian"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-15));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"jiedianon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-15));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"jiedianoff",points2,0.5,true,0);
|
||||
//
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "yapian"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-25));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"yapianon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-25));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"yapianoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "fanghuozhao"){
|
||||
// let points1 = [];
|
||||
//
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+200));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"fanghuozhaoon",points1,0.5,true,0);
|
||||
//
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+200));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"fanghuozhaooff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "dianyuanpian"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"dianyuanpianon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"dianyuanpianoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name == "xinpian"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+150,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"xinpianon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+150,modellist[j].children[i].position.z));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"xinpianoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name =="jueyuanzhou"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"jueyuanzhouon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"jueyuanzhouoff",points2,0.5,true,0);
|
||||
// }
|
||||
// if(modellist[j].children[i].name =="cigang"){
|
||||
// let points1 = [];
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z+100));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"cigangon",points1,0.5,true,0);
|
||||
// let points2 = [];
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z+100));
|
||||
// points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"cigangoff",points2,0.5,true,0);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// //
|
||||
//
|
||||
//
|
||||
//
|
||||
// }
|
||||
this.initlistnew = function(modellist){
|
||||
|
||||
for(let j=0,lenj=modellist.length;j<lenj;j++){
|
||||
console.log(modellist[j].code+"==================================");
|
||||
scope.animatelist[modellist[j].code+"chaijie"] = [];
|
||||
scope.animatelist[modellist[j].code+"fuwei"] = [];
|
||||
for(let i=0,leni=modellist[j].children.length;i<leni;i++){
|
||||
console.log(modellist[j].children[i].name);
|
||||
if(modellist[j].children[i].name == "dizuo"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-150));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"dizuoon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"dizuoon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-150));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"dizuooff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"dizuooff",points2,0.5,true,0);
|
||||
|
||||
|
||||
}
|
||||
if(modellist[j].children[i].name == "Lxing"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"Lxingon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"Lxingon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"Lxingoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"Lxingoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "jiaoxingxiantie"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+25));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"jiaoxingxiantieon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"jiaoxingxiantieon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+25));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"jiaoxingxiantieoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"jiaoxingxiantieoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "xianquan"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"xianquanon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"xianquanon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"xianquanoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"xianquanoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "zhongchuipian"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-25,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"zhongchuipianon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"zhongchuipianon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+25,modellist[j].children[i].position.z));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"zhongchuipianoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"zhongchuipianoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "lagan"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+50));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"laganon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"laganon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+50));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"laganoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"laganoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "dongjiedianzhou"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+25));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"dongjiedianzhouon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"dongjiedianzhouon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+25));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"dongjiedianzhouoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"dongjiedianzhouoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "neibu"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"neibuon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"neibuon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"neibuoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"neibuoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "jiedian"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-15));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"jiedianon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"jiedianon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-15));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"jiedianoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"jiedianoff",points2,0.5,true,0);
|
||||
|
||||
}
|
||||
if(modellist[j].children[i].name == "yapian"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-25));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"yapianon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"yapianon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z-25));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"yapianoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"yapianoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "fanghuozhao"){
|
||||
let points1 = [];
|
||||
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+200));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"fanghuozhaoon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"fanghuozhaoon",points1,0.5,true,0);
|
||||
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z+200));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"fanghuozhaooff",points2,true);
|
||||
|
||||
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"fanghuozhaooff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "dianyuanpian"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"dianyuanpianon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"dianyuanpianon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z-50));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"dianyuanpianoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"dianyuanpianoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name == "xinpian"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+150,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"xinpianon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"xinpianon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+150,modellist[j].children[i].position.z));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"xinpianoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"xinpianoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name =="jueyuanzhou"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"jueyuanzhouon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"jueyuanzhouon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"jueyuanzhouoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"jueyuanzhouoff",points2,0.5,true,0);
|
||||
}
|
||||
if(modellist[j].children[i].name =="cigang"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z+100));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"cigangon",points1,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"cigangon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-100,modellist[j].children[i].position.z+100));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(modellist[j].children[i],modellist[j].name+"cigangoff",points2,true);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"cigangoff",points2,0.5,true,0);
|
||||
}
|
||||
|
||||
if(modellist[j].children[i].name =="ccichuihuqi"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z+100));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"ccichuihuqion",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z+100));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"ccichuihuqioff",points2,0.5,true,0);
|
||||
}
|
||||
|
||||
if(modellist[j].children[i].name =="cichuihuqi"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z+100));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"cichuihuqion",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y-50,modellist[j].children[i].position.z+100));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"cichuihuqioff",points2,0.5,true,0);
|
||||
}
|
||||
|
||||
if(modellist[j].children[i].name =="jiaqiangdongjiediandanyuan"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+25,modellist[j].children[i].position.z+100));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"jiaqiangdongjiediandanyuanon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+25,modellist[j].children[i].position.z+100));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"jiaqiangdongjiediandanyuanoff",points2,0.5,true,0);
|
||||
}
|
||||
|
||||
if(modellist[j].children[i].name =="yunmugehupian"){
|
||||
let points1 = [];
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
points1.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+100));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"chaijie"],modellist[j].children[i],modellist[j].name+"yunmugehupianon",points1,0.5,true,0);
|
||||
let points2 = [];
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y+100,modellist[j].children[i].position.z+100));
|
||||
points2.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"fuwei"],modellist[j].children[i],modellist[j].name+"yunmugehupianoff",points2,0.5,true,0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// let points = [];
|
||||
// points.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// points.push(new THREE.Vector3(modellist[j].children[i].position.x,modellist[j].children[i].position.y,modellist[j].children[i].position.z));
|
||||
// scope.initanimate(modellist[j].children[i],modellist[j].name+"select1",points,true);
|
||||
let modelorderlist = [];
|
||||
|
||||
|
||||
modelorderlist[modellist[0].code] = [
|
||||
{name:"fanghuozhao",pos:[0,0,200]},
|
||||
{name:"dizuo",pos:[0,0,-150]},
|
||||
{name:"dianyuanpian",pos:[0,0,-50]},
|
||||
{name:"neibu",pos:[0,0,-25]},
|
||||
{name:"xianquan",pos:[0,-200,0]},
|
||||
{name:"Lxing",pos:[0,-150,0]},
|
||||
{name:"jiaoxingxiantie",pos:[0,-100,50]},
|
||||
{name:"zhongchuipian",pos:[0,-100,-50]},
|
||||
{name:"jiedian",pos:[0,0,100]},
|
||||
{name:"dongjiedianzhou",pos:[0,100,100]},
|
||||
{name:"jueyuanzhou",pos:[0,150,50]},
|
||||
{name:"lagan",pos:[0,150,0]},
|
||||
{name:"yapian",pos:[0,0,25]}
|
||||
];
|
||||
modelorderlist[modellist[1].code] = [
|
||||
{name:"fanghuozhao",pos:[0,0,200]},
|
||||
{name:"dizuo",pos:[0,0,-150]},
|
||||
{name:"dianyuanpian",pos:[0,0,-50]},
|
||||
{name:"neibu",pos:[0,0,-25]},
|
||||
{name:"xianquan",pos:[0,-200,0]},
|
||||
{name:"Lxing",pos:[0,-150,0]},
|
||||
{name:"jiaoxingxiantie",pos:[0,-100,50]},
|
||||
{name:"zhongchuipian",pos:[0,-100,-50]},
|
||||
{name:"jiedian",pos:[0,0,100]},
|
||||
{name:"dongjiedianzhou",pos:[0,100,100]},
|
||||
{name:"jueyuanzhou",pos:[0,150,50]},
|
||||
{name:"lagan",pos:[0,150,0]},
|
||||
{name:"yapian",pos:[0,0,25]}
|
||||
];
|
||||
modelorderlist[modellist[2].code] = [
|
||||
{name:"fanghuozhao",pos:[0,0,200]},
|
||||
{name:"dizuo",pos:[0,0,-150]},
|
||||
{name:"dianyuanpian",pos:[0,0,-50]},
|
||||
{name:"neibu",pos:[0,0,-25]},
|
||||
{name:"xianquan",pos:[0,-200,0]},
|
||||
{name:"Lxing",pos:[0,-150,0]},
|
||||
{name:"jiaoxingxiantie",pos:[0,-100,50]},
|
||||
{name:"zhongchuipian",pos:[0,-100,-50]},
|
||||
{name:"jiedian",pos:[0,0,100]},
|
||||
{name:"dongjiedianzhou",pos:[0,100,100]},
|
||||
{name:"jueyuanzhou",pos:[0,150,50]},
|
||||
{name:"lagan",pos:[0,150,0]},
|
||||
{name:"yapian",pos:[0,0,25]}
|
||||
];
|
||||
modelorderlist[modellist[3].code] = [
|
||||
{name:"fanghuozhao",pos:[0,0,200]},
|
||||
{name:"dizuo",pos:[0,0,-150]},
|
||||
{name:"dianyuanpian",pos:[0,0,-50]},
|
||||
{name:"neibu",pos:[0,0,-25]},
|
||||
{name:"xianquan",pos:[0,-200,0]},
|
||||
{name:"Lxing",pos:[0,-150,0]},
|
||||
{name:"jiaoxingxiantie",pos:[0,-100,50]},
|
||||
{name:"zhongchuipian",pos:[0,-100,-50]},
|
||||
{name:"jiedian",pos:[0,0,100]},
|
||||
{name:"dongjiedianzhou",pos:[0,100,100]},
|
||||
{name:"jueyuanzhou",pos:[0,150,50]},
|
||||
{name:"lagan",pos:[0,150,0]},
|
||||
{name:"yapian",pos:[0,0,25]}
|
||||
];
|
||||
modelorderlist[modellist[4].code] = [
|
||||
{name:"fanghuozhao",pos:[0,0,200]},
|
||||
{name:"dizuo",pos:[0,0,-150]},
|
||||
{name:"dianyuanpian",pos:[0,0,-50]},
|
||||
{name:"neibu",pos:[0,0,-25]},
|
||||
{name:"xianquan",pos:[0,-200,0]},
|
||||
{name:"Lxing",pos:[0,-150,0]},
|
||||
{name:"zhongchuipian",pos:[0,-100,-50]},
|
||||
{name:"jiaoxingxiantie",pos:[0,-100,50]},
|
||||
{name:"jiedian",pos:[0,150,100]},
|
||||
{name:"dongjiedianzhou",pos:[0,150,75]},
|
||||
{name:"jueyuanzhou",pos:[0,150,50]},
|
||||
{name:"yunmugehupian",pos:[0,100,100]},
|
||||
|
||||
{name:"jiaqiangdongjiediandanyuan",pos:[0,75,75]},
|
||||
{name:"cichuihuqi",pos:[0,75,25]},
|
||||
{name:"lagan",pos:[0,150,0]},
|
||||
{name:"yapian1",pos:[0,0,100]},
|
||||
|
||||
{name:"yapian",pos:[0,0,10]}
|
||||
];
|
||||
modelorderlist[modellist[5].code] = [
|
||||
{name:"fanghuozhao",pos:[0,0,200]},
|
||||
{name:"dizuo",pos:[0,0,-150]},
|
||||
{name:"dianyuanpian",pos:[0,0,-50]},
|
||||
{name:"neibu",pos:[0,0,-25]},
|
||||
{name:"xianquan",pos:[0,-200,0]},
|
||||
{name:"cigang",pos:[0,-200,50]},
|
||||
{name:"Lxing",pos:[0,-150,0]},
|
||||
{name:"jiaoxingxiantie",pos:[0,-100,50]},
|
||||
{name:"zhongchuipian",pos:[0,-100,-50]},
|
||||
{name:"jiedian",pos:[0,0,100]},
|
||||
{name:"dongjiedianzhou",pos:[0,100,100]},
|
||||
{name:"jueyuanzhou",pos:[0,150,50]},
|
||||
{name:"ccichuihuqi",pos:[0,-50,75]},
|
||||
{name:"lagan",pos:[0,150,0]},
|
||||
{name:"yapian",pos:[0,0,25]}
|
||||
];
|
||||
|
||||
for(let j=0,lenj=modellist.length;j<lenj;j++){
|
||||
scope.animatelist[modellist[j].code+"on"] = [];
|
||||
scope.animatelist[modellist[j].code+"off"] = [];
|
||||
for(let i=0,leni=modelorderlist[modellist[j].code].length;i<leni;i++){
|
||||
let orderdata = modelorderlist[modellist[j].code];
|
||||
let modelon = modellist[j].getObjectByName(orderdata[i].name);
|
||||
// modelon.helpbox = undefined;
|
||||
let pointson = [];
|
||||
pointson.push(new THREE.Vector3(modelon.position.x,modelon.position.y,modelon.position.z));
|
||||
pointson.push(new THREE.Vector3(modelon.position.x+orderdata[i].pos[0],modelon.position.y+orderdata[i].pos[1],modelon.position.z+orderdata[i].pos[2]));
|
||||
|
||||
let pointsoff = [];
|
||||
pointsoff.push(new THREE.Vector3(modelon.position.x+orderdata[i].pos[0],modelon.position.y+orderdata[i].pos[1],modelon.position.z+orderdata[i].pos[2]));
|
||||
pointsoff.push(new THREE.Vector3(modelon.position.x,modelon.position.y,modelon.position.z));
|
||||
|
||||
// if(i == 0){
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"on"],modelon,modellist[j].code+modelon.name+"on",pointson,0.01,true,i);
|
||||
scope.initanimate(scope.animatelist[modellist[j].code+"off"],modelon,modellist[j].code+modelon.name+"off",pointsoff,0.01,true,leni-i-1);
|
||||
// }else if((i+1)<leni){
|
||||
// scope.initanimate(modelon,modellist[j].code+modelon.name+"on",pointson,0.01,true,modellist[j].code+orderdata[i+1].name+"on");
|
||||
// scope.initanimate(modelon,modellist[j].code+modelon.name+"off",pointsoff,0.01,true,modellist[j].code+orderdata[i-1].name+"off");
|
||||
// }else{
|
||||
// scope.initanimate(modelon,modellist[j].code+modelon.name+"on",pointson,0.01,true);
|
||||
// scope.initanimate(modelon,modellist[j].code+modelon.name+"off",pointsoff,0.01,true,modellist[j].code+orderdata[i-1].name+"off");
|
||||
// }
|
||||
|
||||
// if(modellist[j].children[i].name == "xinpian"){
|
||||
// }
|
||||
// if(modellist[j].children[i].name =="cigang"){
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//动画对象定义
|
||||
this.initanimate = function(modelobject,name,points,type){
|
||||
this.initanimate = function(list,modelobject,name,points,speed,type,nextname){
|
||||
|
||||
let curve = new THREE.CatmullRomCurve3(points);
|
||||
|
||||
@ -195,51 +551,121 @@ export function Moveanimate(){
|
||||
connectmodel:modelobject,
|
||||
enable:false,
|
||||
status:"start",
|
||||
speed:0.05,
|
||||
speed:speed,
|
||||
next:null
|
||||
};
|
||||
scope.animatelist[name] = animate;
|
||||
// list[nextname] = [];
|
||||
if(list[nextname] == undefined){
|
||||
list[nextname] = [];
|
||||
}
|
||||
list[nextname].push(animate);
|
||||
|
||||
if(nextname){
|
||||
// list[nextname] = animate;
|
||||
// animate.next = nextname;
|
||||
}else{
|
||||
// list.push(animate);
|
||||
}
|
||||
|
||||
}
|
||||
this.setplaylist = function(nowlist,enable){
|
||||
|
||||
scope.playlist = nowlist;
|
||||
scope.enable = enable;
|
||||
scope.playorder = 0;
|
||||
for(let i=0;i<scope.playlist[scope.playorder].length;i++){
|
||||
scope.playlist[scope.playorder][i].status = "start";
|
||||
}
|
||||
}
|
||||
this.updatehelpbox = function(nowhelpbox,nowtextplane){
|
||||
scope.textplane = nowtextplane;
|
||||
scope.helpbox = nowhelpbox;
|
||||
}
|
||||
|
||||
this.startstop = function(){
|
||||
|
||||
}
|
||||
this.next = function(){
|
||||
|
||||
}
|
||||
this.before = function(){
|
||||
|
||||
}
|
||||
//动画播放器
|
||||
this.animateupdate = function(){
|
||||
// console.log(scope.animatelist);
|
||||
|
||||
if(scope.enable){
|
||||
//遍历动画列表将启动的动画位置更新
|
||||
for(let k in scope.animatelist){
|
||||
if(scope.animatelist[k].enable){
|
||||
// 动画播放结束
|
||||
if(scope.animatelist[k].progress>=1){
|
||||
let point = scope.animatelist[k].curve.getPointAt(1);
|
||||
//更新模型坐标
|
||||
scope.animatelist[k].connectmodel.position.x = point.x;
|
||||
scope.animatelist[k].connectmodel.position.y = point.y;
|
||||
scope.animatelist[k].connectmodel.position.z = point.z;
|
||||
scope.animatelist[k].enable = false;
|
||||
scope.animatelist[k].status = "end";
|
||||
scope.animatelist[k].progress = 0;
|
||||
}else{
|
||||
//根据动画进度获取动画轨迹上点
|
||||
if(scope.playlist){
|
||||
|
||||
let point = scope.animatelist[k].curve.getPointAt(scope.animatelist[k].progress);
|
||||
for(let i=0;i<scope.playlist[scope.playorder].length;i++){
|
||||
if(scope.playlist[scope.playorder][i].status == "start"){
|
||||
|
||||
//更新模型坐标
|
||||
scope.animatelist[k].connectmodel.position.x = point.x;
|
||||
scope.animatelist[k].connectmodel.position.y = point.y;
|
||||
scope.animatelist[k].connectmodel.position.z = point.z;
|
||||
}
|
||||
if(scope.playlist[scope.playorder][i].progress>=1){
|
||||
let point = scope.playlist[scope.playorder][i].curve.getPointAt(1);
|
||||
//更新模型坐标
|
||||
scope.playlist[scope.playorder][i].connectmodel.position.x = point.x;
|
||||
scope.playlist[scope.playorder][i].connectmodel.position.y = point.y;
|
||||
scope.playlist[scope.playorder][i].connectmodel.position.z = point.z;
|
||||
scope.playlist[scope.playorder][i].enable = false;
|
||||
scope.playlist[scope.playorder][i].status = "end";
|
||||
scope.playlist[scope.playorder][i].progress = 0;
|
||||
|
||||
//判断模型转向
|
||||
if(scope.animatelist[k].directchange){
|
||||
let tangent = scope.animatelist[k].curve.getPointAt(scope.animatelist[k].progress+0.001);
|
||||
// scope.animatelist[k]
|
||||
tangent = null;
|
||||
|
||||
if(i >= scope.playlist[scope.playorder].length-1){
|
||||
if(scope.playorder >= scope.playlist.length-1 ){
|
||||
scope.playlist = null;
|
||||
scope.status = true;
|
||||
scope.enable = false;
|
||||
main.animationmsgshowoff();
|
||||
scope.nowmodelname = undefined;
|
||||
scope.playorder = null;
|
||||
break;
|
||||
}else{
|
||||
scope.playorder += 1;
|
||||
}
|
||||
//增加动画进度,释放点变量
|
||||
scope.animatelist[k].progress += scope.animatelist[k].speed;
|
||||
point = null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
// console.log(scope.animatelist[k].connectmodel);
|
||||
if(scope.nowmodelname != scope.playlist[scope.playorder][i].connectmodel.name){
|
||||
scope.nowmodelname = scope.playlist[scope.playorder][i].connectmodel.name;
|
||||
main.animationmsgshowon(scope.playlist[scope.playorder][i].connectmodel);
|
||||
}
|
||||
//根据动画进度获取动画轨迹上点
|
||||
scope.status = false;
|
||||
let point = scope.playlist[scope.playorder][i].curve.getPointAt(scope.playlist[scope.playorder][i].progress);
|
||||
|
||||
//更新模型坐标
|
||||
scope.playlist[scope.playorder][i].connectmodel.position.x = point.x;
|
||||
scope.playlist[scope.playorder][i].connectmodel.position.y = point.y;
|
||||
scope.playlist[scope.playorder][i].connectmodel.position.z = point.z;
|
||||
|
||||
if(scope.helpbox){
|
||||
scope.helpbox.update();
|
||||
}
|
||||
if(scope.textplane){
|
||||
|
||||
scope.textplane.position.x = scope.playlist[scope.playorder][i].connectmodel.matrixWorld.elements[12];
|
||||
scope.textplane.position.y = scope.playlist[scope.playorder][i].connectmodel.matrixWorld.elements[13]+100;
|
||||
scope.textplane.position.z = scope.playlist[scope.playorder][i].connectmodel.matrixWorld.elements[14];
|
||||
}
|
||||
//判断模型转向
|
||||
if(scope.playlist[scope.playorder][i].directchange){
|
||||
let tangent = scope.playlist[scope.playorder][i].curve.getPointAt(scope.playlist[scope.playorder][i].progress+0.001);
|
||||
// scope.animatelist[k]
|
||||
tangent = null;
|
||||
}
|
||||
//增加动画进度,释放点变量
|
||||
scope.playlist[scope.playorder][i].progress += scope.playlist[scope.playorder][i].speed;
|
||||
point = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ import { ModelManager } from '@/jlmap3d/jl3ddevicetrain/loader.js';
|
||||
import { Moveanimate } from '@/jlmap3d/jl3ddevicetrain/component/moveanimate.js';
|
||||
import { Jdqcontrol } from '@/jlmap3d/jl3ddevicetrain/component/jdqcontrol.js';
|
||||
|
||||
import { DragControls } from '@/jlmap3d/main/control/DragControls.js';
|
||||
|
||||
import StompClient from '@/jlmap3d/jl3ddevicetrain/component/StompClient.js';
|
||||
// import { Signallightload } from '@/jlmap3d/jl3ddevice/component/signallight.js';
|
||||
|
||||
@ -31,27 +33,31 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
this.animastats = false;
|
||||
//当前选中模型
|
||||
this.selectmodel = null;
|
||||
|
||||
//当前动画播放模型
|
||||
this.animationmodel = null;
|
||||
//初始化webgl渲染
|
||||
let renderer = new THREE.WebGLRenderer({ antialias: true,alpha: true });
|
||||
let renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||
renderer.setPixelRatio( window.devicePixelRatio );
|
||||
renderer.setSize(dom.offsetWidth, dom.offsetHeight);
|
||||
|
||||
// renderer.shadowMap.enabled = true;
|
||||
// renderer.shadowMap.type = THREE.PCFSoftShadowMap;
|
||||
renderer.setClearColor( 0x000000, 0 );
|
||||
this.dom.appendChild(renderer.domElement);
|
||||
|
||||
//定义相机
|
||||
let camera = new THREE.PerspectiveCamera(70, dom.offsetWidth / dom.offsetHeight, 0.01, 5000);
|
||||
let camera = new THREE.PerspectiveCamera(70, dom.offsetWidth / dom.offsetHeight, 0.01, 4000);
|
||||
camera.position.set(-1000, 1500, 0);
|
||||
camera.aspect = dom.offsetWidth / dom.offsetHeight;
|
||||
camera.updateProjectionMatrix();
|
||||
|
||||
//视角轨迹控制器
|
||||
this.controls = new THREE.OrbitControls(camera, dom);
|
||||
this.controls.enabled = true;
|
||||
this.controls.target = new THREE.Vector3(500,1000,0);
|
||||
this.controls.screenSpacePanning = true;
|
||||
this.controls.update();
|
||||
this.controls.maxDistance = 3000;
|
||||
|
||||
//定义场景(渲染容器)
|
||||
let scene = new THREE.Scene();
|
||||
@ -72,8 +78,9 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
// grid.material.transparent = true;
|
||||
// grid.position.x = 10000;
|
||||
// scene.add( grid );
|
||||
|
||||
|
||||
let objects = [];
|
||||
let dragcontrol = new THREE.DragControls( objects, camera, scope.dom );
|
||||
dragcontrol.enabled = false;
|
||||
|
||||
//菜单选中设备更新设备较少
|
||||
this.updateselect = function(updata){
|
||||
@ -91,15 +98,13 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
};
|
||||
settext(updata.mesh,point)
|
||||
getdevicemsg(updata.mesh.name);
|
||||
// moveanima.animatelist[scope.selectmodel.name+"select1"].enable = true;
|
||||
// console.log(intersects[0].object);
|
||||
scene.add( helpbox );
|
||||
}
|
||||
|
||||
//返回设备选择
|
||||
this.backselect = function(){
|
||||
move2();
|
||||
updatemenulist(scope.jdqcontrol.devicelist);
|
||||
move3();
|
||||
updatemenulist(scope.jdqcontrol.devicelist,"all");
|
||||
|
||||
scope.modelmanager.controllist[0].position.set(19,1270,-275);
|
||||
scope.modelmanager.controllist[0].rotation.y = -Math.PI/2;
|
||||
@ -141,23 +146,47 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
};
|
||||
|
||||
//设备分解、归位动画按钮
|
||||
this.disperdevice = function(){
|
||||
this.disperdevice1 = function(){
|
||||
|
||||
if(scope.status == '1'){
|
||||
if(scope.animastats == false){
|
||||
scope.animastats = true;
|
||||
move1();
|
||||
} else if(scope.animastats == true){
|
||||
scope.animastats = false;
|
||||
move2();
|
||||
if(moveanima.status == true){
|
||||
if(scope.animastats == false){
|
||||
scope.animastats = true;
|
||||
move1();
|
||||
} else if(scope.animastats == true){
|
||||
scope.animastats = false;
|
||||
move2();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
this.disperdevice2 = function(){
|
||||
|
||||
if(scope.status == '1'){
|
||||
if(moveanima.status == true){
|
||||
if(scope.animastats == false){
|
||||
scope.animastats = true;
|
||||
moveanima.setplaylist(moveanima.animatelist[scope.selectmodel.code+"chaijie"],true);
|
||||
} else if(scope.animastats == true){
|
||||
scope.animastats = false;
|
||||
moveanima.setplaylist(moveanima.animatelist[scope.selectmodel.code+"fuwei"],true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
// let stats = new Stats();
|
||||
// dom.appendChild( stats.dom );
|
||||
|
||||
document.addEventListener( "mousedown", onselect, false );
|
||||
document.addEventListener( "mouseup", onmouseup, false );
|
||||
document.addEventListener( "touchstart", ontouch, false );
|
||||
window.onresize = function () {
|
||||
camera.aspect = scope.dom.offsetWidth / scope.dom.offsetHeight;
|
||||
@ -167,12 +196,12 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
|
||||
this.jdqcontrol = new Jdqcontrol();
|
||||
|
||||
let moveanima = new Moveanimate();
|
||||
let moveanima = new Moveanimate(scope);
|
||||
|
||||
this.anime = null;
|
||||
this.modelmanager = new ModelManager();
|
||||
this.modelmanager.loadpromise(Staticmodel, scope.mixers,scene).then(function (data) {
|
||||
moveanima.initlist( scope.modelmanager.controllist);
|
||||
moveanima.initlistnew( scope.modelmanager.controllist);
|
||||
connect = new StompClient();
|
||||
// debugger
|
||||
connect.subscribe("/queue/simulation/"+serviceid,callback);
|
||||
@ -195,6 +224,7 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
|
||||
connect.send("/app/topic/simulation/"+serviceid+"/relay/"+msg.id+"/control/"+msg.on,{});
|
||||
}
|
||||
|
||||
this.upmodelaction = function(type,index){
|
||||
|
||||
if(type == "0"){
|
||||
@ -210,6 +240,23 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
scope.modelmanager.actionlist[index].play();
|
||||
}
|
||||
};
|
||||
|
||||
this.buttoncontrol = function(action){
|
||||
if("startstop"){
|
||||
moveanima.startstop();
|
||||
}
|
||||
if("next"){
|
||||
moveanima.next();
|
||||
}
|
||||
if("before"){
|
||||
moveanima.before();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
this.resetmodel = function(){
|
||||
moveanima.setplaylist(moveanima.animatelist[scope.selectmodel.code+"fuwei"],true);
|
||||
};
|
||||
//循环渲染函数
|
||||
let delta;
|
||||
let data;
|
||||
@ -227,9 +274,12 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
// scope.controls.update();
|
||||
// stats.update();
|
||||
delta = clock.getDelta();
|
||||
if(textplane){
|
||||
textplane.lookAt(camera.position);
|
||||
}
|
||||
if (scope.mixers) {
|
||||
for (let i = 0; i < scope.mixers.length; i++) {
|
||||
if (scope.mixers[i]) {
|
||||
if (scope.mixers[i]._actions[0].isRunning()) {
|
||||
scope.mixers[i].update(delta);
|
||||
}
|
||||
}
|
||||
@ -239,107 +289,18 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
|
||||
|
||||
function move1(){
|
||||
for(let i=0,leni=scope.selectmodel.children.length;i<leni;i++){
|
||||
|
||||
if(scope.selectmodel.children[i].name == "dizuo"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"dizuoon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "Lxing"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"Lxingon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "jiaoxingxiantie"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"jiaoxingxiantieon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "xianquan"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"xianquanon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "zhongchuipian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"zhongchuipianon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "lagan"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"laganon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "dongjiedianzhou"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"dongjiedianzhouon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "neibu"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"neibuon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "jiedian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"jiedianon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "yapian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"yapianon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "fanghuozhao"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"fanghuozhaoon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "dianyuanpian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"dianyuanpianon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "xinpian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"xinpianon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name =="jueyuanzhou"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"jueyuanzhouon"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name =="cigang"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"cigangon"].enable = true;
|
||||
}
|
||||
}
|
||||
moveanima.setplaylist(moveanima.animatelist[scope.selectmodel.code+"on"],true);
|
||||
}
|
||||
|
||||
function move2(){
|
||||
if(scope.selectmodel){
|
||||
moveanima.setplaylist(moveanima.animatelist[scope.selectmodel.code+"off"],true);
|
||||
}
|
||||
}
|
||||
|
||||
for(let i=0,leni=scope.selectmodel.children.length;i<leni;i++){
|
||||
|
||||
if(scope.selectmodel.children[i].name == "dizuo"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"dizuooff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "Lxing"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"Lxingoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "jiaoxingxiantie"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"jiaoxingxiantieoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "xianquan"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"xianquanoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "zhongchuipian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"zhongchuipianoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "lagan"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"laganoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "dongjiedianzhou"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"dongjiedianzhouoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "neibu"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"neibuoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "jiedian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"jiedianoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "yapian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"yapianoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "fanghuozhao"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"fanghuozhaooff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "dianyuanpian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"dianyuanpianoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name == "xinpian"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"xinpianoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name =="jueyuanzhou"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"jueyuanzhouoff"].enable = true;
|
||||
}
|
||||
if(scope.selectmodel.children[i].name =="cigang"){
|
||||
moveanima.animatelist[scope.selectmodel.name+"cigangoff"].enable = true;
|
||||
}
|
||||
}
|
||||
function move3(){
|
||||
if(scope.selectmodel){
|
||||
moveanima.setplaylist(moveanima.animatelist[scope.selectmodel.code+"fuwei"],true);
|
||||
}
|
||||
|
||||
}
|
||||
@ -363,7 +324,7 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
camera.position.set(10800, 500, 0);
|
||||
scope.controls.target = new THREE.Vector3(10000,0,0);
|
||||
scope.jdqcontrol.jdqdevicelist(scope.modelmanager.controllist[i]);
|
||||
updatemenulist(scope.jdqcontrol.devicelist);
|
||||
updatemenulist(scope.jdqcontrol.devicelist,scope.modelmanager.controllist[i].code);
|
||||
scope.controls.update();
|
||||
|
||||
scope.selectmodel = scope.modelmanager.controllist[i];
|
||||
@ -431,7 +392,7 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
camera.position.set(10800, 500, 0);
|
||||
scope.controls.target = new THREE.Vector3(10000,0,0);
|
||||
scope.jdqcontrol.jdqdevicelist(scope.modelmanager.controllist[i]);
|
||||
updatemenulist(scope.jdqcontrol.devicelist);
|
||||
updatemenulist(scope.jdqcontrol.devicelist,scope.modelmanager.controllist[i].code);
|
||||
scope.controls.update();
|
||||
|
||||
scope.selectmodel = scope.modelmanager.controllist[i];
|
||||
@ -464,16 +425,23 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
textplane.material.dispose();
|
||||
}
|
||||
if(intersects[0]){
|
||||
dragcontrol.setObjects(intersects[0].object);
|
||||
|
||||
|
||||
if(intersects[0].object.raycastoff){
|
||||
helpbox = new THREE.BoxHelper( intersects[0].object.parent, 0xff0000 );
|
||||
settext(intersects[0].object.parent,intersects[0].point);
|
||||
getdevicemsg(intersects[0].object.parent.name);
|
||||
|
||||
}else{
|
||||
helpbox = new THREE.BoxHelper( intersects[0].object, 0xff0000 );
|
||||
settext(intersects[0].object,intersects[0].point);
|
||||
getdevicemsg(intersects[0].object.name);
|
||||
|
||||
}
|
||||
|
||||
scope.controls.enabled = false;
|
||||
dragcontrol.enabled = true;
|
||||
scene.add( helpbox );
|
||||
}
|
||||
}
|
||||
@ -481,6 +449,47 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
}
|
||||
|
||||
}
|
||||
function onmouseup(event){
|
||||
// event.preventDefault();
|
||||
scope.controls.enabled = true;
|
||||
dragcontrol.enabled = false;
|
||||
//
|
||||
// dragcontrol.setObjects(null);
|
||||
// document.removeEventListener("mouseup", onmouseup, false );
|
||||
}
|
||||
|
||||
|
||||
this.animationmsgshowon = function(nowobject){
|
||||
scope.animationmodel = nowobject;
|
||||
if(helpbox){
|
||||
scope.animationmodel.helpbox = null;
|
||||
scene.remove( helpbox );
|
||||
helpbox = undefined;
|
||||
}
|
||||
|
||||
settext(scope.animationmodel,scope.animationmodel.position);
|
||||
// console.log(scope.animationmodel);
|
||||
helpbox = new THREE.BoxHelper( scope.animationmodel, 0xff0000 );
|
||||
moveanima.updatehelpbox(helpbox,textplane);
|
||||
// settext(intersects[0].object,intersects[0].point);
|
||||
// getdevicemsg(intersects[0].object.name);
|
||||
scene.add( helpbox );
|
||||
getdevicemsg(nowobject.name);
|
||||
}
|
||||
|
||||
this.animationmsgshowoff = function(nowobject){
|
||||
if(helpbox){
|
||||
scope.animationmodel.helpbox = null;
|
||||
scene.remove( helpbox );
|
||||
helpbox = undefined;
|
||||
}
|
||||
if(textplane){
|
||||
scene.remove(textplane);
|
||||
textplane.geometry.dispose();
|
||||
textplane.material.dispose();
|
||||
}
|
||||
scope.animationmodel = null;
|
||||
}
|
||||
|
||||
function getdevicemsg(selectname){
|
||||
// console.log(selectname);
|
||||
@ -493,34 +502,39 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
}
|
||||
}
|
||||
function settext(intersects,point){
|
||||
if(intersects.text){
|
||||
let textgeometry = new THREE.PlaneBufferGeometry( 300, 200, 1 );
|
||||
let textt = new THREE.CanvasTexture(getTextCanvas(intersects.text));
|
||||
let textmaterial = new THREE.MeshBasicMaterial( {
|
||||
side: THREE.DoubleSide,
|
||||
map:textt ,transparent: true,
|
||||
alphaTest:0.1
|
||||
} );
|
||||
if(textplane){
|
||||
scene.remove(textplane);
|
||||
textplane.geometry.dispose();
|
||||
textplane.material.dispose();
|
||||
if(scope.status == '1'){
|
||||
if(intersects.text){
|
||||
let textgeometry = new THREE.PlaneBufferGeometry( 300, 200, 1 );
|
||||
let textt = new THREE.CanvasTexture(getTextCanvas(intersects.text));
|
||||
let textmaterial = new THREE.MeshBasicMaterial( {
|
||||
side: THREE.DoubleSide,
|
||||
map:textt ,transparent: true,
|
||||
alphaTest:0.1
|
||||
} );
|
||||
if(textplane){
|
||||
scene.remove(textplane);
|
||||
textplane.geometry.dispose();
|
||||
textplane.material.dispose();
|
||||
}
|
||||
textplane= new THREE.Mesh( textgeometry, textmaterial );
|
||||
// textplane.name = data[i].code;
|
||||
textplane.position.x = point.x;
|
||||
textplane.position.y = point.y+100;
|
||||
textplane.position.z = point.z;
|
||||
// console.log(textplane.position);
|
||||
// textplane.tcode = data[i].code;
|
||||
textplane.rotation.y = -Math.PI/2;
|
||||
textplane.lookAt(camera.position);
|
||||
// scope.textlist.push(textplane);
|
||||
// newmesh.children[0].add(textplane);
|
||||
|
||||
scene.add(textplane);
|
||||
|
||||
textgeometry.dispose();
|
||||
textmaterial.dispose();
|
||||
textt.dispose();
|
||||
}
|
||||
textplane= new THREE.Mesh( textgeometry, textmaterial );
|
||||
// textplane.name = data[i].code;
|
||||
textplane.position.x = point.x;
|
||||
textplane.position.y = point.y+100;
|
||||
textplane.position.z = point.z;
|
||||
// console.log(textplane.position);
|
||||
// textplane.tcode = data[i].code;
|
||||
textplane.rotation.y = -Math.PI/2;
|
||||
textplane.lookAt(camera.position);
|
||||
// scope.textlist.push(textplane);
|
||||
// newmesh.children[0].add(textplane);
|
||||
scene.add(textplane);
|
||||
textgeometry.dispose();
|
||||
textmaterial.dispose();
|
||||
textt.dispose();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -530,30 +544,32 @@ export function Jl3ddevice(dom,serviceid) {
|
||||
//canvas文字贴图方法
|
||||
//PS:待提炼 增强功能
|
||||
function getTextCanvas(text){
|
||||
var canvas = document.getElementById('canvastexture');
|
||||
if(scope.status == '1'){
|
||||
var canvas = document.getElementById('canvastexture');
|
||||
|
||||
canvas.width = 256;
|
||||
canvas.height = 128;
|
||||
canvas.width = 256;
|
||||
canvas.height = 128;
|
||||
|
||||
var ctx = canvas.getContext('2d');
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
//var bg = canvas.createPattern(img, "no-repeat");
|
||||
//ctx.fillStyle = bg;
|
||||
ctx.fillRect(0, 0,256,128);
|
||||
ctx.font = "20px Verdana";
|
||||
ctx.fillStyle = '#FFFFFF';
|
||||
ctx.textAlign = 'center';
|
||||
ctx.textBaseline = 'middle';
|
||||
ctx.clearRect(0,0,256,128);
|
||||
//console.log(text.groupNumber);
|
||||
ctx.drawImage(beauty,0,0,256, 128);
|
||||
ctx.fillText("设备部件:"+text, 90,30);
|
||||
// ctx.fillText("车组人员:XXX", 40,20);
|
||||
// ctx.fillText("速度:XXX.XXX", 40,30);
|
||||
//ctx.fillText(text.trainModel.name, width/2,height*3/4);
|
||||
let data = ctx.getImageData(0, 0,256, 128);
|
||||
return data;
|
||||
}
|
||||
|
||||
//var bg = canvas.createPattern(img, "no-repeat");
|
||||
//ctx.fillStyle = bg;
|
||||
ctx.fillRect(0, 0,256,128);
|
||||
ctx.font = "20px Verdana";
|
||||
ctx.fillStyle = '#FFFFFF';
|
||||
ctx.textAlign = 'center';
|
||||
ctx.textBaseline = 'middle';
|
||||
ctx.clearRect(0,0,256,128);
|
||||
//console.log(text.groupNumber);
|
||||
ctx.drawImage(beauty,0,0,256, 128);
|
||||
ctx.fillText("设备部件:"+text, 90,30);
|
||||
// ctx.fillText("车组人员:XXX", 40,20);
|
||||
// ctx.fillText("速度:XXX.XXX", 40,30);
|
||||
//ctx.fillText(text.trainModel.name, width/2,height*3/4);
|
||||
let data = ctx.getImageData(0, 0,256, 128);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
570
src/jlmap3d/jl3ddevicetrain/jl3ddevicetrainold.js
Normal file
570
src/jlmap3d/jl3ddevicetrain/jl3ddevicetrainold.js
Normal file
@ -0,0 +1,570 @@
|
||||
import { Staticmodel } from '@/jlmap3d/jl3ddevicetrain/config.js';
|
||||
//loader
|
||||
import { FBXLoader } from '@/jlmap3d/main/loaders/FBXLoader';
|
||||
import { OrbitControls } from '@/jlmap3d/main/control/OrbitControls';
|
||||
|
||||
import { ModelManager } from '@/jlmap3d/jl3ddevicetrain/loader.js';
|
||||
import { Moveanimate } from '@/jlmap3d/jl3ddevicetrain/component/moveanimate.js';
|
||||
import { Jdqcontrol } from '@/jlmap3d/jl3ddevicetrain/component/jdqcontrol.js';
|
||||
|
||||
import StompClient from '@/jlmap3d/jl3ddevicetrain/component/StompClient.js';
|
||||
// import { Signallightload } from '@/jlmap3d/jl3ddevice/component/signallight.js';
|
||||
|
||||
// import StompClient from '@/utils/sock';
|
||||
import {Stats} from '@/jlmap3d/main/lib/stats.min.js';
|
||||
|
||||
var clock = new THREE.Clock();
|
||||
export function Jl3ddevice(dom,serviceid) {
|
||||
let scope = this;
|
||||
//helpbox选中包围框
|
||||
//textplane三维介绍标牌
|
||||
let helpbox,textplane;
|
||||
let connect = null;
|
||||
this.dom = dom;
|
||||
this.nowcode = null;
|
||||
this.animateswitch = false;
|
||||
this.mixers = [];
|
||||
this.showmodel = null;
|
||||
//场景状态
|
||||
this.status = 0;
|
||||
//动画状态
|
||||
this.animastats = false;
|
||||
//当前选中模型
|
||||
this.selectmodel = null;
|
||||
|
||||
//初始化webgl渲染
|
||||
let renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||
renderer.setPixelRatio( window.devicePixelRatio );
|
||||
renderer.setSize(dom.offsetWidth, dom.offsetHeight);
|
||||
|
||||
// renderer.shadowMap.enabled = true;
|
||||
// renderer.shadowMap.type = THREE.PCFSoftShadowMap;
|
||||
renderer.setClearColor( 0x000000, 0 );
|
||||
this.dom.appendChild(renderer.domElement);
|
||||
|
||||
//定义相机
|
||||
let camera = new THREE.PerspectiveCamera(70, dom.offsetWidth / dom.offsetHeight, 0.01, 5000);
|
||||
camera.position.set(-1000, 1500, 0);
|
||||
camera.aspect = dom.offsetWidth / dom.offsetHeight;
|
||||
camera.updateProjectionMatrix();
|
||||
|
||||
//视角轨迹控制器
|
||||
this.controls = new THREE.OrbitControls(camera, dom);
|
||||
this.controls.target = new THREE.Vector3(500,1000,0);
|
||||
this.controls.screenSpacePanning = true;
|
||||
this.controls.update();
|
||||
|
||||
//定义场景(渲染容器)
|
||||
let scene = new THREE.Scene();
|
||||
var bgTexture = new THREE.TextureLoader().load("../../static/background/other.jpg");
|
||||
scene.background = bgTexture;
|
||||
|
||||
//定义全局光
|
||||
let ambientLight = new THREE.AmbientLight(0xffffff, 1.3);
|
||||
scene.add(ambientLight);
|
||||
|
||||
var light = new THREE.HemisphereLight( 0xffffff, 0x444444 );
|
||||
light.position.set( 0, 200, 0 );
|
||||
scene.add( light );
|
||||
|
||||
//网格地面
|
||||
// var grid = new THREE.GridHelper( 1000, 20, 0x000000, 0x000000 );
|
||||
// grid.material.opacity = 0.2;
|
||||
// grid.material.transparent = true;
|
||||
// grid.position.x = 10000;
|
||||
// scene.add( grid );
|
||||
|
||||
|
||||
|
||||
//菜单选中设备更新设备较少
|
||||
this.updateselect = function(updata){
|
||||
// console.log(updata);
|
||||
if(helpbox){
|
||||
scene.remove( helpbox );
|
||||
helpbox = null;
|
||||
}
|
||||
helpbox = new THREE.BoxHelper( updata.mesh, 0xff0000 );
|
||||
// console.log(updata.mesh);
|
||||
let point = {
|
||||
x:updata.mesh.matrixWorld.elements[12],
|
||||
y:updata.mesh.matrixWorld.elements[13],
|
||||
z:updata.mesh.matrixWorld.elements[14]
|
||||
};
|
||||
settext(updata.mesh,point)
|
||||
getdevicemsg(updata.mesh.name);
|
||||
// moveanima.animatelist[scope.selectmodel.name+"select1"].enable = true;
|
||||
// console.log(intersects[0].object);
|
||||
scene.add( helpbox );
|
||||
}
|
||||
|
||||
//返回设备选择
|
||||
this.backselect = function(){
|
||||
move2();
|
||||
updatemenulist(scope.jdqcontrol.devicelist);
|
||||
|
||||
scope.modelmanager.controllist[0].position.set(19,1270,-275);
|
||||
scope.modelmanager.controllist[0].rotation.y = -Math.PI/2;
|
||||
scope.modelmanager.controllist[0].rotation.z = -Math.PI/2;
|
||||
|
||||
scope.modelmanager.controllist[1].position.set(19,1270,-165);
|
||||
scope.modelmanager.controllist[1].rotation.y = -Math.PI/2;
|
||||
scope.modelmanager.controllist[1].rotation.z = -Math.PI/2;
|
||||
|
||||
scope.modelmanager.controllist[2].position.set(19,1270,-55);
|
||||
scope.modelmanager.controllist[2].rotation.y = -Math.PI/2;
|
||||
scope.modelmanager.controllist[2].rotation.z = -Math.PI/2;
|
||||
|
||||
scope.modelmanager.controllist[3].position.set(19,1270,65);
|
||||
scope.modelmanager.controllist[3].rotation.y = -Math.PI/2;
|
||||
scope.modelmanager.controllist[3].rotation.z = -Math.PI/2;
|
||||
|
||||
scope.modelmanager.controllist[4].position.set(19,1270,170);
|
||||
scope.modelmanager.controllist[4].rotation.y = -Math.PI/2;
|
||||
scope.modelmanager.controllist[4].rotation.z = -Math.PI/2;
|
||||
|
||||
scope.modelmanager.controllist[5].position.set(19,1270,280);
|
||||
scope.modelmanager.controllist[5].rotation.y = -Math.PI/2;
|
||||
scope.modelmanager.controllist[5].rotation.z = -Math.PI/2;
|
||||
|
||||
camera.position.set(-1000, 1500, 0);
|
||||
scope.controls.target = new THREE.Vector3(500,1000,0);
|
||||
scope.controls.update();
|
||||
scope.status = '0';
|
||||
if(textplane){
|
||||
scene.remove(textplane);
|
||||
textplane.geometry.dispose();
|
||||
textplane.material.dispose();
|
||||
}
|
||||
scope.selectmodel = null;
|
||||
scope.jdqcontrol.devicelist = [];
|
||||
scope.animastats = false;
|
||||
updatemsg();
|
||||
};
|
||||
|
||||
//设备分解、归位动画按钮
|
||||
this.disperdevice = function(){
|
||||
|
||||
if(scope.status == '1'){
|
||||
if(moveanima.status == true){
|
||||
if(scope.animastats == false){
|
||||
scope.animastats = true;
|
||||
move1();
|
||||
} else if(scope.animastats == true){
|
||||
scope.animastats = false;
|
||||
move2();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
// let stats = new Stats();
|
||||
// dom.appendChild( stats.dom );
|
||||
|
||||
document.addEventListener( "mousedown", onselect, false );
|
||||
document.addEventListener( "touchstart", ontouch, false );
|
||||
window.onresize = function () {
|
||||
camera.aspect = scope.dom.offsetWidth / scope.dom.offsetHeight;
|
||||
camera.updateProjectionMatrix();
|
||||
renderer.setSize(scope.dom.offsetWidth, scope.dom.offsetHeight);
|
||||
}
|
||||
|
||||
this.jdqcontrol = new Jdqcontrol();
|
||||
|
||||
let moveanima = new Moveanimate(scope);
|
||||
|
||||
this.anime = null;
|
||||
this.modelmanager = new ModelManager();
|
||||
this.modelmanager.loadpromise(Staticmodel, scope.mixers,scene).then(function (data) {
|
||||
moveanima.initlistnew( scope.modelmanager.controllist);
|
||||
connect = new StompClient();
|
||||
// debugger
|
||||
connect.subscribe("/queue/simulation/"+serviceid,callback);
|
||||
animate();
|
||||
});
|
||||
this.sendmsg = function (type,index){
|
||||
// console.log(index);
|
||||
let msg = {
|
||||
// deskId:serviceid,
|
||||
id:index+1,
|
||||
on:null
|
||||
};
|
||||
if(type == "0"){
|
||||
msg.on = true;
|
||||
}
|
||||
if(type == "1"){
|
||||
msg.on = false;
|
||||
}
|
||||
//"/app/topic/relay/"+msg.id+"/control/"+msg.on
|
||||
|
||||
connect.send("/app/topic/simulation/"+serviceid+"/relay/"+msg.id+"/control/"+msg.on,{});
|
||||
}
|
||||
this.upmodelaction = function(type,index){
|
||||
|
||||
if(type == "0"){
|
||||
scope.modelmanager.actionlist[index].reset();
|
||||
scope.modelmanager.actionlist[index].time = 0;
|
||||
scope.modelmanager.actionlist[index].timeScale = 1;
|
||||
scope.modelmanager.actionlist[index].play();
|
||||
}
|
||||
if(type == "1"){
|
||||
scope.modelmanager.actionlist[index].reset();
|
||||
scope.modelmanager.actionlist[index].time = scope.modelmanager.actionlist[index]._clip.duration;
|
||||
scope.modelmanager.actionlist[index].timeScale = -1;
|
||||
scope.modelmanager.actionlist[index].play();
|
||||
}
|
||||
};
|
||||
//循环渲染函数
|
||||
let delta;
|
||||
let data;
|
||||
function callback(Response){
|
||||
// console.log(Response);
|
||||
data = JSON.parse(Response.body);
|
||||
// console.log(data);
|
||||
upjdqstats(data);
|
||||
}
|
||||
function animate() {
|
||||
|
||||
scope.anime = requestAnimationFrame(animate);
|
||||
renderer.render(scene, camera);
|
||||
moveanima.animateupdate();
|
||||
// scope.controls.update();
|
||||
// stats.update();
|
||||
delta = clock.getDelta();
|
||||
if (scope.mixers) {
|
||||
for (let i = 0; i < scope.mixers.length; i++) {
|
||||
if (scope.mixers[i]._actions[0].isRunning()) {
|
||||
scope.mixers[i].update(delta);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
function move1(){
|
||||
console.log(scope.selectmodel);
|
||||
moveanima.animatelist[scope.selectmodel.code+"fanghuozhao"+"on"].enable = true;
|
||||
// for(let i=0,leni=scope.selectmodel.children.length;i<leni;i++){
|
||||
//
|
||||
// if(scope.selectmodel.children[i].name == "dizuo"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"dizuoon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "Lxing"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"Lxingon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "jiaoxingxiantie"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"jiaoxingxiantieon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "xianquan"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"xianquanon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "zhongchuipian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"zhongchuipianon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "lagan"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"laganon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "dongjiedianzhou"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"dongjiedianzhouon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "neibu"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"neibuon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "jiedian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"jiedianon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "yapian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"yapianon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "fanghuozhao"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"fanghuozhaoon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "dianyuanpian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"dianyuanpianon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "xinpian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"xinpianon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name =="jueyuanzhou"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"jueyuanzhouon"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name =="cigang"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"cigangon"].enable = true;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
function move2(){
|
||||
if(scope.selectmodel){
|
||||
moveanima.animatelist[scope.selectmodel.code+"yapian"+"off"].enable = true;
|
||||
// for(let i=0,leni=scope.selectmodel.children.length;i<leni;i++){
|
||||
//
|
||||
// if(scope.selectmodel.children[i].name == "dizuo"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"dizuooff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "Lxing"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"Lxingoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "jiaoxingxiantie"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"jiaoxingxiantieoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "xianquan"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"xianquanoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "zhongchuipian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"zhongchuipianoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "lagan"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"laganoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "dongjiedianzhou"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"dongjiedianzhouoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "neibu"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"neibuoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "jiedian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"jiedianoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "yapian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"yapianoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "fanghuozhao"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"fanghuozhaooff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "dianyuanpian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"dianyuanpianoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name == "xinpian"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"xinpianoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name =="jueyuanzhou"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"jueyuanzhouoff"].enable = true;
|
||||
// }
|
||||
// if(scope.selectmodel.children[i].name =="cigang"){
|
||||
// moveanima.animatelist[scope.selectmodel.name+"cigangoff"].enable = true;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
function ontouch(event){
|
||||
if(scope.status == '0'){
|
||||
let raycaster = new THREE.Raycaster();
|
||||
//定义平面鼠标点击坐标
|
||||
|
||||
let mouse = new THREE.Vector2();
|
||||
mouse.x = (event.touches[0].pageX / dom.offsetWidth) * 2 - 1;
|
||||
mouse.y = -(event.touches[0].pageY / dom.offsetHeight) * 2 + 1;
|
||||
|
||||
raycaster.setFromCamera( mouse, camera );
|
||||
for(let i=0,leni=scope.modelmanager.controllist.length;i<leni;i++){
|
||||
let intersects = raycaster.intersectObjects( scope.modelmanager.controllist[i].children,true);
|
||||
|
||||
if(intersects[0]){
|
||||
scope.modelmanager.controllist[i].position.set(10000,0,0);
|
||||
scope.modelmanager.controllist[i].rotation.y = 0;
|
||||
scope.modelmanager.controllist[i].rotation.z = 0;
|
||||
camera.position.set(10800, 500, 0);
|
||||
scope.controls.target = new THREE.Vector3(10000,0,0);
|
||||
scope.jdqcontrol.jdqdevicelist(scope.modelmanager.controllist[i]);
|
||||
updatemenulist(scope.jdqcontrol.devicelist);
|
||||
scope.controls.update();
|
||||
|
||||
scope.selectmodel = scope.modelmanager.controllist[i];
|
||||
scope.status = '1';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if(scope.status == '1'){
|
||||
|
||||
//定义光线
|
||||
let raycaster = new THREE.Raycaster();
|
||||
//定义平面鼠标点击坐标
|
||||
let mouse = new THREE.Vector2();
|
||||
mouse.x = (event.touches[0].pageX / dom.offsetWidth) * 2 - 1;
|
||||
mouse.y = -(event.touches[0].pageY / dom.offsetHeight) * 2 + 1;
|
||||
|
||||
raycaster.setFromCamera( mouse, camera );
|
||||
|
||||
|
||||
let intersects = raycaster.intersectObjects( scope.modelmanager.controllist,true);
|
||||
if(helpbox){
|
||||
scene.remove( helpbox );
|
||||
helpbox = null;
|
||||
}
|
||||
if(textplane){
|
||||
scene.remove(textplane);
|
||||
textplane.geometry.dispose();
|
||||
textplane.material.dispose();
|
||||
}
|
||||
if(intersects[0]){
|
||||
|
||||
if(intersects[0].object.raycastoff){
|
||||
helpbox = new THREE.BoxHelper( intersects[0].object.parent, 0xff0000 );
|
||||
settext(intersects[0].object.parent,intersects[0].point);
|
||||
getdevicemsg(intersects[0].object.parent.name);
|
||||
}else{
|
||||
helpbox = new THREE.BoxHelper( intersects[0].object, 0xff0000 );
|
||||
settext(intersects[0].object,intersects[0].point);
|
||||
getdevicemsg(intersects[0].object.name);
|
||||
}
|
||||
scene.add( helpbox );
|
||||
}
|
||||
}
|
||||
}
|
||||
function onselect(event){
|
||||
if(event.button == '0'){
|
||||
if(scope.status == '0'){
|
||||
let raycaster = new THREE.Raycaster();
|
||||
//定义平面鼠标点击坐标
|
||||
let mouse = new THREE.Vector2();
|
||||
mouse.x = (event.clientX / dom.offsetWidth) * 2 - 1;
|
||||
mouse.y = -(event.clientY / dom.offsetHeight) * 2 + 1;
|
||||
|
||||
raycaster.setFromCamera( mouse, camera );
|
||||
for(let i=0,leni=scope.modelmanager.controllist.length;i<leni;i++){
|
||||
|
||||
let intersects = raycaster.intersectObjects( scope.modelmanager.controllist[i].children,true);
|
||||
|
||||
if(intersects[0]){
|
||||
|
||||
scope.modelmanager.controllist[i].position.set(10000,0,0);
|
||||
scope.modelmanager.controllist[i].rotation.y = 0;
|
||||
scope.modelmanager.controllist[i].rotation.z = 0;
|
||||
camera.position.set(10800, 500, 0);
|
||||
scope.controls.target = new THREE.Vector3(10000,0,0);
|
||||
scope.jdqcontrol.jdqdevicelist(scope.modelmanager.controllist[i]);
|
||||
updatemenulist(scope.jdqcontrol.devicelist);
|
||||
scope.controls.update();
|
||||
|
||||
scope.selectmodel = scope.modelmanager.controllist[i];
|
||||
scope.status = '1';
|
||||
i = scope.modelmanager.controllist.length;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if(scope.status == '1'){
|
||||
|
||||
//定义光线
|
||||
let raycaster = new THREE.Raycaster();
|
||||
//定义平面鼠标点击坐标
|
||||
let mouse = new THREE.Vector2();
|
||||
mouse.x = (event.clientX / dom.offsetWidth) * 2 - 1;
|
||||
mouse.y = -(event.clientY / dom.offsetHeight) * 2 + 1;
|
||||
|
||||
raycaster.setFromCamera( mouse, camera );
|
||||
|
||||
|
||||
let intersects = raycaster.intersectObjects( scope.modelmanager.controllist,true);
|
||||
if(helpbox){
|
||||
scene.remove( helpbox );
|
||||
helpbox = null;
|
||||
}
|
||||
if(textplane){
|
||||
scene.remove(textplane);
|
||||
textplane.geometry.dispose();
|
||||
textplane.material.dispose();
|
||||
}
|
||||
if(intersects[0]){
|
||||
|
||||
if(intersects[0].object.raycastoff){
|
||||
helpbox = new THREE.BoxHelper( intersects[0].object.parent, 0xff0000 );
|
||||
settext(intersects[0].object.parent,intersects[0].point);
|
||||
getdevicemsg(intersects[0].object.parent.name);
|
||||
}else{
|
||||
helpbox = new THREE.BoxHelper( intersects[0].object, 0xff0000 );
|
||||
settext(intersects[0].object,intersects[0].point);
|
||||
getdevicemsg(intersects[0].object.name);
|
||||
}
|
||||
scene.add( helpbox );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.animationmsgshow = function(nowobject){
|
||||
getdevicemsg(nowobject.name);
|
||||
}
|
||||
|
||||
function getdevicemsg(selectname){
|
||||
// console.log(selectname);
|
||||
for(let i=0,leni=scope.jdqcontrol.devicelist.length;i<leni;i++){
|
||||
|
||||
if(selectname == scope.jdqcontrol.devicelist[i].name){
|
||||
updatemsg(scope.jdqcontrol.devicelist[i].text,scope.jdqcontrol.devicelist[i].msg);
|
||||
i=leni;
|
||||
}
|
||||
}
|
||||
}
|
||||
function settext(intersects,point){
|
||||
if(intersects.text){
|
||||
let textgeometry = new THREE.PlaneBufferGeometry( 300, 200, 1 );
|
||||
let textt = new THREE.CanvasTexture(getTextCanvas(intersects.text));
|
||||
let textmaterial = new THREE.MeshBasicMaterial( {
|
||||
side: THREE.DoubleSide,
|
||||
map:textt ,transparent: true,
|
||||
alphaTest:0.1
|
||||
} );
|
||||
if(textplane){
|
||||
scene.remove(textplane);
|
||||
textplane.geometry.dispose();
|
||||
textplane.material.dispose();
|
||||
}
|
||||
textplane= new THREE.Mesh( textgeometry, textmaterial );
|
||||
// textplane.name = data[i].code;
|
||||
textplane.position.x = point.x;
|
||||
textplane.position.y = point.y+100;
|
||||
textplane.position.z = point.z;
|
||||
// console.log(textplane.position);
|
||||
// textplane.tcode = data[i].code;
|
||||
textplane.rotation.y = -Math.PI/2;
|
||||
textplane.lookAt(camera.position);
|
||||
// scope.textlist.push(textplane);
|
||||
// newmesh.children[0].add(textplane);
|
||||
scene.add(textplane);
|
||||
textgeometry.dispose();
|
||||
textmaterial.dispose();
|
||||
textt.dispose();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
var beauty = new Image();
|
||||
beauty.src = "../../static/texture/guide.png";
|
||||
//canvas文字贴图方法
|
||||
//PS:待提炼 增强功能
|
||||
function getTextCanvas(text){
|
||||
var canvas = document.getElementById('canvastexture');
|
||||
|
||||
canvas.width = 256;
|
||||
canvas.height = 128;
|
||||
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
//var bg = canvas.createPattern(img, "no-repeat");
|
||||
//ctx.fillStyle = bg;
|
||||
ctx.fillRect(0, 0,256,128);
|
||||
ctx.font = "20px Verdana";
|
||||
ctx.fillStyle = '#FFFFFF';
|
||||
ctx.textAlign = 'center';
|
||||
ctx.textBaseline = 'middle';
|
||||
ctx.clearRect(0,0,256,128);
|
||||
//console.log(text.groupNumber);
|
||||
ctx.drawImage(beauty,0,0,256, 128);
|
||||
ctx.fillText("设备部件:"+text, 90,30);
|
||||
// ctx.fillText("车组人员:XXX", 40,20);
|
||||
// ctx.fillText("速度:XXX.XXX", 40,30);
|
||||
//ctx.fillText(text.trainModel.name, width/2,height*3/4);
|
||||
let data = ctx.getImageData(0, 0,256, 128);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -6,43 +6,42 @@ export function ModelManager(){
|
||||
this.controllist = [];
|
||||
this.actionlist = [];
|
||||
let jdq1 = {
|
||||
code:jdq1,
|
||||
code:"jdq1",
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
let jdq2 = {
|
||||
code:jdq2,
|
||||
code:"jdq2",
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
let jdq3 = {
|
||||
code:jdq3,
|
||||
code:"jdq3",
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
let jdq4 = {
|
||||
code:jdq4,
|
||||
code:"jdq4",
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
let jdq5 = {
|
||||
code:jdq5,
|
||||
code:"jdq5",
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
let jdq6 = {
|
||||
code:jdq6,
|
||||
code:"jdq6",
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
|
||||
|
||||
this.jdqg = {
|
||||
code:null,
|
||||
locateType:"00",
|
||||
@ -164,7 +163,9 @@ function fbxpromise(asset,mixers,model){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
object.name = asset.name;
|
||||
object.code = model.code;
|
||||
model.mesh = object;
|
||||
|
||||
if(object.animations.length>0){
|
||||
|
@ -140,7 +140,7 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
|
||||
// controls3.getObject().rotation.x = Math.PI/2;
|
||||
scene.add(controls3.getObject());
|
||||
|
||||
let cameracctv = new THREE.PerspectiveCamera(50, dom.clientWidth/dom.clientHeight, 1, 10);
|
||||
let cameracctv = new THREE.PerspectiveCamera(50, dom.clientWidth/dom.clientHeight, 1, 50);
|
||||
cameracctv.position.set( 0, -1,30 );
|
||||
|
||||
// cameracctv.rotation.y = Math.PI/2;
|
||||
@ -251,7 +251,9 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
|
||||
renderer.render(scene, camera);
|
||||
//cctv渲染
|
||||
|
||||
|
||||
if(scope.cctvswitch == true){
|
||||
renderercctv.render(scene,cameracctv);
|
||||
}
|
||||
|
||||
//相机按键位移
|
||||
// controls3.update();
|
||||
@ -284,11 +286,11 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
|
||||
//
|
||||
delta = clock.getDelta();
|
||||
for (let i=mixers.length-1; i>=0; i--) {
|
||||
if(mixers[i]._actions[0].isRunning()){
|
||||
mixers[i].update( delta );
|
||||
}
|
||||
}
|
||||
if(scope.cctvswitch == true){
|
||||
renderercctv.render(scene,cameracctv);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -58,21 +58,23 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
|
||||
// // console.log(event.data);
|
||||
//
|
||||
// }
|
||||
|
||||
if(event.data.type == "Device_Load_Destroy_3D"){
|
||||
DeviceDestroy(event.data);
|
||||
return;
|
||||
}
|
||||
|
||||
if(event.data.type == 'TrainRun_3D'){
|
||||
|
||||
for(let i=0,leni=event.data.body.length;i<leni;i++){
|
||||
// console.log(event.data.body[i]);
|
||||
trainrun(event.data.body[i]);
|
||||
trainrunnew(event.data.body[i]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// if(event.data.type == 'TRAIN'){
|
||||
// // console.log(event.data);
|
||||
// console.log(event.data);
|
||||
// trainrun(event.data);
|
||||
// }
|
||||
if (event.data.type== 'SIGNAL' && signallist) {
|
||||
@ -144,10 +146,202 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function trainrun(data){
|
||||
function trainrunnew(data){
|
||||
let code = data.code;
|
||||
|
||||
if(trainlisttest.list[code].right != data.right){
|
||||
|
||||
if(data.right == "0"){
|
||||
trainlisttest.list[code].right = "0";
|
||||
trainlisttest.list[code].rotation.y = Math.PI;
|
||||
let point = rails.sectionrail[data.section].lineleft.getPointAt(data.offset);
|
||||
trainlisttest.list[code].position.x = point.x;
|
||||
for (let tl=0; tl<6; tl++) {
|
||||
trainlisttest.list[code].children[tl].position.z = point.z;
|
||||
}
|
||||
}else{
|
||||
trainlisttest.list[code].right = "1";
|
||||
trainlisttest.list[code].rotation.y = 0;
|
||||
let point = rails.sectionrail[data.section].lineleft.getPointAt(data.offset);
|
||||
trainlisttest.list[code].position.x = point.x;
|
||||
for (let tl=0; tl<6; tl++) {
|
||||
trainlisttest.list[code].children[tl].position.z = point.z;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// console.log(data);
|
||||
|
||||
if(trainlisttest.list[code].dispose == "0"){
|
||||
if (data.right == '1') { // 向右
|
||||
trainlisttest.list[code].right = '1';
|
||||
trainlisttest.list[code].progress = data.offset;
|
||||
// trainlisttest.list[code].isstandsection = rails.sectionrail[data.section].standTrack;
|
||||
// if(rails.sectionrail[data.section].standTrack){
|
||||
// trainlisttest.list[code].statsstop = 0;
|
||||
// }
|
||||
let point = rails.sectionrail[data.section].lineleft.getPointAt(trainlisttest.list[code].progress);
|
||||
trainlisttest.list[code].rotation.y = 0;
|
||||
trainlisttest.list[code].position.x = point.x;
|
||||
trainlisttest.list[code].position.y = 0;
|
||||
|
||||
// for (let tl=0; tl<6; tl++) {
|
||||
// trainlisttest.list[code].children[tl].position.z = parseFloat(point.z);
|
||||
// }
|
||||
|
||||
// trainlisttest.list[code].curve = rails.sectionrail[data.section].lineleft;
|
||||
|
||||
// if(data.next){
|
||||
// trainlisttest.list[code].nextcode = data.next;
|
||||
// trainlisttest.list[code].nextcurve = rails.sectionrail[data.next].lineleft;
|
||||
// trainlisttest.list[code].nextlen = rails.sectionrail[data.next].lengthfact;
|
||||
// }
|
||||
// trainlisttest.list[code].len = rails.sectionrail[data.section].lengthfact;
|
||||
trainlisttest.list[code].status = '1';
|
||||
|
||||
if(trainlisttest.list[code].children[0].position.z != point.z){
|
||||
trainlisttest.list[code].children[0].up = new THREE.Vector3(1,0,0);
|
||||
let tangent = rails.sectionrail[data.section].lineleft.getTangentAt(data.offset).normalize();
|
||||
trainlisttest.list[code].children[0].axis.crossVectors(trainlisttest.list[code].children[0].up, tangent).normalize();
|
||||
let radians = Math.acos(trainlisttest.list[code].children[0].up.dot(tangent));
|
||||
trainlisttest.list[code].children[0].quaternion.setFromAxisAngle(trainlisttest.list[code].children[0].axis, radians);
|
||||
trainlisttest.list[code].children[0].rotation.x = -Math.PI/2;
|
||||
trainlisttest.list[code].children[0].rotation.z = trainlisttest.list[code].children[0].rotation.y;
|
||||
trainlisttest.list[code].children[0].rotation.y = 0;
|
||||
let rotas = {
|
||||
posr:point,
|
||||
rota:trainlisttest.list[code].children[0].rotation.z
|
||||
}
|
||||
trainlisttest.list[code].children[1].rotalist.push(rotas);
|
||||
|
||||
|
||||
let offsetz = parseFloat(point.z) - parseFloat(trainlisttest.list[code].children[0].position.z);
|
||||
trainlisttest.list[code].children[0].position.z += offsetz;
|
||||
}
|
||||
if(trainlisttest.list[code].children[1].rotalist.length > 0 || trainlisttest.list[code].children[2].rotalist.length > 0 || trainlisttest.list[code].children[3].rotalist.length > 0 || trainlisttest.list[code].children[4].rotalist.length > 0|| trainlisttest.list[code].children[5].rotalist.length > 0){
|
||||
for(let rs = 1;rs<6;rs++){
|
||||
//console.log(rs);
|
||||
if(trainlisttest.list[code].children[rs].rotalist[0]){
|
||||
let offsetz = parseFloat(trainlisttest.list[code].children[rs].rotalist[0].posr.z) - parseFloat(trainlisttest.list[code].children[rs].matrixWorld.elements[14]);
|
||||
|
||||
trainlisttest.list[code].children[rs].position.z += offsetz;
|
||||
|
||||
for(let xh=0;xh<trainlisttest.list[code].children[rs].rotalist.length;xh++){
|
||||
if((trainlisttest.list[code].children[rs].matrixWorld.elements[12])>=trainlisttest.list[code].children[rs].rotalist[0].posr.x){
|
||||
// if(trainlisttest.list[code].groupNumber == "005"){
|
||||
// console.log("rs:"+rs);
|
||||
// console.log(trainlisttest.list[code].children[rs].matrixWorld.elements[12]);
|
||||
// console.log(trainlisttest.list[code].children[rs].rotalist[0].posr.x);
|
||||
// }
|
||||
if(rs != 5){
|
||||
let asd = trainlisttest.list[code].children[rs].rotalist[0];
|
||||
trainlisttest.list[code].children[rs+1].rotalist.push(asd);
|
||||
|
||||
}
|
||||
|
||||
trainlisttest.list[code].children[rs].rotation.z = trainlisttest.list[code].children[rs].rotalist[0].rota;
|
||||
trainlisttest.list[code].children[rs].rotalist.splice(0,1)
|
||||
xh--;
|
||||
}else{
|
||||
xh = trainlisttest.list[code].children[rs].rotalist.length;
|
||||
}
|
||||
}
|
||||
//console.log(trainlisttest.list[code].children[rs].rotalist.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
} else if (data.right == '0') { // 向左
|
||||
trainlisttest.list[code].right = '0';
|
||||
trainlisttest.list[code].progress = 1-data.offset;
|
||||
// trainlisttest.list[code].isstandsection = rails.sectionrail[data.section].standTrack;
|
||||
// if(rails.sectionrail[data.section].standTrack){
|
||||
// trainlisttest.list[code].statsstop = 0;
|
||||
// }
|
||||
let point = rails.sectionrail[data.section].lineright.getPointAt(trainlisttest.list[code].progress);
|
||||
|
||||
trainlisttest.list[code].rotation.y = Math.PI;
|
||||
trainlisttest.list[code].position.x = point.x;
|
||||
trainlisttest.list[code].position.y = 0;
|
||||
|
||||
// for (let tl=0; tl<6; tl++) {
|
||||
// trainlisttest.list[code].children[tl].position.z = parseFloat(-point.z);
|
||||
// }
|
||||
|
||||
// trainlisttest.list[code].curve = rails.sectionrail[data.section].lineright;
|
||||
// if(data.next){
|
||||
// trainlisttest.list[code].nextcode = data.next;
|
||||
// trainlisttest.list[code].nextcurve = rails.sectionrail[data.next].lineright;
|
||||
// trainlisttest.list[code].nextlen = rails.sectionrail[data.next].lengthfact;
|
||||
// }
|
||||
// trainlisttest.list[code].len = rails.sectionrail[data.section].lengthfact;
|
||||
trainlisttest.list[code].status = '0';
|
||||
if(-trainlisttest.list[code].children[0].position.z != point.z){
|
||||
|
||||
|
||||
trainlisttest.list[code].children[0].up = new THREE.Vector3(-1,0,0);
|
||||
let tangent = rails.sectionrail[data.section].lineright.getTangentAt(data.offset).normalize();
|
||||
trainlisttest.list[code].children[0].axis.crossVectors(trainlisttest.list[code].children[0].up, tangent).normalize();
|
||||
let radians = Math.acos(trainlisttest.list[code].children[0].up.dot(tangent));
|
||||
trainlisttest.list[code].children[0].quaternion.setFromAxisAngle(trainlisttest.list[code].children[0].axis, radians);
|
||||
trainlisttest.list[code].children[0].rotation.x = -Math.PI/2;
|
||||
trainlisttest.list[code].children[0].rotation.z = trainlisttest.list[code].children[0].rotation.y;
|
||||
trainlisttest.list[code].children[0].rotation.y = 0;
|
||||
|
||||
let rotas = {
|
||||
posr:point,
|
||||
rota:trainlisttest.list[code].children[0].rotation.z
|
||||
}
|
||||
trainlisttest.list[code].children[1].rotalist.push(rotas);
|
||||
let offsetz = point.z + trainlisttest.list[code].children[0].position.z;
|
||||
trainlisttest.list[code].children[0].position.z -= offsetz;
|
||||
// trainlisttest.list[code].position.z = point.z;
|
||||
|
||||
}
|
||||
if(trainlisttest.list[code].children[1].rotalist.length > 0 || trainlisttest.list[code].children[2].rotalist.length > 0 || trainlisttest.list[code].children[3].rotalist.length > 0 || trainlisttest.list[code].children[4].rotalist.length > 0|| trainlisttest.list[code].children[5].rotalist.length > 0){
|
||||
|
||||
for(let rs = 1;rs<6;rs++){
|
||||
//console.log(rs);
|
||||
if(trainlisttest.list[code].children[rs].rotalist[0]){
|
||||
|
||||
let offsetz = parseFloat(trainlisttest.list[code].children[rs].rotalist[0].posr.z) + parseFloat(trainlisttest.list[code].children[rs].position.z);
|
||||
trainlisttest.list[code].children[rs].position.z -= offsetz;
|
||||
|
||||
for(let xh=0;xh<trainlisttest.list[code].children[rs].rotalist.length;xh++){
|
||||
if((trainlisttest.list[code].children[rs].matrixWorld.elements[12])<=trainlisttest.list[code].children[rs].rotalist[0].posr.x){
|
||||
|
||||
if(rs != 5){
|
||||
let asd = trainlisttest.list[code].children[rs].rotalist[0];
|
||||
trainlisttest.list[code].children[rs+1].rotalist.push(asd);
|
||||
|
||||
}
|
||||
//let offsetx = trainlisttest.list[code].children[1].matrixWorld.elements[12]-trainlisttest.list[code].children[0].children[3].matrixWorld.elements[12];
|
||||
|
||||
trainlisttest.list[code].children[rs].rotation.z = trainlisttest.list[code].children[rs].rotalist[0].rota;
|
||||
trainlisttest.list[code].children[rs].rotalist.splice(0,1)
|
||||
xh--;
|
||||
}else{
|
||||
xh = trainlisttest.list[code].children[rs].rotalist.length;
|
||||
}
|
||||
}
|
||||
//console.log(trainlisttest.list[code].children[rs].rotalist.length);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// console.log(trainlisttest.list[code].rotalist);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
function trainrun(data){
|
||||
let code = data.code;
|
||||
console.log(data);
|
||||
if(trainlisttest.list[code].dispose == "0"){
|
||||
if(trainlisttest.list[code].curve == null){
|
||||
if (data.right == '1') { // 向右
|
||||
@ -275,6 +469,7 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
|
||||
trainlisttest.list[code].pc = 1;
|
||||
|
||||
if(trainlisttest.list[code].mixerpush == false){
|
||||
|
||||
for(let mi=0,lenmi=trainlisttest.list[code].mixer.length;mi<lenmi;mi++){
|
||||
jlmap3d.mixers.push(trainlisttest.list[code].mixer[mi]);
|
||||
}
|
||||
|
@ -54,7 +54,9 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
|
||||
//定义场景(渲染容器)
|
||||
let scene = SetScene(project);
|
||||
let scenesimulation = new THREE.Group();
|
||||
let scenestation = new THREE.Group();
|
||||
scene.add(scenesimulation);
|
||||
scene.add(scenestation);
|
||||
//定义镜头操作
|
||||
let controls = new THREE.OrbitControls(camera);
|
||||
controls.maxPolarAngle = Math.PI/2;
|
||||
@ -189,12 +191,12 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
|
||||
|
||||
scope.webwork.onmessage = function (event) {
|
||||
//更新列车位置
|
||||
if(scope.datatype == "new"){
|
||||
|
||||
UpdateTrainNew(camera,trainlisttest);
|
||||
}else{
|
||||
UpdateTrain(camera,trainlisttest);
|
||||
}
|
||||
// if(scope.datatype == "new"){
|
||||
//
|
||||
// UpdateTrainNew(camera,trainlisttest);
|
||||
// }else{
|
||||
// UpdateTrain(camera,trainlisttest);
|
||||
// }
|
||||
|
||||
if(camerarail.moveswitch == true){
|
||||
// console.log(camerarail.progress);
|
||||
@ -218,13 +220,11 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
|
||||
|
||||
delta = clock.getDelta();
|
||||
for(let i=scope.mixers.length-1;i>=0;i--){
|
||||
if ( scope.mixers[i] ){
|
||||
if(scope.mixers[i]._actions[0].isRunning()){
|
||||
// console.log(scope.mixers[i]._actions[0].isRunning());
|
||||
scope.mixers[i].update( delta );
|
||||
}
|
||||
}
|
||||
// renderer.render(scene,camera);
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
55
src/jlmap3d/jl3dstation/config.js
Normal file
55
src/jlmap3d/jl3dstation/config.js
Normal file
@ -0,0 +1,55 @@
|
||||
var Staticmodel = {
|
||||
man1: {
|
||||
id: "1",
|
||||
name: "人物1",
|
||||
deviceType: "man",
|
||||
type: "man",
|
||||
picUrl: "",
|
||||
assetUrl: "../../static/model/passflow/man1.FBX"
|
||||
},//"https://joylink.club/oss/wx/switch/switch.FBX"
|
||||
//../../static/model/device/switch.FBX
|
||||
man2: {
|
||||
id: "2",
|
||||
name: "人物2",
|
||||
deviceType: "man",
|
||||
type: "man",
|
||||
picUrl: "",
|
||||
assetUrl: "../../static/model/passflow/man2.FBX"
|
||||
},
|
||||
station: {
|
||||
id: "3",
|
||||
name: "车站",
|
||||
deviceType: "station",
|
||||
type: "hrb",
|
||||
picUrl: "",
|
||||
assetUrl: "../../static/model/passflow/station.FBX"
|
||||
},
|
||||
zhajiin: {
|
||||
id: "4",
|
||||
name: "闸机",
|
||||
deviceType: "zhajiin",
|
||||
type: "hrb",
|
||||
picUrl: "",
|
||||
assetUrl: "../../static/model/passflow/zhajiin.FBX"
|
||||
},
|
||||
zhajiout: {
|
||||
id: "5",
|
||||
name: "闸机",
|
||||
deviceType: "zhajiout",
|
||||
type: "hrb",
|
||||
picUrl: "",
|
||||
assetUrl: "../../static/model/passflow/zhajiout.FBX"
|
||||
},
|
||||
monitor: {
|
||||
id: "6",
|
||||
name: "摄像机",
|
||||
deviceType: "monitor",
|
||||
type: "hrb",
|
||||
picUrl: "",
|
||||
assetUrl: "../../static/model/passflow/monitor.FBX"
|
||||
},
|
||||
|
||||
|
||||
}
|
||||
|
||||
export { Staticmodel }
|
853
src/jlmap3d/jl3dstation/jl3dstation.js
Normal file
853
src/jlmap3d/jl3dstation/jl3dstation.js
Normal file
@ -0,0 +1,853 @@
|
||||
import { Staticmodel } from '@/jlmap3d/jl3dpassflow/config.js';
|
||||
//loader
|
||||
import { FBXLoader } from '@/jlmap3d/main/loaders/FBXLoader';
|
||||
import { OrbitControls } from '@/jlmap3d/main/control/OrbitControls';
|
||||
|
||||
import { ModelManager } from '@/jlmap3d/jl3dpassflow/loader.js';
|
||||
import { SkeletonUtils } from '@/jlmap3d/main/utils/SkeletonUtils.js';
|
||||
import StompClient from '@/utils/sock';
|
||||
import { Loading } from 'element-ui';
|
||||
var clock = new THREE.Clock();
|
||||
let scene,camerass,renderer;
|
||||
let rendermode = 0;
|
||||
|
||||
var mixers = [];
|
||||
var testmesh1,testmesh2;
|
||||
var humans = [];
|
||||
var checkdoor1 = [];
|
||||
var checkdoor2 = [];
|
||||
var station;
|
||||
var zhajiinmodel;
|
||||
var zhajioutmodel;
|
||||
var monitor;
|
||||
let ids = 0;
|
||||
var rungroup = new THREE.Group();
|
||||
let originhuman1 = null;
|
||||
let originhuman2 = null;
|
||||
let originanima1 = null;
|
||||
let originanima2 = null;
|
||||
let moveanimatelist = [];
|
||||
|
||||
let zhajiin = [];
|
||||
let zhajiout = [];
|
||||
|
||||
let deviceaction = [];
|
||||
|
||||
for(let i=0;i<5;i++){
|
||||
checkdoor1[i]={
|
||||
id:"c1"+i,
|
||||
status:0,
|
||||
pos:[],
|
||||
max:10
|
||||
};
|
||||
}
|
||||
|
||||
for(let i=0;i<5;i++){
|
||||
let zhaji = {
|
||||
id:"in0"+(i+1),
|
||||
status:0,
|
||||
waiting:0
|
||||
}
|
||||
zhajiin.push(zhaji);
|
||||
}
|
||||
|
||||
for(let i=0;i<5;i++){
|
||||
let zhaji = {
|
||||
id:"out0"+(i+1),
|
||||
status:0,
|
||||
waiting:0
|
||||
}
|
||||
zhajiout.push(zhaji);
|
||||
}
|
||||
|
||||
let stationleft = [];
|
||||
let stationright = [];
|
||||
|
||||
for(let i=0;i<22;i++){
|
||||
let sl = {
|
||||
id:"left"+i,
|
||||
status:0,
|
||||
waiting:0
|
||||
}
|
||||
stationleft.push(sl);
|
||||
}
|
||||
|
||||
for(let i=0;i<22;i++){
|
||||
let sr = {
|
||||
id:"right"+i,
|
||||
status:0,
|
||||
waiting:0
|
||||
}
|
||||
stationright.push(sr);
|
||||
}
|
||||
|
||||
var windowWidth = window.innerWidth ;
|
||||
var windowHeight = window.innerHeight;
|
||||
var views = [
|
||||
{
|
||||
left: 0,
|
||||
bottom: 0,
|
||||
width: 0.5,
|
||||
height: 0.5,
|
||||
background: new THREE.Color( 0.5, 0.5, 0.7 ),
|
||||
eye: [ 3.7, 16, 26 ],
|
||||
up: [3.7, 10 ,16 ],
|
||||
fov: 30
|
||||
},
|
||||
{
|
||||
left: 0,
|
||||
bottom: 0.5,
|
||||
width: 0.5,
|
||||
height: 0.5,
|
||||
background: new THREE.Color( 0.5, 0.5, 0.7 ),
|
||||
eye: [ 3.7,17,-4 ],
|
||||
up: [ 3.7, 10 ,16],
|
||||
fov: 30
|
||||
},
|
||||
{
|
||||
left: 0.5,
|
||||
bottom: 0,
|
||||
width: 0.5,
|
||||
height: 0.5,
|
||||
background: new THREE.Color( 0.7, 0.5, 0.5 ),
|
||||
eye: [ -8, 5,0],
|
||||
up: [ -9, 5,-0.1 ],
|
||||
fov: 45
|
||||
},
|
||||
{
|
||||
left: 0.5,
|
||||
bottom: 0.5,
|
||||
width: 0.5,
|
||||
height: 0.5,
|
||||
background: new THREE.Color( 0.5, 0.7, 0.7 ),
|
||||
eye: [ -7,17,2],
|
||||
up: [-7, 10, 8],
|
||||
fov: 60
|
||||
}
|
||||
];
|
||||
|
||||
export function Jl3dstation(dom) {
|
||||
var scope = this;
|
||||
|
||||
this.dom = dom;
|
||||
this.nowcode = null;
|
||||
this.animateswitch = false;
|
||||
this.signallights = [];
|
||||
this.mixers = [];
|
||||
this.showmodel = null;
|
||||
//初始化webgl渲染
|
||||
renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||
|
||||
renderer.setClearColor(new THREE.Color(0x000000));
|
||||
renderer.setSize(dom.offsetWidth, dom.offsetHeight);
|
||||
|
||||
this.dom.appendChild(renderer.domElement);
|
||||
|
||||
//定义相机
|
||||
|
||||
camerass = new THREE.PerspectiveCamera(70, dom.offsetWidth / dom.offsetHeight, 0.01, 1000);
|
||||
camerass.position.set(0, 80, 40);
|
||||
camerass.aspect = dom.offsetWidth / dom.offsetHeight;
|
||||
camerass.updateProjectionMatrix();
|
||||
|
||||
for ( var ii = 0; ii < views.length; ++ ii ) {
|
||||
|
||||
var view = views[ ii ];
|
||||
var camera = new THREE.PerspectiveCamera( view.fov, window.innerWidth / window.innerHeight, 1, 200 );
|
||||
camera.position.fromArray( view.eye );
|
||||
camera.lookAt( view.up[0],view.up[1],view.up[2] );
|
||||
view.camera = camera;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//定义场景(渲染容器)
|
||||
scene = new THREE.Scene();
|
||||
scene.background = new THREE.Color(0xa0a0a0);
|
||||
|
||||
var mesh = new THREE.Mesh(new THREE.PlaneBufferGeometry(200, 200), new THREE.MeshPhongMaterial({ color: 0x999999, depthWrite: false }));
|
||||
mesh.rotation.x = - Math.PI / 2;
|
||||
mesh.receiveShadow = true;
|
||||
scene.add(mesh);
|
||||
|
||||
var grid = new THREE.GridHelper(200, 20, 0x000000, 0x000000);
|
||||
grid.material.opacity = 0.2;
|
||||
grid.material.transparent = true;
|
||||
scene.add(grid);
|
||||
|
||||
|
||||
//定义全局光
|
||||
let ambientLight = new THREE.AmbientLight(0xffffff, 1.3);
|
||||
scene.add(ambientLight);
|
||||
|
||||
//
|
||||
// var spotLight = new THREE.SpotLight(0xffffff);
|
||||
// spotLight.position.set(-50, 60, 15);
|
||||
// spotLight.castShadow = true;
|
||||
// spotLight.shadow.mapSize.width = 1024;
|
||||
// spotLight.shadow.mapSize.height = 1024;
|
||||
// scene.add(spotLight);
|
||||
|
||||
|
||||
|
||||
this.controls = new THREE.OrbitControls(camerass, dom);
|
||||
this.controls.maxPolarAngle = Math.PI / 2;
|
||||
this.controls.minPolarangle = Math.PI / 5;
|
||||
this.controls.maxDistance = 800;
|
||||
this.controls.screenSpacePanning = true;
|
||||
this.controls.update();
|
||||
this.selectmodel = null;
|
||||
|
||||
window.onresize = function () {
|
||||
|
||||
renderer.setSize(scope.dom.offsetWidth, scope.dom.offsetHeight);
|
||||
windowWidth = scope.dom.offsetWidth ;
|
||||
windowHeight = scope.dom.offsetHeight;
|
||||
|
||||
camerass.aspect = scope.dom.offsetWidth / scope.dom.offsetHeight;
|
||||
camerass.updateProjectionMatrix();
|
||||
}
|
||||
|
||||
this.anime = null;
|
||||
|
||||
this.modelmanager = new ModelManager();
|
||||
let loadingInstance = Loading.service({ fullscreen: true });
|
||||
this.modelmanager.loadpromise(Staticmodel, scope.mixers).then(function (data) {
|
||||
// console.log(scope.modelmanager);
|
||||
initstationanimation(scope.modelmanager.station.mesh);
|
||||
initzhajiinaimation(scope.modelmanager.zhajiin.mesh);
|
||||
initzhajioutanimation(scope.modelmanager.zhajiout.mesh);
|
||||
monitor = scope.modelmanager.monitor.mesh;
|
||||
scene.add(monitor);
|
||||
originhuman1 = scope.modelmanager.man1.mesh;
|
||||
originhuman2 = scope.modelmanager.man2.mesh;
|
||||
let mixer1 = new THREE.AnimationMixer( originhuman1 );
|
||||
let mixer2 = new THREE.AnimationMixer( originhuman2 );
|
||||
originanima1 = originhuman1.animations[ 0 ];
|
||||
originanima2 = originhuman2.animations[ 0 ];
|
||||
originhuman1.remove(originhuman1.children[2]);
|
||||
scene.add(rungroup);
|
||||
loadingInstance.close();
|
||||
|
||||
scope.switchrender(true);
|
||||
|
||||
animate();
|
||||
})
|
||||
//
|
||||
// let checkobject = setInterval(function(){
|
||||
// // console.log(originhuman1);
|
||||
// if(originhuman1){
|
||||
// console.log("start");
|
||||
// clearInterval(checkobject);
|
||||
// //进站控制
|
||||
// setInterval(function(){
|
||||
// // console.log("ww");
|
||||
// // console.log(humans.length);
|
||||
// if(humans){
|
||||
// // console.log(humans.length);
|
||||
// if(humans.length<500){
|
||||
// newhumancreate();
|
||||
// }
|
||||
// // console.log(humans.length);
|
||||
// for(let i=0;i<humans.length;i++){
|
||||
// // console.log(humans[i]);
|
||||
//
|
||||
// if(humans[i].status == 0){
|
||||
//
|
||||
// if(humans[i].stage == 1){
|
||||
// let points = [];
|
||||
// points.push(new THREE.Vector3(humans[i].mesh.position.x,humans[i].mesh.position.y,humans[i].mesh.position.z));
|
||||
// points.push(new THREE.Vector3(humans[i].mesh.position.x,humans[i].mesh.position.y,humans[i].mesh.position.z-5));
|
||||
// zhajicontrol("in",humans[i].doors);
|
||||
// moveanimateinit(humans[i],i,points,i,0.02);
|
||||
// }
|
||||
// if(humans[i].stage == 2){
|
||||
// let points = [];
|
||||
// points.push(new THREE.Vector3(humans[i].mesh.position.x,humans[i].mesh.position.y,humans[i].mesh.position.z));
|
||||
// points.push(new THREE.Vector3(12,10,12.9));
|
||||
// points.push(new THREE.Vector3(28,1.7,12.9));
|
||||
// points.push(new THREE.Vector3(34,1.7,12.9));
|
||||
//
|
||||
// //1--left
|
||||
// //2-- right
|
||||
// if(humans[i].direct == 1){
|
||||
// points.push(new THREE.Vector3(34,1.7,16));
|
||||
// for(let j =0;j<22;j++){
|
||||
// if(stationleft[j].waiting == 0){
|
||||
//
|
||||
// points.push(new THREE.Vector3(51-j*5,1.7,22));
|
||||
//
|
||||
// points.push(new THREE.Vector3(51-j*5,1.7,23));
|
||||
//
|
||||
// humans[i].doors = j;
|
||||
// stationright[j].waiting = 1;
|
||||
// moveanimateinit(humans[i],i,points,i,0.002);
|
||||
// j =22;
|
||||
// }
|
||||
// }
|
||||
// }else{
|
||||
// points.push(new THREE.Vector3(34,1.7,16));
|
||||
// points.push(new THREE.Vector3(14,1.7,17));
|
||||
// points.push(new THREE.Vector3(14,1.7,3));
|
||||
// for(let j =0;j<22;j++){
|
||||
// if(stationright[j].waiting == 0){
|
||||
//
|
||||
// points.push(new THREE.Vector3(51-j*5,1.7,3));
|
||||
//
|
||||
// points.push(new THREE.Vector3(51-j*5,1.7,2));
|
||||
// humans[i].doors = j;
|
||||
// stationright[j].waiting = 1;
|
||||
// moveanimateinit(humans[i],i,points,i,0.002);
|
||||
// j =22;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// moveanimateinit(humans[i],i,points,i,0.002);
|
||||
// }
|
||||
// //出站
|
||||
// if(humans[i].stage == 3){
|
||||
// let points = [];
|
||||
// points.push(new THREE.Vector3(humans[i].mesh.position.x,humans[i].mesh.position.y,humans[i].mesh.position.z));
|
||||
// if(humans[i].doors<11){
|
||||
// if(humans[i].direct == 1){
|
||||
// points.push(new THREE.Vector3(10,1.7,17));
|
||||
// }else{
|
||||
// points.push(new THREE.Vector3(8,1.7,5));
|
||||
// }
|
||||
// points.push(new THREE.Vector3(8,1.7,13));
|
||||
// points.push(new THREE.Vector3(5,1.7,13));
|
||||
// points.push(new THREE.Vector3(-4,6,13));
|
||||
// }else{
|
||||
// if(humans[i].direct == 1){
|
||||
// points.push(new THREE.Vector3(-19,1.7,17));
|
||||
// }else{
|
||||
// points.push(new THREE.Vector3(-18,1.7,6.4));
|
||||
// }
|
||||
// points.push(new THREE.Vector3(-18,1.7,13));
|
||||
// points.push(new THREE.Vector3(-12,1.7,13));
|
||||
// points.push(new THREE.Vector3(-7,6.8,12));
|
||||
// }
|
||||
// points.push(new THREE.Vector3(-5,10,4));
|
||||
// points.push(new THREE.Vector3(14,10,3));
|
||||
// var j = Math.floor(Math.random()*(4-1+1))+1;
|
||||
// points.push(new THREE.Vector3(19,10,-2+j*1.4));
|
||||
//
|
||||
// humans[i].doors = j;
|
||||
// moveanimateinit(humans[i],i,points,i,0.002);
|
||||
// }
|
||||
// if(humans[i].stage == 4){
|
||||
//
|
||||
// let points = [];
|
||||
// points.push(new THREE.Vector3(humans[i].mesh.position.x,humans[i].mesh.position.y,humans[i].mesh.position.z));
|
||||
//
|
||||
// points.push(new THREE.Vector3(humans[i].mesh.position.x+4,humans[i].mesh.position.y,humans[i].mesh.position.z));
|
||||
//
|
||||
// if(humans[i].direct == 1){
|
||||
// points.push(new THREE.Vector3(33,10,25));
|
||||
// }else{
|
||||
// points.push(new THREE.Vector3(33.5,10,-5));
|
||||
// }
|
||||
// zhajicontrol("out",humans[i].doors);
|
||||
// moveanimateinit(humans[i],i,points,i,0.002);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// },3000);
|
||||
// };
|
||||
// },1000);
|
||||
|
||||
this.switchrender = function(mode){
|
||||
if(mode){
|
||||
rendermode = 0;
|
||||
renderer.setViewport( 0, 0, scope.dom.offsetWidth, scope.dom.offsetHeight );
|
||||
renderer.setScissor( 0, 0, scope.dom.offsetWidth, scope.dom.offsetHeight );
|
||||
renderer.setScissorTest( false );
|
||||
renderer.setSize(scope.dom.offsetWidth, scope.dom.offsetHeight);
|
||||
camerass.aspect = dom.offsetWidth / dom.offsetHeight;
|
||||
camerass.updateProjectionMatrix();
|
||||
}else{
|
||||
rendermode = 1;
|
||||
}
|
||||
}
|
||||
//循环渲染函数
|
||||
function animate() {
|
||||
// console.log(rendermode);
|
||||
if(rendermode == 0){
|
||||
renderer.render(scene, camerass);
|
||||
scope.controls.update();
|
||||
}else{
|
||||
monitorrender();
|
||||
}
|
||||
|
||||
let delta = clock.getDelta();
|
||||
|
||||
for(let i=mixers.length-1;i>=0;i--){
|
||||
if ( mixers[i] && mixers[i].runplay == true){
|
||||
mixers[i].update( delta );
|
||||
}
|
||||
}
|
||||
moveanimateupdate();
|
||||
|
||||
scope.anime = requestAnimationFrame(animate);
|
||||
|
||||
}
|
||||
|
||||
function moveanimateinit(model,name,points,index,speed){
|
||||
|
||||
let curve = new THREE.CatmullRomCurve3(points);
|
||||
curve.curvrtype = "chordal";
|
||||
// curve动画轨迹
|
||||
// progress动画进度
|
||||
// enable当前动画开关
|
||||
// speed动画速度
|
||||
|
||||
let animate = {
|
||||
name:index,
|
||||
index:index,
|
||||
curve:curve,
|
||||
progress:0,
|
||||
directchange:false,
|
||||
enable:true,
|
||||
status:"start",
|
||||
speed:speed,
|
||||
};
|
||||
humans[index].runrail = animate;
|
||||
humans[index].status = 1;
|
||||
humans[index].action.play();
|
||||
humans[index].mixer.runplay = true;
|
||||
moveanimatelist.push(animate);
|
||||
}
|
||||
|
||||
function moveanimateupdate(){
|
||||
if(humans.length>0){
|
||||
for(let i=0;i<humans.length;i++){
|
||||
if(humans[i].runrail.enable){
|
||||
// 动画播放结束
|
||||
if(humans[i].runrail.progress>=1){
|
||||
// let point = humans[i].runrail.curve.getPointAt(1);
|
||||
//更新模型坐标
|
||||
// console.log(moveanimatelist);
|
||||
if(humans[i].status == 1){
|
||||
humans[i].runrail.enable = false;
|
||||
humans[i].runrail.progress = 1;
|
||||
humans[i].mixer.runplay = false;
|
||||
humans[i].action.stop();
|
||||
humans[i].status = 0;
|
||||
|
||||
if(humans[i].stage == 4){
|
||||
|
||||
rungroup.remove(humans[i].mesh);
|
||||
// humans.splice(i,1);
|
||||
}
|
||||
|
||||
if(humans[i].stage == 3){
|
||||
|
||||
if(humans[i].direct == 1){
|
||||
|
||||
stationleft[humans[i].doors].waiting = 0;
|
||||
}else{
|
||||
|
||||
stationright[humans[i].doors].waiting = 0;
|
||||
}
|
||||
humans[i].stage = 4;
|
||||
|
||||
}
|
||||
|
||||
if(humans[i].stage == 2){
|
||||
humans[i].stage = 3;
|
||||
|
||||
}
|
||||
|
||||
if(humans[i].stage == 1){
|
||||
|
||||
|
||||
humans[i].stage = 2;
|
||||
|
||||
}
|
||||
|
||||
if(humans[i].stage == 0){
|
||||
console.log(humans[i].doors);
|
||||
zhajiin[humans[i].doors].waiting = 0;
|
||||
humans[i].stage = 1;
|
||||
}
|
||||
|
||||
moveanimatelist.splice(i,1);
|
||||
|
||||
}
|
||||
|
||||
}else{
|
||||
//根据动画进度获取动画轨迹上点
|
||||
|
||||
let point = humans[i].runrail.curve.getPointAt(humans[i].runrail.progress);
|
||||
|
||||
//更新模型坐标
|
||||
humans[i].mesh.position.x = point.x;
|
||||
humans[i].mesh.position.y = point.y;
|
||||
humans[i].mesh.position.z = point.z;
|
||||
if((humans[i].runrail.progress+0.001)<1){
|
||||
let tangent = humans[i].runrail.curve.getPointAt(humans[i].runrail.progress+0.001);
|
||||
humans[i].mesh.lookAt(new THREE.Vector3(tangent.x,humans[i].mesh.position.y,tangent.z));
|
||||
}
|
||||
|
||||
humans[i].runrail.progress += humans[i].runrail.speed;
|
||||
point = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function newhumancreate(){
|
||||
var direct = Math.floor(Math.random()*(3-1+1))+1;
|
||||
var mantype = Math.floor(Math.random()*(3-1+1))+1;
|
||||
// console.log(direct);
|
||||
let points = [];
|
||||
let newhuman;
|
||||
if(mantype == 1){
|
||||
newhuman = THREE.SkeletonUtils.clone( originhuman1 );
|
||||
newhuman.animations = [];
|
||||
newhuman.animations.push(originanima1.clone());
|
||||
}else{
|
||||
newhuman = THREE.SkeletonUtils.clone( originhuman2 );
|
||||
newhuman.animations = [];
|
||||
newhuman.animations.push(originanima2.clone());
|
||||
}
|
||||
if(direct == 1|| direct == 2){
|
||||
newhuman.position.set(32,10,25);
|
||||
points.push(new THREE.Vector3(32,10,25));
|
||||
points.push(new THREE.Vector3(26,10,21));
|
||||
points.push(new THREE.Vector3(18,10,18));
|
||||
}else{
|
||||
newhuman.position.set(32,10,-5);
|
||||
points.push(new THREE.Vector3(32,10,-5));
|
||||
points.push(new THREE.Vector3(26,10,12));
|
||||
points.push(new THREE.Vector3(24,10,17));
|
||||
points.push(new THREE.Vector3(18,10,18));
|
||||
}
|
||||
|
||||
let j = Math.floor(Math.random()*(4-1+1))+1;
|
||||
points.push(new THREE.Vector3(-0.5+j*1.4,10,18.5));
|
||||
// zhajiin[j].waiting = 1;
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newhuman );
|
||||
mixer.runplay = false;
|
||||
let action = mixer.clipAction( newhuman.animations[ 0 ] );
|
||||
|
||||
var stationdirection = Math.floor(Math.random()*(2-1+1))+1;
|
||||
let newone = {
|
||||
id:humans.length,
|
||||
mesh:newhuman,
|
||||
status:1,
|
||||
stage:0,
|
||||
direct:stationdirection,
|
||||
doorstatus:null,
|
||||
doors:j,
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
runrail:null
|
||||
};
|
||||
|
||||
humans.push(newone);
|
||||
mixers.push(mixer);
|
||||
rungroup.add(newhuman);
|
||||
|
||||
|
||||
moveanimateinit(newone,humans.length,points,newone.id,0.002);
|
||||
|
||||
// return newone;
|
||||
}
|
||||
|
||||
function initstationanimation(object){
|
||||
let mixer = new THREE.AnimationMixer( object );
|
||||
|
||||
let newclip = object.animations[ 0 ];
|
||||
for(let j=0;j<object.children.length;j++){
|
||||
|
||||
if(object.children[j].name == "top"){
|
||||
object.children[j].animations = [];
|
||||
object.children[j].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( object.children[j] );
|
||||
|
||||
let action =mixer.clipAction( object.children[j].animations[0])
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
// action.play();
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[j].name] = device;
|
||||
}
|
||||
if(object.children[j].name == "down"){
|
||||
object.children[j].animations = [];
|
||||
object.children[j].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( object.children[j] );
|
||||
|
||||
|
||||
let action =mixer.clipAction( object.children[j].animations[0])
|
||||
// action.play();
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[j].name] = device;
|
||||
}
|
||||
}
|
||||
station = object;
|
||||
scene.add(object);
|
||||
|
||||
}
|
||||
|
||||
function initzhajiinaimation(object){
|
||||
let mixer = new THREE.AnimationMixer( object );
|
||||
let newclip = object.animations[ 0 ];
|
||||
let newzhaji = object;
|
||||
for(let i=0;i<newzhaji.children.length;i++){
|
||||
if(newzhaji.children[i].name == "in01"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "in02"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "in03"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "in04"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "in05"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
|
||||
}
|
||||
zhajiinmodel = newzhaji;
|
||||
scene.add(newzhaji);
|
||||
|
||||
}
|
||||
|
||||
function initzhajioutanimation(object){
|
||||
let mixer = new THREE.AnimationMixer( object );
|
||||
let newclip = object.animations[ 0 ];
|
||||
let newzhaji = object;
|
||||
for(let i=0;i<newzhaji.children.length;i++){
|
||||
|
||||
if(newzhaji.children[i].name == "out01"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "out02"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "out03"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "out04"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
if(newzhaji.children[i].name == "out05"){
|
||||
newzhaji.children[i].animations = [];
|
||||
newzhaji.children[i].animations.push(newclip.clone());
|
||||
|
||||
let mixer = new THREE.AnimationMixer( newzhaji.children[i] );
|
||||
|
||||
let action =mixer.clipAction( newzhaji.children[i].animations[0]);
|
||||
action.setLoop(THREE.LoopOnce);
|
||||
action.clampWhenFinished = true;
|
||||
mixer.runplay = true;
|
||||
mixers.push(mixer);
|
||||
let device = {
|
||||
action:action,
|
||||
mixer:mixer,
|
||||
};
|
||||
deviceaction[object.children[i].name] = device;
|
||||
}
|
||||
|
||||
}
|
||||
zhajioutmodel = newzhaji
|
||||
scene.add(newzhaji);
|
||||
}
|
||||
|
||||
function zhajicontrol(type,door){
|
||||
console.log(door);
|
||||
console.log(zhajiin);
|
||||
let devicenum = door-1;
|
||||
if(type == "in"){
|
||||
deviceaction[zhajiin[devicenum].id].action.reset();
|
||||
deviceaction[zhajiin[devicenum].id].action.time = 0;
|
||||
deviceaction[zhajiin[devicenum].id].action.timeScale = 1;
|
||||
deviceaction[zhajiin[devicenum].id].action.play();
|
||||
}else if(type == "out"){
|
||||
deviceaction[zhajiout[devicenum].id].action.reset();
|
||||
deviceaction[zhajiout[devicenum].id].action.time = 0;
|
||||
deviceaction[zhajiout[devicenum].id].action.timeScale = 1;
|
||||
deviceaction[zhajiout[devicenum].id].action.play();
|
||||
}
|
||||
|
||||
}
|
||||
function monitorrender() {
|
||||
|
||||
// updateSize();
|
||||
|
||||
for ( var ii = 0; ii < views.length; ++ ii ) {
|
||||
|
||||
var view = views[ ii ];
|
||||
var camera = view.camera;
|
||||
|
||||
// view.updateCamera( camera, scene, mouseX, mouseY );
|
||||
|
||||
var left = Math.floor( windowWidth * view.left );
|
||||
var bottom = Math.floor( windowHeight * view.bottom );
|
||||
var width = Math.floor( windowWidth * view.width );
|
||||
var height = Math.floor( windowHeight * view.height );
|
||||
|
||||
renderer.setViewport( left, bottom, width, height );
|
||||
renderer.setScissor( left, bottom, width, height );
|
||||
renderer.setScissorTest( true );
|
||||
|
||||
camera.aspect = width / height;
|
||||
camera.updateProjectionMatrix();
|
||||
|
||||
renderer.render( scene, camera );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
90
src/jlmap3d/jl3dstation/loader.js
Normal file
90
src/jlmap3d/jl3dstation/loader.js
Normal file
@ -0,0 +1,90 @@
|
||||
|
||||
|
||||
export function ModelManager(){
|
||||
let scope = this;
|
||||
|
||||
this.man1 = {
|
||||
code:null,
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
this.man2 = {
|
||||
code:null,
|
||||
locateType:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
|
||||
|
||||
this.station = {
|
||||
code:null,
|
||||
screenDoorOpenStatus:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
|
||||
this.zhajiin = {
|
||||
code:null,
|
||||
screenDoorOpenStatus:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
this.zhajiout = {
|
||||
code:null,
|
||||
screenDoorOpenStatus:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
|
||||
this.monitor = {
|
||||
code:null,
|
||||
screenDoorOpenStatus:"01",
|
||||
mesh:null,
|
||||
action:null
|
||||
};
|
||||
|
||||
this.loadpromise = function (data,mixers){
|
||||
let initlist = [];
|
||||
initlist.push(fbxpromise(data.man1,mixers,scope.man1));
|
||||
initlist.push(fbxpromise(data.man2,mixers,scope.man2));
|
||||
initlist.push(fbxpromise(data.station,mixers,scope.station));
|
||||
initlist.push(fbxpromise(data.zhajiin,mixers,scope.zhajiin));
|
||||
initlist.push(fbxpromise(data.zhajiout,mixers,scope.zhajiout));
|
||||
initlist.push(fbxpromise(data.monitor,mixers,scope.monitor));
|
||||
|
||||
return new Promise(function(resolve, reject){
|
||||
|
||||
Promise.all(initlist).then((result) => {
|
||||
resolve("success"); //['成功了', 'success']
|
||||
}).catch((error) => {
|
||||
//console.log(error);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function fbxpromise(asset,mixers,model){
|
||||
return new Promise(function(resolve, reject){
|
||||
var loader = new THREE.FBXLoader();
|
||||
loader.load( asset.assetUrl, function ( object ) {
|
||||
// let mixer = new THREE.AnimationMixer( object );
|
||||
// object.traverse( function ( child ) {
|
||||
// if ( child.isMesh ) {
|
||||
// child.castShadow = true;
|
||||
// child.receiveShadow = true;
|
||||
// }
|
||||
// } );
|
||||
|
||||
model.mesh = object;
|
||||
|
||||
|
||||
|
||||
|
||||
resolve(asset.deviceType);
|
||||
} );
|
||||
|
||||
});
|
||||
}
|
@ -6,6 +6,7 @@
|
||||
|
||||
THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
||||
|
||||
|
||||
if ( _objects instanceof THREE.Camera ) {
|
||||
|
||||
console.warn( 'THREE.DragControls: Constructor now expects ( objects, camera, domElement )' );
|
||||
@ -27,7 +28,7 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
||||
//
|
||||
|
||||
var scope = this;
|
||||
|
||||
this.nowobject = _objects;
|
||||
function activate() {
|
||||
|
||||
_domElement.addEventListener( 'mousemove', onDocumentMouseMove, false );
|
||||
@ -84,32 +85,36 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
||||
}
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
if( scope.nowobject.parent){
|
||||
var intersects = _raycaster.intersectObjects( scope.nowobject.parent.children );
|
||||
|
||||
var intersects = _raycaster.intersectObjects( _objects );
|
||||
if ( intersects.length > 0 ) {
|
||||
|
||||
if ( intersects.length > 0 ) {
|
||||
var object = intersects[ 0 ].object;
|
||||
if(scope.nowobject.raycastoff){
|
||||
object = intersects[ 0 ].object.parent;
|
||||
}
|
||||
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) );
|
||||
|
||||
var object = intersects[ 0 ].object;
|
||||
if ( _hovered !== object ) {
|
||||
|
||||
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) );
|
||||
scope.dispatchEvent( { type: 'hoveron', object: object } );
|
||||
|
||||
if ( _hovered !== object ) {
|
||||
_domElement.style.cursor = 'pointer';
|
||||
_hovered = object;
|
||||
|
||||
scope.dispatchEvent( { type: 'hoveron', object: object } );
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'pointer';
|
||||
_hovered = object;
|
||||
} else {
|
||||
|
||||
}
|
||||
if ( _hovered !== null ) {
|
||||
|
||||
} else {
|
||||
scope.dispatchEvent( { type: 'hoveroff', object: _hovered } );
|
||||
|
||||
if ( _hovered !== null ) {
|
||||
_domElement.style.cursor = 'auto';
|
||||
_hovered = null;
|
||||
|
||||
scope.dispatchEvent( { type: 'hoveroff', object: _hovered } );
|
||||
|
||||
_domElement.style.cursor = 'auto';
|
||||
_hovered = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -122,24 +127,29 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
||||
event.preventDefault();
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
if( scope.nowobject.parent){
|
||||
var intersects = _raycaster.intersectObjects( scope.nowobject.parent.children );
|
||||
|
||||
var intersects = _raycaster.intersectObjects( _objects );
|
||||
if ( intersects.length > 0 ) {
|
||||
_selected = intersects[ 0 ].object;
|
||||
if(scope.nowobject.raycastoff){
|
||||
_selected = intersects[ 0 ].object.parent;
|
||||
}
|
||||
|
||||
if ( intersects.length > 0 ) {
|
||||
|
||||
_selected = intersects[ 0 ].object;
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
_inverseMatrix.getInverse( _selected.parent.matrixWorld );
|
||||
_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
|
||||
_inverseMatrix.getInverse( _selected.parent.matrixWorld );
|
||||
_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'move';
|
||||
|
||||
scope.dispatchEvent( { type: 'dragstart', object: _selected } );
|
||||
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'move';
|
||||
|
||||
scope.dispatchEvent( { type: 'dragstart', object: _selected } );
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -200,26 +210,31 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
||||
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
||||
|
||||
_raycaster.setFromCamera( _mouse, _camera );
|
||||
if( scope.nowobject.parent){
|
||||
var intersects = _raycaster.intersectObjects( scope.nowobject.parent.children );
|
||||
|
||||
var intersects = _raycaster.intersectObjects( _objects );
|
||||
if ( intersects.length > 0 ) {
|
||||
_selected = intersects[ 0 ].object;
|
||||
if(scope.nowobject.raycastoff){
|
||||
_selected = intersects[ 0 ].object.parent;
|
||||
}
|
||||
|
||||
if ( intersects.length > 0 ) {
|
||||
|
||||
_selected = intersects[ 0 ].object;
|
||||
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
|
||||
_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
|
||||
if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {
|
||||
_inverseMatrix.getInverse( _selected.parent.matrixWorld );
|
||||
_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
|
||||
_inverseMatrix.getInverse( _selected.parent.matrixWorld );
|
||||
_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'move';
|
||||
|
||||
scope.dispatchEvent( { type: 'dragstart', object: _selected } );
|
||||
|
||||
}
|
||||
|
||||
_domElement.style.cursor = 'move';
|
||||
|
||||
scope.dispatchEvent( { type: 'dragstart', object: _selected } );
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -253,9 +268,9 @@ THREE.DragControls = function ( _objects, _camera, _domElement ) {
|
||||
|
||||
// Backward compatibility
|
||||
|
||||
this.setObjects = function () {
|
||||
|
||||
console.error( 'THREE.DragControls: setObjects() has been removed.' );
|
||||
this.setObjects = function (array) {
|
||||
scope.nowobject = array;
|
||||
// console.error( 'THREE.DragControls: setObjects() has been removed.' );
|
||||
|
||||
};
|
||||
|
||||
|
@ -86,7 +86,14 @@ let hebsuidao = {
|
||||
picUrl:"",
|
||||
assetUrl:"../../static/model/suidao/hebsuidao.FBX"
|
||||
}
|
||||
|
||||
let nbsuidao = {
|
||||
id:"1010",
|
||||
name:"nbsuidao",
|
||||
deviceType:"nbsuidao",
|
||||
type:"nbsuidao",
|
||||
picUrl:"",
|
||||
assetUrl:"../../static/model/suidao/nbsuidao.FBX"
|
||||
}
|
||||
let defaultbackground = {
|
||||
id:"16",
|
||||
name:"background",
|
||||
@ -221,6 +228,10 @@ export function AssetLoader(){
|
||||
let hebsd = new AssetModel(hebsuidao);
|
||||
scope.modellist.push(hebsd);
|
||||
|
||||
let nbsd = new AssetModel(nbsuidao);
|
||||
scope.modellist.push(nbsd);
|
||||
|
||||
|
||||
let defaultswitch1 = new AssetModel(autoswitch1);
|
||||
scope.modellist.push(defaultswitch1);
|
||||
|
||||
|
@ -134,6 +134,14 @@ export function DriverLoadNew(data,scope,netdata,mapdata,sectionlist,signallist,
|
||||
}
|
||||
}
|
||||
}
|
||||
if(stationstandlist.group.children[0].name == "Station75414"){
|
||||
for(let mn=0;mn<scope.assetloader.modellist.length;mn++){
|
||||
if(scope.assetloader.modellist[mn].name && scope.assetloader.modellist[mn].name == "nbsuidao"){
|
||||
scope.assetloader.modellist[mn].mesh.name = "nbsuidao";
|
||||
scene.add(scope.assetloader.modellist[mn].mesh);
|
||||
}
|
||||
}
|
||||
}
|
||||
resolve("mergemodel");
|
||||
});
|
||||
})
|
||||
|
@ -127,8 +127,15 @@ export function SimulationLoadNew(data,scope,netdata,mapdata,camera,controls,sce
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
console.log(stationstandlist.group.children[0].name );
|
||||
if(stationstandlist.group.children[0].name == "Station75414"){
|
||||
for(let mn=0;mn<scope.assetloader.modellist.length;mn++){
|
||||
if(scope.assetloader.modellist[mn].name && scope.assetloader.modellist[mn].name == "nbsuidao"){
|
||||
scope.assetloader.modellist[mn].mesh.name = "nbsuidao";
|
||||
scene.add(scope.assetloader.modellist[mn].mesh);
|
||||
}
|
||||
}
|
||||
}
|
||||
resolve("mergemodel");
|
||||
});
|
||||
})
|
||||
|
@ -94,6 +94,7 @@ this.loadpromise = function(sectionList,sectiondata,rails,scene,assetloader){
|
||||
// testmesh2.material[j].dispose();
|
||||
// }
|
||||
// testmesh2 = null;
|
||||
|
||||
if(newsection.railpoint.length>2){
|
||||
// console.log(newsection);
|
||||
let height = Math.random()/1000;
|
||||
|
@ -80,7 +80,10 @@ class SkinCode extends defaultStyle {
|
||||
mouseOverStyle: {
|
||||
borderColor: '#fff',
|
||||
borderBackgroundColor: '#22DFDF',
|
||||
textShadowColor: '#22DFDF'
|
||||
textShadowColor: '#22DFDF',
|
||||
nameShow: true,
|
||||
lineDash: [3, 3],
|
||||
lineWidthMore: 0
|
||||
},
|
||||
line: {
|
||||
width: 5, // 区段宽度
|
||||
|
@ -148,7 +148,7 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
lamp: {
|
||||
bgShow: false, // 是否被选中
|
||||
guidName: 'chengdu_03', // 成都三号线引导类型
|
||||
guidName: 'singleRY', // 成都三号线引导类型
|
||||
borderVariable: true, // 信号灯边框可变
|
||||
stopWidth: 2, // 禁止线宽度
|
||||
borderWidth: 2, // 信号灯边框线宽度
|
||||
|
@ -139,7 +139,7 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
lamp: {
|
||||
bgShow: false, // 是否被选中
|
||||
guidName: 'ningbo_01', // 默认引导类型
|
||||
guidName: 'double', // 默认引导类型
|
||||
stopWidth: 2, // 禁止线宽度
|
||||
borderWidth: 1, // 信号灯边框线宽度
|
||||
borderColor: '#3149C3', // 信号灯边框线颜色
|
||||
|
@ -613,10 +613,18 @@ class SkinCode extends defaultStyle {
|
||||
}
|
||||
], // 运行方向状态类型对应车头显示状态 1从左往右 0从右往左
|
||||
directionStopType: [
|
||||
{type: '01', lineLShow: false, lineRShow: false},
|
||||
{type: '02', lineLShow: false, lineRShow: true},
|
||||
{type: '03', lineLShow: true, lineRShow: false}
|
||||
], // 列车停止方向类型对应车头显示状态 01未知方向 02从左往右 上行 03从右往左 下行
|
||||
{
|
||||
type: 1,
|
||||
lineLShow: false,
|
||||
lineRShow: true
|
||||
},
|
||||
{
|
||||
type: 0,
|
||||
lineLShow: true,
|
||||
lineRShow: false
|
||||
}
|
||||
|
||||
], // 列车停止方向类型对应车头显示状态 01未知方向 02从左往右 上行 03从右往左 下行
|
||||
driveModeStatus: [
|
||||
{
|
||||
status: 'AM',
|
||||
|
@ -144,7 +144,7 @@ class SkinCode extends defaultStyle {
|
||||
lamp: {
|
||||
bgShow: true, // 是否被选中
|
||||
logicDisplayNone: true, // 逻辑点灯斜线不显示
|
||||
guidName: 'haerbin_01', // 默认引导类型
|
||||
guidName: 'doubleAndBase', // 默认引导类型
|
||||
stopWidth: 2, // 禁止线宽度
|
||||
borderWidth: 0, // 信号灯边框线宽度
|
||||
borderColor: '#FF0000', // 信号灯边框线颜色 (虚拟信号机)
|
||||
|
@ -80,9 +80,9 @@ class SkinCode extends defaultStyle {
|
||||
beyondWidth: 0, // 区段宽超出宽度
|
||||
invadeColor: '#FFFFFF', // 区段侵入颜色
|
||||
spareColor: '#5578B6', // 区段空闲颜色
|
||||
communicationOccupiedColor: 'red', // 区段通信车占用颜色 // 调整 未确定
|
||||
communicationOccupiedColor: 'red', // 区段通信车占用颜色 // 调整 未确定
|
||||
unCommunicationOccupiedColor: 'red', // 区段非通讯车占用颜色
|
||||
routeLockColor: 'rgba(0, 255, 0, 1)', // 区段路由锁定颜色
|
||||
routeLockColor: '#00ff00', // 区段进路锁定颜色
|
||||
faultLockColor: 'white', // 区段故障锁定颜色
|
||||
undefinedColor: '#0071C1', // 区段未定义颜色
|
||||
protectionLockedColor: '#FFFFFF', // 保护区段锁闭
|
||||
@ -90,7 +90,7 @@ class SkinCode extends defaultStyle {
|
||||
atcExcisionColor: '#A0522D', // 区段atc切除颜色
|
||||
atsExcisionColor: '#A0522D', // 区段ats切除颜色
|
||||
timeReleaseColor: '#3F3F3F', // 区段延时释放颜色
|
||||
protectiveLockColor: '#a2d36f', // 区段保护锁闭 延续保护
|
||||
protectiveLockColor: '#03C85C', // 区段保护锁闭 延续保护
|
||||
protectiveTimeReleaseColor: '#0071C1', // 区段保护延时解锁
|
||||
logicalColor: '#FFFF00', // 逻辑区段颜色 (未用)
|
||||
logicalTextColor: 'white' // 逻辑区段名称颜色 (未用)
|
||||
@ -146,7 +146,7 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
lamp: {
|
||||
bgShow: false, // 是否被选中
|
||||
guidName: 'ningbo_01', // 默认引导类型
|
||||
guidName: 'double', // 默认引导类型
|
||||
borderVariable: true, // 信号灯边框可变
|
||||
stopWidth: 2, // 禁止线宽度
|
||||
borderWidth: 2, // 信号灯边框线宽度
|
||||
|
@ -213,7 +213,7 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
reentry: { // 站台折返策略
|
||||
position: 0, // 折返方向
|
||||
offset: {x: -16, y: 20}, // 折返偏移量
|
||||
offset: {x: -16, y: -15}, // 折返偏移量
|
||||
noHumanColor: '#0F16DA', // 站台无人折返
|
||||
autoChangeEndsColor: '#0BF400' // 站台自动换端
|
||||
},
|
||||
@ -632,9 +632,16 @@ class SkinCode extends defaultStyle {
|
||||
}
|
||||
], // 运行方向状态类型对应车头显示状态 1从左往右 0从右往左
|
||||
directionStopType: [
|
||||
{type: '01', lineLShow: false, lineRShow: false},
|
||||
{type: '02', lineLShow: false, lineRShow: true},
|
||||
{type: '03', lineLShow: true, lineRShow: false}
|
||||
{
|
||||
type: 1,
|
||||
lineLShow: false,
|
||||
lineRShow: true
|
||||
},
|
||||
{
|
||||
type: 0,
|
||||
lineLShow: true,
|
||||
lineRShow: false
|
||||
}
|
||||
], // 列车停止方向类型对应车头显示状态 01未知方向 02从左往右 上行 03从右往左 下行
|
||||
driveModeStatus: [
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ class SkinCode extends defaultStyle {
|
||||
distance: 18, // 文字离区段距离
|
||||
fontSize: 11, // 字体大小
|
||||
fontWeight: 'normal', // 字体粗细
|
||||
fontColor: 'lightgreen', // 字体颜色
|
||||
fontColor: '#FFFFFF', // 字体颜色
|
||||
textAlign: 'center', // 水平对齐方式
|
||||
textPosition: 'inside', // 文字位置
|
||||
textVerticalAlign: 'middle' // 文字垂直对齐方式
|
||||
@ -75,8 +75,16 @@ class SkinCode extends defaultStyle {
|
||||
textPosition: 'inside', // 文字位置
|
||||
textVerticalAlign: 'middle' // 文字垂直对齐方式
|
||||
},
|
||||
mouseOverStyle: {
|
||||
borderColor: '#fff',
|
||||
borderBackgroundColor: '#22DFDF',
|
||||
textShadowColor: '#22DFDF',
|
||||
nameShow: false,
|
||||
lineDash: null,
|
||||
lineWidthMore: 6
|
||||
},
|
||||
line: {
|
||||
width: 2, // 区段宽度
|
||||
width: 4, // 区段宽度
|
||||
beyondWidth: 0, // 区段宽超出宽度
|
||||
invadeColor: '#FFFFFF', // 区段侵入颜色
|
||||
spareColor: '#AAA9A9', // 区段空闲颜色
|
||||
@ -97,12 +105,13 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
axle: {
|
||||
show: true, // 计轴是否显示
|
||||
radius: 3, // 计轴 半径
|
||||
radius: 5, // 计轴 半径
|
||||
distance: 5, // 计轴和区段之间的距离 (未用)
|
||||
color: '#808080', // 区段计轴颜色
|
||||
color: '#9F9C9C', // 区段计轴颜色
|
||||
occupyColor: '#FF0000', // 区段计轴占用颜色
|
||||
resetColor: '#00FFFF', // 区段计轴预复位颜色
|
||||
Failure: '#E6A23C' // #FFFF00 计轴失效
|
||||
Failure: '#E6A23C', // #FFFF00 计轴失效
|
||||
lineWidth: 3
|
||||
},
|
||||
speedLimit: { // 限速元素
|
||||
width: 1, // 限速线的宽度
|
||||
@ -151,12 +160,12 @@ class SkinCode extends defaultStyle {
|
||||
fontSize: 11, // 信号机名称字体大小
|
||||
fontWeight: 'bold', // 信号机名称字体粗细
|
||||
defaultColor: 'white', // 信号灯字体默认色
|
||||
blockColor: '#EF0C08', // 信号灯字体锁定颜色
|
||||
blockColor: '#FFFFFF', // 信号灯字体锁定颜色
|
||||
checkColor: '#00FF00' // 信号保护区段检查颜色
|
||||
},
|
||||
lamp: {
|
||||
bgShow: false, // 是否被选中
|
||||
guidName: 'defult', // 默认引导类型
|
||||
guidName: 'singleRY', // 默认引导类型
|
||||
borderVariable: true, // 信号灯边框可变
|
||||
stopWidth: 2, // 禁止线宽度
|
||||
borderWidth: 2, // 信号灯边框线宽度
|
||||
@ -168,7 +177,8 @@ class SkinCode extends defaultStyle {
|
||||
greenColor: 'green', // 信号灯绿色
|
||||
yellowColor: 'yellow', // 信号灯黄色
|
||||
whiteColor: '#FFFFFF', // 信号灯白色
|
||||
blueColor: '#0070C0' // 信号灯蓝色
|
||||
blueColor: '#0070C0', // 信号灯蓝色
|
||||
logicDisplayNone: true // 信号机上×型标识不展示
|
||||
},
|
||||
route: {
|
||||
direction: true, // 自动通过方向
|
||||
@ -183,7 +193,8 @@ class SkinCode extends defaultStyle {
|
||||
manualControl: '#FFFF00', // 人工控制
|
||||
autoRoute: '#00FF00', // 自动进路
|
||||
autoTrigger: '#FFFF00', // 自动触发
|
||||
outConflict: '#C00808' // 出车冲突
|
||||
outConflict: '#C00808', // 出车冲突,
|
||||
lampstandard: true // 灯柱颜色变化
|
||||
},
|
||||
delay: {
|
||||
direction: false, // 延时解锁方向
|
||||
@ -216,7 +227,14 @@ class SkinCode extends defaultStyle {
|
||||
insideTriangle: {
|
||||
lineWidth: 2,
|
||||
strokeColor: 'rgba(0,0,0,0)',
|
||||
fillColor: '#00FF00'
|
||||
fillColor: '#00FF00',
|
||||
startSignalColor: '#F00' // 排列进路 始端信号机颜色
|
||||
},
|
||||
ciConfirm: {
|
||||
textColor: '#FF0',
|
||||
fontSize: 12,
|
||||
distance: 20,
|
||||
defaultText: 'E'
|
||||
}
|
||||
};
|
||||
|
||||
@ -253,14 +271,18 @@ class SkinCode extends defaultStyle {
|
||||
defaultColor:'#808080', // 西安二号线特殊样式(默认颜色)
|
||||
special:true // 西安二号线特殊样式
|
||||
},
|
||||
patternFilter:{ // 模式筛选标识
|
||||
defaultColor:'#808080', // 默认颜色,
|
||||
offset:{x:25, y:15} // 相对于站台边缘的偏移
|
||||
},
|
||||
reentry: {}, // 站台折返策略
|
||||
detainCar: { // 扣车
|
||||
position: -1, // 扣车标识在站台上显示方向
|
||||
text: 'H', // 扣车显示内容
|
||||
offset: {x: 8, y: 0}, // 扣车偏移量
|
||||
centerTrainColor: 'white', // 中心扣车颜色
|
||||
centerTrainColor: '#E400E4', // 中心扣车颜色
|
||||
andCenterTrainColor: 'red', // 车站+中心扣车颜色
|
||||
detainTrainTextColor: '#E4EF50', // 车站扣除文字颜色
|
||||
detainTrainTextColor: '#E4EF50', // 车站扣除颜色
|
||||
fontSize: 10,
|
||||
fontWeight: 'normal',
|
||||
circleWidth:14, // 西安二号线特殊样式 圆圈的宽度
|
||||
@ -405,12 +427,12 @@ class SkinCode extends defaultStyle {
|
||||
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
|
||||
offset: { x: -15, y: 9 }, // 道岔名称与区段距离
|
||||
fontSize: 11, // 字体大小
|
||||
fontColor: '#C0C0C0', // 道岔名称颜色
|
||||
fontColor: '#FFFFFF', // 道岔名称颜色
|
||||
fontWeight: 'normal', // 字体粗细
|
||||
borderColor: '#FE0000', // 道岔边框颜色
|
||||
lossColor: 'lightgreen', // 道岔失去颜色
|
||||
locateColor: 'lightgreen', // 道岔定位颜色
|
||||
inversionColor: 'lightgreen', // 道岔反位颜色
|
||||
locateColor: '#FFFFFF', // 道岔定位颜色
|
||||
inversionColor: '#FFFFFF', // 道岔反位颜色
|
||||
monolockLocationColor: '#00FF00', // 道岔单锁'定位'颜色 (绿色)
|
||||
monolockInversionColor: '#FFFF00' // 道岔单锁'反位'颜色 (黄色)
|
||||
},
|
||||
@ -482,7 +504,8 @@ class SkinCode extends defaultStyle {
|
||||
};
|
||||
|
||||
this[deviceType.Line] = {
|
||||
lineColor: '#FFFFFF' // 线条颜色
|
||||
lineColor: '#FFFFFF', // 线条颜色
|
||||
lineDash: [8, 4]
|
||||
};
|
||||
this[deviceType.AutomaticRoute] = {
|
||||
// 是否显示
|
||||
@ -635,12 +658,13 @@ class SkinCode extends defaultStyle {
|
||||
};
|
||||
this[deviceType.Train] = {
|
||||
trainBody: {
|
||||
trainBodyLineWidth: 1, // 车身line宽
|
||||
trainBodyLineWidth: 2, // 车身line宽
|
||||
changeTrainWidth: false, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度
|
||||
specialTrainType: [], // 特殊列车类型需设置显示格式
|
||||
lrPadding: 4, // 两边间隔
|
||||
upPadding: 4, // 上边距离
|
||||
trainBodyFillColor: '#000099', // 列车车身填充颜色
|
||||
trainBodyFillColor: '#2AA32A', // 列车车身填充颜色
|
||||
trainSidelineColor: '#2AA32A',
|
||||
trainNameFormat: 'serviceNumber:targetCode'// 列车显示格式
|
||||
},
|
||||
directionArrow: {
|
||||
@ -678,12 +702,12 @@ class SkinCode extends defaultStyle {
|
||||
trainTargetNumberOffset: {x: -4, y: 4}// 车组号偏移量
|
||||
},
|
||||
trainHead: {
|
||||
trainMoreLength: 1, // 列车车头比车身高出的长度,上下相比车体伸出去的边框
|
||||
trainHeadTriangleFirst: { x: 7, y: 1}, // 列车车头三角坐标1偏移量
|
||||
trainHeadTriangleSecond: { x: 13, y: 10}, // 列车车头三角坐标2偏移量
|
||||
trainHeadTriangleThird: { x: 7, y: 19}, // 列车车头三角坐标3偏移量
|
||||
trainConntWidth: 4, // 列车竖杠的宽度
|
||||
trainHeadFillColor: '#000000', // 列车车头矩形填充颜色
|
||||
trainMoreLength: 0, // 列车车头比车身高出的长度,上下相比车体伸出去的边框
|
||||
trainHeadTriangleFirst: { x: -1, y: -1}, // 列车车头三角坐标1偏移量
|
||||
trainHeadTriangleSecond: { x: 15, y: 10}, // 列车车头三角坐标2偏移量
|
||||
trainHeadTriangleThird: { x: -1, y: 21}, // 列车车头三角坐标3偏移量
|
||||
trainConntWidth: 0, // 列车竖杠的宽度
|
||||
trainHeadFillColor: '#2AA32A', // 列车车头矩形填充颜色
|
||||
trainHeadRectHeight: 20 // 列车车头矩形高度
|
||||
},
|
||||
common: {
|
||||
@ -747,8 +771,8 @@ class SkinCode extends defaultStyle {
|
||||
driveModeStatus: [
|
||||
{
|
||||
status: 'AM',
|
||||
trainLColor: '#00FF00',
|
||||
trainRColor: '#00FF00'
|
||||
trainLColor: '#2AA32A',
|
||||
trainRColor: '#2AA32A'
|
||||
},
|
||||
{
|
||||
status: 'CM',
|
||||
|
@ -240,4 +240,9 @@ deviceRender[deviceType.SwitchFault] = {
|
||||
_type: deviceType.SwitchFault,
|
||||
zlevel: 1
|
||||
};
|
||||
/** Arrow 箭头 */
|
||||
deviceRender[deviceType.Arrow] = {
|
||||
_type: deviceType.Arrow,
|
||||
zlevel: 1
|
||||
};
|
||||
export default deviceRender;
|
||||
|
@ -41,7 +41,8 @@ const deviceType = {
|
||||
ControlSwitch: 'ControlSwitch',
|
||||
Axle: 'Axle',
|
||||
SplitStation:'SplitStation',
|
||||
SwitchFault: 'SwitchFault'
|
||||
SwitchFault: 'SwitchFault',
|
||||
Arrow: 'Arrow'
|
||||
};
|
||||
|
||||
export default deviceType;
|
||||
|
@ -136,7 +136,6 @@ class Jlmap {
|
||||
const options = this.pullBack(opts);
|
||||
this.$options.update(options);
|
||||
this.$painter.updateTransform(this.$options);
|
||||
|
||||
if (this.$options.disabled == true) {
|
||||
this.$mouseController.disable();
|
||||
} else {
|
||||
@ -157,6 +156,33 @@ class Jlmap {
|
||||
}
|
||||
}
|
||||
|
||||
setUpdateScreen(opts) {
|
||||
const num = opts.num;
|
||||
const offsetY = (opts.height - 100) / num; // 高度差
|
||||
const arr = [];
|
||||
let rect = '';
|
||||
for (const i in this.mapDevice) {
|
||||
const element = this.mapDevice[i];
|
||||
if (element.instance) {
|
||||
if (!rect) {
|
||||
rect = element.instance.getBoundingRect().clone();
|
||||
} else {
|
||||
rect.union(element.instance.getBoundingRect().clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
const scaleWidth = Math.floor((((opts.width - 100) * num) / rect.width) * 100) / 100;
|
||||
const scaleHeight = Math.floor(((opts.height - 100) / (rect.height * num)) * 100) / 100;
|
||||
const scale = Math.min(scaleWidth, scaleHeight);
|
||||
const spliceWidth = (rect.width + 100) / num * scale;
|
||||
const dx = (opts.width - spliceWidth) / 2;
|
||||
for (let index = 0; index < num; index++) {
|
||||
const param = { scaleRate: scale, offsetX: ((spliceWidth) * index) - dx, offsetY: -100 - (offsetY * index) };
|
||||
arr.push(param);
|
||||
}
|
||||
this.$painter.updateTransform1(arr, {x: dx, y: 0, width: spliceWidth, height: opts.height});
|
||||
}
|
||||
|
||||
setLevelVisible(list) {
|
||||
this.$painter.setLevelVisible(list);
|
||||
}
|
||||
@ -493,6 +519,7 @@ class Jlmap {
|
||||
break;
|
||||
case this.events.Keyboard:
|
||||
this.$keyboardController.on(this.events.Keyboard, cb, context);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -513,6 +540,12 @@ class Jlmap {
|
||||
case this.events.Keyboard:
|
||||
this.$keyboardController.off(this.events.keyboard, cb);
|
||||
break;
|
||||
case this.events.__Pan:
|
||||
this.$mouseController.off(this.events.__Pan, cb);
|
||||
break;
|
||||
case this.events.__Zoom:
|
||||
this.$mouseController.off(this.events.__Zoom, cb);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import deviceType from './constant/deviceType';
|
||||
import transitionDeviceStatus from './constant/stateTransition';
|
||||
import shapefactory from './shape/factory';
|
||||
import TransformHandle from './transformHandle';
|
||||
import TransformHandleScreen from './transformHandleScreen';
|
||||
|
||||
class Painter {
|
||||
constructor(jmap) {
|
||||
@ -20,6 +21,7 @@ class Painter {
|
||||
|
||||
// 视图控制器
|
||||
this.$transformHandle = new TransformHandle(this);
|
||||
this.$transformHandleScreen = new TransformHandleScreen(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -190,6 +192,9 @@ class Painter {
|
||||
this.$transformHandle.updateTransform(opt);
|
||||
}
|
||||
|
||||
updateTransform1(list, opts) {
|
||||
this.$transformHandleScreen.updateTransform(list, opts);
|
||||
}
|
||||
/**
|
||||
* 更新zrender尺寸
|
||||
* @param {*} opt
|
||||
|
90
src/jmapNew/shape/Arrow/index.js
Normal file
90
src/jmapNew/shape/Arrow/index.js
Normal file
@ -0,0 +1,90 @@
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import {isShowThePrdType} from '../../utils/handlePath';
|
||||
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
|
||||
export default class Arrow extends Group {
|
||||
constructor(model, style) {
|
||||
super();
|
||||
this._code = model.code;
|
||||
this._type = model._type;
|
||||
this.zlevel = model.zlevel;
|
||||
this.z = 0;
|
||||
this.model = model;
|
||||
this.style = style;
|
||||
this.isShowShape = true;
|
||||
if (isShowThePrdType(model.prdType, model.showConditions) || model.previewOrMapDraw) {
|
||||
this.create();
|
||||
this.setState(model);
|
||||
}
|
||||
if (model.previewOrMapDraw) {
|
||||
this.setShowMode();
|
||||
}
|
||||
}
|
||||
|
||||
create() {
|
||||
const model = this.model;
|
||||
this.triangle = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
points: [
|
||||
[model.position.x, model.position.y],
|
||||
[model.position.x + model.triangleLength, model.position.y + model.triangleHeight / 2],
|
||||
[model.position.x + model.triangleLength, model.position.y - model.triangleHeight / 2]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: model.color
|
||||
}
|
||||
});
|
||||
this.line = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
x1: model.position.x + model.triangleLength,
|
||||
y1: model.position.y,
|
||||
x2: model.position.x + model.length,
|
||||
y2: model.position.y
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.lineWidth,
|
||||
stroke: model.color
|
||||
}
|
||||
});
|
||||
this.add(this.triangle);
|
||||
this.add(this.line);
|
||||
}
|
||||
|
||||
setState(model) {
|
||||
if (!this.isShowShape) return;
|
||||
}
|
||||
// 设置显示模式
|
||||
setShowMode() {
|
||||
const showMode = this.model.showMode;
|
||||
const showConditions = this.model.showConditions;
|
||||
if (!showConditions || showConditions === '01' || showMode === showConditions) {
|
||||
this.eachChild((child) => {
|
||||
child.show();
|
||||
});
|
||||
} else {
|
||||
this.eachChild((child) => {
|
||||
child.hide();
|
||||
});
|
||||
}
|
||||
}
|
||||
setShowStation(stationCode) {
|
||||
if (!stationCode || this.model.stationCode === stationCode) {
|
||||
this.eachChild((child) => {
|
||||
child.show();
|
||||
});
|
||||
this.isShowShape = true;
|
||||
this.setState(this.model);
|
||||
} else {
|
||||
this.eachChild((child) => {
|
||||
child.hide();
|
||||
});
|
||||
this.isShowShape = false;
|
||||
}
|
||||
}
|
||||
}
|
@ -49,7 +49,7 @@ export default class Line2 extends Group {
|
||||
case '01': break;
|
||||
case '02':
|
||||
this.eachChild((child) => {
|
||||
child.setStyle('lineDash', [4]);
|
||||
child.setStyle('lineDash', this.style.Line.lineDash || [4]);
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ export default class EDeviceStatus extends Group {
|
||||
fontSize: style.ModeStatusGroup.fontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: style.ModeStatusGroup.stationCommunication.defaultText,
|
||||
textFill: style.ModeStatusGroup.stationControlMode.defaultColor,
|
||||
textFill: style.ModeStatusGroup.stationCommunication.defaultColor,
|
||||
textAlign: style.textStyle.textAlign,
|
||||
textVerticalAlign: style.textStyle.textVerticalAlign
|
||||
}
|
||||
|
@ -1,84 +1,257 @@
|
||||
// import Group from 'zrender/src/container/Group';
|
||||
// import Line from 'zrender/src/graphic/shape/Line';
|
||||
// import Circle from 'zrender/src/graphic/shape/Circle';
|
||||
import Path from 'zrender/src/graphic/Path';
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Circle from 'zrender/src/graphic/shape/Circle';
|
||||
import Isogon from 'zrender/src/graphic/shape/Isogon';
|
||||
// import Path from 'zrender/src/graphic/Path';
|
||||
|
||||
// 计轴
|
||||
export default Path.extend({
|
||||
type: 'EAxle',
|
||||
_subType: '',
|
||||
buildPath: function (path, shape) {
|
||||
if (shape && shape.style && shape.traingle) {
|
||||
const axleLength = 2 * shape.style.Section.axle.radius;
|
||||
// const positionx = shape.point.x + shape.drictx * (shape.traingle.getCos(axleLength) * 1.2);
|
||||
// const positiony = shape.point.y + shape.dricty * (shape.traingle.getCos(axleLength) * 1.2);
|
||||
const positionx = shape.point.x + shape.drictx * (shape.traingle.getCos(axleLength) * 1.05);
|
||||
const positiony = shape.point.y + shape.dricty * (shape.traingle.getCos(axleLength) * 1.05);
|
||||
// 圆弧
|
||||
const arcX = positionx - shape.dricty * shape.traingle.getSin(axleLength);
|
||||
const arcY = positiony + shape.drictx * shape.traingle.getSin(axleLength);
|
||||
const arcR = shape.style.Section.axle.radius;
|
||||
path.arc(arcX, arcY, arcR, 0, 2 * Math.PI, false);
|
||||
path.closePath();
|
||||
|
||||
const x1 = positionx - shape.traingle.getCos(axleLength * shape.multiple1) - shape.dricty * shape.traingle.getSin(axleLength);
|
||||
const y1 = positiony + shape.drictx * shape.traingle.getSin(axleLength * shape.multiple1) - shape.traingle.getSin(axleLength);
|
||||
const x2 = positionx + shape.traingle.getCos(axleLength * shape.multiple2) - shape.dricty * shape.traingle.getSin(axleLength);
|
||||
const y2 = positiony + shape.drictx * shape.traingle.getSin(axleLength * shape.multiple2) + shape.traingle.getSin(axleLength);
|
||||
path.moveTo(x1, y1);
|
||||
path.lineTo(x2, y2);
|
||||
path.closePath();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// export default class EAxle extends Group {
|
||||
// constructor(model) {
|
||||
// super();
|
||||
// this.model = model;
|
||||
// this.zlevel = model.zlevel;
|
||||
// this.z = 5;
|
||||
// this.create(model);
|
||||
// }
|
||||
|
||||
// create(model) {
|
||||
// if (model && model.style && model.traingle) {
|
||||
// const axleLength = 2 * model.style.Section.axle.radius;
|
||||
// const positionx = model.point.x + model.drictx * (model.traingle.getCos(axleLength) * 1.2);
|
||||
// const positiony = model.point.y + model.dricty * (model.traingle.getCos(axleLength) * 1.2);
|
||||
// this.line = new Line({
|
||||
// zlevel: this.zlevel,
|
||||
// z: this.z,
|
||||
// progressive: model.progressive,
|
||||
// shape: {
|
||||
// x1: positionx - model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength),
|
||||
// y1: positiony + model.drictx * model.traingle.getSin(axleLength) - model.traingle.getSin(axleLength),
|
||||
// x2: positionx + model.traingle.getCos(axleLength) - model.dricty * model.traingle.getSin(axleLength),
|
||||
// y2: positiony + model.drictx * model.traingle.getSin(axleLength) + model.traingle.getSin(axleLength)
|
||||
// },
|
||||
// style: {
|
||||
// GBaseLineWidth: 2,
|
||||
// stroke: model.style.Section.axle.color
|
||||
// }
|
||||
// });
|
||||
// this.axle = new Circle({
|
||||
// zlevel: this.zlevel,
|
||||
// z: this.z,
|
||||
// progressive: model.progressive,
|
||||
// shape: {
|
||||
// cx: positionx - model.dricty * model.traingle.getSin(axleLength),
|
||||
// cy: positiony + model.drictx * model.traingle.getSin(axleLength),
|
||||
// r: model.style.Section.axle.radius
|
||||
// },
|
||||
// style: {
|
||||
// GBaseLineWidth: 1,
|
||||
// stroke: model.style.Section.axle.color,
|
||||
// fill: model.style.transparentColor
|
||||
// }
|
||||
// });
|
||||
|
||||
// this.add(this.line);
|
||||
// this.add(this.axle);
|
||||
// export default Path.extend({
|
||||
// type: 'EAxle',
|
||||
// _subType: '',
|
||||
// buildPath: function (path, shape) {
|
||||
// if (shape && shape.style && shape.traingle) {
|
||||
// const axleLength = 2 * shape.style.Section.axle.radius;
|
||||
// // const positionx = shape.point.x + shape.drictx * (shape.traingle.getCos(axleLength) * 1.2);
|
||||
// // const positiony = shape.point.y + shape.dricty * (shape.traingle.getCos(axleLength) * 1.2);
|
||||
// const positionx = shape.point.x + shape.drictx * (shape.traingle.getCos(axleLength) * 1.05);
|
||||
// const positiony = shape.point.y + shape.dricty * (shape.traingle.getCos(axleLength) * 1.05);
|
||||
// // 圆弧
|
||||
// const arcX = positionx - shape.dricty * shape.traingle.getSin(axleLength);
|
||||
// const arcY = positiony + shape.drictx * shape.traingle.getSin(axleLength);
|
||||
// const arcR = shape.style.Section.axle.radius;
|
||||
// path.arc(arcX, arcY, arcR, 0, 2 * Math.PI, false);
|
||||
// path.closePath();
|
||||
//
|
||||
// const x1 = positionx - shape.traingle.getCos(axleLength * shape.multiple1) - shape.dricty * shape.traingle.getSin(axleLength);
|
||||
// const y1 = positiony + shape.drictx * shape.traingle.getSin(axleLength * shape.multiple1) - shape.traingle.getSin(axleLength);
|
||||
// const x2 = positionx + shape.traingle.getCos(axleLength * shape.multiple2) - shape.dricty * shape.traingle.getSin(axleLength);
|
||||
// const y2 = positiony + shape.drictx * shape.traingle.getSin(axleLength * shape.multiple2) + shape.traingle.getSin(axleLength);
|
||||
// path.moveTo(x1, y1);
|
||||
// path.lineTo(x2, y2);
|
||||
// path.closePath();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
export default class EAxle111 extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this.zlevel = model.zlevel;
|
||||
this._subType = model._subType;
|
||||
this.style = model.style;
|
||||
this.z = model.z;
|
||||
this.create(model);
|
||||
}
|
||||
create(model) {
|
||||
const axleLength = 2 * model.shape.style.Section.axle.radius;
|
||||
let positionx = model.shape.point.x - model.shape.dricty * (model.shape.traingle.getSin(axleLength) * 1.2);
|
||||
let positiony = model.shape.point.y + model.shape.dricty * (model.shape.traingle.getCos(axleLength) * 1.2);
|
||||
if (model.shape.difference === 0) {
|
||||
positionx += model.shape.drictx * 1;
|
||||
} else if (model.shape.difference > 0) {
|
||||
positionx -= model.shape.drictx * model.shape.traingle.getSin(1);
|
||||
positiony -= model.shape.drictx * model.shape.traingle.getCos(1);
|
||||
} else {
|
||||
positionx += model.shape.drictx * model.shape.traingle.getSin(1);
|
||||
positiony += model.shape.drictx * model.shape.traingle.getCos(1);
|
||||
}
|
||||
const x1 = positionx;
|
||||
const y1 = positiony;
|
||||
const x2 = positionx + model.shape.drictx * 9 / 2 * model.shape.style.Section.axle.radius;
|
||||
const y2 = positiony;
|
||||
const arcX = positionx + model.shape.drictx * 2 * model.shape.style.Section.axle.radius;
|
||||
const arcY = positiony;
|
||||
const angle = -model.shape.traingle.getRotation();
|
||||
|
||||
this.line = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
x1:x1,
|
||||
y1:y1,
|
||||
x2:x2,
|
||||
y2:y2
|
||||
},
|
||||
style: {
|
||||
lineWidth: this.style.lineWidth,
|
||||
fill: this.style.fill,
|
||||
stroke: this.style.stroke
|
||||
}
|
||||
});
|
||||
this.add(this.line);
|
||||
if (model.shape.isSpecial) {
|
||||
const brokenLineX1 = positionx + model.shape.drictx * model.shape.style.Section.axle.radius;
|
||||
const brokenLineY1 = positiony - model.shape.style.Section.axle.radius * 2 / 3;
|
||||
const brokenLineY2 = positiony + model.shape.style.Section.axle.radius * 2 / 3;
|
||||
const brokenLineX2 = positionx + model.shape.drictx * model.shape.style.Section.axle.radius * 4;
|
||||
const brokenLineY3 = positiony - model.shape.style.Section.axle.radius * 2 / 3;
|
||||
const brokenLineY4 = positiony + model.shape.style.Section.axle.radius * 2 / 3;
|
||||
const brokenLineX3 = positionx + model.shape.drictx * model.shape.style.Section.axle.radius * 4 / 3;
|
||||
const brokenLineX4 = positionx + model.shape.drictx * model.shape.style.Section.axle.radius * 11 / 3;
|
||||
const brokenLineY5 = positiony - model.shape.style.Section.axle.radius;
|
||||
const brokenLineY6 = positiony + model.shape.style.Section.axle.radius;
|
||||
this.isogonOutside = new Isogon({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
// origin: [arcX, arcY],
|
||||
// rotation:Math.PI / 8,
|
||||
shape: {
|
||||
x: arcX,
|
||||
y: arcY,
|
||||
r: model.shape.style.Section.axle.radius,
|
||||
n: 8
|
||||
},
|
||||
style: {
|
||||
fill: this.style.fill
|
||||
}
|
||||
});
|
||||
this.isogonInside = new Isogon({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z + 1,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
// origin: [arcX, arcY],
|
||||
// rotation:Math.PI / 4,
|
||||
shape: {
|
||||
x: arcX,
|
||||
y: arcY,
|
||||
r: model.shape.style.Section.axle.radius / 2,
|
||||
n: 4
|
||||
},
|
||||
style: {
|
||||
fill: '#000'
|
||||
}
|
||||
});
|
||||
this.line1 = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
x1: brokenLineX1,
|
||||
y1: brokenLineY1,
|
||||
x2: brokenLineX1,
|
||||
y2: brokenLineY2
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1,
|
||||
fill: this.style.fill,
|
||||
stroke: this.style.stroke
|
||||
}
|
||||
});
|
||||
this.line2 = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
x1: brokenLineX2,
|
||||
y1: brokenLineY3,
|
||||
x2: brokenLineX2,
|
||||
y2: brokenLineY4
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1,
|
||||
fill: this.style.fill,
|
||||
stroke: this.style.stroke
|
||||
}
|
||||
});
|
||||
this.line3 = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
x1: brokenLineX1,
|
||||
y1: brokenLineY1,
|
||||
x2: brokenLineX3,
|
||||
y2: brokenLineY5
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1,
|
||||
fill: this.style.fill,
|
||||
stroke: this.style.stroke
|
||||
}
|
||||
});
|
||||
this.line4 = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
x1: brokenLineX1,
|
||||
y1: brokenLineY2,
|
||||
x2: brokenLineX3,
|
||||
y2: brokenLineY6
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1,
|
||||
fill: this.style.fill,
|
||||
stroke: this.style.stroke
|
||||
}
|
||||
});
|
||||
this.line5 = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
x1: brokenLineX2,
|
||||
y1: brokenLineY1,
|
||||
x2: brokenLineX4,
|
||||
y2: brokenLineY5
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1,
|
||||
fill: this.style.fill,
|
||||
stroke: this.style.stroke
|
||||
}
|
||||
});
|
||||
this.line6 = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
x1: brokenLineX2,
|
||||
y1: brokenLineY2,
|
||||
x2: brokenLineX4,
|
||||
y2: brokenLineY6
|
||||
},
|
||||
style: {
|
||||
lineWidth: 1,
|
||||
fill: this.style.fill,
|
||||
stroke: this.style.stroke
|
||||
}
|
||||
});
|
||||
this.add(this.isogonInside);
|
||||
this.add(this.isogonOutside);
|
||||
this.add(this.line1);
|
||||
this.add(this.line2);
|
||||
this.add(this.line3);
|
||||
this.add(this.line4);
|
||||
this.add(this.line5);
|
||||
this.add(this.line6);
|
||||
} else {
|
||||
this.circle = new Circle({
|
||||
zlevel: this.model.zlevel,
|
||||
z: this.model.z,
|
||||
origin: [positionx, positiony],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
cx: arcX,
|
||||
cy: arcY,
|
||||
r: model.shape.style.Section.axle.radius
|
||||
},
|
||||
style: {
|
||||
fill: this.style.fill
|
||||
}
|
||||
});
|
||||
this.add(this.circle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
// import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Polyline from 'zrender/src/graphic/shape/Polyline';
|
||||
import BezierCurve from 'zrender/src/graphic/shape/BezierCurve';
|
||||
|
||||
/** 创建区段线集合*/
|
||||
@ -48,26 +49,31 @@ export default class ELines extends Group {
|
||||
});
|
||||
this.add(this.section);
|
||||
} else {
|
||||
for (let i = 0; i < (model.points.length - 1); i++) {
|
||||
this.section = new Line({
|
||||
isLine: true,
|
||||
zlevel: this.zlevel,
|
||||
progressive: model.progressive,
|
||||
z: this.z,
|
||||
shape: {
|
||||
x1: model.points[i].x,
|
||||
y1: model.points[i].y,
|
||||
x2: model.points[i + 1].x,
|
||||
y2: model.points[i + 1].y
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.style.Section.line.width,
|
||||
stroke: stroke
|
||||
}
|
||||
});
|
||||
this.sections.push(this.section);
|
||||
this.add(this.section);
|
||||
const points = [];
|
||||
for (let i = 0; i < model.points.length; i++) {
|
||||
points.push([model.points[i].x, model.points[i].y]);
|
||||
}
|
||||
this.section = new Polyline({
|
||||
isLine: true,
|
||||
zlevel: this.zlevel,
|
||||
progressive: model.progressive,
|
||||
z: this.z,
|
||||
// shape: {
|
||||
// x1: model.points[i].x,
|
||||
// y1: model.points[i].y,
|
||||
// x2: model.points[i + 1].x,
|
||||
// y2: model.points[i + 1].y
|
||||
// },
|
||||
shape: {
|
||||
points: points
|
||||
},
|
||||
style: {
|
||||
lineWidth: model.style.Section.line.width,
|
||||
stroke: stroke
|
||||
}
|
||||
});
|
||||
// this.sections.push(this.section);
|
||||
this.add(this.section);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -130,14 +136,15 @@ export default class ELines extends Group {
|
||||
}
|
||||
|
||||
getBoundingRect() {
|
||||
if (this.model.isCurve) {
|
||||
return this.section.getBoundingRect().clone();
|
||||
} else {
|
||||
const rect = this.sections[0].getBoundingRect();
|
||||
this.sections.forEach(section => {
|
||||
rect.union(section.getBoundingRect().clone());
|
||||
});
|
||||
return rect;
|
||||
}
|
||||
// if (this.model.isCurve) {
|
||||
return this.section.getBoundingRect().clone();
|
||||
// } else {
|
||||
// return this.section.getBoundingRect().clone();
|
||||
// const rect = this.sections[0].getBoundingRect();
|
||||
// this.sections.forEach(section => {
|
||||
// rect.union(section.getBoundingRect().clone());
|
||||
// });
|
||||
// return rect;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Text from 'zrender/src/graphic/Text';
|
||||
import Rect from 'zrender/src/graphic/shape/Rect';
|
||||
// import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
import store from '@/store/index_APP_TARGET';
|
||||
// import JTriangle from '../../utils/JTriangle';
|
||||
class EMouse extends Group {
|
||||
constructor(device, code) {
|
||||
super();
|
||||
@ -11,7 +13,7 @@ class EMouse extends Group {
|
||||
}
|
||||
create() {
|
||||
// 名称的包围框
|
||||
if (this.device.name) {
|
||||
if (this.device.name && this.device.style.Section.mouseOverStyle.nameShow) {
|
||||
const rect = this.device.name.getBoundingRect();
|
||||
if (!this.device.isSwitchSection) {
|
||||
this.sectionTextBorder = new Rect({
|
||||
@ -69,16 +71,65 @@ class EMouse extends Group {
|
||||
// 区段包围框
|
||||
if (this.device.section) {
|
||||
const rect = this.device.section.getBoundingRect();
|
||||
rect.height = rect.height + this.device.style.Section.mouseOverStyle.lineWidthMore;
|
||||
const shape = {
|
||||
x: rect.x,
|
||||
y: rect.y - this.device.style.Section.mouseOverStyle.lineWidthMore / 2,
|
||||
width: rect.width,
|
||||
height: rect.height
|
||||
};
|
||||
this.lineBorder = new Rect({
|
||||
zlevel: this.device.zlevel,
|
||||
z: this.device.z - 1,
|
||||
shape: rect,
|
||||
shape: shape,
|
||||
style: {
|
||||
lineDash: [3, 3],
|
||||
lineDash: this.device.style.Section.mouseOverStyle.lineDash,
|
||||
stroke: this.device.style.Section.mouseOverStyle.borderColor,
|
||||
fill: this.device.style.transparentColor
|
||||
}
|
||||
});
|
||||
// const model = this.device.model;
|
||||
// const arr = JSON.parse(JSON.stringify(model.points));
|
||||
// arr.reverse();
|
||||
// const points = [];
|
||||
// model.points.forEach((ele, index) => {
|
||||
// if (index == model.points.length - 1) {
|
||||
// this.triangle = new JTriangle(model.points[index - 1], ele);
|
||||
// } else {
|
||||
// console.log(ele, model.points[index + 1]);
|
||||
// this.triangle = new JTriangle(ele, model.points[index + 1]);
|
||||
// }
|
||||
// const directx = this.triangle.drictx;
|
||||
// const directy = this.triangle.dricty;
|
||||
// const x = 5 * this.triangle.getSinRate();
|
||||
// console.log(this.triangle.getCosRate(), this.triangle.getSinRate());
|
||||
// const y = 5;
|
||||
// points.push([ele.x - (directx * x), ele.y - (directy * y)]);
|
||||
// });
|
||||
// arr.forEach((ele, index) => {
|
||||
// if (index == arr.length - 1) {
|
||||
// this.triangle = new JTriangle(arr[index - 1], ele);
|
||||
// } else {
|
||||
// this.triangle = new JTriangle(ele, arr[index + 1]);
|
||||
// }
|
||||
// const directx = this.triangle.drictx;
|
||||
// const directy = this.triangle.dricty;
|
||||
// const x = 5 * this.triangle.getSinRate();
|
||||
// const y = 5;
|
||||
// points.push([ele.x + (directx * x), ele.y + (directy * y)]);
|
||||
// });
|
||||
// this.lineBorder = new Polygon({
|
||||
// zlevel: this.device.zlevel,
|
||||
// z: this.device.z - 1,
|
||||
// shape: {
|
||||
// points: points
|
||||
// },
|
||||
// style: {
|
||||
// lineDash: this.device.style.Section.mouseOverStyle.lineDash,
|
||||
// stroke: this.device.style.Section.mouseOverStyle.borderColor,
|
||||
// fill: this.device.style.transparentColor
|
||||
// }
|
||||
// });
|
||||
|
||||
this.add(this.lineBorder);
|
||||
this.lineBorder.hide();
|
||||
|
@ -50,17 +50,20 @@ export default class Section extends Group {
|
||||
if (this.model.leftAxlePosition) {
|
||||
this.leftAxle = new EAxle({
|
||||
_subType: 'leftAxle',
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
style: this.style,
|
||||
traingle: traingleStart,
|
||||
drictx: 1,
|
||||
dricty: this.model.leftAxlePosition,
|
||||
dricty: this.model.leftAxlePosition === 1 || this.model.leftAxlePosition === 2 ? 1 : -1,
|
||||
isSpecial: this.model.leftAxlePosition === -2 || this.model.leftAxlePosition === 2,
|
||||
point: this.model.points[0],
|
||||
multiple1: 1,
|
||||
multiple2: 1.5
|
||||
difference: this.model.points[0].y - this.model.points[1].y,
|
||||
multiple: 1
|
||||
},
|
||||
style: {
|
||||
lineWidth: 2,
|
||||
lineWidth: this.style.Section.axle.lineWidth,
|
||||
fill: this.style.Section.axle.color,
|
||||
stroke: this.style.Section.axle.color
|
||||
}
|
||||
@ -70,17 +73,20 @@ export default class Section extends Group {
|
||||
if (this.model.rightAxlePosition) {
|
||||
this.rightAxle = new EAxle({
|
||||
_subType: 'rightAxle',
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
shape: {
|
||||
style: this.style,
|
||||
traingle: traingleEnd,
|
||||
drictx: -1,
|
||||
dricty: this.model.rightAxlePosition,
|
||||
dricty: this.model.rightAxlePosition === 1 || this.model.rightAxlePosition === 2 ? 1 : -1,
|
||||
isSpecial: this.model.rightAxlePosition === -2 || this.model.rightAxlePosition === 2,
|
||||
point: this.model.points[length - 1],
|
||||
multiple1: 1.5,
|
||||
multiple2: 1
|
||||
difference: this.model.points[length - 2].y - this.model.points[length - 1].y,
|
||||
multiple1: -1
|
||||
},
|
||||
style: {
|
||||
lineWidth: 2,
|
||||
lineWidth: this.style.Section.axle.lineWidth,
|
||||
fill: this.style.Section.axle.color,
|
||||
stroke: this.style.Section.axle.color
|
||||
}
|
||||
@ -261,40 +267,42 @@ export default class Section extends Group {
|
||||
createSection() {
|
||||
const model = this.model;
|
||||
const style = this.style;
|
||||
// 创建区段
|
||||
this.section = new ELines({
|
||||
zlevel: this.zlevel,
|
||||
z: model.type == '02' ? this.z + 1 : this.z, // 逻辑区段会覆盖物理区段
|
||||
isSwitchSection: model.switchSection,
|
||||
isCurve: model.curve,
|
||||
points: model.type == '04' ? [model.namePosition, model.namePosition] : model.points,
|
||||
style: style
|
||||
});
|
||||
this.add(this.section);
|
||||
|
||||
if (this.style.Section.block.special) { // 创建哈尔滨特殊区段(用作封锁显示)
|
||||
this.sectionBlock = new EblockLines({
|
||||
// 创建区段 model.logicSectionNum 为空 或 0 表明没有逻辑区段 创建 否则过滤
|
||||
if ((model.type == '01' && (model.logicSectionNum[0] == 0 || model.logicSectionNum.length == 0)) || model.type == '02' || model.type == '03') {
|
||||
this.section = new ELines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 2,
|
||||
isSwitchSection: model.switchSection,
|
||||
isCurve: model.curve,
|
||||
points: model.points,
|
||||
style: style
|
||||
});
|
||||
this.add(this.sectionBlock);
|
||||
}
|
||||
|
||||
if (this.style.Section.line.isActiveShow) { // 哈尔滨线路点击背景色
|
||||
this.lineBorder = new ELines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z - 1,
|
||||
z: model.type == '02' ? this.z + 1 : this.z, // 逻辑区段会覆盖物理区段
|
||||
isSwitchSection: model.switchSection,
|
||||
isCurve: model.curve,
|
||||
points: model.type == '04' ? [model.namePosition, model.namePosition] : model.points,
|
||||
style: style
|
||||
});
|
||||
this.add(this.lineBorder);
|
||||
this.lineBorder.setStyle({ lineWidth: 0 });
|
||||
this.add(this.section);
|
||||
|
||||
if (this.style.Section.block.special) { // 创建哈尔滨特殊区段(用作封锁显示)
|
||||
this.sectionBlock = new EblockLines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 2,
|
||||
isSwitchSection: model.switchSection,
|
||||
isCurve: model.curve,
|
||||
points: model.points,
|
||||
style: style
|
||||
});
|
||||
this.add(this.sectionBlock);
|
||||
}
|
||||
|
||||
if (this.style.Section.line.isActiveShow) { // 哈尔滨线路点击背景色
|
||||
this.lineBorder = new ELines({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z - 1,
|
||||
isSwitchSection: model.switchSection,
|
||||
isCurve: model.curve,
|
||||
points: model.type == '04' ? [model.namePosition, model.namePosition] : model.points,
|
||||
style: style
|
||||
});
|
||||
this.add(this.lineBorder);
|
||||
this.lineBorder.setStyle({ lineWidth: 0 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -765,7 +773,7 @@ export default class Section extends Group {
|
||||
}
|
||||
|
||||
createMouseEvent() { // 鼠标事件
|
||||
if (this.style.Section.mouseOverStyle) { // 只有北京线路才会有鼠标事件
|
||||
if (this.style.Section.mouseOverStyle) {
|
||||
this.mouseEvent = new EMouse(this, this.model.relSwitchCode);
|
||||
this.add(this.mouseEvent);
|
||||
this.on('mouseout', (e) => { this.mouseEvent.mouseout(e); });
|
||||
@ -811,7 +819,7 @@ export default class Section extends Group {
|
||||
mouseover() {
|
||||
this.section && this.section.setStyle({ stroke: 'rgba(255,255,255,0.8)' });
|
||||
}
|
||||
setShowMode() {}
|
||||
setShowMode() { }
|
||||
setShowStation(stationCode) {
|
||||
if (!stationCode || this.model.stationCode === stationCode) {
|
||||
this.eachChild(item => {
|
||||
|
@ -30,48 +30,48 @@ class ESigLamp extends Group {
|
||||
stroke: style.Signal.lamp.borderColor
|
||||
}
|
||||
});
|
||||
|
||||
this.lstop = new Line({
|
||||
_subType: 'SignalLamp',
|
||||
_val: '3',
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
origin: {
|
||||
x: model.originX,
|
||||
y: model.originY
|
||||
},
|
||||
shape: {
|
||||
x1: model.x + (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.lamp.radiusR + 1) * Math.sin(Math.PI / 4),
|
||||
x2: model.x - (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.lamp.radiusR + 1) * Math.sin(Math.PI / 4)
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Signal.lamp.stopWidth,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
|
||||
this.rstop = new Line({
|
||||
_subType: 'SignalLamp',
|
||||
_val: '3',
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
origin: {
|
||||
x: model.originX,
|
||||
y: model.originY
|
||||
},
|
||||
shape: {
|
||||
x1: model.x + (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.lamp.radiusR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2)),
|
||||
x2: model.x - (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.lamp.radiusR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2))
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Signal.lamp.stopWidth,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
if ( !style.Signal.lamp.logicDisplayNone ) {
|
||||
this.lstop = new Line({
|
||||
_subType: 'SignalLamp',
|
||||
_val: '3',
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
origin: {
|
||||
x: model.originX,
|
||||
y: model.originY
|
||||
},
|
||||
shape: {
|
||||
x1: model.x + (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.lamp.radiusR + 1) * Math.sin(Math.PI / 4),
|
||||
x2: model.x - (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.lamp.radiusR + 1) * Math.sin(Math.PI / 4)
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Signal.lamp.stopWidth,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
this.rstop = new Line({
|
||||
_subType: 'SignalLamp',
|
||||
_val: '3',
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
origin: {
|
||||
x: model.originX,
|
||||
y: model.originY
|
||||
},
|
||||
shape: {
|
||||
x1: model.x + (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y1: model.y + (style.Signal.lamp.radiusR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2)),
|
||||
x2: model.x - (style.Signal.lamp.radiusR + 1) * Math.cos(Math.PI / 4),
|
||||
y2: model.y - (style.Signal.lamp.radiusR + 1) * (Math.sin(Math.PI / 4) - Math.sqrt(2))
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Signal.lamp.stopWidth,
|
||||
stroke: style.backgroundColor
|
||||
}
|
||||
});
|
||||
}
|
||||
this.add(this.lamp);
|
||||
if (!style.Signal.lamp.logicDisplayNone) {
|
||||
this.add(this.lstop);
|
||||
@ -97,17 +97,29 @@ class ESigLamp extends Group {
|
||||
|
||||
setStop(has) {
|
||||
if (has) {
|
||||
this.lstop.show();
|
||||
this.rstop.show();
|
||||
this.lstop && this.lstop.show();
|
||||
this.rstop && this.rstop.show();
|
||||
} else {
|
||||
this.lstop.hide();
|
||||
this.rstop.hide();
|
||||
this.lstop && this.lstop.hide();
|
||||
this.rstop && this.rstop.hide();
|
||||
}
|
||||
}
|
||||
|
||||
getBoundingRect() {
|
||||
return this.lamp.getBoundingRect();
|
||||
}
|
||||
|
||||
setAnimationStart(color) {
|
||||
this.lamp && this.lamp.animateStyle(true)
|
||||
.when(0, { fill: this.model.style.backgroundColor })
|
||||
.when(1000, { fill: color })
|
||||
.when(2000, { fill: this.model.style.backgroundColor })
|
||||
.when(3000, { fill: color })
|
||||
.start();
|
||||
}
|
||||
setAnimationEnd() {
|
||||
this.lamp && this.lamp.stopAnimation(false);
|
||||
}
|
||||
}
|
||||
|
||||
export default ESigLamp;
|
||||
|
@ -41,13 +41,13 @@ class ESigName extends Group {
|
||||
setColor(color) {
|
||||
this.name.setStyle('textFill', color);
|
||||
}
|
||||
getNameText() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
// 隐藏
|
||||
hide() {
|
||||
this.name.hide();
|
||||
}
|
||||
|
||||
// 显示
|
||||
show() {
|
||||
this.name.show();
|
||||
}
|
||||
|
@ -64,6 +64,7 @@ class ESigPost extends Group {
|
||||
setTerminalOptional() {
|
||||
this.triangle = new Polygon({
|
||||
zlevel: this.model.zlevel,
|
||||
_val: '3',
|
||||
z: this.model.z,
|
||||
shape: {
|
||||
points: [
|
||||
@ -87,7 +88,7 @@ class ESigPost extends Group {
|
||||
}
|
||||
/* 关闭闪烁三角形并还原灯柱 */
|
||||
removeTerminalOptional() {
|
||||
this.triangle.stopAnimation(false);
|
||||
this.triangle && this.triangle.stopAnimation(false);
|
||||
this.triangle && this.remove(this.triangle);
|
||||
this.ver.show();
|
||||
this.hor.show();
|
||||
|
@ -16,6 +16,7 @@ import {isShowThePrdType} from '../../utils/handlePath';
|
||||
import Rect from 'zrender/src/graphic/shape/Rect';
|
||||
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
import Text from 'zrender/src/graphic/Text';
|
||||
import Isogon from 'zrender/src/graphic/shape/Isogon';
|
||||
|
||||
class Signal extends Group {
|
||||
constructor(model, style) {
|
||||
@ -61,11 +62,34 @@ class Signal extends Group {
|
||||
x: model.position.x + model.positionPoint.x,
|
||||
y: model.position.y + model.positionPoint.y + posit * (style.Signal.distance + style.Section.line.width + style.Signal.lamp.radiusR)
|
||||
});
|
||||
|
||||
if (style.Signal.ciConfirm) {
|
||||
this.ciConfirm = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
silent: false,
|
||||
_subType: 'enabled',
|
||||
style: {
|
||||
textBorderColor: 'red',
|
||||
textBorderWidth: 0,
|
||||
x: model.position.x + model.positionPoint.x,
|
||||
y: model.position.y + model.positionPoint.y + posit * (style.Signal.distance + style.Section.line.width + style.Signal.lamp.radiusR + style.Signal.ciConfirm.distance),
|
||||
fontWeight: style.textStyle.fontWeight,
|
||||
fontSize: style.Signal.ciConfirm.fontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: style.Signal.ciConfirm.defaultText,
|
||||
textFill: style.Signal.ciConfirm.textColor,
|
||||
textAlign: style.textStyle.textAlign,
|
||||
textPosition: 'inside',
|
||||
textVerticalAlign: style.textStyle.textVerticalAlign
|
||||
}
|
||||
});
|
||||
this.add(this.ciConfirm);
|
||||
this.ciConfirm.hide();
|
||||
}
|
||||
// 信号灯
|
||||
const endPoint = this.sigPost.getLampPosition(model.lampPostType);
|
||||
this.lamps = [];
|
||||
if ((style.Signal.lamp.guidName == 'ningbo_01' || style.Signal.lamp.guidName == 'haerbin_01') && this.count == 1) {
|
||||
if ((style.Signal.lamp.guidName === 'double' || style.Signal.lamp.guidName === 'doubleAndBase') && this.count == 1) {
|
||||
this.count = 2;
|
||||
}
|
||||
for (let i = 0; i < this.count; i++) {
|
||||
@ -101,15 +125,19 @@ class Signal extends Group {
|
||||
this.tText.hide();
|
||||
}
|
||||
if (style.Signal.insideTriangle) {
|
||||
this.insideTriangle = new Polygon({
|
||||
const right = model.right ? 1 : -1;
|
||||
const angle = Math.PI / 6 * right;
|
||||
this.insideTriangle = new Isogon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
_val: '3',
|
||||
origin: [endPoint.x, endPoint.y],
|
||||
rotation:angle,
|
||||
shape: {
|
||||
points: [
|
||||
[endPoint.x - style.Signal.lamp.radiusR, endPoint.y - Math.sin(2 * Math.PI / 6) * style.Signal.lamp.radiusR],
|
||||
[endPoint.x - style.Signal.lamp.radiusR, endPoint.y + Math.sin(2 * Math.PI / 6) * style.Signal.lamp.radiusR],
|
||||
[endPoint.x + style.Signal.lamp.radiusR, endPoint.y]
|
||||
]
|
||||
x: endPoint.x,
|
||||
y: endPoint.y,
|
||||
r: style.Signal.lamp.radiusR,
|
||||
n: 3
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Signal.insideTriangle.lineWidth,
|
||||
@ -117,11 +145,16 @@ class Signal extends Group {
|
||||
fill: style.Signal.insideTriangle.fillColor
|
||||
}
|
||||
});
|
||||
// this.add(this.insideTriangle);
|
||||
// this.insideTriangle.hide();
|
||||
this.add(this.insideTriangle);
|
||||
}
|
||||
if (style.Signal.sigBack) {
|
||||
const signalRect = this.getBoundingRect();
|
||||
const signalRect = this.sigPost.getBoundingRect();
|
||||
this.lamps.forEach(elem => {
|
||||
signalRect.union(elem.getBoundingRect());
|
||||
});
|
||||
if (this.insideTriangle) {
|
||||
signalRect.union(this.insideTriangle.getBoundingRect());
|
||||
}
|
||||
// 信号的背景
|
||||
this.sigBack = new Rect({
|
||||
zlevel: this.zlevel,
|
||||
@ -230,6 +263,7 @@ class Signal extends Group {
|
||||
|
||||
this.add(this.sigPost);
|
||||
this.add(this.sigName);
|
||||
|
||||
this.style.Signal.text.show && model.nameShow ? this.sigName.show() : this.sigName.hide();
|
||||
this.add(this.sigAuto);
|
||||
this.add(this.sigRoute);
|
||||
@ -298,7 +332,7 @@ class Signal extends Group {
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.greenColor);
|
||||
this.lamps[1] && this.lamps[1].setColor(this.style.backgroundColor); // 设置黑色
|
||||
this.virtualSignal && this.virtualSignal.setColor(this.style.Signal.lamp.greenColor);
|
||||
if (this.style.Signal.lamp.guidName == 'haerbin_01') { // 设置底座颜色
|
||||
if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色
|
||||
this.sigPost.setColor('#00FF00');
|
||||
if (this.model.logicLight) {
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.blueColor);
|
||||
@ -309,7 +343,7 @@ class Signal extends Group {
|
||||
openLateral() {
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.yellowColor);
|
||||
this.lamps[1] && this.lamps[1].setColor(this.style.backgroundColor);
|
||||
if (this.style.Signal.lamp.guidName == 'haerbin_01') { // 设置底座颜色
|
||||
if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色
|
||||
this.sigPost.setColor('#00FF00');
|
||||
if (this.model.logicLight) { // 设置哈尔滨逻辑点灯 颜色
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.blueColor);
|
||||
@ -328,16 +362,17 @@ class Signal extends Group {
|
||||
|
||||
// 引导
|
||||
guid() {
|
||||
if (this.style.Signal.lamp.guidName == 'ningbo_01' || this.style.Signal.lamp.guidName == 'haerbin_01') {
|
||||
if (this.style.Signal.lamp.guidName === 'double') {
|
||||
this.lamps[1].show();
|
||||
}
|
||||
if (this.style.Signal.lamp.guidName == 'haerbin_01') { // 设置底座颜色
|
||||
if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色
|
||||
this.lamps[1].show();
|
||||
this.sigPost.setColor('#00FF00');
|
||||
}
|
||||
if (this.style.Signal.lamp.guidName != 'chengdu_03') { // 双灯 允许引导信号
|
||||
if (this.style.Signal.lamp.guidName !== 'singleRY') { // 双灯 允许引导信号
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.redColor);
|
||||
this.lamps[1] && this.lamps[1].setColor(this.style.Signal.lamp.yellowColor);
|
||||
} else if (this.style.Signal.lamp.guidName == 'chengdu_03') {
|
||||
} else if (this.style.Signal.lamp.guidName === 'singleRY') {
|
||||
this.lamps[0].setStyle({ fill: this.style.Signal.lamp.yellowColor, stroke: this.style.Signal.lamp.redColor, lineWidth: 2.5 });
|
||||
}
|
||||
}
|
||||
@ -345,7 +380,7 @@ class Signal extends Group {
|
||||
// 封锁
|
||||
block() {
|
||||
this.lamps[0].setColor(this.style.Signal.lamp.redColor);
|
||||
if (this.style.Signal.lamp.guidName == 'haerbin_01') { // 设置底座颜色
|
||||
if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色
|
||||
this.sigPost.setColor('#000080');
|
||||
}
|
||||
this.sigName.setColor(this.style.Signal.text.blockColor);
|
||||
@ -353,15 +388,7 @@ class Signal extends Group {
|
||||
this.sigName.setStyle({ textBorderWidth: 1 });
|
||||
this.sigName.setColor('#fff');
|
||||
}
|
||||
// if (this.style.Signal.sigBack) {
|
||||
// this.sigBack.show();
|
||||
// this.sigBack.animateStyle(true)
|
||||
// .when(0, { fill: this.style.backgroundColor })
|
||||
// .when(1000, { fill: this.style.Signal.sigBack.color })
|
||||
// .when(2000, { fill: this.style.backgroundColor })
|
||||
// .when(3000, { fill: this.style.Signal.sigBack.color })
|
||||
// .start();
|
||||
// }
|
||||
this.sigBack && this.sigBack.show();
|
||||
}
|
||||
|
||||
// 功能封锁
|
||||
@ -383,7 +410,7 @@ class Signal extends Group {
|
||||
|
||||
// 逻辑点灯
|
||||
logicalLight() {
|
||||
if (this.style.Signal.lamp.guidName != 'haerbin_01') { // 哈尔滨不显示 X状态的逻辑点灯
|
||||
if (this.style.Signal.lamp.guidName !== 'doubleAndBase') { // 哈尔滨不显示 X状态的逻辑点灯
|
||||
this.lamps.forEach(lamp => { lamp.setStop(true); });
|
||||
}
|
||||
}
|
||||
@ -399,9 +426,12 @@ class Signal extends Group {
|
||||
this.sigRoute.show();
|
||||
this.sigRoute.setStyle({ fill: this.style.Signal.auto.manualControl });
|
||||
}
|
||||
if (this.style.Signal.lamp.guidName == 'haerbin_01') {
|
||||
if (this.style.Signal.lamp.guidName === 'doubleAndBase') {
|
||||
this.sigName.setColor(this.style.Signal.text.ArtificialRouteColor);
|
||||
}
|
||||
if (this.style.Signal.auto.lampstandard) {
|
||||
this.sigPost.setColor(this.style.Signal.auto.manualControl);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置自动进路模式状态类型
|
||||
@ -413,7 +443,7 @@ class Signal extends Group {
|
||||
this.sigAuto.setColor(this.style.Signal.auto.autoRoute);
|
||||
this.sigAuto.show();
|
||||
}
|
||||
if (this.style.Signal.lamp.guidName == 'haerbin_01') {
|
||||
if (this.style.Signal.lamp.guidName === 'doubleAndBase') {
|
||||
this.sigName.setColor(this.style.Signal.text.AutoRouteColor);
|
||||
this.setAutoClose();
|
||||
}
|
||||
@ -443,9 +473,21 @@ class Signal extends Group {
|
||||
setDelayUnlock() {
|
||||
this.sigDelay.show();
|
||||
}
|
||||
// 信号封锁CI确认
|
||||
setCiConfirm() {
|
||||
if (this.ciConfirm) {
|
||||
this.ciConfirm.show();
|
||||
this.ciConfirm.animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: this.style.Signal.ciConfirm.textColor })
|
||||
.when(2000, { textFill: this.style.backgroundColor })
|
||||
.start();
|
||||
}
|
||||
}
|
||||
|
||||
// 恢复状态
|
||||
recover() {
|
||||
this.lamps.forEach(item=> { item.show(); });
|
||||
this.sigName.setStyle({ textBorderWidth: 0 });
|
||||
this.setAutoClose();
|
||||
this.sigDelay.hide();
|
||||
@ -454,12 +496,19 @@ class Signal extends Group {
|
||||
this.sigBack && this.sigBack.hide();
|
||||
this.sigName.setColor(this.style.Signal.text.defaultColor);
|
||||
this.sigPost.setColor(this.style.Signal.post.standardColor); // 设置底座默认颜色
|
||||
if (this.style.Signal.lamp.guidName == 'chengdu_03') {
|
||||
if (this.style.Signal.lamp.guidName === 'singleRY') {
|
||||
this.lamps[0].setStyle({ lineWidth: this.style.Signal.lamp.borderWidth });
|
||||
}
|
||||
if (this.style.Signal.lamp.guidName == 'ningbo_01' || this.style.Signal.lamp.guidName == 'haerbin_01') {
|
||||
if (this.style.Signal.lamp.guidName === 'double' || this.style.Signal.lamp.guidName === 'doubleAndBase') {
|
||||
this.lamps[1].hide();
|
||||
}
|
||||
this.insideTriangle && this.insideTriangle.hide();
|
||||
this.sigPost && this.sigPost.removeTerminalOptional();
|
||||
this.ciConfirm && this.ciConfirm.stopAnimation(false);
|
||||
this.ciConfirm && this.ciConfirm.hide();
|
||||
this.sigBack && this.sigBack.hide();
|
||||
this.sigBack && this.sigBack.stopAnimation(false);
|
||||
this.lamps && this.lamps[0].setAnimationEnd();
|
||||
}
|
||||
|
||||
setState(model) {
|
||||
@ -496,6 +545,28 @@ class Signal extends Group {
|
||||
} else {
|
||||
this.physicsLight(); // 设置物理点灯
|
||||
}
|
||||
if (model.isStartSignal) {
|
||||
this.insideTriangle && this.insideTriangle.show();
|
||||
this.lamps.forEach(item => { item.hide(); });
|
||||
this.insideTriangle.setStyle({fill: this.style.Signal.insideTriangle.startSignalColor, stroke: this.style.Signal.insideTriangle.startSignalColor});
|
||||
} else if (model.isTerminalSignal) {
|
||||
this.sigPost && this.sigPost.setTerminalOptional();
|
||||
}
|
||||
if (model.isCiConfirm) {
|
||||
this.setCiConfirm();
|
||||
}
|
||||
if (model.isRequestLock) {
|
||||
this.sigBack && this.sigBack.show();
|
||||
this.sigBack && this.sigBack.animateStyle(true)
|
||||
.when(0, { fill: this.style.backgroundColor })
|
||||
.when(1000, { fill: this.style.Signal.sigBack.color })
|
||||
.when(2000, { fill: this.style.backgroundColor })
|
||||
.when(3000, { fill: this.style.Signal.sigBack.color })
|
||||
.start();
|
||||
}
|
||||
if (model.isRequestGuide) {
|
||||
this.lamps && this.lamps[0] && this.lamps[0].setAnimationStart(this.style.Signal.lamp.yellowColor);
|
||||
}
|
||||
}
|
||||
|
||||
getBoundingRect() {
|
||||
@ -503,6 +574,9 @@ class Signal extends Group {
|
||||
this.lamps.forEach(elem => {
|
||||
rect.union(elem.getBoundingRect());
|
||||
});
|
||||
if (this.insideTriangle) {
|
||||
rect.union(this.insideTriangle.getBoundingRect());
|
||||
}
|
||||
return rect;
|
||||
}
|
||||
|
||||
|
@ -61,6 +61,7 @@ class EDetainCircle extends Group {
|
||||
setColor(color) {
|
||||
this.detainCircle.setStyle('stroke', color);
|
||||
this.line1.setStyle('stroke', color);
|
||||
this.line2.setStyle('stroke', color);
|
||||
}
|
||||
}
|
||||
|
||||
|
57
src/jmapNew/shape/StationStand/EPatternFilter.js
Normal file
57
src/jmapNew/shape/StationStand/EPatternFilter.js
Normal file
@ -0,0 +1,57 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
|
||||
class EPatternFilter extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this.create();
|
||||
}
|
||||
|
||||
create() {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
const startX = (model.width / 2 + style.StationStand.patternFilter.offset.x);
|
||||
const startY = model.y + (model.height / 2 + style.StationStand.patternFilter.offset.y) * model.direction + (1 + model.direction) / 2 * 14;
|
||||
this.patternFilter1 = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
points:[
|
||||
[model.x - startX, startY],
|
||||
[model.x - startX, startY - 14],
|
||||
[model.x - startX - 14, startY - 14],
|
||||
[model.x - startX - 14 - 10 * 0.866, startY - 7],
|
||||
[model.x - startX - 14, startY]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: style.StationStand.patternFilter.defaultColor
|
||||
}
|
||||
});
|
||||
this.patternFilter2 = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
points:[
|
||||
[model.x + startX, startY],
|
||||
[model.x + startX, startY - 14],
|
||||
[model.x + startX + 14, startY - 14],
|
||||
[model.x + startX + 14 + 10 * 0.866, startY - 7],
|
||||
[model.x + startX + 14, startY]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: style.StationStand.patternFilter.defaultColor
|
||||
}
|
||||
});
|
||||
this.add(this.patternFilter1);
|
||||
this.add(this.patternFilter2);
|
||||
}
|
||||
|
||||
setColor(color) {
|
||||
this.patternFilter1.setStyle('fill', color);
|
||||
}
|
||||
}
|
||||
|
||||
export default EPatternFilter;
|
@ -13,6 +13,7 @@ import ETrainStop from './ETrainStop';
|
||||
import ETrainDepart from './ETrainDepart';
|
||||
import EControl from '../element/EControl';
|
||||
import EDetainCircle from './EDetainCircle';
|
||||
import EPatternFilter from './EPatternFilter';
|
||||
import {isShowThePrdType} from '../../utils/handlePath';
|
||||
|
||||
class StationStand extends Group {
|
||||
@ -60,6 +61,22 @@ class StationStand extends Group {
|
||||
});
|
||||
this.add(this.safeStand);
|
||||
|
||||
// 模式筛选标识(西安二号线特殊的情况)
|
||||
if (style.StationStand.patternFilter) {
|
||||
const direction = model.right ? 1 : -1;
|
||||
this.patternFilter = new EPatternFilter({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
style: style,
|
||||
x: model.position.x,
|
||||
y: model.position.y,
|
||||
width: model.width,
|
||||
height:model.height,
|
||||
direction:direction
|
||||
});
|
||||
this.add(this.patternFilter);
|
||||
}
|
||||
|
||||
/** 站台紧急关闭*/
|
||||
const emergentOffset = model.inside ? style.StationStand.standEmergent.insideOffset : style.StationStand.standEmergent.outsideOffset;
|
||||
const emergentH = model.right ? 1 : -1;
|
||||
@ -117,13 +134,14 @@ class StationStand extends Group {
|
||||
/** 站台折返策略*/
|
||||
if (style.StationStand.reentry.offset) {
|
||||
const reentryH = style.StationStand.standEmergent.mergentR;
|
||||
const reentryX = model.position.x - (style.StationStand.reentry.position || drict) * (style.StationStand.reentry.offset.x - model.width / 2);
|
||||
const reentryY = model.position.y + (style.StationStand.reentry.position || drict) * (style.StationStand.reentry.offset.y) + drict * reentryH;
|
||||
const isRight = model.right ? -1 : 1;
|
||||
const reentryX = model.position.x - (style.StationStand.reentry.position || isRight) * (style.StationStand.reentry.offset.x - model.width / 2);
|
||||
const reentryY = model.position.y + (style.StationStand.reentry.position || isRight) * (style.StationStand.reentry.offset.y) + isRight * reentryH;
|
||||
this.reentry = new EReentry({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
style: style,
|
||||
drict: drict,
|
||||
drict: isRight,
|
||||
x: reentryX,
|
||||
y: reentryY,
|
||||
lineWidth: 0,
|
||||
@ -421,18 +439,21 @@ class StationStand extends Group {
|
||||
standDetainTrain() {
|
||||
this.detain && this.detain.showMode();
|
||||
this.detain && this.detain.setColor(this.style.StationStand.detainCar.detainTrainTextColor);
|
||||
this.detainCircle && this.detainCircle.setColor(this.style.StationStand.detainCar.centerTrainColor);
|
||||
}
|
||||
|
||||
/** 中心扣车*/
|
||||
centerDetainTrain() {
|
||||
this.detain && this.detain.showMode();
|
||||
this.detain && this.detain.setColor(this.style.StationStand.detainCar.centerTrainColor);
|
||||
this.detainCircle && this.detainCircle.setColor(this.style.StationStand.detainCar.centerTrainColor);
|
||||
}
|
||||
|
||||
/** 中心+车站扣车*/
|
||||
standAndCenterDetainTrain() {
|
||||
this.detain && this.detain.showMode();
|
||||
this.detain && this.detain.setColor(this.style.StationStand.detainCar.andCenterTrainColor);
|
||||
this.detainCircle && this.detainCircle.setColor(this.style.StationStand.detainCar.centerTrainColor);
|
||||
}
|
||||
|
||||
/** 人工设置停战时间*/
|
||||
@ -495,7 +516,13 @@ class StationStand extends Group {
|
||||
}
|
||||
|
||||
/** 设置折返策略*/
|
||||
switch (model.reentryStrategy) {
|
||||
let reentryStrategy = '';
|
||||
if (model.reentryStrategy !== '04') {
|
||||
reentryStrategy = model.reentryStrategy;
|
||||
} else {
|
||||
reentryStrategy = model.defaultReentryStrategy;
|
||||
}
|
||||
switch (reentryStrategy) {
|
||||
case '04': /** 默认*/
|
||||
case '01':
|
||||
this.noReentry(); /** 无折返策略*/
|
||||
@ -588,7 +615,7 @@ class StationStand extends Group {
|
||||
}
|
||||
}
|
||||
setShowStation(stationCode) {
|
||||
if (!stationCode || this.model.deviceStationCode === stationCode) {
|
||||
if ((!stationCode || this.model.deviceStationCode === stationCode) && this.model.visible) {
|
||||
this.eachChild(item => {
|
||||
item.show();
|
||||
});
|
||||
|
@ -3,6 +3,7 @@
|
||||
*/
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Text from 'zrender/src/graphic/Text';
|
||||
import JTriangle from '../../utils/JTriangle';
|
||||
import ESwName from './ESwName.js';
|
||||
import ESwLocal from './ESwLocal.js';
|
||||
@ -155,12 +156,28 @@ export default class Switch extends Group {
|
||||
triangle: this.triangle
|
||||
});
|
||||
|
||||
this.enabledName = new Text({ // 道岔使能 E 西安二号线独有
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 6,
|
||||
_subType: 'enabled', // 标识
|
||||
style: {
|
||||
x: arrowTextX,
|
||||
y: arrowTextY,
|
||||
fontSize: 12,
|
||||
text: 'E',
|
||||
textAlign: 'center',
|
||||
textVerticalAlign: 'middle',
|
||||
textFill: 'yellow'
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.locShelter);
|
||||
this.add(this.relocShelter);
|
||||
this.add(this.rhomboid);
|
||||
this.add(this.sheltertriangle);
|
||||
this.add(this.releaseBackground);
|
||||
this.add(this.name);
|
||||
this.add(this.enabledName);
|
||||
style.Switch.text.show && model.nameShow ? this.name.show() : this.name.hide();
|
||||
}
|
||||
|
||||
@ -200,6 +217,15 @@ export default class Switch extends Group {
|
||||
}
|
||||
}
|
||||
|
||||
setCiConfirm() {
|
||||
this.enabledName && this.enabledName.show();
|
||||
this.enabledName.animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: 'yellow' })
|
||||
.when(2000, { textFill: this.style.backgroundColor })
|
||||
.start();
|
||||
}
|
||||
|
||||
/** 名称动画*/
|
||||
nameTextAnimation() {
|
||||
this.name.getNameText().animateStyle(true)
|
||||
@ -241,6 +267,7 @@ export default class Switch extends Group {
|
||||
this.setHasTextBorder(0);
|
||||
this.locShelter.hide(); // 定位覆盖图形
|
||||
this.relocShelter.hide(); // 反位覆盖图形
|
||||
this.enabledName.hide(); // 使能隐藏
|
||||
}
|
||||
|
||||
/** 定位*/
|
||||
@ -461,6 +488,8 @@ export default class Switch extends Group {
|
||||
model.singleLock && model.blockade && this.blockMonolock(); // 单锁&锁闭状态
|
||||
/** 区段切除*/
|
||||
// this.setForkAction(); // 道岔挤岔完成
|
||||
// 道岔使能显示
|
||||
model.isCiConfirm && this.setCiConfirm();
|
||||
model.cutOff && this.setSwitchCutOff();
|
||||
if (this.style.Switch.sectionAction.flag) { // 哈尔滨线路处理道岔相关区段颜色
|
||||
const switchModel = Vue.prototype.$jlmap.mapDevice[model.code];
|
||||
|
@ -13,21 +13,24 @@ export default class TrainHead extends Group {
|
||||
const model = this.model;
|
||||
const style = this.model.style;
|
||||
const baseMargin = (model.drect === -1 ? 1 : 0);
|
||||
this.line = new Rect({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
x: model.point.x - baseMargin * (style.Train.trainHead.trainConntWidth),
|
||||
y: model.point.y,
|
||||
width: style.Train.trainHead.trainConntWidth * model.scale,
|
||||
height: style.Train.trainHead.trainHeadRectHeight
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.1,
|
||||
stroke: style.trainSidelineColor,
|
||||
fill: style.Train.trainHead.trainHeadFillColor
|
||||
}
|
||||
});
|
||||
if (style.Train.trainHead.trainConntWidth) {
|
||||
this.line = new Rect({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
shape: {
|
||||
x: model.point.x - baseMargin * (style.Train.trainHead.trainConntWidth),
|
||||
y: model.point.y,
|
||||
width: style.Train.trainHead.trainConntWidth * model.scale,
|
||||
height: style.Train.trainHead.trainHeadRectHeight
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0.1,
|
||||
stroke: style.trainSidelineColor,
|
||||
fill: style.Train.trainHead.trainHeadFillColor
|
||||
}
|
||||
});
|
||||
this.add(this.line);
|
||||
}
|
||||
this.arrow = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
@ -45,15 +48,16 @@ export default class TrainHead extends Group {
|
||||
}
|
||||
});
|
||||
|
||||
this.add(this.line);
|
||||
this.add(this.arrow);
|
||||
}
|
||||
setColor(color) {
|
||||
this.line && this.line.setStyle('fill', color);
|
||||
this.arrow && this.arrow.setStyle('fill', color);
|
||||
}
|
||||
setLineShow(isShow, sss) {
|
||||
isShow ? this.line.show() : this.line.hide();
|
||||
setLineShow(isShow) {
|
||||
if (this.line) {
|
||||
isShow ? this.line.show() : this.line.hide();
|
||||
}
|
||||
}
|
||||
setArrowShow(isShow) {
|
||||
isShow ? this.arrow.show() : this.arrow.hide();
|
||||
|
@ -16,15 +16,17 @@ export default class Train extends Group {
|
||||
this.zlevel = model.zlevel;
|
||||
this.model = model;
|
||||
this.style = style;
|
||||
this.size = 0;
|
||||
this.z = 40;
|
||||
// this.size = 0;
|
||||
this.section = null;
|
||||
this.isShowShape = true;
|
||||
this.fontSize = style.Train.common.useSelfText ? style.Train.common.nameFontSize || style.Train.common.trainTextFontSize : model.nameFontSize || style.Train.common.nameFontSize || style.Train.common.trainTextFontSize;
|
||||
// this.fontSize = model.nameFontSize || style.Train.common.nameFontSize || style.Train.common.trainTextFontSize;
|
||||
this.newScale = this.fontSize / style.Train.common.trainTextFontSize;
|
||||
this.nameFormat = style.Train.common.useSelfFormat ? style.Train.trainBody.trainNameFormat : model.nameFormat || style.Train.trainBody.trainNameFormat;
|
||||
if ( style.Train.trainBody.specialTrainType.length > 0) {
|
||||
style.Train.trainBody.specialTrainType.some((item) =>{
|
||||
// this.nameFormat = model.nameFormat || style.Train.trainBody.trainNameFormat;
|
||||
if (style.Train.trainBody.specialTrainType.length > 0) {
|
||||
style.Train.trainBody.specialTrainType.some((item) => {
|
||||
if (model.type === item.type) {
|
||||
this.nameFormat = item.nameFormat;
|
||||
model.serviceNumber = item.serviceNumber ? item.serviceNumber : model.serviceNumber;
|
||||
@ -32,6 +34,7 @@ export default class Train extends Group {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.create();
|
||||
this.setState(model, this);
|
||||
this.initShowStation(model);
|
||||
@ -119,19 +122,19 @@ export default class Train extends Group {
|
||||
this.lineLength = 0;
|
||||
let oldPoint = null;
|
||||
this.pointList = [];
|
||||
oldmodel.points.forEach((point)=>{
|
||||
oldmodel.points.forEach((point) => {
|
||||
if (oldPoint) {
|
||||
const temp = Math.sqrt(
|
||||
Math.pow(point.x - oldPoint.x, 2) +
|
||||
Math.pow(point.y - oldPoint.y, 2),
|
||||
Math.pow(point.y - oldPoint.y, 2),
|
||||
);
|
||||
this.pointList.push({length:temp, pointStart:{x:oldPoint.x, y:oldPoint.y}, pointEnd:{x:point.x, y:point.y}});
|
||||
this.pointList.push({ length: temp, pointStart: { x: oldPoint.x, y: oldPoint.y }, pointEnd: { x: point.x, y: point.y } });
|
||||
this.lineLength += temp;
|
||||
}
|
||||
oldPoint = point;
|
||||
});
|
||||
oldPoint = 0;
|
||||
this.pointList.forEach(point=>{
|
||||
this.pointList.forEach(point => {
|
||||
point.percentStart = oldPoint / this.lineLength;
|
||||
oldPoint += point.length;
|
||||
point.percentEnd = oldPoint / this.lineLength;
|
||||
@ -140,9 +143,9 @@ export default class Train extends Group {
|
||||
this.triangle = new ETriangle({
|
||||
style: this.style,
|
||||
zlevel: this.zlevel,
|
||||
z:10,
|
||||
z: 10,
|
||||
right: this.model.right,
|
||||
point:{x:this.startX, y:this.startY}
|
||||
point: { x: this.startX, y: this.startY }
|
||||
});
|
||||
this.add(this.triangle);
|
||||
}
|
||||
@ -155,14 +158,14 @@ export default class Train extends Group {
|
||||
this.createTrainBorder();
|
||||
}
|
||||
if (style.Train.directionArrow.hasArrow) {
|
||||
const arrowPoint = {x: 0, y: 0};
|
||||
const arrowPoint = { x: 0, y: 0 };
|
||||
if (model.trainWindowModel) {
|
||||
arrowPoint.x = model.trainWindowModel.point.x;
|
||||
arrowPoint.y = model.right ? model.trainWindowModel.point.y + style.Train.directionArrow.distanceBottom : model.trainWindowModel.point.y - style.Train.directionArrow.distanceTop;
|
||||
}
|
||||
this.directionArrow = new EDirection({
|
||||
zlevel: this.zlevel,
|
||||
z:10,
|
||||
z: 10,
|
||||
right: model.right,
|
||||
x: arrowPoint.x,
|
||||
y: arrowPoint.y,
|
||||
@ -179,13 +182,13 @@ export default class Train extends Group {
|
||||
updateSection() {
|
||||
const train = this.model;
|
||||
if (train.physicalCode && train.offsetp && this.triangle) {
|
||||
this.pointList.forEach(point=>{
|
||||
this.pointList.forEach(point => {
|
||||
if (train.offsetp > point.percentStart && train.offsetp <= point.percentEnd) {
|
||||
this.startX = point.pointStart.x + (point.pointEnd.x - point.pointStart.x) * (train.offsetp - point.percentStart);
|
||||
this.startY = point.pointStart.y + (point.pointEnd.y - point.pointStart.y) * (train.offsetp - point.percentStart);
|
||||
}
|
||||
});
|
||||
const point = {x:this.startX, y:this.startY};
|
||||
const point = { x: this.startX, y: this.startY };
|
||||
this.triangle.point = point;
|
||||
this.triangle.updateTriangle(point, train.right);
|
||||
this.triangle.dirty();
|
||||
@ -208,7 +211,7 @@ export default class Train extends Group {
|
||||
// 设置服务号状态类型
|
||||
setServerNoType(type) {
|
||||
if (this.style.Train.trainStatusStyle.serverNoType.length > 0) {
|
||||
const flag = this.style.Train.trainStatusStyle.serverNoType.some((item) =>{
|
||||
const flag = this.style.Train.trainStatusStyle.serverNoType.some((item) => {
|
||||
if (type === item.type) {
|
||||
this.trainB && this.trainB.setTextTrainServerColor(item.showColor);
|
||||
return true;
|
||||
@ -223,37 +226,37 @@ export default class Train extends Group {
|
||||
// 设置目的地状态
|
||||
setDestinationStatus(status) {
|
||||
if (this.style.Train.trainStatusStyle.destinationStatus.length > 0) {
|
||||
const flag = this.style.Train.trainStatusStyle.destinationStatus.some((item) =>{
|
||||
const flag = this.style.Train.trainStatusStyle.destinationStatus.some((item) => {
|
||||
if (status === item.status) {
|
||||
switch (this.style.Train.trainStatusStyle.destinationStatusSetText) {
|
||||
case 'trainTarget':
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(item.showColor);
|
||||
break;
|
||||
case 'trainServer':
|
||||
this.trainB && this.trainB.setTextTrainServerColor(item.showColor);
|
||||
break;
|
||||
case 'trainWindowBorder':
|
||||
this.trainB && this.trainB.setBodyBoxShape('stroke', item.showColor);
|
||||
break;
|
||||
default:
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(item.showColor);
|
||||
case 'trainTarget':
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(item.showColor);
|
||||
break;
|
||||
case 'trainServer':
|
||||
this.trainB && this.trainB.setTextTrainServerColor(item.showColor);
|
||||
break;
|
||||
case 'trainWindowBorder':
|
||||
this.trainB && this.trainB.setBodyBoxShape('stroke', item.showColor);
|
||||
break;
|
||||
default:
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(item.showColor);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
if (this.style.Train.trainStatusStyle.defaultDestinationColor && !flag) {
|
||||
switch (this.style.Train.trainStatusStyle.destinationStatusSetText) {
|
||||
case 'trainTarget':
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
break;
|
||||
case 'trainServer':
|
||||
this.trainB && this.trainB.setTextTrainServerColor(this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
break;
|
||||
case 'trainWindowBorder':
|
||||
this.trainB && this.trainB.setBodyBoxShape('stroke', this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
break;
|
||||
default:
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
case 'trainTarget':
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
break;
|
||||
case 'trainServer':
|
||||
this.trainB && this.trainB.setTextTrainServerColor(this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
break;
|
||||
case 'trainWindowBorder':
|
||||
this.trainB && this.trainB.setBodyBoxShape('stroke', this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
break;
|
||||
default:
|
||||
this.trainB && this.trainB.setTextTrainTargetColor(this.style.Train.trainStatusStyle.defaultDestinationColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -368,7 +371,7 @@ export default class Train extends Group {
|
||||
setTrainTypeStatus(type) {
|
||||
if (this.style.Train.trainStatusStyle.trainTypeStatus) {
|
||||
this.style.Train.trainStatusStyle.trainTypeStatus.some((item) => {
|
||||
if ( type === item.type) {
|
||||
if (type === item.type) {
|
||||
item.serviceNumberColor && this.trainB && this.trainB.setTextTrainServerColor(item.serviceNumberColor);
|
||||
item.trainNumberColor && this.trainB && this.trainB.setTextTrainNumberColor(item.trainNumberColor);
|
||||
item.trainTargetColor && this.trainB && this.trainB.setTextTrainTargetColor(item.trainTargetColor);
|
||||
@ -422,22 +425,22 @@ export default class Train extends Group {
|
||||
const arr = this.nameFormat.split(':');
|
||||
arr.forEach(ele => {
|
||||
switch (ele) {
|
||||
case 'targetCode': {
|
||||
this.size += (style.Train.trainNumber.targetCodePrefix || '').length;
|
||||
break;
|
||||
}
|
||||
case 'serviceNumber': {
|
||||
this.size += (style.Train.trainServer.serviceNumberPrefix || '').length;
|
||||
break;
|
||||
}
|
||||
case 'tripNumber': {
|
||||
this.size += (style.Train.trainTarget.tripNumberPrefix || '').length;
|
||||
break;
|
||||
}
|
||||
case 'groupNumber': {
|
||||
this.size += (style.Train.trainTargetNumber.groupNumberPrefix || '').length;
|
||||
break;
|
||||
}
|
||||
case 'targetCode': {
|
||||
this.size += (style.Train.trainNumber.targetCodePrefix || '').length;
|
||||
break;
|
||||
}
|
||||
case 'serviceNumber': {
|
||||
this.size += (style.Train.trainServer.serviceNumberPrefix || '').length;
|
||||
break;
|
||||
}
|
||||
case 'tripNumber': {
|
||||
this.size += (style.Train.trainTarget.tripNumberPrefix || '').length;
|
||||
break;
|
||||
}
|
||||
case 'groupNumber': {
|
||||
this.size += (style.Train.trainTargetNumber.groupNumberPrefix || '').length;
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@ -487,7 +490,7 @@ export default class Train extends Group {
|
||||
|
||||
this.add(this.trainBorder);
|
||||
}
|
||||
setShowMode() {}
|
||||
setShowMode() { }
|
||||
initShowStation(model) {
|
||||
if (model.trainWindowModel && model.trainWindowModel.instance && !model.trainWindowModel.instance.isShowShape) {
|
||||
this.eachChild(item => {
|
||||
@ -496,7 +499,7 @@ export default class Train extends Group {
|
||||
}
|
||||
}
|
||||
setShowStation(stationCode) {
|
||||
if ((this.model.sectionModel && this.model.sectionModel.stationCode === stationCode) || !stationCode ) {
|
||||
if ((this.model.sectionModel && this.model.sectionModel.stationCode === stationCode) || !stationCode) {
|
||||
this.eachChild(item => {
|
||||
item.show();
|
||||
});
|
||||
|
@ -1,37 +1,37 @@
|
||||
export default class EMouse {
|
||||
constructor(device) {
|
||||
this.device = device;
|
||||
}
|
||||
constructor(device) {
|
||||
this.device = device;
|
||||
}
|
||||
|
||||
mouseover(e) {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(true);
|
||||
const instance = this.device.getInstanceByCode(this.device.model.sectionCode);
|
||||
if (instance && instance.mouseEvent && instance.mouseEvent.mouseover) {
|
||||
instance.mouseEvent.mouseEnter(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
mouseover(e) {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(true);
|
||||
const instance = this.device.getInstanceByCode(this.device.model.sectionCode);
|
||||
if (instance && instance.mouseEvent && instance.mouseEvent.mouseover) {
|
||||
instance.mouseEvent.mouseEnter(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mouseout(e) {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(false || this.device.model.trainWindowShow);
|
||||
const instance = this.device.getInstanceByCode(this.device.model.sectionCode);
|
||||
if (instance && instance.mouseEvent && instance.mouseEvent.mouseout) {
|
||||
instance.mouseEvent.mouseLeave(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
mouseout(e) {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(false || this.device.model.trainWindowShow);
|
||||
const instance = this.device.getInstanceByCode(this.device.model.sectionCode);
|
||||
if (instance && instance.mouseEvent && instance.mouseEvent.mouseout) {
|
||||
instance.mouseEvent.mouseLeave(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mouseEnter(e) {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(true);
|
||||
}
|
||||
}
|
||||
mouseEnter(e) {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
mouseLeave(e) {
|
||||
if (this.device.prdType ) {
|
||||
this.device.setVisible(false);
|
||||
}
|
||||
}
|
||||
mouseLeave(e) {
|
||||
if (this.device.prdType ) {
|
||||
this.device.setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,36 +26,40 @@ class TrainWindow extends Group {
|
||||
}
|
||||
|
||||
createMouseEvent() {
|
||||
this.mouseEvent = new EMouse(this);
|
||||
this.on('mouseout', (e) => { this.mouseEvent.mouseout(e); });
|
||||
this.on('mouseover', (e) => { this.mouseEvent.mouseover(e); });
|
||||
if (this.model.trainWindowShow) {
|
||||
this.mouseEvent = new EMouse(this);
|
||||
this.on('mouseout', (e) => { this.mouseEvent.mouseout(e); });
|
||||
this.on('mouseover', (e) => { this.mouseEvent.mouseover(e); });
|
||||
}
|
||||
}
|
||||
|
||||
/** 创建车次窗*/
|
||||
createTrainWindow() {
|
||||
const model = this.model;
|
||||
const point = model.point || model.position;
|
||||
this.trainRect = new Polygon({
|
||||
_subType: 'TrainWindow',
|
||||
zlevel: this.zlevel,
|
||||
z: this.z - 1,
|
||||
shape: {
|
||||
smooth: this.style.TrainWindow.trainWindowSmooth, // 圆滑程度
|
||||
points: [
|
||||
[point.x - model.width / 2, point.y],
|
||||
[point.x + model.width / 2, point.y],
|
||||
[point.x + model.width / 2, point.y + model.height],
|
||||
[point.x - model.width / 2, point.y + model.height]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
lineDash: this.style.TrainWindow.lineDash,
|
||||
lineWidth: this.style.TrainWindow.lineWidth,
|
||||
stroke: this.style.TrainWindow.lineColor,
|
||||
fill: this.style.transparentColor
|
||||
}
|
||||
});
|
||||
this.add(this.trainRect);
|
||||
if (this.model.trainWindowShow) {
|
||||
this.trainRect = new Polygon({
|
||||
_subType: 'TrainWindow',
|
||||
zlevel: this.zlevel,
|
||||
z: this.z - 1,
|
||||
shape: {
|
||||
smooth: this.style.TrainWindow.trainWindowSmooth, // 圆滑程度
|
||||
points: [
|
||||
[point.x - model.width / 2, point.y],
|
||||
[point.x + model.width / 2, point.y],
|
||||
[point.x + model.width / 2, point.y + model.height],
|
||||
[point.x - model.width / 2, point.y + model.height]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
lineDash: this.style.TrainWindow.lineDash,
|
||||
lineWidth: this.style.TrainWindow.lineWidth,
|
||||
stroke: this.style.TrainWindow.lineColor,
|
||||
fill: this.style.transparentColor
|
||||
}
|
||||
});
|
||||
this.add(this.trainRect);
|
||||
}
|
||||
}
|
||||
|
||||
isPop(e) {
|
||||
|
@ -23,6 +23,7 @@ import CheckBox from './checkBox/checkBox.js';
|
||||
import AutomaticRoute from './AutomacticRoute/index.js';
|
||||
import SaidLamp from './SaidLamp/index.js';
|
||||
import SplitStation from './SplitStation/index';
|
||||
import Arrow from './Arrow/index';
|
||||
|
||||
/** 图库*/
|
||||
const mapShape = {};
|
||||
@ -67,6 +68,7 @@ mapShape[deviceType.ReturnModeGroup] = SaidLamp;
|
||||
mapShape[deviceType.Axle] = SaidLamp;
|
||||
mapShape[deviceType.SwitchFault] = SaidLamp;
|
||||
mapShape[deviceType.SplitStation] = SplitStation;
|
||||
mapShape[deviceType.Arrow] = Arrow;
|
||||
|
||||
function shapefactory(device, jmap) {
|
||||
const type = device._type;
|
||||
|
@ -146,8 +146,8 @@ export default {
|
||||
this.tripNumberList.push(item);
|
||||
}
|
||||
});
|
||||
}).catch(error => {
|
||||
this.$messageBox(error.message);
|
||||
}).catch(() => {
|
||||
// this.$messageBox(error.message);
|
||||
});
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
|
@ -769,14 +769,7 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
selectedClassB(item, index) {
|
||||
const order = this.order || 0;
|
||||
if (this.mode !== TrainingMode.TEACH) { // 编辑模式下可显示
|
||||
this.popupMenuB(item, index);
|
||||
} else if (this.steps[order] && this.steps[order].type == 'bar') { // 操作步骤没有顶部操作顶部菜单都不可显示
|
||||
this.popupMenuB(item, index);
|
||||
}
|
||||
},
|
||||
|
||||
popupMenuB(item, index) {
|
||||
this.$store.dispatch('menuOperation/setPopMenu', { position: null, menu: null });
|
||||
const operate = {
|
||||
|
@ -106,15 +106,6 @@ export default {
|
||||
]
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
'$store.state.menuOperation.menuCount': function (val) {
|
||||
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.Station) && !this.buttonOperation) {
|
||||
this.doShow(this.$store.state.menuOperation.menuPosition);
|
||||
} else {
|
||||
this.doClose();
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('training', [
|
||||
'mode',
|
||||
@ -124,6 +115,15 @@ export default {
|
||||
'buttonOperation'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
'$store.state.menuOperation.menuCount': function (val) {
|
||||
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.Station) && !this.buttonOperation) {
|
||||
this.doShow(this.$store.state.menuOperation.menuPosition);
|
||||
} else {
|
||||
this.doClose();
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
clickEvent() {
|
||||
const self = this;
|
||||
|
@ -2,6 +2,7 @@ import deviceType from '../../constant/deviceType';
|
||||
|
||||
class Model {
|
||||
constructor() {
|
||||
this.screenLine = 3;
|
||||
// 公共字段部分默认初始值
|
||||
this['public'] = {};
|
||||
this['public'][deviceType.Signal] = {
|
||||
|
@ -156,8 +156,8 @@ export default {
|
||||
this.tripNumberList.push(item);
|
||||
}
|
||||
});
|
||||
}).catch(error => {
|
||||
this.$messageBox(error.message);
|
||||
}).catch(() => {
|
||||
// this.$messageBox(error.message);
|
||||
});
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
|
@ -84,7 +84,7 @@ export default {
|
||||
label: '道岔单解',
|
||||
handler: this.unlock,
|
||||
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK
|
||||
},
|
||||
}
|
||||
// {
|
||||
// label: '设备标签',
|
||||
// handler: '',
|
||||
|
@ -94,7 +94,7 @@ export default {
|
||||
console.error(error);
|
||||
this.loading = false;
|
||||
this.reloadTable();
|
||||
this.$messageBox(`生成用户每日运行图失败`);
|
||||
// this.$messageBox(`生成用户每日运行图失败`);
|
||||
});
|
||||
} else {
|
||||
this.$messageBox(`请选择需要加载的运行图`);
|
||||
@ -120,7 +120,7 @@ export default {
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
this.$messageBox(`获取车站列表失败`);
|
||||
// this.$messageBox(`获取车站列表失败`);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
@ -114,7 +114,7 @@ export default {
|
||||
this.doClose();
|
||||
}).catch(() => {
|
||||
this.doClose();
|
||||
this.$messageBox('创建运行图计划失败');
|
||||
// this.$messageBox('创建运行图计划失败');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -117,7 +117,7 @@ export default {
|
||||
this.reloadTable();
|
||||
}).catch(() => {
|
||||
this.reloadTable();
|
||||
this.$messageBox('删除失败');
|
||||
// this.$messageBox('删除失败');
|
||||
});
|
||||
}).catch(() => { });
|
||||
},
|
||||
|
@ -2,6 +2,7 @@ import deviceType from '../../constant/deviceType';
|
||||
|
||||
class Model {
|
||||
constructor() {
|
||||
this.screenLine = 3;
|
||||
// 公共字段部分默认初始值
|
||||
this['public'] = {};
|
||||
this['public'][deviceType.Signal] = {
|
||||
|
@ -149,8 +149,8 @@ export default {
|
||||
this.tripNumberList.push(item);
|
||||
}
|
||||
});
|
||||
}).catch(error => {
|
||||
this.$messageBox(error.message);
|
||||
}).catch(() => {
|
||||
// this.$messageBox(error.message);
|
||||
});
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
@ -184,11 +184,11 @@ export default {
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch(error => {
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
this.doClose();
|
||||
// this.$refs.noticeInfo.doShow(operate);
|
||||
this.$messageBox(error.message);
|
||||
// this.$messageBox(error.message);
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
|
@ -64,7 +64,6 @@
|
||||
</div>
|
||||
<station-control-convert ref="stationControlConvert" />
|
||||
<password-box ref="passwordBox" @setLoginResult="getLoginResult" />
|
||||
<view-train-id ref="viewTrainId" />
|
||||
<view-name ref="viewName" />
|
||||
<notice-info ref="noticeInfo" />
|
||||
<train-add ref="trainAdd" />
|
||||
@ -86,7 +85,6 @@ import TrainAdd from './menuDialog/trainAdd';
|
||||
import TrainTranstalet from './menuDialog/trainTranstalet';
|
||||
import TrainDelete from './menuDialog/trainDelete';
|
||||
import PasswordBox from './menuDialog/passwordBox';
|
||||
import ViewTrainId from './menuDialog/viewTrainId';
|
||||
import ViewName from './menuDialog/viewName';
|
||||
import ManageUser from './menuDialog/manageUser';
|
||||
import HelpAbout from './menuDialog/helpAbout';
|
||||
@ -100,7 +98,6 @@ export default {
|
||||
NoticeInfo,
|
||||
StationControlConvert,
|
||||
PasswordBox,
|
||||
ViewTrainId,
|
||||
ViewName,
|
||||
TrainAdd,
|
||||
TrainTranstalet,
|
||||
|
@ -1,193 +0,0 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-dialogDrag
|
||||
class="chengdou-03__systerm view-train-id"
|
||||
title="列车识别号显示设置"
|
||||
:visible.sync="show"
|
||||
width="420px"
|
||||
:before-close="doClose"
|
||||
:z-index="2000"
|
||||
:modal="false"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<div style="padding: 10px 20px; border: 1px double lightgray;">
|
||||
<span class="base-label">计划车显示模式</span>
|
||||
<el-radio-group v-model="planMode">
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-radio :label="1">表号+车次号</el-radio>
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="4">
|
||||
<el-radio :label="2">表号+车组号</el-radio>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-radio :label="3">目的地号+车次号</el-radio>
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="4">
|
||||
<el-radio :label="4">目的地号+车组号</el-radio>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-radio :label="5">目的地号+表号+车次号</el-radio>
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="4">
|
||||
<el-radio :label="6">目的地号+表号+车组号</el-radio>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div style="padding: 10px 20px; border: 1px double lightgray; margin: 20px 0px;">
|
||||
<span class="base-label">头码车显示模式</span>
|
||||
<el-radio-group v-model="headMode">
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-radio :label="3">目的地号+车次号</el-radio>
|
||||
</el-col>
|
||||
<el-col :span="6" :offset="8">
|
||||
<el-radio :label="4">目的地号+车组号</el-radio>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div style="padding: 10px 20px; border: 1px double lightgray;">
|
||||
<span class="base-label">字体大小</span>
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-input v-model="fontSize" size="small" min="16" max="99" />
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="1">
|
||||
<span style="height:32px; line-height:32px;">(范围:16-99)</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<el-row class="button-group">
|
||||
<el-col :span="6" :offset="2">
|
||||
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
|
||||
</el-col>
|
||||
<el-col :span="4" :offset="8">
|
||||
<el-button :id="domIdCancel" @click="cancel">取 消</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<notice-info ref="noticeInfo" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import NoticeInfo from '../dialog/childDialog/childDialog/noticeInfo';
|
||||
|
||||
export default {
|
||||
name: 'ViewTrainId',
|
||||
components: {
|
||||
NoticeInfo
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
operate: null,
|
||||
operation: '',
|
||||
planMode: 5,
|
||||
headMode: 5,
|
||||
fontSize: 16
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
show() {
|
||||
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||
},
|
||||
domIdCancel() {
|
||||
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
|
||||
},
|
||||
domIdConfirm() {
|
||||
return this.dialogShow ? OperationEvent.Command.close.confirm.domId : '';
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.setTrainDispaly();
|
||||
this.$store.dispatch('training/tipReload');
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
doShow(operate) {
|
||||
this.operate = operate || {};
|
||||
this.operation = operate.operation;
|
||||
|
||||
// 非断电激活时设置初始值
|
||||
if (!this.dialogShow) {
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
});
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
},
|
||||
cancel() {
|
||||
const operate = {
|
||||
type: this.operate.type,
|
||||
operation: OperationEvent.Command.cancel.menu.operation
|
||||
};
|
||||
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
});
|
||||
},
|
||||
commit() {
|
||||
const operate = {
|
||||
over: true,
|
||||
type: this.operate.type,
|
||||
operation: OperationEvent.Command.close.confirm.operation,
|
||||
val: [this.planMode, this.headMode, this.fontSize].join('::')
|
||||
};
|
||||
|
||||
this.loading = true;
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
this.loading = false;
|
||||
if (valid) {
|
||||
this.setTrainDispaly();
|
||||
this.doClose();
|
||||
}
|
||||
}).catch(error => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
setTrainDispaly() {
|
||||
const updatList = [];
|
||||
const trainList = this.$store.getters['training/viewTrainList']();
|
||||
if (trainList && trainList.length > 0) {
|
||||
const nameFormat = this.trainNameFormatBy(this.planMode);
|
||||
const nameFontSize = this.fontSize;
|
||||
trainList.forEach(elem => {
|
||||
updatList.push(Object.assign(this.$jlmap.getDeviceByCode(elem.code), { nameFormat, nameFontSize }));
|
||||
});
|
||||
|
||||
this.$store.dispatch('map/updateMapDevices', updatList);
|
||||
}
|
||||
},
|
||||
trainNameFormatBy(mode) {
|
||||
switch (mode.toString()) {
|
||||
case '1': return 'serviceNumber:tripNumber'; // 表号+车次号
|
||||
case '2': return 'serviceNumber:groupNumber'; // 表号+车组号
|
||||
case '3': return 'targetCode:tripNumber'; // 目的地号+车次号
|
||||
case '4': return 'targetCode:groupNumber'; // 目的地号+车组号
|
||||
case '5': return 'targetCode:serviceNumber:tripNumber'; // 目的地号+表号+车次号
|
||||
case '6': return 'targetCode:serviceNumber:groupNumber'; // 目的地号+表号+车组号
|
||||
}
|
||||
return ''; // 无格式类型
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user