Browse Source

设置10段非渐变颜色

Gis-Y 3 months ago
parent
commit
5f6fb4dfd9
2 changed files with 162 additions and 63 deletions
  1. 38 17
      js_ext_comx_ply_io/src/dcip_ply_io.hxx
  2. 124 46
      js_ext_comx_ply_io/src/js_ext_comx_ply_io.cc

+ 38 - 17
js_ext_comx_ply_io/src/dcip_ply_io.hxx

@@ -39,23 +39,44 @@ struct triangle_part_t {
         std::vector<float> vertexNormals; // Vertex normals.
         std::vector<int> triangles;       // Triangle indices.
 
-        std::vector<float> vonmises;      //vonmisesÓ¦Á¦
-        std::vector<float> DisX;          //DisXÎ»ÒÆ
-        std::vector<float> DisY;          //DisYÎ»ÒÆ
-        std::vector<float> DisZ;          //DisZÎ»ÒÆ
-        std::vector<float> DisTotal;        //×ÜÎ»ÒÆ
-        std::vector<float> SR11;          //SR11 x·½ÏòÖ÷Ó¦±ä
-        std::vector<float> SR22;          //SR22 y·½ÏòÖ÷Ó¦±ä
-        std::vector<float> SR33;          //SR33 z·½ÏòÖ÷Ó¦±ä
-        std::vector<float> SR12;          //SR12 x·½ÏòÇÐÓ¦±ä
-        std::vector<float> SR13;          //SR13 y·½ÏòÇÐÓ¦±ä
-        std::vector<float> SR23;          //SR23 z·½ÏòÇÐÓ¦±ä
-        std::vector<float> SS11;          //SS11 x·½ÏòÖ÷Ó¦Á¦
-        std::vector<float> SS22;          //SS22 y·½ÏòÖ÷Ó¦Á¦
-        std::vector<float> SS33;          //SS33 z·½ÏòÖ÷Ó¦Á¦
-        std::vector<float> SS12;          //SS12 x·½ÏòÇÐÓ¦Á¦
-        std::vector<float> SS13;          //SS13 y·½ÏòÇÐÓ¦Á¦
-        std::vector<float> SS23;          //SS23 z·½ÏòÇÐÓ¦Á¦
+        // 节点数� (Point Data)
+        std::vector<float> vonmises;      //vonmises应力 - 节点
+        std::vector<float> DisX;          //DisX�移 - 节点
+        std::vector<float> DisY;          //DisY�移 - 节点
+        std::vector<float> DisZ;          //DisZ�移 - 节点
+        std::vector<float> DisTotal;      //总�移 - 节点
+        std::vector<float> SR11;          //SR11 x方�正应力 - 节点
+        std::vector<float> SR22;          //SR22 y方�正应力 - 节点
+        std::vector<float> SR33;          //SR33 z方�正应力 - 节点
+        std::vector<float> SR12;          //SR12 x方�剪应力 - 节点
+        std::vector<float> SR13;          //SR13 y方�剪应力 - 节点
+        std::vector<float> SR23;          //SR23 z方�剪应力 - 节点
+        std::vector<float> SS11;          //SS11 x方�正应力 - 节点
+        std::vector<float> SS22;          //SS22 y方�正应力 - 节点
+        std::vector<float> SS33;          //SS33 z方�正应力 - 节点
+        std::vector<float> SS12;          //SS12 x方�剪应力 - 节点
+        std::vector<float> SS13;          //SS13 y方�剪应力 - 节点
+        std::vector<float> SS23;          //SS23 z方�剪应力 - 节点
+
+        // �元数� (Cell Data) - �个三角形一个值
+        std::vector<float> cell_vonmises;      //vonmises应力 - �元
+        std::vector<float> cell_DisX;          //DisX�移 - �元
+        std::vector<float> cell_DisY;          //DisY�移 - �元
+        std::vector<float> cell_DisZ;          //DisZ�移 - �元
+        std::vector<float> cell_DisTotal;      //总�移 - �元
+        std::vector<float> cell_SR11;          //SR11 x方�正应力 - �元
+        std::vector<float> cell_SR22;          //SR22 y方�正应力 - �元
+        std::vector<float> cell_SR33;          //SR33 z方�正应力 - �元
+        std::vector<float> cell_SR12;          //SR12 x方�剪应力 - �元
+        std::vector<float> cell_SR13;          //SR13 y方�剪应力 - �元
+        std::vector<float> cell_SR23;          //SR23 z方�剪应力 - �元
+        std::vector<float> cell_SS11;          //SS11 x方�正应力 - �元
+        std::vector<float> cell_SS22;          //SS22 y方�正应力 - �元
+        std::vector<float> cell_SS33;          //SS33 z方�正应力 - �元
+        std::vector<float> cell_SS12;          //SS12 x方�剪应力 - �元
+        std::vector<float> cell_SS13;          //SS13 y方�剪应力 - �元
+        std::vector<float> cell_SS23;          //SS23 z方�剪应力 - �元
+        
         virtual ~triangle_part_t() {}
 };
 

+ 124 - 46
js_ext_comx_ply_io/src/js_ext_comx_ply_io.cc

@@ -87,6 +87,8 @@ using namespace std;
 #include <vtkTypeFloat64Array.h>
 #include <vtkXMLPolyDataReader.h>
 #include <vtkXMLStructuredGridReader.h>
+#include<vtkContourFilter.h>
+#include<vtkLookupTable.h>
 
 
 
@@ -568,6 +570,7 @@ class postManage {
             vtkSmartPointer<vtkResampleWithDataSet>::New();
         vtkSmartPointer<vtkColorTransferFunction> colorMap =
             vtkSmartPointer<vtkColorTransferFunction>::New();
+        vtkSmartPointer<vtkLookupTable> lut = vtkSmartPointer<vtkLookupTable>::New();
         vtkSmartPointer<vtkPolyDataMapper> mapper =
             vtkSmartPointer<vtkPolyDataMapper>::New();
         vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
@@ -3663,6 +3666,7 @@ bool parseLine(const string &line, DataSet &data) {
         return false;
 }
 // 后处理渲染ply(在用)
+//渲染云图
 void rendererPly(vtkRenderer *renderer, postManage *work, TPlyEntry *pEntry) {
 
         renderer->RemoveAllViewProps();
@@ -3765,6 +3769,29 @@ void rendererPly(vtkRenderer *renderer, postManage *work, TPlyEntry *pEntry) {
         work->range[1] =
             *std::max_element(pEntry->vonmises.begin(), pEntry->vonmises.end());
 
+
+        work->lut->SetNumberOfTableValues(10);  // 10段颜色
+        work->lut->SetRange(work->range[0], work->range[1]);
+        work->lut->Build();
+
+        
+
+        
+        // 设置10段非渐变颜色(蓝 → 红)
+        work->lut->SetTableValue(0, 0.0, 0.0, 1.0);       // 蓝色
+        work->lut->SetTableValue(1, 0.12, 0.32, 0.85);     // 蓝青色
+        work->lut->SetTableValue(2, 0.37, 0.71, 1.0);     // 青色
+        work->lut->SetTableValue(3, 0.38, 1.0, 0.43);     // 青绿色
+        work->lut->SetTableValue(4, 0.0, 1.0, 0.0);       // 绿色
+        work->lut->SetTableValue(5, 0.79, 1.0, 0.09);     // 黄绿色
+        work->lut->SetTableValue(6, 1.0, 1.0, 0.0);       // 黄色
+        work->lut->SetTableValue(7, 1.0, 0.70, 0.09);     // 橙色
+        work->lut->SetTableValue(8, 1.0, 0.38, 0.0);      // 橙红色
+        work->lut->SetTableValue(9, 1.0, 0.0, 0.0);       // 红色
+        
+
+
+
         work->plyColorMap->AddRGBPoint(work->range[0], 0.0, 0.0, 1.0); // 蓝色
         work->plyColorMap->AddRGBPoint(
             work->range[0] + 0.125 * (work->range[1] - work->range[0]), 0.19,
@@ -3789,31 +3816,30 @@ void rendererPly(vtkRenderer *renderer, postManage *work, TPlyEntry *pEntry) {
             0.70, 0.09);                                               // 橙色
         work->plyColorMap->AddRGBPoint(work->range[1], 1.0, 0.0, 0.0); // 红色
 
-        // work->plyColorMap->AddRGBPoint(work->range[0], 1.0, 0.0, 0.0); //
-        // 红色   //彩虹图 work->plyColorMap->AddRGBPoint(work->range[0] + 0.25
-        // * (work->range[1] - work->range[0]), 1.0, 1.0, 0.0); // 黄色
-        // work->plyColorMap->AddRGBPoint(work->range[0] + 0.5 * (work->range[1]
-        // - work->range[0]), 0.0, 1.0, 0.0); // 绿色
-        // work->plyColorMap->AddRGBPoint(work->range[0] + 0.75 *
-        // (work->range[1] - work->range[0]), 0.0, 1.0, 1.0); // 青色
-        // work->plyColorMap->AddRGBPoint(work->range[1], 0.0, 0.0, 1.0); //
-        // 蓝色
 
         work->plyColorMap->SetRange(work->range[0], work->range[1]);
 
+ 
         work->plyMapper->SetInputData(work->plyData);
         work->plyMapper->SetScalarRange(work->range);
         work->plyMapper->ScalarVisibilityOn();
         work->plyMapper->SetColorModeToDefault();
-        work->plyMapper->SetLookupTable(work->plyColorMap);
+        //work->plyMapper->SetLookupTable(work->plyColorMap);
+        work->plyMapper->SetLookupTable(work->lut);
+       
+
 
         work->plyActor->SetMapper(work->plyMapper);
 
-        renderer->GradientBackgroundOn();
+       
+        //renderer->GradientBackgroundOn();
         renderer->SetBackground(0.655, 0.655, 0.737);
         renderer->SetBackground2(0.204, 0.204, 0.404);
         renderer->AddActor(work->plyActor);
 }
+
+
+
 // ply物理量的切换-云图切换部分
 void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                       TPlyEntry *pEntry) {
@@ -3867,14 +3893,14 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
 
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 2) {
                 renderer->RemoveAllViewProps();
                 work->plyData->Initialize();
@@ -3924,14 +3950,14 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+               /* work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
 
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
 
         } else if (attribute == 3) {
                 renderer->RemoveAllViewProps();
@@ -3982,14 +4008,14 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
 
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
 
         } else if (attribute == 4) {
 
@@ -4041,13 +4067,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
 
         } else if (attribute == 5) {
 
@@ -4098,13 +4124,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 6) {
 
                 renderer->RemoveAllViewProps();
@@ -4155,13 +4181,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 7) {
 
                 renderer->RemoveAllViewProps();
@@ -4211,13 +4237,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+              /*  work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 8) {
 
                 renderer->RemoveAllViewProps();
@@ -4267,14 +4293,14 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+               /* work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
 
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 9) {
 
                 renderer->RemoveAllViewProps();
@@ -4324,13 +4350,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+               /* work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 10) {
 
                 renderer->RemoveAllViewProps();
@@ -4380,13 +4406,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 11) {
 
                 renderer->RemoveAllViewProps();
@@ -4436,13 +4462,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 12) {
 
                 renderer->RemoveAllViewProps();
@@ -4492,13 +4518,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 13) {
 
                 renderer->RemoveAllViewProps();
@@ -4548,13 +4574,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+               /* work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 14) {
 
                 renderer->RemoveAllViewProps();
@@ -4604,14 +4630,14 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
 
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 15) {
 
                 renderer->RemoveAllViewProps();
@@ -4661,14 +4687,14 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+               /* work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
 
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 16) {
 
                 renderer->RemoveAllViewProps();
@@ -4718,13 +4744,13 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+                /*work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         } else if (attribute == 17) {
 
                 renderer->RemoveAllViewProps();
@@ -4774,14 +4800,65 @@ void setPlyPostChange(int attribute, vtkRenderer *renderer, postManage *work,
                 work->plyMapper->SetScalarRange(work->range);
                 work->plyMapper->ScalarVisibilityOn();
                 work->plyMapper->SetColorModeToDefault();
-                work->plyMapper->SetLookupTable(work->plyColorMap);
+               /* work->plyMapper->SetLookupTable(work->plyColorMap);
 
                 work->plyActor->SetMapper(work->plyMapper);
                 renderer->GradientBackgroundOn();
                 renderer->SetBackground(0.655, 0.655, 0.737);
                 renderer->SetBackground2(0.204, 0.204, 0.404);
-                renderer->AddActor(work->plyActor);
+                renderer->AddActor(work->plyActor);*/
         }
+
+
+        work->lut->SetNumberOfTableValues(10);  // 10段颜色
+        work->lut->SetRange(work->range[0], work->range[1]);
+        work->lut->Build();
+
+       
+
+
+        
+        // 设置10段非渐变颜色(蓝 → 红)
+        work->lut->SetTableValue(0, 0.0, 0.0, 1.0);       // 蓝色
+        work->lut->SetTableValue(1, 0.12, 0.32, 0.85);      // 蓝青色
+        work->lut->SetTableValue(2, 0.37, 0.71, 1.0);     // 青色
+        work->lut->SetTableValue(3, 0.38, 1.0, 0.43);     // 青绿色
+        work->lut->SetTableValue(4, 0.0, 1.0, 0.0);       // 绿色
+        work->lut->SetTableValue(5, 0.79, 1.0, 0.09);     // 黄绿色
+        work->lut->SetTableValue(6, 1.0, 1.0, 0.0);       // 黄色
+        work->lut->SetTableValue(7, 1.0, 0.70, 0.09);     // 橙色
+        work->lut->SetTableValue(8, 1.0, 0.38, 0.0);      // 橙红色
+        work->lut->SetTableValue(9, 1.0, 0.0, 0.0);       // 红色
+        
+
+        work->plyMapper->SetLookupTable(work->lut);
+        work->plyActor->SetMapper(work->plyMapper);
+
+        renderer->SetBackground(0.655, 0.655, 0.737);
+        renderer->SetBackground2(0.204, 0.204, 0.404);
+
+        renderer->AddActor(work->plyActor);
+
+        // === 添加等值线图层 ===
+        vtkSmartPointer<vtkContourFilter> contourFilter = vtkSmartPointer<vtkContourFilter>::New();
+        contourFilter->SetInputData(work->plyData);
+        contourFilter->GenerateValues(15, work->range[0], work->range[1]); // 可调等值线数量
+
+        vtkSmartPointer<vtkPolyDataMapper> contourMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
+        contourMapper->SetInputConnection(contourFilter->GetOutputPort());
+        contourMapper->SetScalarRange(work->range);
+        //contourMapper->SetLookupTable(work->plyColorMap);
+        // 若只想黑线显示,可以启用下面这句:
+        contourMapper->ScalarVisibilityOff();
+
+        vtkSmartPointer<vtkActor> contourActor = vtkSmartPointer<vtkActor>::New();
+        contourActor->SetMapper(contourMapper);
+        contourActor->GetProperty()->SetColor(0.0, 0.0, 0.0); // 黑线
+        contourActor->GetProperty()->SetLineWidth(1.2);
+        contourActor->GetProperty()->LightingOff();
+        //renderer->AddActor(contourActor);
+
+
 }
 
 vector<float> extractNumbers(const string &str) {
@@ -4800,7 +4877,8 @@ vector<float> extractNumbers(const string &str) {
 // 结构后处理颜色条-针对Ply的
 void setPlyPostBar(int attribute, vtkRenderer *renderer, postManage *work) {
         work->scalarBarActor->SetLookupTable(NULL);
-        work->scalarBarActor->SetLookupTable(work->plyColorMap);
+        //work->scalarBarActor->SetLookupTable(work->plyColorMap);
+        work->scalarBarActor->SetLookupTable(work->lut);
         string minMax = "MinValue: " + std::to_string(work->range[0]) + "\n" +
                         "MaxValue: " + std::to_string(work->range[1]);
         string title = "";