172 lines
4.8 KiB
C++
172 lines
4.8 KiB
C++
#ifndef BOUNDARYSETTING_H
|
|
#define BOUNDARYSETTING_H
|
|
|
|
#include <QDebug>
|
|
#include <QString>
|
|
#include <QUuid>
|
|
#include <public/services/PreProcessingService.h>
|
|
#include <public/services/VisualWidgetService.h>
|
|
#include <utils/ServiceRegistry.h>
|
|
#include<iostream>
|
|
#include <fstream>
|
|
#include<string>
|
|
#include<sstream>
|
|
#include<vtkProperty.h>
|
|
#include <vtkPolyDataMapper.h>
|
|
#include <vtkRenderWindow.h>
|
|
#include "vtkCamera.h"
|
|
#include "vtkActor.h"
|
|
#include "vtkRenderer.h"
|
|
#include "PropPickerInteractionStyle.h"
|
|
|
|
#include<vtkPoints.h>
|
|
#include<vtkPolyData.h>
|
|
#include<vtkCellData.h>
|
|
#include<vtkCellArray.h>
|
|
#include<vtkQuad.h>
|
|
#include<vtkRenderWindowInteractor.h>
|
|
#include<vtkHexahedron.h>
|
|
#include <vtkAutoInit.h>
|
|
#include<vtkUnstructuredGrid.h>
|
|
#include<vtkDataSetMapper.h>
|
|
#include <QToolButton>
|
|
#include <vtkCellPicker.h>
|
|
#include <vtkVertexGlyphFilter.h>
|
|
#include <vtkSphereSource.h>
|
|
#include <set>
|
|
#include <vtkCell.h>
|
|
#include <vtkIdList.h>
|
|
#include <vtkDoubleArray.h>
|
|
#include <vtkMapper.h>
|
|
#include <vtkInformation.h>
|
|
#include <vtkInformationObjectBaseVectorKey.h>
|
|
#include <QFile>
|
|
#include <vtkQuad.h>
|
|
#include <vtkMath.h>
|
|
#include <vtkLine.h>
|
|
#include <vtkCellArray.h>
|
|
#include <vtkLODActor.h>
|
|
#include <vtkAppendPolyData.h>
|
|
#include <vtkGlyph3D.h>
|
|
#include <vtkPointData.h>
|
|
#include <vtkCleanPolyData.h>
|
|
#include <vtkTextActor.h>
|
|
#include <vtkTextProperty.h>
|
|
#include <vtkVectorText.h>
|
|
#include <vtkLightCollection.h>
|
|
#include <vtkCollectionIterator.h>
|
|
#include <vtkLight.h>
|
|
#include <vtkFollower.h>
|
|
#include <public/struct/Mesh.h>
|
|
#include <vtkRendererCollection.h>
|
|
|
|
class PhysicalField;
|
|
class DisplacementLimitSettingWidget;
|
|
class DistributedLoadSettingWidget;
|
|
|
|
using namespace std;
|
|
class BoundarySetting
|
|
{
|
|
public:
|
|
BoundarySetting();
|
|
|
|
void setSelectMode();
|
|
vtkSmartPointer<vtkUnstructuredGrid> getCellStructure();
|
|
vtkSmartPointer<vtkUnstructuredGrid> getPointStructure();
|
|
void setBoundarySettingStatus(int type);
|
|
int getFaceNum();
|
|
private:
|
|
int m_faceNum;
|
|
vtkSmartPointer<vtkUnstructuredGrid> m_cellStructure;
|
|
vtkSmartPointer<vtkUnstructuredGrid> m_pointStructure;
|
|
QMap <int , int>m_faceToGridMap;
|
|
QVector<QVector<int> >m_gridFaceToCell;
|
|
QVector<QSet<int> >m_gridFaceToPoint;
|
|
QMap <int , int>m_pointIdToTruePointId;
|
|
QMap <int , int>m_truePointIdToPointId;
|
|
vtkSmartPointer<PropPickerInteractionStyle> m_picker;
|
|
vtkSmartPointer<vtkActor> m_pointActor;
|
|
vtkSmartPointer<vtkActor> m_faceActor;
|
|
VisualWidgetService *m_visualWidgetService;
|
|
|
|
|
|
DisplacementLimitSettingWidget *m_displacementLimitSettingWidget;
|
|
DistributedLoadSettingWidget *m_distributedLoadSettingWidget;
|
|
|
|
vtkSmartPointer<vtkPoints> m_points;
|
|
vtkSmartPointer<vtkCellArray> m_cells;
|
|
|
|
PhysicalField *m_physicalField;
|
|
|
|
|
|
//点的显示方式
|
|
int m_pointShowModel;
|
|
//被赋值过的点
|
|
QSet<int>m_allSelectedPoint;
|
|
//设置ux的点
|
|
QSet<int>m_uxSelectedPoint;
|
|
QMap<int,double>m_uxPoint;
|
|
//设置uy的点
|
|
QSet<int>m_uySelectedPoint;
|
|
QMap<int,double>m_uyPoint;
|
|
//设置uz的点
|
|
QSet<int>m_uzSelectedPoint;
|
|
QMap<int,double>m_uzPoint;
|
|
|
|
//面的显示方式
|
|
int m_faceShowModel;
|
|
//选赋值过的面
|
|
QSet<int>m_allSelectedFace;
|
|
//设置111的面
|
|
QSet<int>m_oneSelectedFace;
|
|
QMap<int,double>m_oneFace;
|
|
//设置222的面
|
|
QSet<int>m_twoSelectedFace;
|
|
QMap<int,double>m_twoFace;
|
|
//设置333的面
|
|
QSet<int>m_threeSelectedFace;
|
|
QMap<int,double>m_threeFace;
|
|
|
|
void select();
|
|
|
|
|
|
public:
|
|
int getFaceIdToGridId(int id);
|
|
int getPointIdToGridId(int id);
|
|
vtkSmartPointer<vtkActor> getPointActor();
|
|
|
|
//false 2D true 3D
|
|
void set3DType(bool is3DType);
|
|
|
|
//GridPoint
|
|
//0-ux,1-uy,2-uz
|
|
void setPointData(bool enable[3],double value[3]);
|
|
void batchSelectPoint(int id);
|
|
bool isSelectedPoint(int point);
|
|
|
|
//0-all,1-ux,2-uy,3-uz
|
|
void setPointShowModel(int type);
|
|
void clearSelectedPoint();
|
|
|
|
//GridFace
|
|
//0-111,1-222,2-333
|
|
void setFaceData(bool enable[3],double value[3]);
|
|
void batchSelectFace(int id);
|
|
bool isSelectedFace(int point);
|
|
|
|
//0-all,1-111,2-222,3-333
|
|
void setFaceShowModel(int type);
|
|
void clearSelectedFace();
|
|
void deleteFaceData();
|
|
void deletePointData();
|
|
bool setStructure(vtkSmartPointer<vtkUnstructuredGrid> cell, vtkSmartPointer<vtkUnstructuredGrid> point);
|
|
void setFaceToPoint(QVector<QSet<int>> point);
|
|
void setFaceToCell(QVector<QVector<int> > cell);
|
|
void setCellToGridMap(QMap<int, int> cellToGridMap);
|
|
void showPointData(int point);
|
|
void showFaceData(int faceId);
|
|
void setPhyicalField(PhysicalField *physicalField);
|
|
};
|
|
|
|
#endif // BOUNDARYSETTING_H
|