<template>
|
<div>
|
<div id="sectionCharts" class="sectionChars" v-show="profileShow">
|
<div id="echartsView1" style="width: 100%; height: 100%"></div>
|
</div>
|
<el-collapse v-model="activeName" accordion>
|
<el-collapse-item title="缓冲区分析" name="10">
|
<el-form
|
:inline="true"
|
style="color: white; text-align: left"
|
label-position="right"
|
>
|
<el-form-item label="缓冲区半径(m):" class="input-item">
|
<el-input
|
size="small"
|
placeholder="请输入内容"
|
v-model="hcqfxParams.buffRadius"
|
clearable
|
>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="缓冲区分析类型:" class="input-item">
|
<el-radio-group
|
v-model="hcqfxParams.radioBuffer"
|
style="width: 180px"
|
>
|
<el-radio :label="1">点</el-radio>
|
<el-radio :label="2">线</el-radio>
|
<el-radio :label="3">面</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-form>
|
<div class="buttongroups">
|
<el-button size="small" @click="starthcqfx">缓冲区分析</el-button>
|
<el-button size="small" @click="clearHCQ">清除</el-button>
|
</div>
|
</el-collapse-item>
|
|
<el-collapse-item title="淹没分析" name="1">
|
<!-- <el-form :inline="true" style="font-color: 0; text-align: right" label-position="left">
|
<el-form-item label="水位上涨高度:" class="input-item">
|
<el-input size="small" placeholder="请输入内容" v-model="ymfxParams.ymMaxHeight" clearable>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="淹没速度m/s:" class="input-item">
|
<el-input size="small" placeholder="请输入内容" v-model="ymfxParams.ymSpeed" clearable>
|
</el-input>
|
</el-form-item>
|
</el-form> -->
|
<div class="buttongroups">
|
<el-button
|
size="small"
|
@click="drawFlood"
|
style="width: 100px; margin-top: 20px"
|
>绘制范围</el-button
|
>
|
<el-button
|
size="small"
|
@click="startFlood"
|
style="width: 100px; margin-top: 20px"
|
>开始分析</el-button
|
>
|
<el-button
|
size="small"
|
@click="clearFlood"
|
style="width: 100px; margin-top: 20px"
|
>清除</el-button
|
>
|
</div>
|
</el-collapse-item>
|
|
<el-collapse-item title="剖切分析" name="2">
|
<el-form style="padding: 10px; color: white">
|
<div>地形剖切分析:</div>
|
<div class="buttongroups">
|
<el-button size="small" @click="pouqieHandler(1)"
|
>绘制剖切线</el-button
|
>
|
<el-button size="small" @click="startPQM">开始分析</el-button>
|
<el-button size="small" @click="clearPQDM">关闭</el-button>
|
</div>
|
<el-divider></el-divider>
|
<div>模型剖切分析:</div>
|
<!-- <div style="width: 100%; padding: 15px">
|
选择模型:
|
<el-select size="mini" placeholder="请选择模型:" style="width: 200px" value-key="id"
|
v-model="pouqie.currentModel" @change="modelSelectedChange">
|
<el-option v-for="item in pouqie.modules" :key="item.id" :label="item.modulename" :value="item">
|
</el-option>
|
</el-select>
|
</div> -->
|
<div style="width: 100%; padding: 15px">
|
剖切方向:
|
<el-radio-group
|
v-model="pouqieParams.direction"
|
@change="changeDirection"
|
size="small"
|
>
|
<el-radio-button label="0">垂直剖切</el-radio-button>
|
<el-radio-button label="1">水平剖切</el-radio-button>
|
<!-- <el-radio-button label="2">南北向</el-radio-button> -->
|
</el-radio-group>
|
</div>
|
<el-form
|
:inline="true"
|
style="color: white; text-align: left; width: 100%; padding: 15px"
|
label-position="right"
|
>
|
<el-form-item label="剖切角度:" class="input-item">
|
<el-slider
|
v-model="pouqieParams.anglevalue"
|
:min="pouqieParams.minangle"
|
:max="pouqieParams.maxangle"
|
style="width: 160px"
|
@change="angleChange"
|
></el-slider>
|
</el-form-item>
|
</el-form>
|
<div class="buttongroups">
|
<el-button size="small" @click="pouqieHandler(2)"
|
>模型剖切</el-button
|
>
|
<el-button size="small" @click="clearPQ">关闭</el-button>
|
</div>
|
</el-form>
|
</el-collapse-item>
|
<el-collapse-item title="通视分析" name="3">
|
<el-form style="padding: 10px; color: white">
|
<div>直线形:</div>
|
<div class="buttongroups">
|
<el-button size="small" @click="analysis(1)">选取观察点</el-button>
|
<el-button size="small" @click="clearTS('default')">清除</el-button>
|
</div>
|
<el-divider></el-divider>
|
<div>圆形:</div>
|
<div class="buttongroups">
|
<el-button size="small" @click="analysis(4)">选取观察点</el-button>
|
<el-button size="small" @click="clearTS('circle')">清除</el-button>
|
</div>
|
</el-form>
|
</el-collapse-item>
|
<el-collapse-item title="开敞度分析" name="7">
|
<div class="buttongroups">
|
<el-button size="small" @click="analysis(6)">选取中心点</el-button>
|
<el-button size="small" @click="clearKSY('spherical')"
|
>清除</el-button
|
>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="可视域分析" name="8">
|
<div class="buttongroups">
|
<el-button size="small" @click="analysis(5)">选取观察视点</el-button>
|
<el-button size="small" @click="clearKSY('default')">清除</el-button>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="日照分析" name="4">
|
<el-form
|
style="font-color: 0"
|
label-width="75px"
|
label-position="right"
|
>
|
<el-form-item label="开始日期" class="item">
|
<el-date-picker
|
size="small"
|
style="width: 190px"
|
v-model="rzfxParams.starttime"
|
type="datetime"
|
>
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="结束日期" class="item">
|
<el-date-picker
|
size="small"
|
style="width: 190px"
|
v-model="rzfxParams.endtime"
|
type="datetime"
|
>
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="时间间隔">
|
<el-input
|
size="small"
|
placeholder="请输入内容"
|
style="width: 160px"
|
v-model="rzfxParams.sjjg"
|
clearable
|
>
|
</el-input>
|
<span style="color: white; margin-left: 5px">秒</span>
|
</el-form-item>
|
<el-form-item label="空间间隔" class="item">
|
<el-input
|
size="small"
|
placeholder="请输入内容"
|
style="width: 160px"
|
v-model="rzfxParams.kjjg"
|
clearable
|
>
|
</el-input>
|
<span style="color: white; margin-left: 5px">米</span>
|
</el-form-item>
|
<el-form-item label="拉伸高度" class="item">
|
<el-input
|
size="small"
|
placeholder="请输入内容"
|
style="width: 160px"
|
v-model="rzfxParams.lsgd"
|
clearable
|
>
|
</el-input>
|
<span style="color: white; margin-left: 5px">米</span>
|
</el-form-item>
|
</el-form>
|
<!-- <div style="width: 100%; text-align: center; padding: 10px 0px" class="item">-->
|
<!-- <el-button @click="startRZFX()">开始计算</el-button>-->
|
<!-- </div>-->
|
<span style="color: lightgrey; font-size: 12px"
|
>(绘制面对象选取面拉伸高度立体空间,分析模型时间段内一定空间的日照密度)</span
|
>
|
<div class="buttongroups">
|
<!-- <el-button size="small" @click="analysis(2)">日照分析</el-button>-->
|
<el-button size="small" @click="startRZFX()">日照分析</el-button>
|
<el-button size="small" @click="clearRZFX">清除</el-button>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="热力图分析" name="5">
|
<div class="buttongroups">
|
<el-button size="small" @click="analysis(3)">热力图分析</el-button>
|
<el-button size="small" @click="analysis(7)">三维热力图</el-button>
|
<el-button size="small" @click="clearRLT">清除</el-button>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="天际线分析" name="6">
|
<el-form style="padding: 10px">
|
<el-form-item label="天际线">
|
<el-switch
|
v-model="tjx"
|
active-color="#13ce66"
|
inactive-color="#a9a9a9"
|
@change="tjxTurnonChange"
|
>
|
</el-switch>
|
</el-form-item>
|
</el-form>
|
</el-collapse-item>
|
<!-- <el-collapse-item title="分层分户" name="9">-->
|
|
<!-- <div v-for="(item, index) in flooritems" :key="index">-->
|
<!-- <div class="floor_button" @click="openStructure(index)">-->
|
<!-- <span style="text-align: center; display: inline-block">{{-->
|
<!-- item-->
|
<!-- }}</span>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- <!– <el-form style="padding: 10px">-->
|
<!-- <el-form-item label="楼层:">-->
|
<!-- <el-select v-model="fcfh.value" placeholder="请选择" @change="fcfhChange">-->
|
<!-- <el-option v-for="item in fcfh.options" :key="item.value" :label="item.label" :value="item.value"-->
|
<!-- ref="fcfh">-->
|
<!-- </el-option>-->
|
<!-- </el-select>-->
|
<!-- </el-form-item>-->
|
<!-- </el-form>-->
|
<!-- <div class="buttongroups">-->
|
<!-- <el-button size="small" @click="FCFHOpen(true)">抽出</el-button>-->
|
<!-- <el-button size="small" @click="FCFHOpen(false)">收回</el-button>-->
|
<!-- </div> –>-->
|
<!-- </el-collapse-item>-->
|
<el-collapse-item title="限高分析" name="11" class="height">
|
<div class="height_input height_pram">
|
<div class="height_label">限定高度:</div>
|
<el-input-number
|
v-model="restrictHeight"
|
:min="0"
|
:max="100000"
|
label="限定高度"
|
size="mini"
|
></el-input-number>
|
<div class="height_unit">米</div>
|
</div>
|
<div class="height_color height_pram">
|
<div class="height_label">限高颜色:</div>
|
<div
|
class="height_color_selector"
|
:style="'background:' + ColorParm.hex"
|
@click="popuShow = true"
|
></div>
|
</div>
|
<div class="height_color_selector_popu" v-show="popuShow">
|
<div class="popu_header">
|
<i class="el-icon-close" @click="popuShow = false"></i>
|
</div>
|
<div class="popu_body">
|
<sketch-picker
|
:value="materialcolors"
|
style="margin: 0px 16px 0px 16px; width: 160px"
|
@input="updateColorValue"
|
>
|
</sketch-picker>
|
</div>
|
<div class="popu_footer">
|
<div class="popu_ok" @click="popuShow = false">确定</div>
|
</div>
|
</div>
|
<div class="height_parm">
|
<el-button class="collapse_button" @click="startRestrictTheHeight"
|
>开始绘制</el-button
|
>
|
<el-button class="collapse_button" @click="clearRestrictTheHeight"
|
>清除</el-button
|
>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="挖填方分析" name="12">
|
<div>
|
<span style="color: white">开挖深度:</span>
|
<el-input-number
|
v-model="volumeDeepth"
|
:min="0"
|
:max="1000"
|
label="限定高度"
|
size="mini"
|
></el-input-number
|
><span style="color: white">米</span>
|
</div>
|
<div class="buttongroups">
|
<el-button size="small" @click="VolumetricMeasure(1)"
|
>土方量</el-button
|
>
|
<!-- <el-button size="small" @click="VolumetricMeasure(2)">模型填挖方</el-button>-->
|
<el-button size="small" @click="clearVolume">清除</el-button>
|
</div>
|
</el-collapse-item>
|
</el-collapse>
|
<div class="rlBox" v-show="rzfxParams.isOn">
|
<el-card class="scrollbar">
|
<div slot="header" class="header_box">
|
<i class="title_circle"></i>
|
<span>日照分析参数</span>
|
<div style="cursor: pointer; float: right" @click="clearRZFX()">
|
<i class="el-icon-close"></i>
|
</div>
|
</div>
|
<el-form
|
style="font-color: 0"
|
label-width="90px"
|
label-position="right"
|
>
|
<el-form-item label="开始日期" class="item">
|
<el-date-picker
|
size="small"
|
v-model="rzfxParams.starttime"
|
type="datetime"
|
>
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="结束日期" class="item">
|
<el-date-picker
|
size="small"
|
v-model="rzfxParams.endtime"
|
type="datetime"
|
>
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="时间间隔">
|
<el-input
|
size="small"
|
placeholder="请输入内容"
|
style="width: 220px"
|
v-model="rzfxParams.sjjg"
|
clearable
|
>
|
</el-input>
|
秒
|
</el-form-item>
|
<el-form-item label="空间间隔" class="item">
|
<el-input
|
size="small"
|
placeholder="请输入内容"
|
style="width: 220px"
|
v-model="rzfxParams.kjjg"
|
clearable
|
>
|
</el-input>
|
米
|
</el-form-item>
|
<el-form-item label="拉伸高度" class="item">
|
<el-input
|
size="small"
|
placeholder="请输入内容"
|
style="width: 220px"
|
v-model="rzfxParams.lsgd"
|
clearable
|
>
|
</el-input>
|
米
|
</el-form-item>
|
</el-form>
|
<div
|
style="width: 100%; text-align: center; padding: 10px 0px"
|
class="item"
|
>
|
<el-button @click="startRZFX()">开始计算</el-button>
|
</div>
|
<span
|
>(绘制面对象选取面拉伸高度立体空间,分析模型时间段内一定空间的日照密度)</span
|
>
|
</el-card>
|
</div>
|
</div>
|
</template>
|
<script>
|
import axios from "axios";
|
import * as echarts from "echarts";
|
import * as SmartEarth from "../../../../public/CimSDK/index.js";
|
import SliceTools from "./SliceTools";
|
import EditTools from "./EditTools";
|
import { Slider } from "vue-color";
|
// // CIMSDK中layui 注册
|
// import * as layui from "../../../../public/CimSDK/Workers/layui/layui.js"
|
|
let Cesium = SmartEarth.Cesium;
|
let submergence = null;
|
let profile = null;
|
let testmodel = [
|
{
|
id: 0,
|
modulename: "bim",
|
urls: "http://103.85.165.99:9001/gisserver/c3dserver/js_a67_mx/tileset.json",
|
},
|
];
|
// import { mapState, mapActions } from "vuex";
|
// import ClippingBox from "@/utils/clipbox"
|
export default {
|
components: { "sketch-picker": Slider },
|
data() {
|
//模型剖切
|
this.pouqie = {
|
currentModel: null,
|
modules: testmodel,
|
enitity: null,
|
planeEntities: [],
|
selectedPlane: null,
|
downHandler: null,
|
upHandler: null,
|
moveHandler: null,
|
option: {},
|
clipPlan: null,
|
center: null,
|
clipTransformInverse: null,
|
};
|
this.hcqfx = {
|
bufferObjs: [],
|
};
|
//通视分析
|
this.tsfx = {
|
lineOfSight: [],
|
lineOfSightCircle: [],
|
};
|
this.ksyfx = {
|
viewshed: [],
|
viewshedSpherical: [],
|
SYFX_visible_color: { r: 0.0, g: 1.0, b: 0.0 },
|
SYFX_notVisible_color: { r: 1.0, g: 0.0, b: 0.0 },
|
};
|
//热力图分析
|
this.rltfx = {
|
rltObj: null,
|
};
|
// this.tjx = {
|
// turnon: false,
|
// };
|
//日照分析
|
this.rzfx = {
|
SunshineObj: null,
|
};
|
//淹没分析
|
this.ymfx = {
|
ymfxlist: { entities: [], primitives: [] },
|
};
|
|
return {
|
volumeDeepth: 100,
|
volumeObjs: [],
|
tjx: false,
|
activeName: "10",
|
//模型剖切
|
pouqieParams: {
|
currentModel: null,
|
enitity: null,
|
direction: "0",
|
targetY: 0,
|
planeEntities: [],
|
selectedPlane: null,
|
downHandler: null,
|
upHandler: null,
|
moveHandler: null,
|
option: {},
|
|
direction: "0",
|
targetY: 0,
|
anglevalue: 0,
|
maxangle: 360,
|
minangle: 0,
|
},
|
polygonArr: [],
|
polygonCoord: [],
|
restrictHeight: 150,
|
materialcolors: {
|
color: "",
|
hex: "#194d33",
|
hsl: { h: 150, s: 0.5, l: 0.2, a: 1 },
|
hsv: { h: 150, s: 0.66, v: 0.3, a: 1 },
|
rgba: { r: 25, g: 77, b: 51, a: 1 },
|
a: 1,
|
},
|
RestrictTheHeight: null,
|
ColorParm: {
|
hex: "#194d33",
|
a: 1,
|
},
|
currentModel: null,
|
flattenPolygonArr: [],
|
isRestrict: false,
|
isDrawing: false,
|
popuShow: false,
|
//日照分析
|
rzfxParams: {
|
isOn: false,
|
starttime: "",
|
endtime: "",
|
sjjg: 60,
|
kjjg: 10,
|
lsgd: 30,
|
},
|
//淹没分析
|
ymfxParams: {
|
ymSpeed: 0,
|
ymMaxHeight: 0,
|
},
|
|
hcqfxParams: {
|
radioBuffer: 1,
|
buffRadius: 10,
|
},
|
|
currentTiles: null,
|
currentBim: null,
|
isbim: false,
|
|
fcfh: {
|
options: [
|
{
|
value: "1",
|
label: "1层",
|
},
|
{
|
value: "2",
|
label: "2层",
|
},
|
{
|
value: "3",
|
label: "3层",
|
},
|
{
|
value: "4",
|
label: "4层",
|
},
|
{
|
value: "5",
|
label: "5层",
|
},
|
{
|
value: "6",
|
label: "6层",
|
},
|
{
|
value: "7",
|
label: "7层",
|
},
|
{
|
value: "8",
|
label: "8层",
|
},
|
{
|
value: "9",
|
label: "9层",
|
},
|
{
|
value: "10",
|
label: "10层",
|
},
|
{
|
value: "11",
|
label: "11层",
|
},
|
{
|
value: "12",
|
label: "12层",
|
},
|
{
|
value: "13",
|
label: "13层",
|
},
|
{
|
value: "14",
|
label: "14层",
|
},
|
{
|
value: "15",
|
label: "15层",
|
},
|
{
|
value: "16",
|
label: "16层",
|
},
|
{
|
value: "17",
|
label: "17层",
|
},
|
],
|
value: "",
|
icTran: null,
|
},
|
skyline: null,
|
profileShow: false,
|
fcfhStorey: null,
|
|
flooritems: [
|
"1F",
|
"2F",
|
"3F",
|
"4F",
|
"5F",
|
"6F",
|
"7F",
|
"8F",
|
"9F",
|
"10F",
|
"11F",
|
"12F",
|
"13F",
|
"14F",
|
"15F",
|
"16F",
|
"17F",
|
],
|
};
|
},
|
methods: {
|
clearVolume() {
|
this.volumeObjs.forEach((item) => {
|
item && item.removeFromMap();
|
});
|
},
|
VolumetricMeasure(param) {
|
switch (param) {
|
case 1:
|
this.clearVolume();
|
let dxkw = sgworld.analysis.createTerrainExcavation({
|
height: this.volumeDeepth,
|
callback: function (a) {
|
// sgworld.analysis.createExcavationAndFillAnalysis({
|
// positions:a
|
// })
|
dxkw.excavationAndFill();
|
},
|
});
|
this.volumeObjs.push(dxkw);
|
break;
|
case 2:
|
break;
|
}
|
},
|
startEdit(isHeight, callback) {
|
if (this.isDrawing) {
|
return;
|
}
|
this.isDrawing = true;
|
let earthCtrl = window.sgworld;
|
EditTools(earthCtrl, (coord, model) => {
|
this.isDrawing = false;
|
if (!model || Object.keys(model).length <= 0) {
|
this.$message.warning("选中的区域中不存在模型,请重新选择区域");
|
callback();
|
}
|
this.currentModel = model;
|
const position = [];
|
for (const i of coord) {
|
position.push(i[0], i[1]);
|
}
|
let polygon = null;
|
if (isHeight) {
|
polygon = earthCtrl.factory.createPolygon({
|
id: earthCtrl.factory.createUUID(),
|
material: earthCtrl._cesium.Color.YELLOW.withAlpha(0.8),
|
outlineColor: earthCtrl._cesium.Color.YELLOW,
|
lineWidth: 1,
|
outline: true,
|
outlineWidth: 10,
|
positions: earthCtrl._cesium.Cartesian3.fromDegreesArray(position),
|
});
|
position.push(coord[0][0], coord[0][1]);
|
this.polygonCoord = position;
|
this.polygonArr.push(polygon);
|
} else {
|
polygon = window.Cesium.PolygonGeometry.fromPositions({
|
positions: window.Cesium.Cartesian3.fromDegreesArray(position),
|
height: 0,
|
});
|
this.flattenPolygonArr.push(polygon);
|
}
|
callback();
|
});
|
},
|
removeDrawPloygon() {
|
if (this.polygonArr.length <= 0) return;
|
this.polygonArr.forEach((polygon) => {
|
polygon.removeFromMap();
|
});
|
},
|
resetRestrictTheHeight() {
|
this.removeDrawPloygon();
|
if (this.RestrictTheHeight) {
|
this.RestrictTheHeight.removeFromMap();
|
this.RestrictTheHeight = null;
|
}
|
this.polygonArr = [];
|
this.polygonCoord = [];
|
this.currentModel = null;
|
},
|
clearRestrictTheHeight() {
|
if (this.isRestrict) {
|
if (this.isDrawing) {
|
this.$message.warning("请先完成绘制!");
|
}
|
return;
|
}
|
this.isRestrict = false;
|
this.restrictHeight = 150;
|
this.resetRestrictTheHeight();
|
this.isDrawing = false;
|
},
|
//限高分析
|
startRestrictTheHeight() {
|
if (this.isDrawing) {
|
this.$message.warning("请先完成当前的绘制!");
|
return;
|
}
|
if (this.isRestrict) {
|
return;
|
}
|
this.isRestrict = true;
|
this.resetRestrictTheHeight();
|
this.startEdit(true, () => {
|
this.isRestrict = false;
|
if (this.polygonArr.length <= 0) {
|
this.$message.warning("请先绘制限高区域!");
|
return;
|
}
|
this.removeDrawPloygon();
|
if (this.RestrictTheHeight) {
|
this.RestrictTheHeight.removeFromMap();
|
this.RestrictTheHeight = null;
|
}
|
this.RestrictTheHeight =
|
window.sgworld.analysis.createRestrictTheHeight({
|
positions: this.polygonCoord,
|
baseHeight: this.restrictHeight,
|
color: window.sgworld._cesium.Color.fromAlpha(
|
window.sgworld._cesium.Color.fromCssColorString(
|
this.ColorParm.hex
|
),
|
this.ColorParm.a
|
),
|
});
|
});
|
},
|
updateColorValue(val) {
|
this.ColorParm = val;
|
},
|
fcfhChange(data) {
|
this.fcfhStorey = data;
|
},
|
drawFlood() {
|
submergence = window.sgworld.analysis.createSubmergence({
|
speed: 10,
|
isPolygon: true,
|
// height:2000
|
});
|
submergence.drawPolygon({});
|
// var max = this.ymfxParams.ymMaxHeight;
|
// var spood = this.ymfxParams.ymSpeed;
|
// if (spood === 0) {
|
// this.$alert("请设置淹没速度!");
|
// } else {
|
// let that = this;
|
// this.drawpolygon(function (e) {
|
// console.log(e);
|
// let waterFace = e.positions;
|
// let waterEntity = e.enitity;
|
// let minheight = e.minheight;
|
// waterEntity.polygon.height = minheight;
|
|
// that.ymfx.ymfxlist.entities.push(waterEntity); //记录一下方便清除
|
// var currentHeight = 0;
|
// var maxHeight = parseFloat(max);
|
// var speed = parseFloat(spood);
|
// var setFlood = setInterval(() => {
|
// if (currentHeight < maxHeight) {
|
// currentHeight += speed / 10;
|
// waterEntity.polygon.extrudedHeight = new Cesium.CallbackProperty(
|
// function (time, result) {
|
// return minheight + currentHeight;
|
// },
|
// false
|
// );
|
// if (currentHeight >= maxHeight) {
|
// // waterEntity.polygon.extrudedHeight =
|
// // new Cesium.CallbackProperty(() => 0, false);
|
// var waterPrimitive = new Cesium.Primitive({
|
// show: true, // 默认隐藏
|
// allowPicking: false,
|
// geometryInstances: new Cesium.GeometryInstance({
|
// geometry: new Cesium.PolygonGeometry({
|
// polygonHierarchy: new Cesium.PolygonHierarchy(waterFace),
|
// extrudedHeight: minheight + currentHeight, //注释掉此属性可以只显示水面
|
// height: minheight,
|
// //perPositionHeight: true, //注释掉此属性水面就贴地了
|
// }),
|
// }),
|
// // 可以设置内置的水面shader
|
// appearance: new Cesium.EllipsoidSurfaceAppearance({
|
// translucent: true,
|
// material: new Cesium.Material({
|
// fabric: {
|
// type: "Water",
|
// uniforms: {
|
// baseWaterColor: new Cesium.Color(0.0, 0.0, 1.0, 0.5),
|
// blendColor: new Cesium.Color(0.0, 0.0, 1.0, 0.5),
|
// normalMap: WaterImg,
|
// frequency: 1000.0,
|
// animationSpeed: 0.01,
|
// amplitude: 10.0,
|
// },
|
// },
|
// }),
|
// }),
|
// });
|
// Viewer.scene.primitives.add(waterPrimitive);
|
// that.ymfx.ymfxlist.primitives.push(waterPrimitive); //记录一下方便清除
|
// clearInterval(setFlood);
|
// }
|
// }
|
// }, 1000 / 10);
|
// });
|
//}
|
},
|
startFlood() {
|
if (submergence != null) submergence.startAnalysis();
|
},
|
clearFlood() {
|
console.log(submergence);
|
submergence.removeFromMap();
|
// submergence = null
|
// for (var i = 0; i < this.ymfx.ymfxlist.entities.length; i++) {
|
// let ymfObj = this.ymfx.ymfxlist.entities[i];
|
// if (ymfObj) {
|
// Viewer.entities.remove(ymfObj);
|
// }
|
// }
|
// for (var i = 0; i < this.ymfx.ymfxlist.primitives.length; i++) {
|
// let ymfObj = this.ymfx.ymfxlist.primitives[i];
|
// if (ymfObj) {
|
// Viewer.scene.primitives.remove(ymfObj);
|
// }
|
// }
|
},
|
drawpolygon(callback) {
|
if (sgworld) {
|
const viewer = sgworld.Viewer;
|
|
function createPoint(worldPosition) {
|
const point = viewer.entities.add({
|
position: worldPosition,
|
point: {
|
color: Cesium.Color.GREEN,
|
pixelSize: 5,
|
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
|
},
|
});
|
return point;
|
}
|
|
let drawingMode = "polygon";
|
|
function drawShape(positionData, height) {
|
let shape;
|
shape = viewer.entities.add({
|
polygon: {
|
hierarchy: positionData,
|
material: new Cesium.Color.fromCssColorString(
|
"rgba(55,94,255,0.5)"
|
),
|
},
|
});
|
return shape;
|
}
|
|
let activeShapePosittion = [];
|
let activePoints = [];
|
let activeShape;
|
let floatingPoint;
|
const handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
|
handler.setInputAction(function (event) {
|
const earthPosition = viewer.scene.pickPosition(event.position);
|
if (Cesium.defined(earthPosition)) {
|
if (activeShapePosittion.length === 0) {
|
floatingPoint = createPoint(earthPosition);
|
activePoints.push(floatingPoint);
|
activeShapePosittion.push(earthPosition);
|
const dynamicPositions = new Cesium.CallbackProperty(function () {
|
if (drawingMode === "polygon") {
|
return new Cesium.PolygonHierarchy(activeShapePosittion);
|
}
|
return activeShapePosittion;
|
}, false);
|
activeShape = drawShape(dynamicPositions);
|
}
|
activePoints.push(createPoint(earthPosition));
|
activeShapePosittion.push(earthPosition);
|
}
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
|
handler.setInputAction(function (event) {
|
if (Cesium.defined(floatingPoint)) {
|
const newPosition = viewer.scene.pickPosition(event.endPosition);
|
if (Cesium.defined(newPosition)) {
|
floatingPoint.position.setValue(newPosition);
|
activeShapePosittion.pop();
|
activeShapePosittion.push(newPosition);
|
}
|
}
|
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
|
// Redraw the shape so it's not dynamic and remove the dynamic shape.
|
function terminateShape() {
|
activeShapePosittion.pop();
|
let range = computePolygonHeightRange(activeShapePosittion);
|
let shape = drawShape(activeShapePosittion, range.minHeight);
|
|
viewer.entities.remove(floatingPoint);
|
viewer.entities.remove(activeShape);
|
if (callback) {
|
callback({
|
enitity: shape,
|
positions: activeShapePosittion,
|
minheight: range.minHeight,
|
});
|
}
|
for (var i = 0; i < activePoints.length; i++) {
|
viewer.entities.remove(activePoints[i]);
|
}
|
activeShapePosittion = [];
|
floatingPoint = undefined;
|
activeShape = undefined;
|
}
|
|
//插值计算polygon内最高海拔和最低海拔
|
function computePolygonHeightRange(points) {
|
var f = [];
|
var q = Viewer;
|
for (var i = 0; i < points.length; i++) f.push(points[i].clone());
|
var w, t, D, A, z;
|
var k = 0;
|
var C = 999;
|
var pgranularity = Math.PI / Math.pow(2, 11) / 64;
|
let v = new Cesium.PolygonGeometry.fromPositions({
|
positions: f,
|
vertexFormat: Cesium.PerInstanceColorAppearance.FLAT_VERTEX_FORMAT,
|
granularity: pgranularity,
|
});
|
let B = new Cesium.PolygonGeometry.createGeometry(v);
|
for (var j = 0; j < B.indices.length; j += 3)
|
(w = B.indices[j]),
|
(f = B.indices[j + 1]),
|
(t = B.indices[j + 2]),
|
(w = new Cesium.Cartesian3(
|
B.attributes.position.values[3 * w],
|
B.attributes.position.values[3 * w + 1],
|
B.attributes.position.values[3 * w + 2]
|
)),
|
(D = q.scene.globe.getHeight(
|
Cesium.Cartographic.fromCartesian(w)
|
)) < C && (C = D),
|
k < D && (k = D),
|
(w = new Cesium.Cartesian3(
|
B.attributes.position.values[3 * f],
|
B.attributes.position.values[3 * f + 1],
|
B.attributes.position.values[3 * f + 2]
|
)),
|
(A = q.scene.globe.getHeight(
|
Cesium.Cartographic.fromCartesian(w)
|
)) < C && (C = A),
|
k < A && (k = A),
|
(w = new Cesium.Cartesian3(
|
B.attributes.position.values[3 * t],
|
B.attributes.position.values[3 * t + 1],
|
B.attributes.position.values[3 * t + 2]
|
)),
|
(z = q.scene.globe.getHeight(
|
Cesium.Cartographic.fromCartesian(w)
|
)) < C && (C = z),
|
k < z && (k = z);
|
return { maxHeight: k, minHeight: C };
|
}
|
|
handler.setInputAction(function (event) {
|
terminateShape();
|
handler && handler.destroy();
|
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
|
}
|
},
|
// 缓冲区分析
|
starthcqfx() {
|
let type = this.hcqfxParams.radioBuffer;
|
let buff;
|
switch (type) {
|
case 1: //"point":
|
buff = sgworld.Analysis.DrawPointBuffer(
|
this.hcqfxParams.buffRadius,
|
function () {}
|
);
|
break;
|
|
case 2: //"line":
|
buff = sgworld.Analysis.DrawPolylineBuffer(
|
this.hcqfxParams.buffRadius,
|
function () {}
|
);
|
break;
|
case 3: //"gon":
|
buff = sgworld.Analysis.DrawPolygonBuffer(
|
this.hcqfxParams.buffRadius,
|
function () {}
|
);
|
break;
|
}
|
if (buff) this.hcqfx.bufferObjs.push(buff);
|
},
|
analysis(tag) {
|
switch (tag) {
|
case 1:
|
sgworld.Core.setDepthTest("open", sgworld._Viewer);
|
var parameters = {
|
GroupID: 0,
|
type: "default",
|
};
|
var ts = sgworld.Analysis.createSightLine(parameters, function () {
|
sgworld.Core.setDepthTest("close", sgworld._Viewer);
|
});
|
this.tsfx.lineOfSight.push(ts);
|
break;
|
case 2:
|
this.rzfxParams.isOn = true;
|
break;
|
case 3:
|
//var sourceData = this.getData(100);
|
this.clearRLT();
|
let that1 = this;
|
sgworld.Creator.createSimpleGraphic(
|
"polygon",
|
{ showSize: false },
|
function (entity) {
|
let res = entity.polygon.hierarchy.getValue().positions;
|
let featureCollection = Cesium.turf.featureCollection([]);
|
let posarr = [];
|
for (let i = 0; i < res.length; i++) {
|
let ellipsoid = sgworld.coreMap.scene.globe.ellipsoid;
|
let cartographic = ellipsoid.cartesianToCartographic(res[i]);
|
let lon = SmartEarth.Cesium.Math.toDegrees(
|
cartographic.longitude
|
); // 经度
|
let lat = SmartEarth.Cesium.Math.toDegrees(
|
cartographic.latitude
|
); // 纬度
|
let height = Viewer.scene.globe.getHeight(cartographic); // 纬度
|
posarr.push([lon, lat]);
|
featureCollection.features.push(Cesium.turf.point([lon, lat]));
|
}
|
posarr.push(posarr[0]);
|
let polygon = Cesium.turf.polygon([[...posarr]]);
|
let bbox = Cesium.turf.envelope(featureCollection);
|
let point = Cesium.turf.randomPoint(200, {
|
bbox: [bbox.bbox[0], bbox.bbox[1], bbox.bbox[2], bbox.bbox[3]],
|
});
|
let newPoint = point.features.filter((item) => {
|
return Cesium.turf.booleanPointInPolygon(item, polygon);
|
});
|
var sourceData = [];
|
for (let i = 0; i < newPoint.length; i++) {
|
var value = Math.random() * 100;
|
let coor = Cesium.turf.coordAll(newPoint[i]);
|
sourceData.push({
|
x: coor[0][0],
|
y: coor[0][1],
|
value: value,
|
radius: 40,
|
});
|
}
|
sgworld.Creator.SimpleGraphic.remove(entity.id);
|
that1.rltfx.rltObj = sgworld.Creator.addHeatMap("热力图", {
|
sourceData: sourceData,
|
});
|
}
|
);
|
// let draw = sgworld.shapeTool.createDrawShapeTool(e => {
|
// let featureCollection = Cesium.turf.featureCollection([]);
|
// let posarr = [];
|
// for (let i = 0; i < e.result.length; i++) {
|
// let ellipsoid = sgworld.coreMap.scene.globe.ellipsoid
|
// let cartographic = ellipsoid.cartesianToCartographic(e.result[i])
|
// let lon = SmartEarth.Cesium.Math.toDegrees(cartographic.longitude) // 经度
|
// let lat = SmartEarth.Cesium.Math.toDegrees(cartographic.latitude) // 纬度
|
// let height = SmartEarth.Cesium.Math.toDegrees(cartographic.height) // 纬度
|
// posarr.push([lon, lat])
|
// featureCollection.features.push(Cesium.turf.point([lon, lat]))
|
// }
|
// posarr.push(posarr[0]);
|
// let polygon = Cesium.turf.polygon([[...posarr]])
|
// let bbox = Cesium.turf.envelope(featureCollection);
|
// let point = Cesium.turf.randomPoint(200, { bbox: [bbox.bbox[0], bbox.bbox[1], bbox.bbox[2], bbox.bbox[3]] })
|
// let newPoint = point.features.filter(item => {
|
// return Cesium.turf.booleanPointInPolygon(item, polygon);
|
// })
|
// var sourceData = [];
|
// for (let i = 0; i < newPoint.length; i++) {
|
// var value = Math.random() * 100
|
// let coor = Cesium.turf.coordAll(newPoint[i]);
|
// sourceData.push({ x: coor[0][0], y: coor[0][1], value: value, radius: 40 });
|
// }
|
// this.rltfx.rltObj = sgworld.Creator.addHeatMap('热力图', { sourceData: sourceData });
|
// draw.removeFromMap()
|
// })
|
//// this.rltfx.rltObj = sgworld.Creator.addHeatMap('热力图', { sourceData: sourceData });
|
break;
|
case 4:
|
sgworld.Core.setDepthTest("open", sgworld._Viewer);
|
var parameters = {
|
GroupID: 0,
|
type: "circle",
|
};
|
var ts = sgworld.Analysis.createSightLine(parameters, function () {
|
sgworld.Core.setDepthTest("close", sgworld._Viewer);
|
});
|
this.tsfx.lineOfSightCircle.push(ts);
|
break;
|
case 5:
|
let viewshed = sgworld.Analysis.create3DViewshed({
|
name: "Viewshed On Frederick",
|
height: 1.8,
|
color: {
|
Back: this.ksyfx.SYFX_notVisible_color,
|
Fore: this.ksyfx.SYFX_visible_color,
|
},
|
isSpherical: false,
|
});
|
this.ksyfx.viewshed.push(viewshed);
|
break;
|
case 6:
|
let viewshedSpherical = sgworld.Analysis.create3DViewshed({
|
name: "Viewshed On Frederick Spherical",
|
height: 1.8,
|
color: {
|
Back: this.ksyfx.SYFX_notVisible_color,
|
Fore: this.ksyfx.SYFX_visible_color,
|
},
|
isSpherical: true,
|
});
|
this.ksyfx.viewshedSpherical.push(viewshedSpherical);
|
break;
|
case 7:
|
this.clearRLT();
|
let that = this;
|
sgworld.Creator.createSimpleGraphic(
|
"polygon",
|
{ showSize: false },
|
function (entity) {
|
let res = entity.polygon.hierarchy.getValue().positions;
|
let featureCollection = Cesium.turf.featureCollection([]);
|
let posarr = [];
|
let avaHeight = 0;
|
for (let i = 0; i < res.length; i++) {
|
let ellipsoid = sgworld.coreMap.scene.globe.ellipsoid;
|
let cartographic = ellipsoid.cartesianToCartographic(res[i]);
|
let lon = SmartEarth.Cesium.Math.toDegrees(
|
cartographic.longitude
|
); // 经度
|
let lat = SmartEarth.Cesium.Math.toDegrees(
|
cartographic.latitude
|
); // 纬度
|
let height = Viewer.scene.globe.getHeight(cartographic); // 纬度
|
avaHeight += height;
|
posarr.push([lon, lat]);
|
featureCollection.features.push(Cesium.turf.point([lon, lat]));
|
}
|
avaHeight = avaHeight / res.length;
|
console.log(avaHeight);
|
posarr.push(posarr[0]);
|
let polygon = Cesium.turf.polygon([[...posarr]]);
|
let bbox = Cesium.turf.envelope(featureCollection);
|
let point = Cesium.turf.randomPoint(1000, {
|
bbox: [bbox.bbox[0], bbox.bbox[1], bbox.bbox[2], bbox.bbox[3]],
|
});
|
let newPoint = point.features.filter((item) => {
|
return Cesium.turf.booleanPointInPolygon(item, polygon);
|
});
|
var sourceData = [];
|
for (let i = 0; i < newPoint.length; i++) {
|
var value = Math.random() * 100;
|
let coor = Cesium.turf.coordAll(newPoint[i]);
|
sourceData.push({ x: coor[0][0], y: coor[0][1], value: value });
|
}
|
sgworld.Creator.SimpleGraphic.remove(entity.id);
|
that.rltfx.rltObj = sgworld.Creator.addHeatMap("热力图1", {
|
type: "Heatmap3D",
|
sourceData: sourceData,
|
radius: 30,
|
minHeight: avaHeight,
|
});
|
}
|
);
|
// let draw1 = sgworld.shapeTool.createDrawShapeTool(e => {
|
// let featureCollection = Cesium.turf.featureCollection([]);
|
// let posarr = [];
|
// let avaHeight = 0;
|
// for (let i = 0; i < e.result.length; i++) {
|
// let ellipsoid = sgworld.coreMap.scene.globe.ellipsoid
|
// let cartographic = ellipsoid.cartesianToCartographic(e.result[i])
|
// let lon = SmartEarth.Cesium.Math.toDegrees(cartographic.longitude) // 经度
|
// let lat = SmartEarth.Cesium.Math.toDegrees(cartographic.latitude) // 纬度
|
// let height = Viewer.scene.globe.getHeight(cartographic) // 纬度
|
// avaHeight += height;
|
// posarr.push([lon, lat])
|
// featureCollection.features.push(Cesium.turf.point([lon, lat]))
|
// }
|
// avaHeight = avaHeight / e.result.length
|
// posarr.push(posarr[0]);
|
// let polygon = Cesium.turf.polygon([[...posarr]])
|
// let bbox = Cesium.turf.envelope(featureCollection);
|
// let point = Cesium.turf.randomPoint(1000, { bbox: [bbox.bbox[0], bbox.bbox[1], bbox.bbox[2], bbox.bbox[3]] })
|
// let newPoint = point.features.filter(item => {
|
// return Cesium.turf.booleanPointInPolygon(item, polygon);
|
// })
|
// var sourceData = [];
|
// for (let i = 0; i < newPoint.length; i++) {
|
// var value = Math.random() * 100
|
// let coor = Cesium.turf.coordAll(newPoint[i]);
|
// sourceData.push({ x: coor[0][0], y: coor[0][1], value: value });
|
// }
|
// this.rltfx.rltObj = sgworld.Creator.addHeatMap('热力图1', { type: "Heatmap3D", sourceData: sourceData, radius: 30, colorScale: 1, minHeight: avaHeight });
|
// draw1.removeFromMap()
|
// })
|
break;
|
}
|
},
|
getData(length) {
|
// 矩形坐标
|
let bounds = {
|
west: 70.0,
|
south: 10.0,
|
east: 140.0,
|
north: 50.0,
|
};
|
var data = [];
|
bounds.west += 25;
|
bounds.east -= 15;
|
bounds.north -= 10;
|
bounds.south += 10;
|
for (var i = 0; i < length; i++) {
|
var x = Math.random() * (bounds.east - bounds.west + 1) + bounds.west;
|
var y =
|
Math.random() * (bounds.north - bounds.south + 1) + bounds.south;
|
var value = Math.random() * 100;
|
data.push({ x: x, y: y, value: value, radius: 80 });
|
}
|
return data;
|
},
|
|
changeDirection(val) {
|
this.pouqie.anglevalue = 360;
|
SliceTools.changeDirection();
|
// let that = this;
|
// let viewer = sgworld.Viewer;
|
// for (var i = 0; i < that.pouqie.planeEntities.length; i++) {
|
// viewer.entities.remove(that.pouqie.planeEntities[i]);
|
// }
|
// that.pouqie.downHandler && that.pouqie.downHandler.destroy();
|
// that.pouqie.upHandler && that.pouqie.upHandler.destroy();
|
// that.pouqie.moveHandler && that.pouqie.moveHandler.destroy();
|
// if (this.pouqie.enitity) {
|
// this.pouqie.enitity.clippingPlanes.removeAll();
|
// }
|
// if (this.isbim) {
|
// window.BIM && window.BIM.DisableClip();
|
// }
|
},
|
pouqieHandler(tag) {
|
let that = this;
|
switch (tag) {
|
case 1:
|
if (profile == null) {
|
let e = this.$refs.echartsView;
|
console.log(e);
|
profile = window.sgworld.analysis.createProfile({
|
defaultChars: true,
|
step: 50,
|
image: require("../../../assets/img/mark.png"),
|
echartsView: "echartsView1",
|
echartsParentView: "sectionCharts",
|
callback: function (e) {
|
console.info(e);
|
},
|
});
|
profile.drawPolyLine({});
|
profile.close = false;
|
this.profileShow = true;
|
}
|
// var cspz = { parameterd: 0, cyjj: 0, objid: 0 };
|
// cspz.parameterd = 10; //采样点数
|
// cspz.cyjj = parseInt(50); //采样间隔(m)
|
// cspz.objid = sgworld.ProjectTree.findItem("测量结果");
|
// if (cspz.objid === "") {
|
// cspz.objid = sgworld.ProjectTree.createGroup("测量结果", true, 0);
|
// }
|
// cspz.objid = sgworld.ProjectTree.createGroup(
|
// "剖面分析",
|
// true,
|
// cspz.objid
|
// );
|
// sgworld.Core.setDepthTest("open", sgworld._Viewer);
|
// var dxpm = sgworld.Command.execute(2, 0, cspz, function (distance) {
|
// sgworld.Core.setDepthTest("close", sgworld._Viewer);
|
// var distacnelist = [];
|
// var fristdistance = 0;
|
// //var totaldistance = (parseFloat(distance.distance) / 9).toFixed(1);
|
// var totaldistance = (
|
// parseFloat(distance.distance) / distance.cys
|
// ).toFixed(1);
|
// var cs = parseInt(distance.cys);
|
// for (var i = 0; i < cs; i++) {
|
// var nextdistance = fristdistance + parseFloat(totaldistance);
|
// fristdistance = nextdistance;
|
// distacnelist.push(parseFloat(nextdistance).toFixed(1));
|
// }
|
// // 绘制图表
|
// let option = {
|
// grid: {
|
// left: "40px",
|
// right: "40px",
|
// bottom: "20px",
|
// top: "20px",
|
// containLabel: true,
|
// },
|
// tooltip: {
|
// trigger: "axis",
|
// formatter: function (a) {
|
// var relVal = "";
|
// relVal = "距起点:" + a[0].name + "米<br/>";
|
// relVal += "海拔高度为:" + a[0].value + "米";
|
// return relVal;
|
// },
|
// },
|
// xAxis: {
|
// type: "category",
|
// boundaryGap: false,
|
// data: distacnelist,
|
// },
|
// yAxis: {
|
// type: "value",
|
// },
|
// series: [
|
// {
|
// data: distance.gcs,
|
// type: "line",
|
// areaStyle: {},
|
// },
|
// ],
|
// };
|
// that.$emit("pmfxshow", { ison: true, data: option });
|
// });
|
break;
|
case 2:
|
let item = this.$store.state.currentSelectNode;
|
if (!item || Object.keys(item).length === 0) {
|
this.$message.warning("请先在左侧选择需要剖切的BIM模型!");
|
return;
|
}
|
SliceTools.startSlice({
|
item: item,
|
pouqie: this.pouqieParams,
|
earthCtrl: sgworld,
|
});
|
break;
|
}
|
},
|
createPlaneUpdateFunction(plane) {
|
let that = this;
|
return function () {
|
plane.distance = that.pouqieParams.targetY;
|
return plane;
|
};
|
},
|
modelSelectedChange(val) {
|
console.log(val);
|
let that = this;
|
var url1 = val.urls;
|
debugger;
|
var tiltModel1 = sgworld.Creator.create3DTilesets(
|
"",
|
url1,
|
{},
|
{
|
groundCenter: [110, 30, 0], // 修改模型位置
|
},
|
"0",
|
true,
|
(data) => {
|
sgworld.Navigate.jumpTo(data);
|
that.pouqie.enitity = data.item;
|
}
|
);
|
},
|
tjxTurnonChange(val) {
|
if (val === true) {
|
// window.sgworld.Analysis.createSkylineAnalysis("#ff0");
|
if (this.skyline != null) return;
|
this.skyline = window.sgworld.analysis.createSkyline({
|
color: SmartEarth.Cesium.Color.RED,
|
});
|
} else {
|
if (this.skyline == null) return;
|
this.skyline.removeFromMap();
|
this.skyline = null;
|
}
|
},
|
clearRLT() {
|
this.rltfx && this.rltfx.rltObj && this.rltfx.rltObj.deleteObject();
|
this.rltfx.rltObj = null;
|
},
|
clearTJX() {
|
sgworld.Analysis.clearSkylineAnalysis();
|
},
|
startRZFX() {
|
console.log(">>>>>>>>>>>>>>..");
|
let sNum = new Date(this.rzfxParams.starttime).getTime() / 1000;
|
let eNum = new Date(this.rzfxParams.endtime).getTime() / 1000;
|
let sjjg = parseFloat(this.rzfxParams.sjjg);
|
let kjjg = parseFloat(this.rzfxParams.kjjg);
|
let lsgd = parseFloat(this.rzfxParams.lsgd);
|
if (sNum > eNum) {
|
this.$message.error("开始时间大于结束时间,请重新选择");
|
return;
|
}
|
if (!isNaN(sjjg) && !isNaN(kjjg) && !isNaN(lsgd))
|
this.rzfx.SunshineObj = sgworld.Analysis.SunshineAnalysisPolygon({
|
start: sNum,
|
end: eNum,
|
interval: sjjg,
|
spacing: kjjg,
|
addHeight: lsgd,
|
});
|
},
|
clearRZFX() {
|
this.rzfxParams.isOn = false;
|
if (this.rzfx.SunshineObj) {
|
this.rzfx.SunshineObj.remove();
|
this.rzfx.SunshineObj = null;
|
}
|
},
|
|
clearPQ() {
|
this.changeDirection("");
|
},
|
clearTS(tag) {
|
if (tag === "default") {
|
this.tsfx.lineOfSight.forEach((line) => {
|
line && line.deleteObject();
|
});
|
this.tsfx.lineOfSight = [];
|
} else if (tag === "circle") {
|
this.tsfx.lineOfSightCircle.forEach((line) => {
|
line && line.deleteObject();
|
});
|
this.tsfx.lineOfSightCircle = [];
|
}
|
},
|
clearKSY(tag) {
|
if (tag === "default") {
|
this.ksyfx.viewshed.forEach((line) => {
|
line && line.close();
|
});
|
this.ksyfx.viewshed = [];
|
} else if (tag === "spherical") {
|
this.ksyfx.viewshedSpherical.forEach((line) => {
|
line && line.close();
|
});
|
this.ksyfx.viewshedSpherical = [];
|
}
|
},
|
clearHCQ() {
|
this.hcqfx.bufferObjs.forEach((buff) => {
|
buff && buff.clearBuff();
|
});
|
},
|
startPQM() {
|
profile.startAnalysis();
|
profile.close = true;
|
},
|
clearPQDM() {
|
if (profile.close) {
|
let myChart = echarts.init(document.getElementById("echartsView1"));
|
myChart.dispose();
|
this.profileShow = false;
|
profile.removeFromMap();
|
profile = null;
|
}
|
// let id = sgworld.ProjectTree.findItem("测量结果");
|
// if (id) {
|
// sgworld.ProjectTree.deleteItem(id);
|
// }
|
// this.$emit("pmfxshow", { ison: false, data: {} });
|
},
|
|
registerPouqieHandler(viewer, clipTransformInverse) {
|
this.pouqie.downHandler && this.pouqie.downHandler.destroy();
|
this.pouqie.upHandler && this.pouqie.upHandler.destroy();
|
this.pouqie.moveHandler && this.pouqie.moveHandler.destroy();
|
let that = this;
|
that.pouqie.downHandler = new Cesium.ScreenSpaceEventHandler(
|
viewer.scene.canvas
|
);
|
that.pouqie.downHandler.setInputAction(function (movement) {
|
const pickedObject = viewer.scene.pick(movement.position);
|
if (
|
Cesium.defined(pickedObject) &&
|
Cesium.defined(pickedObject.id) &&
|
Cesium.defined(pickedObject.id.plane)
|
) {
|
that.pouqie.selectedPlane = pickedObject.id.plane;
|
that.pouqie.selectedPlane.material =
|
Cesium.Color.WHITE.withAlpha(0.05);
|
that.pouqie.selectedPlane.outlineColor = Cesium.Color.WHITE;
|
viewer.scene.screenSpaceCameraController.enableInputs = false;
|
}
|
}, Cesium.ScreenSpaceEventType.LEFT_DOWN);
|
|
that.pouqie.upHandler = new Cesium.ScreenSpaceEventHandler(
|
viewer.scene.canvas
|
);
|
that.pouqie.upHandler.setInputAction(function () {
|
if (Cesium.defined(that.pouqie.selectedPlane)) {
|
that.pouqie.selectedPlane.material =
|
Cesium.Color.WHITE.withAlpha(0.2);
|
that.pouqie.selectedPlane.outlineColor = Cesium.Color.WHITE;
|
that.pouqie.selectedPlane = undefined;
|
}
|
viewer.scene.screenSpaceCameraController.enableInputs = true;
|
}, Cesium.ScreenSpaceEventType.LEFT_UP);
|
that.pouqie.moveHandler = new Cesium.ScreenSpaceEventHandler(
|
viewer.scene.canvas
|
);
|
that.pouqie.moveHandler.setInputAction(function (movement) {
|
if (Cesium.defined(that.pouqie.selectedPlane)) {
|
if (that.isbim === false) {
|
const deltaY = movement.startPosition.y - movement.endPosition.y;
|
that.pouqieParams.targetY += deltaY;
|
} else {
|
let fineStage = window.BIM;
|
if (fineStage) {
|
if (that.pouqieParams.direction === "0") {
|
var deltaY = movement.startPosition.y - movement.endPosition.y;
|
that.pouqieParams.targetY += deltaY * 0.1;
|
fineStage.SetClipPlane(clipTransformInverse, {
|
x: 0,
|
y: 0,
|
z: -1,
|
d: that.pouqieParams.targetY,
|
});
|
} else if (that.pouqieParams.direction == "1") {
|
var deltaY = movement.startPosition.x - movement.endPosition.x;
|
that.pouqieParams.targetY -= deltaY * 0.1;
|
fineStage.SetClipPlane(clipTransformInverse, {
|
x: -1,
|
y: 0,
|
z: 0,
|
d: that.pouqieParams.targetY,
|
});
|
} else if (that.pouqieParams.direction == "2") {
|
var deltaY = movement.startPosition.x - movement.endPosition.x;
|
that.pouqieParams.targetY -= deltaY * 0.1;
|
fineStage.SetClipPlane(clipTransformInverse, {
|
x: 0,
|
y: -1,
|
z: 0,
|
d: that.pouqieParams.targetY,
|
});
|
}
|
}
|
}
|
}
|
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
},
|
|
angleChange(val) {
|
SliceTools.angleChange(val);
|
// if (this.currentBim) {
|
// this.currentBim.pqheading = val;
|
// }
|
// if (this.isbim === false) {
|
// if (this.pouqie.enitity) {
|
// let modelMatrix = this.pouqie.enitity.clippingPlanes.modelMatrix;
|
// let rz = Cesium.Math.toRadians(270 - val);
|
// let rotationZ = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromRotationZ(rz));
|
// Cesium.Matrix4.multiply(modelMatrix, rotationZ, modelMatrix);
|
|
// //this.pouqie.enitity.clippingPlanes.modelMatrix = modelMatrix;
|
// }
|
// for (let i = 0; i < this.pouqie.planeEntities.length; i++) {
|
// let planeEntity = this.pouqie.planeEntities[i];
|
// planeEntity.orientation = Cesium.Transforms.headingPitchRollQuaternion(
|
// this.pouqie.enitity.boundingSphere.center, new Cesium.HeadingPitchRoll((Math.PI / 180) * val, 0, 0));
|
// }
|
// } else {
|
// if (this.pouqie.clipPlan && this.pouqie.center) {
|
// let planeEntity = this.pouqie.clipPlan;
|
// let center = this.pouqie.center;
|
// planeEntity.orientation = Cesium.Transforms.headingPitchRollQuaternion(center, new Cesium.HeadingPitchRoll((Math.PI / 180) * val, 0, 0));
|
|
// let clipTransformInverse = new Cesium.Matrix4();
|
// let modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(center);
|
// let rz = Cesium.Math.toRadians(360 - val);
|
// let rotationZ = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromRotationZ(rz));
|
// Cesium.Matrix4.multiply(modelMatrix, rotationZ, modelMatrix);
|
// Cesium.Matrix4.inverse(modelMatrix, clipTransformInverse);
|
// this.pouqie.clipTransformInverse = clipTransformInverse;
|
// let fineStage = window.BIM;
|
// if (fineStage) {
|
// if (this.pouqieParams.direction === "0") {
|
// fineStage.SetClipPlane(clipTransformInverse, { x: 0, y: 0, z: -1, d: 0 });
|
// } else if (this.pouqieParams.direction === "1") {
|
// fineStage.SetClipPlane(clipTransformInverse, { x: -1, y: 0, z: 0, d: 0 });
|
// } else if (this.pouqieParams.direction === "2") {
|
// fineStage.SetClipPlane(clipTransformInverse, { x: 0, y: -1, z: 0, d: 0 });
|
// }
|
// this.registerPouqieHandler(sgworld._Viewer, clipTransformInverse);
|
// }
|
// }
|
// }
|
},
|
|
FCFHOpen(boole) {
|
let item = this.$store.state.currentSelectNode;
|
if (item.sourceType === "bim") {
|
this.isbim = true;
|
this.currentBim = item;
|
}
|
let that = this;
|
if (this.currentBim) {
|
Cesium = window.Cesium;
|
let modelId = 1;
|
let bim = window.BIM;
|
if (bim) {
|
let icTran = [];
|
let ifcurl =
|
BIM_SERVER_GET +
|
"getComponentIds?modelId=1" +
|
"&storey=" +
|
this.fcfhStorey;
|
axios.get(ifcurl).then((res) => {
|
console.log(res);
|
if (res.status === 200) {
|
for (let i = 0; i < res.data.data.length; i++) {
|
icTran.push(modelId, res.data.data[i].id);
|
}
|
console.log(icTran);
|
if (boole) {
|
this._aloop(0, 0, 0, bim, icTran, Cesium, modelId);
|
} else {
|
window.BIM.SetComponentTransform(
|
Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(
|
new Cesium.Cartesian3(0, 0, 0)
|
)
|
),
|
new Int32Array(icTran),
|
false
|
);
|
}
|
}
|
});
|
}
|
}
|
},
|
async _aloop(x, y, z, bim, icTran, _Cesium, modelId) {
|
let that = this;
|
bim.SetComponentTransform(
|
_Cesium.Matrix4.toArray(
|
_Cesium.Matrix4.fromTranslation(new _Cesium.Cartesian3(x, y, z))
|
),
|
new Int32Array(icTran),
|
false
|
);
|
let ifcurl =
|
"http://103.85.165.99:9001/gisserver/bimserver/hubtest/getPosition?modelId=1";
|
axios.get(ifcurl).then((resa) => {
|
console.log(resa);
|
let res = resa.data;
|
if (resa.status !== 200) {
|
return;
|
}
|
let lng = Number(res.data.x),
|
lat = Number(res.data.y),
|
height = Number(res.data.height);
|
var position = Cesium.Cartesian3.fromDegrees(
|
lng || 118.70647245037493,
|
lat || 31.973898289550043,
|
height || 0
|
);
|
let modelTransform = Cesium.Matrix4.toArray(
|
Cesium.Transforms.eastNorthUpToFixedFrame(position)
|
);
|
if (res.data.roll) {
|
console.log("111111");
|
let rz = Cesium.Math.toRadians(res.data.roll);
|
var rotationZ = Cesium.Matrix4.fromRotationTranslation(
|
Cesium.Matrix3.fromRotationZ(rz)
|
);
|
Cesium.Matrix4.multiply(modelTransform, rotationZ, modelTransform);
|
}
|
let currentModel = window.BIM.modelList[modelId];
|
let boxMin = currentModel.boxMin;
|
let boxMax = currentModel.boxMax;
|
boxMin = Cesium.Cartesian3.fromArray(boxMin, 0);
|
boxMax = Cesium.Cartesian3.fromArray(boxMax, 0);
|
boxMin = Cesium.Matrix4.multiplyByPoint(modelTransform, boxMin, {});
|
boxMax = Cesium.Matrix4.multiplyByPoint(modelTransform, boxMax, {});
|
let boundingSphere = Cesium.BoundingSphere.fromPoints(
|
[boxMin, boxMax],
|
new Cesium.BoundingSphere()
|
);
|
|
let offset = 0;
|
let radiusSize = 0.4;
|
if (y > -22) {
|
this.isMoveing = true;
|
let moveTimer = setInterval(() => {
|
if (offset >= boundingSphere.radius * radiusSize) {
|
clearInterval(moveTimer);
|
this.isMoveing = false;
|
}
|
offset += 10;
|
bim.SetComponentTransform(
|
_Cesium.Matrix4.toArray(
|
_Cesium.Matrix4.fromTranslation(
|
new _Cesium.Cartesian3(x, y - offset, z)
|
)
|
),
|
new Int32Array(icTran),
|
false
|
);
|
}, 15);
|
}
|
});
|
// let res = await getModelPosition({ modelId: modelId });
|
},
|
aloop(x, y, z, bim, icTran) {
|
let that = this;
|
bim.SetComponentTransform(
|
Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(x, y, z))
|
),
|
new Int32Array(icTran),
|
false
|
);
|
// bim.SetInstancesTransform(
|
// new Float64Array([
|
// ...icTran,
|
// ...Cesium.Matrix4.toArray(
|
// Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(x, y, z))
|
// ),
|
// 888888,
|
// ])
|
// );
|
if (y < 22) {
|
setTimeout(() => {
|
that.aloop(x, y + 1, z, bim, icTran);
|
}, 30);
|
}
|
},
|
clearFCFH() {
|
let that = this;
|
if (this.currentBim) {
|
let modelId = this.currentBim.dataId;
|
let bim = window.BIM;
|
let level = this.fcfh.value;
|
if (bim) {
|
let icTran = [];
|
bim.GetModelSqlDb(modelId).then((sqldb) => {
|
sqldb.each(
|
`select * from component where storey like '${level}%'`,
|
[],
|
(component) => {
|
icTran.push(modelId, component.id);
|
}
|
);
|
|
that.fcfh.icTran = icTran;
|
bim.SetComponentTransform(
|
Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0, 0, 0))
|
),
|
new Int32Array(icTran),
|
false
|
);
|
});
|
}
|
}
|
},
|
|
FCFHOpenbak() {
|
let item = this.$store.state.currentSelectNode;
|
if (item.sourceType === "bim") {
|
this.isbim = true;
|
this.currentBim = item;
|
}
|
let that = this;
|
if (this.currentBim) {
|
let modelId = this.currentBim.dataId;
|
let bim = window.BIM;
|
let level = this.fcfh.value;
|
if (bim) {
|
let icTran = [];
|
let sqldb = bim.GetModelSqlDb(modelId);
|
sqldb.each(
|
`SELECT meshInstances.id as instancesId,component.id AS componentId FROM component
|
left join meshInstances on meshInstances.componentId = component.id where storey like '${level}%'`,
|
[],
|
(result) => {
|
icTran.push(modelId, result.instancesId);
|
}
|
);
|
// icTran.push(...Cesium.Matrix4.toArray(Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0, 22, 0))))
|
// // 最后一个值写888888代表所有id只使用一个矩阵
|
// icTran.push(888888);
|
// that.fcfh.icTran = icTran;
|
// bim.SetInstancesTransform(new Float64Array(icTran))
|
|
let aloop = (x, y, z) => {
|
bim.SetInstancesTransform(
|
new Float64Array([
|
...icTran,
|
...Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(x, y, z))
|
),
|
888888,
|
])
|
);
|
// if (y > -20) {
|
// setTimeout(() => {
|
// aloop(x, y - 1, z)
|
// }, 30)
|
// }
|
if (y < 22) {
|
setTimeout(() => {
|
aloop(x, y + 1, z);
|
}, 30);
|
}
|
};
|
aloop(0, 0, 0);
|
}
|
}
|
},
|
clearFCFHbak() {
|
let that = this;
|
if (this.currentBim) {
|
let modelId = this.currentBim.dataId;
|
let bim = window.BIM;
|
let level = this.fcfh.value;
|
if (bim) {
|
let icTran = [];
|
let sqldb = bim.GetModelSqlDb(modelId);
|
sqldb.each(
|
`SELECT meshInstances.id as instancesId,component.id AS componentId FROM component
|
left join meshInstances on meshInstances.componentId = component.id where storey like '${level}%'`,
|
[],
|
(result) => {
|
icTran.push(modelId, result.instancesId);
|
}
|
);
|
icTran.push(
|
...Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0, 0, 0))
|
)
|
);
|
// 最后一个值写888888代表所有id只使用一个矩阵
|
icTran.push(888888);
|
that.fcfh.icTran = icTran;
|
bim.SetInstancesTransform(new Float64Array(icTran));
|
}
|
}
|
},
|
//新分层分户
|
openStructure(index) {
|
let item = this.$store.state.currentSelectNode;
|
if (item.sourceType === "bim") {
|
this.isbim = true;
|
this.currentBim = item;
|
}
|
if (this.currentBim) {
|
this.bimFCFH = !this.bimFCFH;
|
let modelId = this.currentBim.dataId;
|
//展开分层分户
|
let that = this;
|
let bim = window.BIM;
|
let level = index + 2;
|
if (bim) {
|
if (that.bimFCFH) {
|
window.canGL = level === 9;
|
let icTran = [];
|
bim.GetModelSqlDb(modelId).then((modelDb) => {
|
modelDb.each(
|
`select * from component where storey like '${level}%'`,
|
[],
|
(component) => {
|
// 构件包含的实例ids
|
icTran.push(modelId, component.id);
|
}
|
);
|
that.aloop(0, 0, 0, bim, icTran);
|
});
|
} else {
|
window.canGL = false;
|
this.RemoveGL && this.RemoveGL();
|
let icTran = [];
|
bim.GetModelSqlDb(modelId).then((sqldb) => {
|
sqldb.each(
|
`select * from component where storey like '${level}%'`,
|
[],
|
(component) => {
|
// 构件ids
|
icTran.push(modelId, component.id);
|
}
|
);
|
|
icTran.push(
|
...Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0, 0, 0))
|
)
|
);
|
|
bim.SetComponentTransform(
|
Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0, 0, 0))
|
),
|
new Int32Array(icTran),
|
false
|
);
|
});
|
}
|
}
|
}
|
},
|
aloop(x, y, z, bim, icTran) {
|
let that = this;
|
bim.SetComponentTransform(
|
Cesium.Matrix4.toArray(
|
Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(x, y, z))
|
),
|
new Int32Array(icTran),
|
false
|
);
|
if (y < 22) {
|
setTimeout(() => {
|
that.aloop(x, y + 1, z, bim, icTran);
|
}, 30);
|
}
|
},
|
},
|
mounted() {
|
// console.log("aaaaaaaaaaaa")
|
//获取楼层
|
let ifcurl = BIM_SERVER_GET + "getStorey?modelId=1";
|
axios.get(ifcurl).then((floor) => {
|
if (floor.status == 200) {
|
let storeys = floor.data.data
|
.map((d) => {
|
return d.storey;
|
})
|
.filter((value, index, self) => {
|
return self.indexOf(value) === index;
|
});
|
storeys.sort();
|
this.fcfh.options = [];
|
storeys.forEach((item) => {
|
const obj = {
|
value: item,
|
};
|
this.fcfh.options.push(obj);
|
});
|
this.fcfhStorey = storeys[0];
|
}
|
});
|
},
|
computed: {},
|
created() {
|
layui.use(["form"], function () {
|
var form = layui.form;
|
//监听指定开关
|
form.on("switch(open)", function (data) {
|
if (this.checked) {
|
sgworld.Analysis.createSkylineAnalysis("#ff0");
|
} else {
|
sgworld.Analysis.clearSkylineAnalysis();
|
}
|
});
|
});
|
},
|
destroyed() {
|
sgworld.Analysis.createWeather("rain", false);
|
// sgworld.Analysis.createWeather("snow", false);
|
// sgworld.Analysis.createWeather("flog", false);
|
},
|
};
|
</script>
|
<style lang="less" scoped>
|
.el-form-item {
|
margin-bottom: 5px !important;
|
}
|
.input-item {
|
margin: 0px;
|
color: white;
|
|
/deep/ .el-input__inner {
|
-webkit-appearance: none;
|
background-color: #1b1b1b;
|
background-image: none;
|
border-radius: 0px;
|
border: 0;
|
box-sizing: border-box;
|
color: #ffffff;
|
display: inline-block;
|
font-size: inherit;
|
height: 30px;
|
line-height: 30px;
|
outline: 0;
|
padding: 0 15px;
|
transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
|
width: 100%;
|
}
|
|
/deep/ .el-form-item__label {
|
color: #ffffff;
|
}
|
|
/deep/ .el-radio {
|
color: #ffffff;
|
}
|
|
/deep/ .el-range-input {
|
color: #ffffff;
|
background: transparent;
|
}
|
}
|
|
.buttongroups {
|
margin: 8px auto;
|
text-align: center;
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
gap: 6px;
|
|
.el-button {
|
width: 140px;
|
cursor: pointer;
|
background: transparent;
|
border: none;
|
color: #ffffff;
|
border-radius: 0px;
|
|
width: 199px;
|
height: 26px;
|
background: url("../../../assets/img/small_btn_back.png") no-repeat;
|
background-size: 100% 100%;
|
|
font-size: 11px;
|
font-family: Microsoft YaHei;
|
font-weight: 400;
|
color: #e0e5fa;
|
text-shadow: 0px 1px 4px rgba(5, 28, 55, 0.42);
|
display: flex;
|
flex-direction: row;
|
justify-content: center;
|
align-items: center;
|
margin: 0px;
|
}
|
|
.el-button:hover {
|
background: #18a4f0;
|
border: 1px solid #7596fa;
|
}
|
}
|
|
.opt_button {
|
display: inline-block;
|
height: 50px;
|
width: 60px;
|
margin: 10px;
|
border-radius: 5px;
|
color: white;
|
border: 1px solid rgb(212, 212, 212);
|
padding: 5px;
|
cursor: pointer;
|
}
|
|
.opt_button_disabled {
|
display: inline-block;
|
height: 50px;
|
width: 60px;
|
margin: 10px;
|
border-radius: 5px;
|
color: rgb(143, 143, 143);
|
border: 1px solid rgb(212, 212, 212);
|
padding: 5px;
|
background: rgb(196, 196, 196);
|
}
|
|
.opt_button:hover {
|
border: 1px solid rgb(224, 224, 255);
|
box-shadow: 2px 2px 3px rgb(207, 207, 207);
|
}
|
|
.opt_imgButton {
|
color: #fff;
|
display: inline-block;
|
height: 100px;
|
width: 100%;
|
margin-top: 5px;
|
margin-bottom: 5px;
|
border-radius: 2px;
|
border: 1px solid rgb(212, 212, 212);
|
cursor: pointer;
|
|
img {
|
height: 100%;
|
width: 100%;
|
}
|
|
span {
|
position: relative;
|
top: 2px;
|
left: 2px;
|
}
|
}
|
|
.opt_imgButton:hover {
|
color: #18a4f0;
|
box-shadow: 1px 1px 5px rgb(218, 240, 255);
|
}
|
|
.rlBox {
|
position: absolute;
|
top: 100px;
|
padding: 10px;
|
width: 380px;
|
background-color: rgba(0, 0, 0, 0.7);
|
border-radius: 4px;
|
left: 50px;
|
color: #fff;
|
|
/deep/ .el-card {
|
border: 1px solid #ebeef5;
|
background-color: rgba(0, 0, 0, 0.7);
|
color: #fff;
|
transition: 0.3s;
|
}
|
|
/deep/ .el-button {
|
width: 140px;
|
cursor: pointer;
|
background: transparent;
|
border: 1px solid #f3f6ff;
|
color: #ffffff;
|
border-radius: 0px;
|
}
|
|
.el-button:hover {
|
background: #18a4f0;
|
border: 1px solid #7596fa;
|
}
|
}
|
|
.height {
|
.collapse_button {
|
width: 75px !important;
|
padding: 12px 10px !important;
|
}
|
|
.height_pram {
|
width: 100%;
|
height: 30px;
|
margin: 15px 0 15px 0;
|
display: flex;
|
justify-content: flex-start;
|
flex-wrap: nowrap;
|
flex-direction: row;
|
font-size: 14px;
|
line-height: 30px;
|
}
|
|
/deep/ .el-collapse-item__content {
|
position: relative;
|
}
|
|
.height_input {
|
.height_label {
|
width: 25%;
|
height: 100%;
|
padding: 0 15px 0 0;
|
color: #fff;
|
}
|
|
.el-input-number--mini {
|
width: 50%;
|
}
|
|
.height_unit {
|
margin: 0 0 0 2%;
|
}
|
}
|
|
.height_color {
|
height: 30px;
|
position: relative;
|
|
.height_color_selector {
|
width: 50%;
|
height: 100%;
|
border-radius: 10px;
|
background: aqua;
|
}
|
|
.height_label {
|
color: #fff;
|
width: 25%;
|
height: 100%;
|
padding: 0 15px 0 0;
|
}
|
}
|
|
.height_color_selector_popu {
|
position: absolute;
|
top: 1px;
|
right: 14%;
|
z-index: 999;
|
background: white;
|
outline-style: auto;
|
outline-color: #dee0e7;
|
padding: 3px;
|
border-radius: 5px;
|
|
.popu_header {
|
height: 26px;
|
width: 100%;
|
background: #4584c7;
|
position: relative;
|
|
.el-icon-close {
|
position: absolute;
|
font-size: 25px;
|
right: 5px;
|
color: white;
|
cursor: pointer;
|
}
|
}
|
|
.popu_body {
|
margin: 10px 0 10px 0px;
|
}
|
|
.popu_footer {
|
height: 26px;
|
width: 100%;
|
background: #4584c7;
|
position: relative;
|
|
.popu_ok {
|
position: absolute;
|
right: 8px;
|
background: white;
|
height: 18px;
|
width: 40px;
|
top: 4px;
|
text-align: center;
|
line-height: 18px;
|
cursor: pointer;
|
border-radius: 3px;
|
}
|
}
|
}
|
}
|
|
.sectionChars {
|
position: absolute;
|
top: auto;
|
width: 73%;
|
height: 200px;
|
bottom: 35px;
|
left: 5%;
|
padding: 10px 15px;
|
border-radius: 4px;
|
// border: 1px solid rgba(128, 128, 128, .5);
|
color: #fff;
|
// background: rgba(0, 0, 0, .4);
|
// box-shadow: 0 3px 14px rgba(128, 128, 128, .5);
|
z-index: 9999;
|
// display: none;
|
}
|
|
.floor_button {
|
height: 24px;
|
text-align: center;
|
color: aliceblue;
|
background-color: #666;
|
padding-top: 10px;
|
vertical-align: middle;
|
margin: 1px;
|
}
|
|
.floor_button:hover {
|
cursor: pointer;
|
opacity: 0.8;
|
}
|
</style>
|