1. 修复了 导出 stl时,无法生成目标数据的bug.

2. 修复了模型平移时,无法生成数据bug
pull/1/head
剑古敛锋 2024-05-13 15:28:20 +08:00
parent 118be4e60b
commit dd879b9a3c
3 changed files with 65 additions and 12 deletions

View File

@ -323,6 +323,9 @@
<height>25</height> <height>25</height>
</size> </size>
</property> </property>
<property name="minimum">
<number>-1000000000</number>
</property>
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
@ -361,6 +364,9 @@
<height>25</height> <height>25</height>
</size> </size>
</property> </property>
<property name="minimum">
<number>-1000000000</number>
</property>
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
@ -399,6 +405,9 @@
<height>25</height> <height>25</height>
</size> </size>
</property> </property>
<property name="minimum">
<number>-1000000000</number>
</property>
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
@ -483,6 +492,9 @@
<height>25</height> <height>25</height>
</size> </size>
</property> </property>
<property name="minimum">
<double>-10000000000000000139372116959414099130712064.000000000000000</double>
</property>
<property name="maximum"> <property name="maximum">
<double>10000000000000000139372116959414099130712064.000000000000000</double> <double>10000000000000000139372116959414099130712064.000000000000000</double>
</property> </property>
@ -521,6 +533,9 @@
<height>25</height> <height>25</height>
</size> </size>
</property> </property>
<property name="minimum">
<double>-10000000000000000139372116959414099130712064.000000000000000</double>
</property>
<property name="maximum"> <property name="maximum">
<double>10000000000000000139372116959414099130712064.000000000000000</double> <double>10000000000000000139372116959414099130712064.000000000000000</double>
</property> </property>
@ -559,6 +574,9 @@
<height>25</height> <height>25</height>
</size> </size>
</property> </property>
<property name="minimum">
<double>-10000000000000000139372116959414099130712064.000000000000000</double>
</property>
<property name="maximum"> <property name="maximum">
<double>1000.000000000000000</double> <double>1000.000000000000000</double>
</property> </property>
@ -619,7 +637,7 @@
</size> </size>
</property> </property>
<property name="minimum"> <property name="minimum">
<double>1.000000000000000</double> <double>0.000000000000000</double>
</property> </property>
<property name="maximum"> <property name="maximum">
<double>1000.000000000000000</double> <double>1000.000000000000000</double>
@ -660,7 +678,7 @@
</size> </size>
</property> </property>
<property name="minimum"> <property name="minimum">
<double>1.000000000000000</double> <double>0.000000000000000</double>
</property> </property>
<property name="maximum"> <property name="maximum">
<double>1000.000000000000000</double> <double>1000.000000000000000</double>
@ -701,7 +719,7 @@
</size> </size>
</property> </property>
<property name="minimum"> <property name="minimum">
<double>1.000000000000000</double> <double>0.000000000000000</double>
</property> </property>
<property name="maximum"> <property name="maximum">
<double>1000.000000000000000</double> <double>1000.000000000000000</double>

View File

@ -1666,12 +1666,25 @@ namespace GUI {
MeshData::MeshData* meshData = MeshData::MeshData::getInstance(); MeshData::MeshData* meshData = MeshData::MeshData::getInstance();
QString kernalName, transformedName, setType, ids; QString kernalName, transformedName, setType, ids;
for(QString compontId : qCompontIds) { for(QString compontId : qCompontIds) {
meshSet = meshData->getMeshSetByID(compontId.toInt()); meshSet = meshData->getMeshSetByID(compontId.toInt());
if(!meshSet) if(!meshSet)
continue; continue;
//meshSet->generateDisplayDataSet(); meshSet->generateDisplayDataSet();
vtkRela.SetData(meshSet->getDisplayDataSet()); vtkSmartPointer<vtkDataSet> tempDisplayDataSet=meshSet->getDisplayDataSet();
if(nullptr==tempDisplayDataSet){
qDebug()<<"DisplayDataSet nullptr ";
return ;
}else{
qDebug()<<"DisplayDataSet , cell count "+QString::number(tempDisplayDataSet->GetNumberOfCells());
}
vtkRela.SetData(tempDisplayDataSet);
vtkSmartPointer<vtkDataSet> transformed = vtkRela.StartTransform(); vtkSmartPointer<vtkDataSet> transformed = vtkRela.StartTransform();
meshKernal = new MeshData::MeshKernal; meshKernal = new MeshData::MeshKernal;
kernalName = QString("transfrom%1_%2").arg(meshSet->getName()).arg(meshKernal->getID()); kernalName = QString("transfrom%1_%2").arg(meshSet->getName()).arg(meshKernal->getID());

View File

@ -14,7 +14,8 @@
#include <QFileInfo> #include <QFileInfo>
#include <QTextCodec> #include <QTextCodec>
#include <vtkSTLWriter.h> #include <vtkSTLWriter.h>
#include <QDebug>
#include <vtkGeometryFilter.h>
namespace MeshData namespace MeshData
{ {
@ -214,10 +215,17 @@ namespace MeshData
} }
bool VTKdataExchange::writeSTL() bool VTKdataExchange::writeSTL()
{ {
QFile infile(_fileName);
if(infile.exists()){
infile.remove();
}
qDebug()<<" VTKdataExchange::writeSTL start ";
QTextCodec *codec = QTextCodec::codecForName("GB18030"); QTextCodec *codec = QTextCodec::codecForName("GB18030");
QByteArray ba = codec->fromUnicode(_fileName); QByteArray ba = codec->fromUnicode(_fileName);
vtkUnstructuredGrid *ungird = vtkUnstructuredGrid::New(); vtkUnstructuredGrid *ungird = vtkUnstructuredGrid::New();
vtkSmartPointer<vtkAppendFilter> filter = vtkSmartPointer<vtkAppendFilter>::New(); // vtkSmartPointer<vtkAppendFilter> filter = vtkSmartPointer<vtkAppendFilter>::New();
vtkSmartPointer<vtkGeometryFilter> cellToPointFilter = vtkSmartPointer<vtkGeometryFilter>::New();
if (_modelId > 0) if (_modelId > 0)
{ {
MeshKernal *kernal = _meshData->getKernalByID(_modelId); MeshKernal *kernal = _meshData->getKernalByID(_modelId);
@ -225,7 +233,7 @@ namespace MeshData
{ {
vtkDataSet *dataset = kernal->getMeshData(); vtkDataSet *dataset = kernal->getMeshData();
if (dataset != nullptr) if (dataset != nullptr)
filter->AddInputData(dataset); cellToPointFilter->AddInputData(dataset);
} }
} }
else else
@ -240,17 +248,31 @@ namespace MeshData
{ {
vtkDataSet *dataset = kernal->getMeshData(); vtkDataSet *dataset = kernal->getMeshData();
if (dataset != nullptr) if (dataset != nullptr)
filter->AddInputData(dataset); cellToPointFilter->AddInputData(dataset);
} }
} }
} }
filter->Update(); cellToPointFilter->Update();
ungird->CopyStructure(filter->GetOutput()); // ungird->CopyStructure(filter->GetOutput());
//
// qDebug()<<"ungird , cell Count : "+QString::number(ungird->GetNumberOfCells());
vtkSmartPointer<vtkPolyData> inpolyData=vtkSmartPointer<vtkPolyData>::New();
inpolyData = cellToPointFilter->GetOutput();
if(nullptr==inpolyData){
qDebug()<<"inpolyData ,nullptr : ";
}else{
qDebug()<<"inpolyData , cell Count : "+QString::number(inpolyData->GetNumberOfCells());
}
vtkSmartPointer<vtkSTLWriter> writer = vtkSmartPointer<vtkSTLWriter>::New(); vtkSmartPointer<vtkSTLWriter> writer = vtkSmartPointer<vtkSTLWriter>::New();
writer->SetInputData(ungird); writer->SetInputConnection(cellToPointFilter->GetOutputPort());
// writer->SetInputData(ungird);
writer->SetFileTypeToBinary(); writer->SetFileTypeToBinary();
writer->SetFileName(ba); writer->SetFileName(ba);
writer->Write(); writer->Write();
qDebug()<<" VTKdataExchange::writeSTL finish !!!! "+ba;
QFile outfile(_fileName);
return outfile.exists();// 判断文件是否存在
return true; return true;
} }
bool VTKdataExchange::writeTecplot() bool VTKdataExchange::writeTecplot()