第一次提交

master
tianzhen 4 months ago
commit af3201d08f

@ -0,0 +1,21 @@
#include "CommandLineHandler.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"
#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
#include "FITK_Kernel/FITKAppFramework/FITKRunTimeSetting.h"
void CommandLineHandler::exec()
{
/* //查找参数
int index = _args.indexOf("-i");
if (index >= 0)
//-i 后面的参数为文件名
this->importINP(index + 1);
index = _args.indexOf("-ribbon");
if(index >=0 )
FITKAPP->getGlobalData()->getRunTimeSetting()->setValue("Ribbon", true);
*/
}

@ -0,0 +1,47 @@
/**
*
* @file ComamdLineHandler.h
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-04-06
*
*/
#ifndef __COMMANDLINEHANDLER_H__
#define __COMMANDLINEHANDLER_H__
#include "FITK_Kernel/FITKAppFramework/FITKCommandLineHandler.h"
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-04-06
*/
class CommandLineHandler : public AppFrame::FITKCommandLineHandler
{
public:
/**
* @brief Construct a new Command Line Handler object
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-04-06
*/
explicit CommandLineHandler() = default;
/**
* @brief Destroy the Command Line Handler object
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-04-06
*/
virtual ~CommandLineHandler() = default;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-04-06
*/
void exec() override;
private:
};
#endif

@ -0,0 +1,55 @@
/**
* @file ComponentFactory.cpp
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
#include "ComponentFactory.h"
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
#include "FITK_Component/FITKCompMessageWidget/FITKConsoleComponent.h"
#include "FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowInterface.h"
#include "FITK_Component/FITKGeoCompOCC/FITKGeoCompOCCInterface.h"
#include "FITK_Component/FITKMeshGenOF/FITKMeshGenOFInterface.h"
#include "FITK_Interface/FITKInterfaceFlowOF/FITKFlowPhysicsHandlerFactory.h"
#include "FITK_Component/FITKFlowOFIOHDF5/FITKFlowOFIOHDF5Interface.h"
#include "FITK_Component/FITKOFDictWriter/FITKOFDictWriterIO.h"
#include "FITK_Component/FITKOFMeshIO/FITKOFMeshReader.h"
#include "FITK_Component/FITKCGNSIO/FITKCGNSIOInterface.h"
#include "OperatorsModel/OpersModelInterface.h"
#include "OperatorsGUI/OpersGUIInterface.h"
#include "PreWindowInitializer.h"
QList<AppFrame::FITKComponentInterface *> ComponentFactory::createComponents()
{
// 自定义组件列表
QList<AppFrame::FITKComponentInterface *> componentList;
// 消息窗口组件
componentList << new Comp::ConsoleComponent(FITKAPP->getGlobalData()->getMainWindow());
// 3D图形窗口组件
auto compVTKrender = new Comp::FITKGraph3DWindowInterface;
componentList << compVTKrender;
//occ 建模
componentList << new OCC::FITKGeoCompOCCInterface;
//OF网格划分
componentList << new OF::FITKMeshGenOFInterface;
// 模型数据控制器组件
componentList << new OperModel::OpersModelInterface;
// 界面控制器组件
componentList << new GUIOper::OperatorsGUIInterface;
// 字典文件写出组件
componentList << new IO::FITKOFDictWriterIO;
// OpenFOAM网格读取组件
componentList << new IO::FITKOFMeshReader;
// 物理场数据工厂组件
componentList << new Interface::FITKFlowPhysicsHandlerFactory;
// hdf5接口组件
componentList << new IO::FITKFlowOFIOHDF5Interface;
// CGNS接口组件
componentList << new IO::FITKCGNSIOInterface;
// VTK窗口初始化器
compVTKrender->addInitializer(1, new PreWindowInitializer);
return componentList;
}

@ -0,0 +1,40 @@
/**
* @file ComponentFactory.h
* @brief
* @author YanZhiHui(chanyuantiandao@126.com)
* @date 2024-04-19
*/
#ifndef __COMPONENTFACTORY__
#define __COMPONENTFACTORY__
#include "FITK_Kernel/FITKAppFramework/FITKComponentFactory.h"
/**
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
class ComponentFactory : public AppFrame::FITKComponentFactory
{
public:
/**
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
ComponentFactory() = default;
/**
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
~ComponentFactory() = default;
/**
* @brief component
* @return QList<AppFrame::FITKComponentInterface*>
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-04
*/
QList<AppFrame::FITKComponentInterface *> createComponents() override;
};
#endif // !__COMPONENTFACTORY__

@ -0,0 +1,9 @@
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 10.0.17763.0
SET "PATH=C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64;%PATH%"
qmake -r -tp vc FlowApp.pro
pause

@ -0,0 +1,25 @@
#include "FlowAPPSettings.h"
#include <QSettings>
#include <QFile>
void FlowAPPSettings::read()
{
//读入文件
QString file = _appDir + "/FlowAPP.ini";
QFile f(file);
//文件不存在则创建
if (!f.exists())
{
if (f.open(QFile::WriteOnly))
{
//创建文件
f.write("");
f.close();
}
}
//读取文件
_settings = new QSettings(file, QSettings::IniFormat);
}

@ -0,0 +1,45 @@
/**
*
* @file FlowAPPSettings.h
* @brief
* @author BaGuijun (baguijun@163.com)
* @date 2024-04-06
*
*/
#ifndef __STRUCTURAL_SETTINGS_H__
#define __STRUCTURAL_SETTINGS_H__
#include "FITK_Kernel/FITKAppFramework/FITKAppSettings.h"
/**
* @brief
* @author BaGuijun (baguijun@163.com)
* @date 2024-04-06
*/
class FlowAPPSettings : public AppFrame::FITKAppSettings
{
public:
/**
* @brief Construct a new Structural Settings object
* @author BaGuijun (baguijun@163.com)
* @date 2024-04-06
*/
explicit FlowAPPSettings() = default;
/**
* @brief Destroy the Structural Settings object
* @author BaGuijun (baguijun@163.com)
* @date 2024-04-06
*/
virtual ~FlowAPPSettings() = default;
/**
* @brief ini
* @author BaGuijun (baguijun@163.com)
* @date 2024-04-06
*/
void read() override;
};
#endif

@ -0,0 +1,31 @@
HEADERS += \
$$PWD/MainWindowGenerator.h \
$$PWD/GlobalDataFactory.h \
$$PWD/ComponentFactory.h \
$$PWD/CommandLineHandler.h \
$$PWD/PreWindowInitializer.h \
$$PWD/SignalProcessor.h \
$$PWD/FlowAPPSettings.h \
$$PWD/WorkBenchHandler.h \
$$PWD/SystemChecker.h \
SOURCES += \
$$PWD/main.cpp \
$$PWD/MainWindowGenerator.cpp \
$$PWD/GlobalDataFactory.cpp \
$$PWD/ComponentFactory.cpp \
$$PWD/CommandLineHandler.cpp \
$$PWD/PreWindowInitializer.cpp \
$$PWD/SignalProcessor.cpp \
$$PWD/FlowAPPSettings.cpp \
$$PWD/WorkBenchHandler.cpp \
$$PWD/SystemChecker.cpp \
FORMS += \
# $$PWD/PluginManageDialog.ui \
#RESOURCES += ../qrc/qianfan.qrc
#RC_FILE += ../qrc/qianfan.rc
RC_ICONS = icon.ico

@ -0,0 +1,137 @@
TEMPLATE = app
CONFIG += c++11
CONFIG += qt
TARGET = FlowApp
QT += core widgets gui
unix:!mac{ QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN/\'" }
include(./vtk.pri)
include(./FlowApp.pri)
win32{
INCLUDEPATH += ./ \
../ \
../../ \
Release:CONFIG += console
Release:DESTDIR = ../output/bin
Release:MOC_DIR = ../generate/FlowApp/release/moc
Release:RCC_DIR = ../generate/FlowApp/release/rcc
Release:UI_DIR = ../generate/FlowApp/release/qui
Release:OBJECTS_DIR = ../generate/FlowApp/release/obj
Release:LIBS += \
-L../output/bin \
-lFITKAppFramework \
-lFITKCore \
-lFITKCompMessageWidget \
-lFITKRenderWindowVTK \
-lFITKInterfaceFlowOF \
# -lFITKInterfaceFlowPHengLEI \
-lFITKInterfaceModel \
-lFITKInterfaceMesh \
-lFITKInterfaceGeometry \
-lFITKInterfaceCFDPost \
-lFITKGeoCompOCC \
-lFITKMeshGenOF \
-lOperatorsModel \
-lOperatorsGUI \
-lGUIFrame \
-lGUIWidget \
-lFITKWidget \
-lFITKOFDictWriter \
-lFITKOFMeshIO \
-lFITKFlowOFIOHDF5 \
-lFITKCGNSIO \
-lCFDStructMain \
-lFITKInterfaceCFDPost
Debug:CONFIG += console
Debug:DESTDIR = ../output/bin_d
Debug:MOC_DIR = ../generate/FlowApp/debug/moc
Debug:RCC_DIR = ../generate/FlowApp/debug/rcc
Debug:UI_DIR = ../generate/FlowApp/debug/qui
Debug:OBJECTS_DIR = ../generate/FlowApp/debug/obj
Debug:LIBS += \
-L../output/bin_d \
-lFITKAppFramework \
-lFITKCore \
-lFITKCompMessageWidget \
-lFITKRenderWindowVTK \
-lFITKInterfaceFlowOF \
# -lFITKInterfaceFlowPHengLEI \
-lFITKInterfaceModel \
-lFITKInterfaceGeometry \
-lFITKInterfaceCFDPost \
-lFITKGeoCompOCC \
-lFITKMeshGenOF \
-lOperatorsModel \
-lFITKInterfaceMesh \
-lOperatorsGUI \
-lGUIFrame \
-lGUIWidget \
-lFITKWidget \
-lFITKOFDictWriter \
-lFITKOFMeshIO \
-lFITKFlowOFIOHDF5 \
-lFITKCGNSIO \
-lCFDStructMain \
-lGUIFrame \
-lFITKInterfaceCFDPost
Debug:LIBS += -L$$PWD/../Tools/Win64/SARibbon/libd/ \
-lSARibbonBard \
Release:LIBS += -L$$PWD/../Tools/Win64/SARibbon/lib/ \
-lSARibbonBar \
message("Windows FlowApp generated")
}
unix{
INCLUDEPATH += ./ \
../ \
../../ \
CONFIG += console
CONFIG += plugin
DESTDIR = ../output/bin
MOC_DIR = ../generate/FlowApp/release/moc
UI_DIR = ../generate/FlowApp/release/qui
RCC_DIR = ../generate/FlowApp/release/rcc
OBJECTS_DIR = ../generate/FlowApp/release/obj
LIBS += \
-L../output/bin \
-lFITKAppFramework \
-lFITKCore \
-lFITKCompMessageWidget \
-lFITKRenderWindowVTK \
-lFITKInterfaceFlowOF \
# -lFITKFITKInterfaceFlowPHengLEI \
-lFITKInterfaceModel \
-lFITKInterfaceMesh \
-lFITKInterfaceGeometry \
-lFITKGeoCompOCC \
-lFITKMeshGenOF \
-lOperatorsModel \
-lOperatorsGUI \
-lOperatorsInterface \
-lGUIFrame \
-lGUIWidget \
-lFITKWidget \
-L$$PWD/../Tools/Linux64/SARibbon/lib/ \
-lSARibbonBar \
-lFITKOFDictWriter \
-lFITKOFMeshIO \
-lFITKFlowOFIOHDF5 \
-lFITKCGNSIO \
message("Linux FlowApp generated")
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Generated Files">
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
<Extensions>cpp;c;cxx;moc;h;def;odl;idl;res;</Extensions>
</Filter>
<Filter Include="Generated Files">
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
<Extensions>cpp;c;cxx;moc;h;def;odl;idl;res;</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="CommandLineHandler.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ComponentFactory.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="FlowAPPSettings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="GlobalDataFactory.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="MainWindowGenerator.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="PreWindowInitializer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SignalProcessor.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SystemChecker.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WorkBenchHandler.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CommandLineHandler.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ComponentFactory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="FlowAPPSettings.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="GlobalDataFactory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="MainWindowGenerator.h">
<Filter>Header Files</Filter>
</ClInclude>
<QtMoc Include="PreWindowInitializer.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="SignalProcessor.h">
<Filter>Header Files</Filter>
</QtMoc>
<ClInclude Include="SystemChecker.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="WorkBenchHandler.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\generate\FlowApp\debug\moc\moc_predefs.h.cbt">
<Filter>Generated Files</Filter>
</CustomBuild>
<CustomBuild Include="..\generate\FlowApp\release\moc\moc_predefs.h.cbt">
<Filter>Generated Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="E:\Ugit\AppFlow\FlowApp\FlowApp_resource.rc" />
</ItemGroup>
</Project>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

@ -0,0 +1,37 @@
#include <windows.h>
IDI_ICON1 ICON DISCARDABLE "E:\\Ugit\\AppFlow\\FlowApp\\icon.ico"
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,0,0,0
PRODUCTVERSION 0,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "\0"
VALUE "FileVersion", "0.0.0.0\0"
VALUE "LegalCopyright", "\0"
VALUE "OriginalFilename", "FlowApp.exe\0"
VALUE "ProductName", "FlowApp\0"
VALUE "ProductVersion", "0.0.0.0\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 1200
END
END
/* End of Version info */

@ -0,0 +1,32 @@
#include "GlobalDataFactory.h"
#include "FITK_Interface/FITKInterfaceFlowOF/FITKOFGeometryData.h"
#include "FITK_Interface/FITKInterfaceFlowOF/FITKOFPhysicsData.h"
#include "CFDPost/CFDPostFITK_Interface/FITKInterfaceCFDPost/FITKCFDPostData.h"
// #include "CFDPost/CFDPostFITK_Interface/FITKInterfaceCFDPost/FITKCFDPostData.h"
#include "FITK_Interface/FITKInterfaceMesh/FITKUnstructuredFluidMeshVTK.h"
Core::FITKAbstractDataObject* GlobalDataFactory::createMeshData() {
return new Interface::FITKUnstructuredFluidMeshVTK;
}
Core::FITKAbstractDataObject* GlobalDataFactory::createGeoData() {
// 创建几何数据
return new Interface::FITKOFGeometryData;
}
Core::FITKAbstractDataObject* GlobalDataFactory::createPhysicsData() {
// 创建算例求解的物理场数据
return new Interface::FITKOFPhysicsData;
}
Core::FITKAbstractDataObject* GlobalDataFactory::createPostData() {
// 创建后处理数据
return new Interface::FITKCFDPostData;
// return nullptr;
}
QHash<int, Core::FITKAbstractDataObject*> GlobalDataFactory::createOtherData() {
// 不创建其他数据
return QHash<int, Core::FITKAbstractDataObject*>();
}

@ -0,0 +1,56 @@
/**
* @file GlobalDataFactory.h
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19 13:59
*/
#ifndef __GLOBALDATAFACTORY__
#define __GLOBALDATAFACTORY__
#include "FITK_Kernel/FITKAppFramework/FITKAbstractGlobalDataFactory.h"
/**
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
class GlobalDataFactory : public AppFrame::FITKAbstractGlobalDataFactory
{
private:
/**
* @brief
* @return Core::FITKAbstractDataObject*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-02
*/
virtual Core::FITKAbstractDataObject *createMeshData() override;
/**
* @brief
* @return
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
virtual Core::FITKAbstractDataObject *createGeoData() override;
/**
* @brief
* @return
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
virtual Core::FITKAbstractDataObject *createPhysicsData() override;
/**
* @brief
* @return
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
virtual Core::FITKAbstractDataObject *createPostData() override;
/**
* @brief
* @return
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
virtual QHash<int, Core::FITKAbstractDataObject *> createOtherData() override;
};
#endif

@ -0,0 +1,15 @@
#include "MainWindowGenerator.h"
#include "GUIFrame/MainWindow.h"
#include "CFDStruct/CFDStructMain/CFDStructMainWindow.h"
#include "CFDApplication/CFDApplicationMain/CFDApplicationMainWindow.h"
MainWindowGenerator::MainWindowGenerator() {
// this->setStyle("://Structural.qss");
// this->showMaximize(false);
}
QWidget* MainWindowGenerator::genMainWindow() {
// return new GUI::MainWindow;
return new GUI::CFDStructMainWindow;
// return new GUI::CFDApplicationMainWindow;
}

@ -0,0 +1,42 @@
/**
* @file MainWindowGenerator.h
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
#ifndef __MAINWINDOWGENERATOR__
#define __MAINWINDOWGENERATOR__
#include "FITK_Kernel/FITKAppFramework/FITKAbstractMainWinGenerator.h"
/**
* @brief
* @note `AppFrame::FITKAbstractMainwindowGenerator`
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
class MainWindowGenerator : public AppFrame::FITKAbstractMainwindowGenerator
{
public:
/**
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
MainWindowGenerator();
/**
* @brief
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
~MainWindowGenerator() = default;
/**
* @brief
* @return QWidget*
* @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-04-19
*/
QWidget *genMainWindow() override;
};
#endif // !__MAINWINDOWGENERATOR__

@ -0,0 +1,467 @@
#include "PreWindowInitializer.h"
// VTK
#include <vtkCallbackCommand.h>
#include <vtkInteractorObserver.h>
#include <vtkCamera.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkPointPicker.h>
#include <vtkCellPicker.h>
#include <vtkAreaPicker.h>
#include <vtkPlanes.h>
#include <vtkProp3DCollection.h>
#include <vtkPropPicker.h>
#include <vtkRenderWindowInteractor.h>
#include "FITK_Component/FITKRenderWindowVTK/FITKGraphAreaPicker.h"
#include "FITK_Kernel/FITKAppFramework/FITKKeyMouseStates.h"
// App
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
#include "FITK_Kernel/FITKAppFramework/FITKComponents.h"
#include "FITK_Kernel/FITKAppFramework/FITKComponentInterface.h"
// Operator
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"
#include "OperatorsInterface/GraphInteractionOperator.h"
#include "OperatorsInterface/GraphEventOperator.h"
// Render
#include "FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowVTK.h"
#include "FITK_Component/FITKRenderWindowVTK/FITKGraphRender.h"
// GUI
#include "GUIFrame/MainWindow.h"
#include "GUIFrame/RenderWidget.h"
#include "FITK_Component/FITKWidget/FITKMdiArea.h"
#include "GUIWidget/GUIPickInfo.h"
PreWindowInitializer::PreWindowInitializer()
{
// 初始化渲染层数。
this->setLayerCount(3);
//背景颜色
//QColor top = QColor::fromRgb(27, 45, 70);
//QColor buttom = QColor::fromRgb(160, 174, 195);
//this->setValue(BackGroundColorTop, top);
//this->setValue(BackGroundColorButtom, buttom);
}
Comp::FITKGraphInteractionStyle* PreWindowInitializer::getStyle()
{
return PreWindowInteractionStyle::New();
}
PreWindowInteractionStyle* PreWindowInteractionStyle::New()
{
return new PreWindowInteractionStyle;
}
PreWindowInteractionStyle::PreWindowInteractionStyle()
{
// 初始化定时器属性。
m_timerForPrePick.setInterval(200);
m_timerForPrePick.setSingleShot(true);
connect(&m_timerForPrePick, &QTimer::timeout, this, &PreWindowInteractionStyle::slot_prePick);
// 初始化操作器。
//@{
auto operatorRepo = Core::FITKOperatorRepo::getInstance();
m_operPreview = operatorRepo->getOperatorT<EventOper::GraphInteractionOperator>("GraphPickPreview");
m_operPick = operatorRepo->getOperatorT<EventOper::GraphInteractionOperator>("GraphPick");
m_operGraph = operatorRepo->getOperatorT<EventOper::GraphEventOperator>("GraphPreprocess");
//@}
}
void PreWindowInteractionStyle::OnLeftButtonDown()
{
// TEST.
//@{
//GUI::GUIPickInfoStru info = GUI::GUIPickInfo::GetPickInfo();
//info._pickObjType = GUI::GUIPickInfo::PickObjType::POBJVert;
//info._pickMethod = GUI::GUIPickInfo::PickMethod::PMSingle;
//GUI::GUIPickInfo::SetPickInfo(info);
//@}
// TEST2.
//@{
// GUI::MainTreeEnum::MainTree_MeshPoint = 9
//GraphOperParam param;
//param.HighlightMode = HighlightLevel::AdvHighlight;
//param.AdvHighlightIndice = QVector<int>{ 1 };
//param.Visibility = true;
//m_operGraph->updateGraphByType(9, param);
//@}
this->Interactor->GetEventPosition(m_leftButtonDowmPos);
if (m_areaPick != nullptr)
{
m_areaPick->setLeftButtonDownPos(m_leftButtonDowmPos);
m_areaPick->enable(true);
}
}
void PreWindowInteractionStyle::OnLeftButtonUp()
{
vtkInteractorStyleRubberBandPick::OnLeftButtonUp();
this->Interactor->GetEventPosition(m_leftButtonUpPos);
// 只有在逐个选择模式下支持框选。
bool canAreaPick = GUI::GUIPickInfo::GetPickInfo()._pickMethod == GUI::GUIPickInfo::PickMethod::PMIndividually;
if (m_areaPick != nullptr && isMouseMoved())
{
if (m_areaPick->isEnable() && canAreaPick)
m_areaPick->pick();
m_areaPick->enable(false);
}
else
{
pick();
}
AppFrame::FITKComponentInterface* fcInterface
= FITKAPP->getComponents()->getComponentByName("Graph3DWindowVTK");
if (fcInterface)
{
CallBackFuns fun = fcInterface->getCallBackFuns(1);
if (fun != nullptr)
fun(nullptr);
}
}
void PreWindowInteractionStyle::OnMiddleButtonDown()
{
this->Interactor->GetEventPosition(m_leftButtonDowmPos);
if (FITKAPP->getGlobalData()->getKeyMouseStates()->keyPressed(Qt::Key_Shift))
vtkInteractorStyleRubberBandPick::OnMiddleButtonDown();
else
vtkInteractorStyleRubberBandPick::OnLeftButtonDown();
}
void PreWindowInteractionStyle::OnMiddleButtonUp()
{
this->Interactor->GetEventPosition(m_leftButtonDowmPos);
vtkInteractorStyleRubberBandPick::OnLeftButtonUp();
vtkInteractorStyleRubberBandPick::OnMiddleButtonUp();
if (m_areaPick != nullptr)
{
m_areaPick->enable(false);
}
}
void PreWindowInteractionStyle::OnMouseMove()
{
if (m_timerForPrePick.isActive())
{
m_timerForPrePick.stop();
}
m_timerForPrePick.start();
this->Interactor->GetEventPosition(m_leftButtonUpPos);
vtkInteractorStyleRubberBandPick::OnMouseMove();
bool isMoved = this->isMouseMoved();
const bool lbd = FITKAPP->getGlobalData()->getKeyMouseStates()->mousePressed(Qt::LeftButton);
// 非单独拾取,且非算法拾取或非拾取状态时可绘制橡皮筋。
bool needDrawRect = (GUI::GUIPickInfo::GetPickInfo()._pickMethod == GUI::GUIPickInfo::PickMethod::PMIndividually ||
GUI::GUIPickInfo::GetPickInfo()._pickMethod == GUI::GUIPickInfo::PickMethod::PMNone);
if (lbd && isMoved && needDrawRect)
{
m_areaPick->drawRectangle();
return;
}
}
void PreWindowInteractionStyle::OnMouseWheelForward()
{
this->FindPokedRenderer(
this->Interactor->GetEventPosition()[0], this->Interactor->GetEventPosition()[1]);
if (this->CurrentRenderer == nullptr)
{
return;
}
this->GrabFocus(this->EventCallbackCommand);
this->StartDolly();
// double factor = this->MotionFactor * -0.2 * this->MouseWheelMotionFactor;
this->Dolly(0.98); // pow(1.1, factor)
this->EndDolly();
this->ReleaseFocus();
}
void PreWindowInteractionStyle::OnMouseWheelBackward()
{
this->FindPokedRenderer(
this->Interactor->GetEventPosition()[0], this->Interactor->GetEventPosition()[1]);
if (this->CurrentRenderer == nullptr)
{
return;
}
this->GrabFocus(this->EventCallbackCommand);
this->StartDolly();
// double factor = this->MotionFactor * 0.2 * this->MouseWheelMotionFactor;
this->Dolly(1.05); // pow(1.1, factor)
this->EndDolly();
this->ReleaseFocus();
}
void PreWindowInteractionStyle::OnRightButtonDown()
{
this->Interactor->GetEventPosition(m_leftButtonDowmPos);
}
void PreWindowInteractionStyle::OnRightButtonUp()
{
this->Interactor->GetEventPosition(m_leftButtonUpPos);
}
void PreWindowInteractionStyle::areaPick(int* startPos, int* endPos)
{
// 获取当前三维窗口。
Comp::FITKGraph3DWindowVTK* graphWindow = getCurrentGraphWindow();
if (!graphWindow || !m_operPick)
{
return;
}
// 所有渲染层均执行一次框选并获取拾取演员。
//@{
QList<vtkActor*> actors;
vtkSmartPointer<vtkAreaPicker> areaPicker = vtkSmartPointer<vtkAreaPicker>::New();
for (int i = 0; i < graphWindow->getRenderCount(); i++)
{
vtkRenderer* renderer = graphWindow->getRenderer(i)->getRenderer();
areaPicker->AreaPick(startPos[0], startPos[1], endPos[0], endPos[1], renderer);
vtkProp3DCollection* props = areaPicker->GetProp3Ds();
props->InitTraversal();
const int nActors = props->GetNumberOfItems();
for (vtkIdType i = 0; i < nActors; i++)
{
vtkProp3D* prop = props->GetNextProp3D();
vtkActor* actor = vtkActor::SafeDownCast(prop);
if (actor)
{
actors.append(actor);
}
}
}
//@}
// 没有拾取到且不是Shift与Ctrl拾取模式则清除拾取。
AppFrame::FITKKeyMouseStates* settings = FITKGLODATA->getKeyMouseStates();
bool shiftOrCtrlPick = (settings->keyPressed(Qt::Key_Shift) && !settings->keyPressed(Qt::Key_Control))
|| (!settings->keyPressed(Qt::Key_Shift) && settings->keyPressed(Qt::Key_Control));
if (actors.isEmpty() && !shiftOrCtrlPick)
{
m_operPick->clear(graphWindow);
return;
}
vtkPlanes* cutPlane = areaPicker->GetFrustum();
// 操作器执行高亮。
m_operPick->picked(graphWindow, actors, cutPlane);
}
void PreWindowInteractionStyle::pick(bool isPreview)
{
if (!m_operPreview || !m_operPick)
{
return;
}
// 获取当前鼠标位置进行拾取。
vtkRenderWindowInteractor* interactor = this->GetInteractor();
if (!interactor)
{
return;
}
Comp::FITKGraph3DWindowVTK* graphWindow = getCurrentGraphWindow();
if (!graphWindow)
{
return;
}
int* pos = interactor->GetEventPosition();
// 获取当前拾取类型。
GUI::GUIPickInfo::PickObjType type = GUI::GUIPickInfo::GetPickInfo()._pickObjType;
switch (type)
{
case GUI::GUIPickInfo::POBJVert:
case GUI::GUIPickInfo::POBJEdge:
case GUI::GUIPickInfo::POBJFace:
case GUI::GUIPickInfo::POBJSolid:
pickCell(graphWindow, pos, isPreview);
break;
default:
return;
}
}
void PreWindowInteractionStyle::pickPoint(Comp::FITKGraph3DWindowVTK* graphWindow, int* pos, bool isPreview, double tol)
{
// 节点拾取器。
vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New();
vtkSmartPointer<vtkPropPicker> pickerProp = vtkSmartPointer<vtkPropPicker>::New();
picker->SetTolerance(tol);
// 优先拾取最后一层,反向遍历。
for (int i = graphWindow->getRenderCount() - 1; i >= 0; i--)
{
vtkRenderer* renderer = graphWindow->getRenderer(i)->getRenderer();
int ret = picker->Pick(pos[0], pos[1], 0, renderer);
// 是否拾取到对象。
if (!ret)
{
continue;
}
// 获取拾取节点索引。
vtkActor* actor = picker->GetActor();
int index = picker->GetPointId();
if (index < 0)
{
continue;
}
double* pickedWorldPos = picker->GetPickPosition();
if (isPreview)
{
m_operPreview->picked(graphWindow, actor, index, pickedWorldPos);
}
else
{
m_operPick->picked(graphWindow, actor, index, pickedWorldPos);
}
return;
}
// 没有拾取到则清除拾取。
if (isPreview)
{
m_operPreview->clear(graphWindow);
}
else
{
// 没有拾取到且不是Shift与Ctrl拾取模式则清除拾取。
AppFrame::FITKKeyMouseStates* settings = FITKGLODATA->getKeyMouseStates();
bool shiftOrCtrlPick = (settings->keyPressed(Qt::Key_Shift) && !settings->keyPressed(Qt::Key_Control))
|| (!settings->keyPressed(Qt::Key_Shift) && settings->keyPressed(Qt::Key_Control));
if (!shiftOrCtrlPick)
{
m_operPick->clear(graphWindow);
}
}
}
void PreWindowInteractionStyle::pickCell(Comp::FITKGraph3DWindowVTK* graphWindow, int* pos, bool isPreview, double tol)
{
// 单元拾取器。
vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New();
picker->SetTolerance(tol);
// 优先拾取最后一层,反向遍历。
for (int i = graphWindow->getRenderCount() - 1; i >= 0 ; i--)
{
vtkRenderer* renderer = graphWindow->getRenderer(i)->getRenderer();
// 优先进行参考点标签与符号拾取。
int ret = picker->Pick(pos[0], pos[1], 0, renderer);
// 是否拾取到对象。
if (!ret)
{
continue;
}
// 获取拾取单元索引。
vtkActor* actor = picker->GetActor();
int index = picker->GetCellId();
if (index < 0)
{
continue;
}
double* pickedWorldPos = picker->GetPickPosition();
if (isPreview)
{
m_operPreview->picked(graphWindow, actor, index, pickedWorldPos);
}
else
{
m_operPick->picked(graphWindow, actor, index, pickedWorldPos);
}
return;
}
// 没有拾取到则清除拾取。
if (isPreview)
{
m_operPreview->clear(graphWindow);
}
else
{
// 没有拾取到且不是Shift与Ctrl拾取模式则清除拾取。
AppFrame::FITKKeyMouseStates* settings = FITKGLODATA->getKeyMouseStates();
bool shiftOrCtrlPick = (settings->keyPressed(Qt::Key_Shift) && !settings->keyPressed(Qt::Key_Control))
|| (!settings->keyPressed(Qt::Key_Shift) && settings->keyPressed(Qt::Key_Control));
if (!shiftOrCtrlPick)
{
m_operPick->clear(graphWindow);
}
}
}
void PreWindowInteractionStyle::slot_prePick()
{
// 预选高亮。
pick(true);
}
Comp::FITKGraph3DWindowVTK* PreWindowInteractionStyle::getCurrentGraphWindow()
{
GUI::MainWindow* mainWindow = FITKAPP->getGlobalData()->getMainWindowT<GUI::MainWindow>();
if (mainWindow == nullptr) return nullptr;
// 获取可视化区。
GUI::RenderWidget* renderWidget = mainWindow->getRenderWidget();
if (!renderWidget)
{
return nullptr;
}
Comp::FITKMdiArea* mdiArea = renderWidget->getMdiArea();
if (!mdiArea)
{
return nullptr;
}
// 获取当前窗口,尝试转换为三维窗口。
QWidget* w = mdiArea->getCurrentWidget();
Comp::FITKGraph3DWindowVTK* graphWindow = dynamic_cast<Comp::FITKGraph3DWindowVTK*>(w);
return graphWindow;
}

@ -0,0 +1,240 @@
/*****************************************************************//**
* @file PreWindowInitializer.h
* @brief
*
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*********************************************************************/
#ifndef __PRE_WIDOWINIINTIALIZER_H___
#define __PRE_WIDOWINIINTIALIZER_H___
#include "FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowInterface.h"
#include "FITK_Component/FITKRenderWindowVTK/FITKGraphInteractionStyle.h"
#include <QTimer>
// 前置声明
class vtkRenderer;
class vtkRenderWindow;
namespace EventOper
{
class GraphInteractionOperator;
class GraphEventOperator;
};
namespace Comp
{
class FITKGraph3DWindowVTK;
};
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
class PreWindowInitializer : public Comp::Graph3DWindowInitializer
{
public:
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
explicit PreWindowInitializer();
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
virtual ~PreWindowInitializer() = default;
/**
* @brief []
* @return
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
virtual Comp::FITKGraphInteractionStyle* getStyle() override;
protected:
private:
};
class PreWindowInteractionStyle : public Comp::FITKGraphInteractionStyle
{
Q_OBJECT
public:
/**
* @brief []
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
static PreWindowInteractionStyle* New();
vtkTypeMacro(PreWindowInteractionStyle,FITKGraphInteractionStyle);
private:
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-07-25
*/
virtual void OnLeftButtonDown() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-11-04
*/
virtual void OnLeftButtonUp() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-07-25
*/
virtual void OnMiddleButtonDown() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-11-04
*/
virtual void OnMiddleButtonUp() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-11-03
*/
virtual void OnMouseMove() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-11-04
*/
void OnMouseWheelForward() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-11-04
*/
void OnMouseWheelBackward() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-11-04
*/
void OnRightButtonDown() override;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2023-11-04
*/
void OnRightButtonUp() override;
/**
* @brief
* @param startPos
* @param endPos
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-18
*/
void areaPick(int* startPos, int* endPos) override;
private:
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
PreWindowInteractionStyle();
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
~PreWindowInteractionStyle() = default;
/**
* @brief
* @return
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
Comp::FITKGraph3DWindowVTK* getCurrentGraphWindow();
/**
* @brief
* @param isPreview[]
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
void pick(bool isPreview = false);
/**
* @brief
* @param graphWindow
* @param pos
* @param isPreview
* @param tol[]
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
void pickPoint(Comp::FITKGraph3DWindowVTK* graphWindow, int* pos, bool isPreview, double tol = 0.005);
/**
* @brief 线使
* @param graphWindow
* @param pos
* @param isPreview
* @param tol[]
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
void pickCell(Comp::FITKGraph3DWindowVTK* graphWindow, int* pos, bool isPreview, double tol = 0.003);
private slots:
/**
* @brief -
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
void slot_prePick();
private:
/**
* @brief 200ms
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
QTimer m_timerForPrePick;
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
EventOper::GraphInteractionOperator* m_operPreview{ nullptr };
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
EventOper::GraphInteractionOperator* m_operPick{ nullptr };
/**
* @brief
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-04-17
*/
EventOper::GraphEventOperator* m_operGraph{ nullptr };
};
#endif

@ -0,0 +1,8 @@
#include "SignalProcessor.h"
#include "FITK_Kernel/FITKAppFramework/FITKMessage.h"
void SignalProcessor::on_sendProgramDriverMessageSig(AppFrame::FITKAbstractProgramerDriver* driver, int messageType, const QString& message)
{
AppFrame::FITKMessageInfo(message);
}

@ -0,0 +1,24 @@
#ifndef _SIGNAL_PROCESSOR_H___
#define _SIGNAL_PROCESSOR_H___
#include <QObject>
namespace AppFrame
{
class FITKAbstractProgramerDriver;
}
class SignalProcessor : public QObject
{
Q_OBJECT
public:
explicit SignalProcessor() = default;
virtual ~SignalProcessor() = default;
protected slots:
void on_sendProgramDriverMessageSig(AppFrame::FITKAbstractProgramerDriver* driver, int messageType, const QString& message);
};
#endif

@ -0,0 +1,13 @@
#include "SystemChecker.h"
#include <QThread>
QStringList SystemChecker::check()
{
QStringList s;
//线程数检查最小是4
const int nThread = QThread::idealThreadCount();
if (nThread < 4)
s << QString("CPU thread count is %1, at least 4 !").arg(nThread);
return s;
}

@ -0,0 +1,46 @@
/**
*
* @file SystemChecker.h
* @brief
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-09-18
*
*/
#ifndef _SYSTEM_CHECKER____H___
#define _SYSTEM_CHECKER____H___
#include "FITK_Kernel/FITKAppFramework/FITKAbstractSysChecker.h"
/**
* @brief
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-09-18
*/
class SystemChecker : public AppFrame::FITKAbstractSysChecker
{
public:
/**
* @brief Construct a new System Checker object
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-09-18
*/
explicit SystemChecker() = default;
/**
* @brief Destroy the System Checker object
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-09-18
*/
virtual ~SystemChecker() = default;
/**
* @brief
* @return QStringList
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-09-18
*/
virtual QStringList check() override;
};
#endif

@ -0,0 +1,72 @@
#include "WorkBenchHandler.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"
#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKCore/FITKDirFileTools.h"
#include "FITK_Kernel/FITKCore/FITKThreadPool.h"
void FlowAppWorkBenchHandler::execHandler()
{
//文件数量
const int n = this->getInputFilesCount();
for (int i = 0; i<n; ++i)
{
//遍历文件
AppFrame::IOFileInfo finfo = this->getInputFileInfo(i);
if (finfo._suffix.toLower() == "brep" || finfo._suffix.toLower() == "step")
{
//导入文件
this->importGeoFile(QString("%1/%2").arg(finfo._path).arg(finfo._name));
}
else if (finfo._suffix.toLower() == "hdf5" && this->isProjectFileMode())
{
this->openProjectFile(QString("%1/%2").arg(finfo._path).arg(finfo._name));
}
}
}
void FlowAppWorkBenchHandler::execOutput()
{
AppFrame::FITKWorkBenchHandler::execOutput();
this->saveProjectFile();
}
void FlowAppWorkBenchHandler::importGeoFile(const QString & fileName)
{
//获取操作器
Core::FITKActionOperator* oper = FITKOPERREPO->getOperatorT<Core::FITKActionOperator>("actionImportGeometry");
if (oper == nullptr) return;
oper->setArgs("FileName", fileName);
oper->setArgs("SenderName", "actionImportGeometry");
//执行操作
oper->execProfession();
}
void FlowAppWorkBenchHandler::openProjectFile(const QString & fileName)
{
//获取操作器
Core::FITKActionOperator* oper = FITKOPERREPO->getOperatorT<Core::FITKActionOperator>("actionOpen");
if (oper == nullptr) return;
oper->setArgs("FileName", fileName);
//执行操作
oper->execProfession();
}
void FlowAppWorkBenchHandler::saveProjectFile()
{
QString path = this->getOutputPath();
QString pfile = path + "/AppFlowOFSys.hdf5";
//创建空的文件
if (!Core::CreateFile(pfile)) return;
//执行写出
auto oper = FITKOPERREPO->getOperatorT<Core::FITKActionOperator>("actionSave");
if (oper == nullptr) return;
oper->setArgs("FileName", pfile);
oper->execProfession();
//线程池等待
Core::FITKThreadPool::getInstance()->wait();
}

@ -0,0 +1,71 @@
/**
*
* @file WorkBenchHandler.h
* @brief
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*
*/
#ifndef _FLOWAPP_WORKBENCH_HANDLER_H___
#define _FLOWAPP_WORKBENCH_HANDLER_H___
#include <QString>
#include "FITK_Kernel/FITKAppFramework/FITKWorkBenchHandler.h"
/**
* @brief
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*/
class FlowAppWorkBenchHandler : public AppFrame::FITKWorkBenchHandler
{
public:
/**
* @brief Construct a new Flow App Work Bench Handler object
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*/
explicit FlowAppWorkBenchHandler() = default;
/**
* @brief Destroy the Flow App Work Bench Handler object
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*/
virtual ~FlowAppWorkBenchHandler() = default;
/**
* @brief
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*/
virtual void execHandler() override;
/**
* @brief
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-27
*/
virtual void execOutput() override;
private:
/**
* @brief
* @param[i] fileName
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*/
void importGeoFile(const QString & fileName);
/**
* @brief
* @param[i] fileName
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*/
void openProjectFile(const QString & fileName);
/**
* @brief
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-26
*/
void saveProjectFile();
};
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

@ -0,0 +1,64 @@
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "MainWindowGenerator.h"
#include "GlobalDataFactory.h"
#include "ComponentFactory.h"
#include "CommandLineHandler.h"
#include "SignalProcessor.h"
#include "FlowAPPSettings.h"
#include "WorkBenchHandler.h"
#include "SystemChecker.h"
#ifdef Q_OS_WIN
#include <Windows.h>
#endif // Q_WIN
/**
* @brief
* @param argc
* @param argv
* @return int
* @author YanZhiHui(chanyuantiandao@126.com)
* @date 2024-04-19
*/
int main(int argc, char *argv[])
{
#ifdef Q_OS_WIN
//这个是Windows平台用来获取屏幕宽度的代码必须在QApplication实例化之前使用
//因为在qApplication实例初始化之前QGuiApplication::screens();无法使用。
//qreal cx = GetSystemMetrics(SM_CXSCREEN);
//qreal scale = cx / 1920;
//qputenv("QT_SCALE_FACTOR", QString::number(scale).toLatin1());
#endif // Q_WIN
//控制图片缩放质量
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
// 初始化应用框架
AppFrame::FITKApplication app(argc, argv);
#ifdef Q_OS_LINUX
qputenv("PYTHONHOME", app.applicationDirPath().toUtf8() + "/../Python37");
QStringList pythonPaths;
pythonPaths << app.applicationDirPath() + "/../Python37/bin";
pythonPaths << app.applicationDirPath() + "/../Python37/lib";
pythonPaths << app.applicationDirPath() + "/../Python37/lib/python3.7";
pythonPaths << app.applicationDirPath() + "/../Python37/lib/python3.7/site-packages";
pythonPaths << app.applicationDirPath() + "/../Python37/lib/python3.7/lib-dynload";
qputenv("PYTHONPATH", pythonPaths.join(":").toUtf8());
#endif
app.checkSystem(new SystemChecker);
// 注册程序的主要组件和设置
app.regMainWindowGenerator(new MainWindowGenerator); // 注册主窗口生成器
app.regGlobalDataFactory(new GlobalDataFactory); // 注册全局数据工厂
app.regComponentsFactory(new ComponentFactory); // 注册组件工厂
app.regAppSettings(new FlowAPPSettings); // 注册应用结构设置
app.regCommandLineHandler(new CommandLineHandler); // 注册命令行处理
app.addGolbalSignalProcesser(new SignalProcessor); // 信号处理器
app.regWorkBenchHandler(new FlowAppWorkBenchHandler); //workbench处理
/*
app.regAppSettings(new StructuralSettings); // 注册应用结构设置
// 注册全局信号处理器
app.addGolbalSignalProcesser(new ThreadTaskProcessHandler);
//注册自定义事件处理
app.addEventFilter(new MouseKeyEventFilter);*/
// 运行应用程序的消息循环
return app.exec();
}

@ -0,0 +1,411 @@
win32{
INCLUDEPATH += ../Tools/Win64/VTK/include/vtk-9.0/ \
Debug:LIBS += -L../Tools/Win64/VTK/libd/ \
-lvtkChartsCore-9.0d \
-lvtkCommonColor-9.0d \
-lvtkCommonComputationalGeometry-9.0d \
-lvtkCommonCore-9.0d \
-lvtkCommonDataModel-9.0d \
-lvtkCommonExecutionModel-9.0d \
-lvtkCommonMath-9.0d \
-lvtkCommonMisc-9.0d \
-lvtkCommonSystem-9.0d \
-lvtkCommonTransforms-9.0d \
-lvtkDICOMParser-9.0d \
-lvtkDomainsChemistry-9.0d \
-lvtkFiltersAMR-9.0d \
-lvtkFiltersCore-9.0d \
-lvtkFiltersExtraction-9.0d \
-lvtkFiltersFlowPaths-9.0d \
-lvtkFiltersGeneral-9.0d \
-lvtkFiltersGeneric-9.0d \
-lvtkFiltersGeometry-9.0d \
-lvtkFiltersHybrid-9.0d \
-lvtkFiltersHyperTree-9.0d \
-lvtkFiltersImaging-9.0d \
-lvtkFiltersModeling-9.0d \
-lvtkFiltersParallel-9.0d \
-lvtkFiltersParallelImaging-9.0d \
-lvtkFiltersPoints-9.0d \
-lvtkFiltersProgrammable-9.0d \
-lvtkFiltersSMP-9.0d \
-lvtkFiltersSelection-9.0d \
-lvtkFiltersSources-9.0d \
-lvtkFiltersStatistics-9.0d \
-lvtkFiltersTexture-9.0d \
-lvtkFiltersTopology-9.0d \
-lvtkFiltersVerdict-9.0d \
-lvtkGUISupportQt-9.0d \
-lvtkGUISupportQtSQL-9.0d \
-lvtkGeovisCore-9.0d \
-lvtkIOAMR-9.0d \
-lvtkIOAsynchronous-9.0d \
-lvtkIOCityGML-9.0d \
-lvtkIOCore-9.0d \
-lvtkIOEnSight-9.0d \
-lvtkIOExodus-9.0d \
-lvtkIOExport-9.0d \
-lvtkIOExportGL2PS-9.0d \
-lvtkIOExportPDF-9.0d \
-lvtkIOGeometry-9.0d \
-lvtkIOImage-9.0d \
-lvtkIOImport-9.0d \
-lvtkIOInfovis-9.0d \
-lvtkIOLSDyna-9.0d \
-lvtkIOLegacy-9.0d \
-lvtkIOMINC-9.0d \
-lvtkIOMotionFX-9.0d \
-lvtkIOMovie-9.0d \
-lvtkIONetCDF-9.0d \
-lvtkIOOggTheora-9.0d \
-lvtkIOPLY-9.0d \
-lvtkIOParallel-9.0d \
-lvtkIOParallelXML-9.0d \
-lvtkIOSQL-9.0d \
-lvtkIOSegY-9.0d \
-lvtkIOTecplotTable-9.0d \
-lvtkIOVeraOut-9.0d \
-lvtkIOVideo-9.0d \
-lvtkIOXML-9.0d \
-lvtkIOXMLParser-9.0d \
-lvtkImagingColor-9.0d \
-lvtkImagingCore-9.0d \
-lvtkImagingFourier-9.0d \
-lvtkImagingGeneral-9.0d \
-lvtkImagingHybrid-9.0d \
-lvtkImagingMath-9.0d \
-lvtkImagingMorphological-9.0d \
-lvtkImagingSources-9.0d \
-lvtkImagingStatistics-9.0d \
-lvtkImagingStencil-9.0d \
-lvtkInfovisCore-9.0d \
-lvtkInfovisLayout-9.0d \
-lvtkInteractionImage-9.0d \
-lvtkInteractionStyle-9.0d \
-lvtkInteractionWidgets-9.0d \
-lvtkParallelCore-9.0d \
-lvtkParallelDIY-9.0d \
-lvtkRenderingAnnotation-9.0d \
-lvtkRenderingContext2D-9.0d \
-lvtkRenderingCore-9.0d \
-lvtkRenderingFreeType-9.0d \
-lvtkRenderingGL2PSOpenGL2-9.0d \
-lvtkRenderingImage-9.0d \
-lvtkRenderingLOD-9.0d \
-lvtkRenderingLabel-9.0d \
-lvtkRenderingOpenGL2-9.0d \
-lvtkRenderingQt-9.0d \
-lvtkRenderingSceneGraph-9.0d \
-lvtkRenderingUI-9.0d \
-lvtkRenderingVolume-9.0d \
-lvtkRenderingVolumeOpenGL2-9.0d \
-lvtkRenderingVtkJS-9.0d \
-lvtkTestingRendering-9.0d \
-lvtkViewsContext2D-9.0d \
-lvtkViewsCore-9.0d \
-lvtkViewsInfovis-9.0d \
-lvtkViewsQt-9.0d \
-lvtkWrappingTools-9.0d \
-lvtkdoubleconversion-9.0d \
-lvtkexodusII-9.0d \
-lvtkexpat-9.0d \
-lvtkfreetype-9.0d \
-lvtkgl2ps-9.0d \
-lvtkglew-9.0d \
-lvtkhdf5-9.0d \
-lvtkhdf5_hl-9.0d \
-lvtkjpeg-9.0d \
-lvtkjsoncpp-9.0d \
-lvtklibharu-9.0d \
-lvtklibproj-9.0d \
-lvtklibxml2-9.0d \
-lvtkloguru-9.0d \
-lvtklz4-9.0d \
-lvtklzma-9.0d \
-lvtkmetaio-9.0d \
-lvtknetcdf-9.0d \
-lvtkogg-9.0d \
-lvtkpng-9.0d \
-lvtkpugixml-9.0d \
-lvtksqlite-9.0d \
-lvtksys-9.0d \
-lvtktheora-9.0d \
-lvtktiff-9.0d \
-lvtkverdict-9.0d \
-lvtkzlib-9.0d \
Release:LIBS += -L../Tools/Win64/VTK/lib/ \
-lvtkChartsCore-9.0 \
-lvtkCommonColor-9.0 \
-lvtkCommonComputationalGeometry-9.0 \
-lvtkCommonCore-9.0 \
-lvtkCommonDataModel-9.0 \
-lvtkCommonExecutionModel-9.0 \
-lvtkCommonMath-9.0 \
-lvtkCommonMisc-9.0 \
-lvtkCommonSystem-9.0 \
-lvtkCommonTransforms-9.0 \
-lvtkDICOMParser-9.0 \
-lvtkDomainsChemistry-9.0 \
-lvtkFiltersAMR-9.0 \
-lvtkFiltersCore-9.0 \
-lvtkFiltersExtraction-9.0 \
-lvtkFiltersFlowPaths-9.0 \
-lvtkFiltersGeneral-9.0 \
-lvtkFiltersGeneric-9.0 \
-lvtkFiltersGeometry-9.0 \
-lvtkFiltersHybrid-9.0 \
-lvtkFiltersHyperTree-9.0 \
-lvtkFiltersImaging-9.0 \
-lvtkFiltersModeling-9.0 \
-lvtkFiltersParallel-9.0 \
-lvtkFiltersParallelImaging-9.0 \
-lvtkFiltersPoints-9.0 \
-lvtkFiltersProgrammable-9.0 \
-lvtkFiltersSMP-9.0 \
-lvtkFiltersSelection-9.0 \
-lvtkFiltersSources-9.0 \
-lvtkFiltersStatistics-9.0 \
-lvtkFiltersTexture-9.0 \
-lvtkFiltersTopology-9.0 \
-lvtkFiltersVerdict-9.0 \
-lvtkGUISupportQt-9.0 \
-lvtkGUISupportQtSQL-9.0 \
-lvtkGeovisCore-9.0 \
-lvtkIOAMR-9.0 \
-lvtkIOAsynchronous-9.0 \
-lvtkIOCityGML-9.0 \
-lvtkIOCore-9.0 \
-lvtkIOEnSight-9.0 \
-lvtkIOExodus-9.0 \
-lvtkIOExport-9.0 \
-lvtkIOExportGL2PS-9.0 \
-lvtkIOExportPDF-9.0 \
-lvtkIOGeometry-9.0 \
-lvtkIOImage-9.0 \
-lvtkIOImport-9.0 \
-lvtkIOInfovis-9.0 \
-lvtkIOLSDyna-9.0 \
-lvtkIOLegacy-9.0 \
-lvtkIOMINC-9.0 \
-lvtkIOMotionFX-9.0 \
-lvtkIOMovie-9.0 \
-lvtkIONetCDF-9.0 \
-lvtkIOOggTheora-9.0 \
-lvtkIOPLY-9.0 \
-lvtkIOParallel-9.0 \
-lvtkIOParallelXML-9.0 \
-lvtkIOSQL-9.0 \
-lvtkIOSegY-9.0 \
-lvtkIOTecplotTable-9.0 \
-lvtkIOVeraOut-9.0 \
-lvtkIOVideo-9.0 \
-lvtkIOXML-9.0 \
-lvtkIOXMLParser-9.0 \
-lvtkImagingColor-9.0 \
-lvtkImagingCore-9.0 \
-lvtkImagingFourier-9.0 \
-lvtkImagingGeneral-9.0 \
-lvtkImagingHybrid-9.0 \
-lvtkImagingMath-9.0 \
-lvtkImagingMorphological-9.0 \
-lvtkImagingSources-9.0 \
-lvtkImagingStatistics-9.0 \
-lvtkImagingStencil-9.0 \
-lvtkInfovisCore-9.0 \
-lvtkInfovisLayout-9.0 \
-lvtkInteractionImage-9.0 \
-lvtkInteractionStyle-9.0 \
-lvtkInteractionWidgets-9.0 \
-lvtkParallelCore-9.0 \
-lvtkParallelDIY-9.0 \
-lvtkRenderingAnnotation-9.0 \
-lvtkRenderingContext2D-9.0 \
-lvtkRenderingCore-9.0 \
-lvtkRenderingFreeType-9.0 \
-lvtkRenderingGL2PSOpenGL2-9.0 \
-lvtkRenderingImage-9.0 \
-lvtkRenderingLOD-9.0 \
-lvtkRenderingLabel-9.0 \
-lvtkRenderingOpenGL2-9.0 \
-lvtkRenderingQt-9.0 \
-lvtkRenderingSceneGraph-9.0 \
-lvtkRenderingUI-9.0 \
-lvtkRenderingVolume-9.0 \
-lvtkRenderingVolumeOpenGL2-9.0 \
-lvtkRenderingVtkJS-9.0 \
-lvtkTestingRendering-9.0 \
-lvtkViewsContext2D-9.0 \
-lvtkViewsCore-9.0 \
-lvtkViewsInfovis-9.0 \
-lvtkViewsQt-9.0 \
-lvtkWrappingTools-9.0 \
-lvtkdoubleconversion-9.0 \
-lvtkexodusII-9.0 \
-lvtkexpat-9.0 \
-lvtkfreetype-9.0 \
-lvtkgl2ps-9.0 \
-lvtkglew-9.0 \
-lvtkhdf5-9.0 \
-lvtkhdf5_hl-9.0 \
-lvtkjpeg-9.0 \
-lvtkjsoncpp-9.0 \
-lvtklibharu-9.0 \
-lvtklibproj-9.0 \
-lvtklibxml2-9.0 \
-lvtkloguru-9.0 \
-lvtklz4-9.0 \
-lvtklzma-9.0 \
-lvtkmetaio-9.0 \
-lvtknetcdf-9.0 \
-lvtkogg-9.0 \
-lvtkpng-9.0 \
-lvtkpugixml-9.0 \
-lvtksqlite-9.0 \
-lvtksys-9.0 \
-lvtktheora-9.0 \
-lvtktiff-9.0 \
-lvtkverdict-9.0 \
-lvtkzlib-9.0 \
}
unix{
INCLUDEPATH += ../Tools/Linux64/VTK/include/vtk-9.0/ \
LIBS += -L../Tools/Linux64/VTK/lib/ \
-lvtkChartsCore-9.0 \
-lvtkCommonColor-9.0 \
-lvtkCommonComputationalGeometry-9.0 \
-lvtkCommonCore-9.0 \
-lvtkCommonDataModel-9.0 \
-lvtkCommonExecutionModel-9.0 \
-lvtkCommonMath-9.0 \
-lvtkCommonMisc-9.0 \
-lvtkCommonSystem-9.0 \
-lvtkCommonTransforms-9.0 \
-lvtkDICOMParser-9.0 \
-lvtkDomainsChemistry-9.0 \
-lvtkFiltersAMR-9.0 \
-lvtkFiltersCore-9.0 \
-lvtkFiltersExtraction-9.0 \
-lvtkFiltersFlowPaths-9.0 \
-lvtkFiltersGeneral-9.0 \
-lvtkFiltersGeneric-9.0 \
-lvtkFiltersGeometry-9.0 \
-lvtkFiltersHybrid-9.0 \
-lvtkFiltersHyperTree-9.0 \
-lvtkFiltersImaging-9.0 \
-lvtkFiltersModeling-9.0 \
-lvtkFiltersParallel-9.0 \
-lvtkFiltersParallelImaging-9.0 \
-lvtkFiltersPoints-9.0 \
-lvtkFiltersProgrammable-9.0 \
-lvtkFiltersSMP-9.0 \
-lvtkFiltersSelection-9.0 \
-lvtkFiltersSources-9.0 \
-lvtkFiltersStatistics-9.0 \
-lvtkFiltersTexture-9.0 \
-lvtkFiltersTopology-9.0 \
-lvtkFiltersVerdict-9.0 \
-lvtkGUISupportQt-9.0 \
-lvtkGUISupportQtSQL-9.0 \
-lvtkGeovisCore-9.0 \
-lvtkIOAMR-9.0 \
-lvtkIOAsynchronous-9.0 \
-lvtkIOCityGML-9.0 \
-lvtkIOCore-9.0 \
-lvtkIOEnSight-9.0 \
-lvtkIOExodus-9.0 \
-lvtkIOExport-9.0 \
-lvtkIOExportGL2PS-9.0 \
-lvtkIOExportPDF-9.0 \
-lvtkIOGeometry-9.0 \
-lvtkIOImage-9.0 \
-lvtkIOImport-9.0 \
-lvtkIOInfovis-9.0 \
-lvtkIOLSDyna-9.0 \
-lvtkIOLegacy-9.0 \
-lvtkIOMINC-9.0 \
-lvtkIOMotionFX-9.0 \
-lvtkIOMovie-9.0 \
-lvtkIONetCDF-9.0 \
-lvtkIOOggTheora-9.0 \
-lvtkIOPLY-9.0 \
-lvtkIOParallel-9.0 \
-lvtkIOParallelXML-9.0 \
-lvtkIOSQL-9.0 \
-lvtkIOSegY-9.0 \
-lvtkIOTecplotTable-9.0 \
-lvtkIOVeraOut-9.0 \
-lvtkIOVideo-9.0 \
-lvtkIOXML-9.0 \
-lvtkIOXMLParser-9.0 \
-lvtkImagingColor-9.0 \
-lvtkImagingCore-9.0 \
-lvtkImagingFourier-9.0 \
-lvtkImagingGeneral-9.0 \
-lvtkImagingHybrid-9.0 \
-lvtkImagingMath-9.0 \
-lvtkImagingMorphological-9.0 \
-lvtkImagingSources-9.0 \
-lvtkImagingStatistics-9.0 \
-lvtkImagingStencil-9.0 \
-lvtkInfovisCore-9.0 \
-lvtkInfovisLayout-9.0 \
-lvtkInteractionImage-9.0 \
-lvtkInteractionStyle-9.0 \
-lvtkInteractionWidgets-9.0 \
-lvtkParallelCore-9.0 \
-lvtkParallelDIY-9.0 \
-lvtkRenderingAnnotation-9.0 \
-lvtkRenderingContext2D-9.0 \
-lvtkRenderingCore-9.0 \
-lvtkRenderingFreeType-9.0 \
-lvtkRenderingGL2PSOpenGL2-9.0 \
-lvtkRenderingImage-9.0 \
-lvtkRenderingLOD-9.0 \
-lvtkRenderingLabel-9.0 \
-lvtkRenderingOpenGL2-9.0 \
-lvtkRenderingQt-9.0 \
-lvtkRenderingSceneGraph-9.0 \
-lvtkRenderingUI-9.0 \
-lvtkRenderingVolume-9.0 \
-lvtkRenderingVolumeOpenGL2-9.0 \
-lvtkRenderingVtkJS-9.0 \
-lvtkTestingRendering-9.0 \
-lvtkViewsContext2D-9.0 \
-lvtkViewsCore-9.0 \
-lvtkViewsInfovis-9.0 \
-lvtkViewsQt-9.0 \
-lvtkWrappingTools-9.0 \
-lvtkdoubleconversion-9.0 \
-lvtkexodusII-9.0 \
-lvtkexpat-9.0 \
-lvtkfreetype-9.0 \
-lvtkgl2ps-9.0 \
-lvtkglew-9.0 \
-lvtkhdf5-9.0 \
-lvtkhdf5_hl-9.0 \
-lvtkjpeg-9.0 \
-lvtkjsoncpp-9.0 \
-lvtklibharu-9.0 \
-lvtklibproj-9.0 \
-lvtklibxml2-9.0 \
-lvtkloguru-9.0 \
-lvtklz4-9.0 \
-lvtklzma-9.0 \
-lvtkmetaio-9.0 \
-lvtknetcdf-9.0 \
-lvtkogg-9.0 \
-lvtkpng-9.0 \
-lvtkpugixml-9.0 \
-lvtksqlite-9.0 \
-lvtksys-9.0 \
-lvtktheora-9.0 \
-lvtktiff-9.0 \
-lvtkverdict-9.0 \
-lvtkzlib-9.0 \
}
Loading…
Cancel
Save