|
@@ -55,6 +55,8 @@ export class VtkModel {
|
|
|
* 选择管道
|
|
|
*/
|
|
|
this.isSelectPipe = false;
|
|
|
+
|
|
|
+ this.isSelectSensor = false;
|
|
|
//管道节点选择对象
|
|
|
this.selectObj = null;
|
|
|
//X,Y
|
|
@@ -360,19 +362,24 @@ addSensor(pid,site){
|
|
|
actor.setScale(0.1,0.1,0.1);//放大
|
|
|
// 旋转actor
|
|
|
// actor.rotateY(90);// 绕y轴旋转
|
|
|
- this.cgqActors.push(actor);
|
|
|
+ // 存储传感器信息(结构化存储)
|
|
|
+ const sensor = {
|
|
|
+ id: pid,
|
|
|
+ actor: actor, // VTK Actor对象
|
|
|
+ };
|
|
|
+ this.cgqActors.push(sensor);
|
|
|
}
|
|
|
showSensor(){
|
|
|
- this.cgqActors.forEach((actor)=>{
|
|
|
- this.renderer.addActor(actor);
|
|
|
+ this.cgqActors.forEach(( sensor ) => {
|
|
|
+ this.renderer.addActor(sensor.actor);
|
|
|
});
|
|
|
console.log('看看谁先执行')
|
|
|
this.renderWindow.render();
|
|
|
}
|
|
|
|
|
|
removeSensor(){
|
|
|
- this.cgqActors.forEach((actor)=>{
|
|
|
- this.renderer.removeActor(actor);
|
|
|
+ this.cgqActors.forEach((sensor) => {
|
|
|
+ this.renderer.removeActor(sensor.actor);
|
|
|
});
|
|
|
this.renderWindow.render();
|
|
|
}
|
|
@@ -468,12 +475,13 @@ removejc(){
|
|
|
addpipsite(pid,site){
|
|
|
console.log(1111)
|
|
|
let pipe =this.pipeByPid(pid);
|
|
|
+ console.log("管道数据",pipe)
|
|
|
if(this.actorpipsites.length==0){
|
|
|
const actorpipsite= vtkActor.newInstance();
|
|
|
//管道位置数据
|
|
|
const sphereSource = vtkSphereSource.newInstance({
|
|
|
center: [0, 0, 0],
|
|
|
- radius: 4.0,
|
|
|
+ radius: 6.0,
|
|
|
});
|
|
|
const pipsiteMapper = vtkMapper.newInstance();
|
|
|
pipsiteMapper.setInputConnection(sphereSource.getOutputPort());
|
|
@@ -484,7 +492,7 @@ removejc(){
|
|
|
const actorpipsite =this.actorpipsites[0];
|
|
|
let point1 = this.pointByPipeNodeId(pipe.snId);
|
|
|
let point2 = this.pointByPipeNodeId(pipe.enId);
|
|
|
- let py = site/(1-site);
|
|
|
+ let py = site/(1.01-site);
|
|
|
let pipsite_point=[
|
|
|
(point1[0]+py*point2[0])/(1+py),
|
|
|
(point1[1]+py*point2[1])/(1+py),
|
|
@@ -961,6 +969,9 @@ safetypathremove(){
|
|
|
this.pipeActors.forEach((pipeActor) => {
|
|
|
this.renderer.removeActor(pipeActor.actor);
|
|
|
});
|
|
|
+ this.cgqActors.forEach((sensor) => {
|
|
|
+ this.renderer.removeActor(sensor.actor);
|
|
|
+ });
|
|
|
}
|
|
|
wayClearShow(){
|
|
|
this.wayActors.forEach((wayAcotor) => {
|
|
@@ -986,6 +997,11 @@ safetypathremove(){
|
|
|
this.renderer.addActor(pipeActor.actor);
|
|
|
});
|
|
|
}
|
|
|
+ if(this.isSelectSensor) {
|
|
|
+ this.cgqActors.forEach((sensor) => {
|
|
|
+ this.renderer.addActor(sensor.actor);
|
|
|
+ });
|
|
|
+ }
|
|
|
// this.addjc(495530.903,5403828.821,432.40);
|
|
|
// this.addpname(495530.903,5403829.821,432.40);
|
|
|
// this.addSoure(495530.903,5403829.821,432.40);
|
|
@@ -999,6 +1015,7 @@ safetypathremove(){
|
|
|
selectNodes() {
|
|
|
this.isSelectNode = true;
|
|
|
this.isSelectPipe = false;
|
|
|
+ this.isSelectSensor = false;
|
|
|
this.modelShow();
|
|
|
document.addEventListener("mousemove", throttleMouseHandler);
|
|
|
this.renderWindow.render();
|
|
@@ -1006,6 +1023,15 @@ safetypathremove(){
|
|
|
selectPipes() {
|
|
|
this.isSelectNode = false;
|
|
|
this.isSelectPipe = true;
|
|
|
+ this.isSelectSensor = false;
|
|
|
+ document.addEventListener("mousemove", throttleMouseHandler);
|
|
|
+ this.modelShow();
|
|
|
+ this.renderWindow.render();
|
|
|
+ }
|
|
|
+ selectSensors() {
|
|
|
+ this.isSelectNode = false;
|
|
|
+ this.isSelectPipe = false;
|
|
|
+ this.isSelectSensor = true;
|
|
|
document.addEventListener("mousemove", throttleMouseHandler);
|
|
|
this.modelShow();
|
|
|
this.renderWindow.render();
|
|
@@ -1013,6 +1039,7 @@ safetypathremove(){
|
|
|
selectNoting() {
|
|
|
this.isSelectNode = false;
|
|
|
this.isSelectPipe = false;
|
|
|
+ this.isSelectSensor = false;
|
|
|
this.modelShow();
|
|
|
this.renderWindow.render();
|
|
|
}
|
|
@@ -1054,6 +1081,7 @@ safetypathremove(){
|
|
|
this.renderer.removeActor(this.scalarBarActor);
|
|
|
this.isSelectNode = false;
|
|
|
this.isSelectPipe = false;
|
|
|
+ this.isSelectSensor = false;
|
|
|
this.wayClearShow();
|
|
|
this.modelClearShow();
|
|
|
this.isJg = true; //显示结果
|
|
@@ -1065,6 +1093,7 @@ safetypathremove(){
|
|
|
this.renderer.addActor(this.scalarBarActor);
|
|
|
this.isSelectNode = false;
|
|
|
this.isSelectPipe = false;
|
|
|
+ this.isSelectSensor = false;
|
|
|
this.renderer.removeActor(this.gjActor);
|
|
|
this.renderer.removeActor(this.gjscalarBarActor)
|
|
|
this.wayClearShow();
|
|
@@ -1132,6 +1161,38 @@ safetypathremove(){
|
|
|
});
|
|
|
}
|
|
|
// }
|
|
|
+
|
|
|
+ // 选中指定传感器
|
|
|
+ selectBySensorId(sid) {
|
|
|
+ console.log("selectBySensorId", sid);
|
|
|
+
|
|
|
+ // 1. 清除上一次选中的 Actor(如果有)
|
|
|
+ console.log("Last actor before remove:", this.lastActor);
|
|
|
+ if (this.lastActor != null) {
|
|
|
+ console.log("Removing actor:", this.lastActor);
|
|
|
+ this.renderer.removeActor(this.lastActor);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 遍历传感器数组,查找匹配的传感器
|
|
|
+
|
|
|
+ this.cgqActors.forEach(sensor => {
|
|
|
+ if (sid === sensor.id) {
|
|
|
+ // 3. 设置选中颜色
|
|
|
+ sensor.actor.getProperty().setColor(REA);
|
|
|
+ console.log("找到了")
|
|
|
+ // 4. 记录当前选中的 Actor 和传感器对象
|
|
|
+ this.lastActor = sensor.actor;
|
|
|
+ this.selectObj = { id: sid, type: "sensor" }; // 存储选中对象信息
|
|
|
+
|
|
|
+ // 5. 重新添加 Actor 并渲染
|
|
|
+ this.renderer.addActor(this.lastActor);
|
|
|
+ this.renderWindow.render();
|
|
|
+ return; // 找到后退出循环
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
function createRGBStringFromRGBValues(rgb) {
|
|
|
if (rgb.length !== 3) {
|