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

View File

@ -1666,12 +1666,25 @@ namespace GUI {
MeshData::MeshData* meshData = MeshData::MeshData::getInstance();
QString kernalName, transformedName, setType, ids;
for(QString compontId : qCompontIds) {
meshSet = meshData->getMeshSetByID(compontId.toInt());
if(!meshSet)
continue;
//meshSet->generateDisplayDataSet();
vtkRela.SetData(meshSet->getDisplayDataSet());
meshSet->generateDisplayDataSet();
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();
meshKernal = new MeshData::MeshKernal;
kernalName = QString("transfrom%1_%2").arg(meshSet->getName()).arg(meshKernal->getID());

View File

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