caizm 2 anni fa
parent
commit
023cffc14c
39 ha cambiato i file con 3427 aggiunte e 642 eliminazioni
  1. 370 368
      CAE_Solution/src/Makefile
  2. 1 1
      CAE_Solution/src/Makefile.Debug
  3. 1 1
      CAE_Solution/src/Makefile.Release
  4. 28 0
      CAE_Solution/src/c_rabbitmq/crabbitmqclient.cpp
  5. 1 0
      CAE_Solution/src/c_rabbitmq/crabbitmqclient.h
  6. 4 7
      CAE_Solution/src/commonheaders.h
  7. 17 12
      CAE_Solution/src/main.cpp
  8. 4 2
      CAE_Solution/src/rabbitClient/rabbitClient.pri
  9. 228 98
      CAE_Solution/src/rabbitClient/rabbitclient.cpp
  10. 31 6
      CAE_Solution/src/rabbitClient/rabbitclient.h
  11. BIN
      CAE_Solution/src/release/QVTKRenderer.obj
  12. BIN
      CAE_Solution/src/release/crabbitmqclient.obj
  13. BIN
      CAE_Solution/src/release/display.obj
  14. BIN
      CAE_Solution/src/release/loadxyplotdata.obj
  15. BIN
      CAE_Solution/src/release/main.obj
  16. BIN
      CAE_Solution/src/release/mesh.obj
  17. BIN
      CAE_Solution/src/release/mesh_adi.obj
  18. BIN
      CAE_Solution/src/release/mesh_tecplot.obj
  19. BIN
      CAE_Solution/src/release/mesh_ugrid.obj
  20. BIN
      CAE_Solution/src/release/meshbase.obj
  21. BIN
      CAE_Solution/src/release/meshmanager.obj
  22. BIN
      CAE_Solution/src/release/meshstructured.obj
  23. BIN
      CAE_Solution/src/release/meshunstructured.obj
  24. BIN
      CAE_Solution/src/release/points.obj
  25. BIN
      CAE_Solution/src/release/rabbitClient.obj
  26. BIN
      CAE_Solution/src/release/rabbitmq.4.dll
  27. BIN
      CAE_Solution/src/release/readconf.obj
  28. BIN
      CAE_Solution/src/release/src.exe
  29. BIN
      CAE_Solution/src/release/vtkviscameramanager.obj
  30. BIN
      CAE_Solution/src/release/vtkvismanager.obj
  31. BIN
      CAE_Solution/src/release/vtkvismeshbasetovtksource.obj
  32. BIN
      CAE_Solution/src/release/vtkvisunglyph.obj
  33. BIN
      CAE_Solution/src/release/vtkvisunshademesh.obj
  34. BIN
      CAE_Solution/src/release/vtkvisunstructuredgridmanager.obj
  35. BIN
      CAE_Solution/src/release/vtkvisunstructuredgridsource.obj
  36. 1 0
      CAE_Solution/src/src.pro
  37. 2589 0
      CAE_Solution/src/visualization_VTK/vtkvisunslice.cpp
  38. 149 146
      CAE_Solution/src/visualization_VTK/vtkvisunslice.h
  39. 3 1
      CAE_Solution/tests/tests.pro

+ 370 - 368
CAE_Solution/src/Makefile

@@ -75,169 +75,169 @@ debug-uninstall: FORCE
 	@set MAKEFLAGS=$(MAKEFLAGS)
 	$(MAKE) -f $(MAKEFILE).Debug uninstall
 
-Makefile: src.pro F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_pre.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\angle.conf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\windows-vulkan.conf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-desktop.conf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\qconfig.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_accessibility_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_devicediscovery_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_edid_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_egl_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fb_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fontdatabase_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_platformcompositor_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickshapes_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_theme_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_vulkan_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_functions.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_config.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_post.prf \
+Makefile: src.pro ..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf ..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_pre.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\angle.conf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\windows-vulkan.conf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-desktop.conf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\qconfig.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_accessibility_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_devicediscovery_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_edid_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_egl_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fb_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fontdatabase_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_platformcompositor_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickshapes_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_theme_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_vulkan_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_functions.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_config.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_post.prf \
 		..\.qmake.stash \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-version.conf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\toolchain.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_pre.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\default_pre.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-version.conf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\toolchain.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_pre.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\default_pre.prf \
 		rabbitClient\rabbitClient.pri \
 		c_rabbitmq\c_rabbitmq.pri \
 		ReadConf\ReadConf.pri \
@@ -246,193 +246,194 @@ Makefile: src.pro F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.con
 		QVTKRenderer\QVTKRenderer.pri \
 		Manager\Manager.pri \
 		Display\Display.pri \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resolve_config.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds_post.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_post.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resources.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qtquickcompiler.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\precompile_header.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\warn_on.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\moc.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\opengl.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\uic.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qmake_use.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\file_copies.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\windows.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\testcase_targets.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exceptions.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\yacc.prf \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\lex.prf \
+		stateMachine\stateMachine.pri \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resolve_config.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds_post.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_post.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resources.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qtquickcompiler.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\precompile_header.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\warn_on.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\moc.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\opengl.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\uic.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qmake_use.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\file_copies.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\windows.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\testcase_targets.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exceptions.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\yacc.prf \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\lex.prf \
 		src.pro \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Widgets.prl \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Gui.prl \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Core.prl \
-		F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\qtmain.prl
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Widgets.prl \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Gui.prl \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Core.prl \
+		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\qtmain.prl
 	$(QMAKE) -o Makefile src.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_pre.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\angle.conf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\windows-vulkan.conf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-desktop.conf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\qconfig.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_accessibility_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_devicediscovery_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_edid_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_egl_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fb_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fontdatabase_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_platformcompositor_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickshapes_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_theme_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_vulkan_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_functions.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_config.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_post.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_pre.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\angle.conf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\windows-vulkan.conf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-desktop.conf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\qconfig.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_accessibility_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_devicediscovery_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_edid_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_egl_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fb_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fontdatabase_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_platformcompositor_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickshapes_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_theme_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_vulkan_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_functions.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_config.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_post.prf:
 ..\.qmake.stash:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-version.conf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\toolchain.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_pre.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\default_pre.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-version.conf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\toolchain.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_pre.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\default_pre.prf:
 rabbitClient\rabbitClient.pri:
 c_rabbitmq\c_rabbitmq.pri:
 ReadConf\ReadConf.pri:
@@ -441,29 +442,30 @@ visualization_VTK\visualization_VTK.pri:
 QVTKRenderer\QVTKRenderer.pri:
 Manager\Manager.pri:
 Display\Display.pri:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resolve_config.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds_post.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_post.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resources.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qtquickcompiler.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\precompile_header.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\warn_on.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\moc.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\opengl.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\uic.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qmake_use.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\file_copies.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\windows.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\testcase_targets.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exceptions.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\yacc.prf:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\lex.prf:
+stateMachine\stateMachine.pri:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resolve_config.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds_post.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_post.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resources.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qtquickcompiler.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\precompile_header.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\warn_on.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\moc.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\opengl.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\uic.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qmake_use.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\file_copies.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\windows.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\testcase_targets.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exceptions.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\yacc.prf:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\lex.prf:
 src.pro:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Widgets.prl:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Gui.prl:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Core.prl:
-F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\qtmain.prl:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Widgets.prl:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Gui.prl:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Core.prl:
+..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\qtmain.prl:
 qmake: FORCE
 	@$(QMAKE) -o Makefile src.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
 

File diff suppressed because it is too large
+ 1 - 1
CAE_Solution/src/Makefile.Debug


File diff suppressed because it is too large
+ 1 - 1
CAE_Solution/src/Makefile.Release


+ 28 - 0
CAE_Solution/src/c_rabbitmq/crabbitmqclient.cpp

@@ -22,7 +22,35 @@ CRabbitMqClient::CRabbitMqClient(std::string HostName /*= CONNECT_HOST*/,
     routing_keys_name(routing_keys_name)
 
 {
+    this->m_strHost = HostName;
+    this->m_nPort = port;
+    this->m_strUser = usr;
+    this->m_strPwd = psw;
+    this->m_connectState = NULL;
+    this->channel_id = channel_id;
+    this->queue_name = queue_name;
+    this->exchange_name = exchange_name;
+    this->routing_keys_name = routing_keys_name;
+}
 
+/*
+ * @brief: Assignment overloaded function
+ * @param: crabbitmqclient
+ * @ret: crabbitmqclient
+ * @birth: created by czm in 20230327
+ */
+CRabbitMqClient &CRabbitMqClient::operator=(const CRabbitMqClient &a)
+{
+    this->m_strHost = a.m_strHost;
+    this->m_nPort = a.m_nPort;
+    this->m_strUser = a.m_strUser;
+    this->m_strPwd = a.m_strPwd;
+    this->m_connectState = a.m_connectState;
+    this->channel_id = a.channel_id;
+    this->queue_name = a.queue_name;
+    this->exchange_name = a.exchange_name;
+    this->routing_keys_name = a.routing_keys_name;
+    return *this;
 }
 
 CRabbitMqClient::~CRabbitMqClient()

+ 1 - 0
CAE_Solution/src/c_rabbitmq/crabbitmqclient.h

@@ -44,6 +44,7 @@ public:
             std::string exchange_name,
             std::string routing_keys_name
             );
+    CRabbitMqClient& operator=(const CRabbitMqClient &a);
     ~CRabbitMqClient();
 
 public:

+ 4 - 7
CAE_Solution/src/commonheaders.h

@@ -1,14 +1,11 @@
 #ifndef COMMONHEADERS_H
 #define COMMONHEADERS_H
 
-#ifdef Q_OS_WIN
-#define CONFPATH "../conf/conf.txt"
-#endif
-#ifdef Q_OS_LINUX
-#define CONFPATH "../conf/conf.txt"
-#endif
+#define SENDCONFPATH "../conf/conf_send.txt"
+#define RECVCONFPATH "../conf/conf_recv.txt"
+
 #include <QVTKRenderer/qvtkrenderer.h>
-//#include <rabbitClient/rabbitclient.h>
+#include <iostream>
 
 
 #endif // COMMONHEADERS_H

+ 17 - 12
CAE_Solution/src/main.cpp

@@ -1,13 +1,18 @@
 #include <QApplication>
 #include <QDebug>
 #include <QWidget>
-#include <commonheaders.h>
-#include <iostream>
 #include <QDir>
+#include <QTextCodec>
+#include <QThread>
+
+#include <iostream>
+
+#include "commonheaders.h"
 #include "ReadConf/readconf.h"
 #include "rabbitClient/rabbitclient.h"
 #include "Display/display.h"
-#include <QTextCodec>
+#include "stateMachine/statemachine.h"
+
 //#include <vtkAutoInit.h>
 //VTK_MODULE_INIT(vtkRenderingOpenGL2)
 //VTK_MODULE_INIT(vtkInteractionStyle)
@@ -20,14 +25,14 @@ int main(int argc, char *argv[])
     QTextCodec *codec = QTextCodec::codecForName("UTF-8");
     QTextCodec::setCodecForLocale(codec);
     QApplication a(argc, argv);
-    rabbitClient * rClient= new rabbitClient();
-    std::string str;
-//    rClient->sendMsg("hello",nullptr);
-    rClient->recvMsg(str,nullptr);
-    //std::cout<<str<<std::endl;
-//    Display *display = new Display();
-//    QString filename="tfg.ugrid";
-//    display->renderMesh(filename);
-
+    QThread thread;
+    stateMachine& state = stateMachine::Instance();
+//    state.moveToThread(&thread);
+//    connect(thread,SIGNAL(started),[=](){
+//        (const)state.isLive();
+//    });
+//    thread.start();
+    cout<<"hello world!"<<endl;
+    //state.isLive();
     return a.exec();
 }

+ 4 - 2
CAE_Solution/src/rabbitClient/rabbitClient.pri

@@ -1,5 +1,7 @@
 HEADERS += \
-        $$PWD/rabbitClient.h
+        $$PWD/ \
+        $$PWD/rabbitclient.h
 
 SOURCES += \
-        $$PWD/rabbitClient.cpp
+        $$PWD/ \
+        $$PWD/rabbitclient.cpp

+ 228 - 98
CAE_Solution/src/rabbitClient/rabbitclient.cpp

@@ -1,123 +1,253 @@
 #include "rabbitclient.h"
 #include <QDir>
 #include <QString>
-rabbitClient::rabbitClient()
+
+rabbitClient::rabbitClient(QObject *parent) : QObject(parent)
 {
 
 }
 
+/*
+ * @brief: the constructor
+ * @param: type "recvClient" "sendClient"
+ * @ret: void
+ * @birth: created by czm in 20230327
+ */
+rabbitClient::rabbitClient(QString type)
+{
+    if(type=="recvClient"){
+        initRecv();
+    }else if(type =="sendClient")
+    {
+        initSend();
+    }else{
+
+    }
+}
+
+/*
+ * @brief: the destructor
+ * @param: void
+ * @ret: void
+ * @birth: created by czm in 20230327
+ */
+rabbitClient::~rabbitClient()
+{
+    disconnect();
+    if(rconf){
+        delete rconf;
+        rconf = NULL;
+    }
+    if(objRabbitmq)
+    {
+        delete objRabbitmq;
+        objRabbitmq = NULL;
+    }
+}
+
 /**********************************************
  * 发送 单个消息 参数传递 消息内容和状态
  *
  * ********************************************/
-int rabbitClient::sendMsg(const std::string str,amqp_connection_state_t state_)
+int rabbitClient::sendMsg(const std::string str)
 {
-    ReadConf *rconf = new ReadConf();
-    QString path = QDir::currentPath()+"/"+CONFPATH;
-      printf("path: %s\n", path.toStdString().c_str());
-    ReadConf rconf_;
-    rconf->Read_Conf(path.toStdString(),rconf_);
-    //std::cout<<"host :"<<rconf_.host<<" port:"<<rconf_.port<<" usr name:"<<rconf_.userName<<" psword:"<<rconf_.password<<" channel_id:"<<rconf_.channel_id<<" queue_name:"<<rconf_.queue_name<<" exchange_name:"<<rconf_.exchange_name<<" keys_name:"<<rconf_.keys_name<<std::endl;
-    CRabbitMqClient objRabbitmq(rconf_.host,
-                                rconf_.port,
-                                rconf_.userName,
-                                rconf_.password,
-                                state_,
-                                rconf_.channel_id,
-                                rconf_.queue_name,
-                                rconf_.exchange_name,
-                                rconf_.keys_name);
-    std::string ErrorReturn;
-    //std::cout<<"host :"<<rconf_.host<<" port: "<<rconf_.port<<" usr name:"<<rconf_.userName<<" psword: "<<rconf_.password<<" channel_id: "<<rconf_.channel_id<<" queue_name: "<<rconf_.queue_name<<" exchange_name: "<<rconf_.exchange_name<<" keys_name: "<<rconf_.keys_name<<std::endl;
-    int iRet = objRabbitmq.Connect(ErrorReturn);
-    cout<<iRet<<endl;
-    printf("Rabbitmq Connect Ret : %d\n", iRet);
-
-//    CExchange my_exchange(objRabbitmq.exchange_name);
-//    iRet = objRabbitmq.DeclareExchange(my_exchange,ErrorReturn);
-//    cout<<iRet<<endl;
-//    printf("Rabbitmq ExchangeDeclare Ret: %d\n", iRet);
-
-//    CQueue my_Queue(objRabbitmq.queue_name);
-//    iRet = objRabbitmq.DeclareQueue(my_Queue, ErrorReturn);
-//    cout<<iRet<<endl;
-//    printf("Rabbitmq QueueDeclare Ret: %d\n", iRet);
-
-//    iRet = objRabbitmq.BindQueueToExchange(my_Queue, my_exchange, objRabbitmq.routing_keys_name, ErrorReturn);
-//    printf("Rabbitmq QueueBind Ret: %d\n", iRet);
-//    cout<<iRet<<endl;
-
-   while(true){
-        amqp_basic_properties_t properties = {};
-        CMessage cmsg(str, properties, objRabbitmq.routing_keys_name);
-        iRet = objRabbitmq.PublishMessage(cmsg, ErrorReturn);
-        cout<<iRet<<endl;
-        printf("Rabbitmq Publish 1 Ret: %d\n", iRet);
-        QThread::sleep(1);
-   }
-    objRabbitmq.DisConnect(ErrorReturn);
-    free(rconf);
+    int iRet;
+    amqp_basic_properties_t properties = {};
+    CMessage cmsg(str, properties, objRabbitmq->routing_keys_name);
+    iRet = objRabbitmq->PublishMessage(cmsg, ErrorReturn);
+    if(iRet!=0){
+        cout<<"Send Rabbitmq publish Message : "<<ErrorReturn <<endl;
+        disconnect_index++;
+        if(disconnect_index == 15){
+            connection_state = false;
+            emit sendState_send(connection_state);
+            disConnect();
+            return -1;
+        }
+    }else {
+        disconnect_index = 0;
+    }
+
+    QThread::sleep(1);
     return 0;
 }
 
 /************************************************
  *  接收单个 消息 参数  传递接收消息的 str 和状态
+ *  接收失败15次,即判断连接失败,断开连接,否则,每次重置统计接收失败次数
  * *********************************************/
-int rabbitClient::recvMsg(std::string str,amqp_connection_state_t state_)
+int rabbitClient::recvMsg()
 {
-    ReadConf *rconf = new ReadConf();
-    QString path = QDir::currentPath()+"/"+CONFPATH;
-      printf("path: %s\n", path.toStdString().c_str());
+    int iRet;
+    std::string str;
+    while(true){
+        iRet = objRabbitmq->ConsumerMessage(str,
+                                            objRabbitmq->queue_name,
+                                            ErrorReturn);
+        if(iRet!= 0){
+            cout<<"Recv Rabbitmq consumer Message : "<<ErrorReturn <<endl;
+            disconnect_index++;
+            if(disconnect_index == 15){
+                connection_state = false;
+                emit sendState_recv(connection_state);
+                disConnect();
+                return -1;
+            }
+        }
+        disconnect_index = 0;
+        if(str!="") emit recv(QString::fromStdString(str));
+        QThread::sleep(1);
+        //cout<<"recv"<<endl;
+    }
+    return 0;
+}
+
+/*
+ * @brief: init recvClient
+ * @param: void
+ * @ret: void
+ * @birth: created by czm in 20230327
+ */
+void rabbitClient::initRecv()
+{
+    rconf = new ReadConf();
+    QString path = QDir::currentPath()+"/"+RECVCONFPATH;
     ReadConf rconf_;
     rconf->Read_Conf(path.toStdString(),rconf_);
-    std::cout<<"host :"<<rconf_.host<<" port:"<<rconf_.port<<" usr name:"<<rconf_.userName<<" psword:"<<rconf_.password<<" channel_id:"<<rconf_.channel_id<<" queue_name:"<<rconf_.queue_name<<" exchange_name:"<<rconf_.exchange_name<<" keys_name:"<<rconf_.keys_name<<std::endl;
-    CRabbitMqClient objRabbitmq(rconf_.host,
-                                rconf_.port,
-                                rconf_.userName,
-                                rconf_.password,
-                                state_,
-                                rconf_.channel_id,
-                                rconf_.queue_name,
-                                rconf_.exchange_name,
-                                rconf_.keys_name);
-    std::cout<<"host :"<<rconf_.host<<" port:"<<rconf_.port<<" usr name:"<<rconf_.userName<<" psword:"<<rconf_.password<<" channel_id:"<<rconf_.channel_id<<" queue_name:"<<rconf_.queue_name<<" exchange_name:"<<rconf_.exchange_name<<" keys_name:"<<rconf_.keys_name<<std::endl;
-    std::string ErrorReturn;
-    int iRet = objRabbitmq.Connect(ErrorReturn);
-    cout<<iRet<<endl;
-    printf("Rabbitmq Connect Ret: %d\n", iRet);
-
-//    CExchange my_exchange(objRabbitmq.exchange_name);
-//    iRet = objRabbitmq.DeclareExchange(my_exchange,
-//                                       ErrorReturn);
-//    cout<<iRet<<endl;
-//    printf("Rabbitmq ExchangeDeclare Ret: %d\n", iRet);
-
-//    CQueue my_Queue(objRabbitmq.queue_name);
-//    iRet = objRabbitmq.DeclareQueue(my_Queue,
-//                                    ErrorReturn);
-//    cout<<iRet<<endl;
-//    printf("Rabbitmq QueueDeclare Ret: %d\n", iRet);
-
-
-//    iRet = objRabbitmq.BindQueueToExchange(my_Queue, my_exchange,
-//                                           objRabbitmq.routing_keys_name,
-//                                           ErrorReturn);
-
-//    printf("Rabbitmq QueueBind Ret: %d\n", iRet);
-//    cout<<iRet<<endl;
-
-    while (true)
-    {
+
+    objRabbitmq = new CRabbitMqClient(rconf_.host,
+                                      rconf_.port,
+                                      rconf_.userName,
+                                      rconf_.password,
+                                      NULL,
+                                      rconf_.channel_id,
+                                      rconf_.queue_name,
+                                      rconf_.exchange_name,
+                                      rconf_.keys_name);
+    recv_connect();
+}
+
+/*
+ * @brief: init sendClient
+ * @param: void
+ * @ret: void
+ * @birth: created by czm in 20230327
+ */
+void rabbitClient::initSend()
+{
+    rconf = new ReadConf();
+    QString path = QDir::currentPath()+"/"+SENDCONFPATH;
+    //printf("path: %s\n", path.toStdString().c_str());
+    ReadConf rconf_;
+    rconf->Read_Conf(path.toStdString(),rconf_);
+    //std::cout<<"host :"<<rconf_.host<<" port:"<<rconf_.port<<" usr name:"<<rconf_.userName<<" psword:"<<rconf_.password<<" channel_id:"<<rconf_.channel_id<<" queue_name:"<<rconf_.queue_name<<" exchange_name:"<<rconf_.exchange_name<<" keys_name:"<<rconf_.keys_name<<std::endl;
+
+    objRabbitmq = new CRabbitMqClient(rconf_.host,
+                                      rconf_.port,
+                                      rconf_.userName,
+                                      rconf_.password,
+                                      NULL,
+                                      rconf_.channel_id,
+                                      rconf_.queue_name,
+                                      rconf_.exchange_name,
+                                      rconf_.keys_name);
+    send_connect();
+}
+
+/*
+ * @brief: disconnect Client
+ * @param: void
+ * @ret: int 0-success other-fail
+ * @birth: created by czm in 20230327
+ */
+int rabbitClient::disConnect()
+{
+    int ret = objRabbitmq->DisConnect(ErrorReturn);
+    return ret;
+}
+
+/*
+ * @brief: connect recv Client
+ * @param: void
+ * @ret: int 0-success other-fail
+ * @birth: created by czm in 20230327
+ */
+void rabbitClient::recv_connect()
+{
+    int iRet = objRabbitmq->Connect(ErrorReturn);
+    if(iRet != 0){
+        connection_state = false;
+        emit sendState_recv(connection_state);
         cout<<iRet<<endl;
-        iRet = objRabbitmq.ConsumerMessage(str,
-                                           objRabbitmq.queue_name,
-                                           ErrorReturn);
+        cout<<"Recv Rabbitmq Connect : "<<ErrorReturn<<endl;
+        return;
+    }
+    connection_state = true;
 
-        printf("Rabbitmq QueueBind Ret: %d\n", iRet);
-        std::cout<<str<<std::endl;
-        QThread::sleep(1);
+    CExchange my_exchange(objRabbitmq->exchange_name);
+    iRet = objRabbitmq->DeclareExchange(my_exchange,
+                                        ErrorReturn);
+    if(iRet!=0){
+        cout<<iRet<<endl;
+        cout<<"Recv Rabbitmq ExchangeDeclare : "<<ErrorReturn<<endl;
     }
-        objRabbitmq.DisConnect(ErrorReturn);
-        free(rconf);
-    return 0;
+
+    CQueue my_Queue(objRabbitmq->queue_name);
+    iRet = objRabbitmq->DeclareQueue(my_Queue,
+                                     ErrorReturn);
+    if(iRet!=0){
+        cout<<iRet<<endl;
+        cout<<"Recv Rabbitmq QueueDeclare : "<<ErrorReturn<<endl;
+    }
+
+    iRet = objRabbitmq->BindQueueToExchange(my_Queue, my_exchange,
+                                            objRabbitmq->routing_keys_name,
+                                            ErrorReturn);
+    if(iRet!=0){
+        cout<<iRet<<endl;
+        cout<<"Recv Rabbitmq QueueBind : "<<ErrorReturn<<endl;
+    }
+    disconnect_index =0;
+}
+
+/*
+ * @brief: connect send Client
+ * @param: void
+ * @ret: int 0-success other-fail
+ * @birth: created by czm in 20230327
+ */
+void rabbitClient::send_connect()
+{
+    //std::cout<<"host :"<<rconf_.host<<" port: "<<rconf_.port<<" usr name:"<<rconf_.userName<<" psword: "<<rconf_.password<<" channel_id: "<<rconf_.channel_id<<" queue_name: "<<rconf_.queue_name<<" exchange_name: "<<rconf_.exchange_name<<" keys_name: "<<rconf_.keys_name<<std::endl;
+    int iRet = objRabbitmq->Connect(ErrorReturn);
+    if(iRet != 0){
+        connection_state = false;
+        emit sendState_send(connection_state);
+        cout<<iRet<<endl;
+        cout<<"Send Rabbitmq Connect : "<<ErrorReturn<<endl;
+        return;
+    }
+    connection_state = true;
+
+    CExchange my_exchange(objRabbitmq->exchange_name);
+    iRet = objRabbitmq->DeclareExchange(my_exchange,ErrorReturn);
+    if(iRet!=0){
+        cout<<iRet<<endl;
+        cout<<"Send Rabbitmq ExchangeDeclare : "<<ErrorReturn<<endl;
+    }
+
+
+    CQueue my_Queue(objRabbitmq->queue_name);
+    iRet = objRabbitmq->DeclareQueue(my_Queue, ErrorReturn);
+    if(iRet!=0){
+        cout<<iRet<<endl;
+        cout<<"Send Rabbitmq QueueDeclare : "<<ErrorReturn<<endl;
+    }
+
+    iRet = objRabbitmq->BindQueueToExchange(my_Queue, my_exchange, objRabbitmq->routing_keys_name, ErrorReturn);
+    if(iRet!=0){
+        cout<<iRet<<endl;
+        cout<<"Send Rabbitmq QueueBind : "<<ErrorReturn<<endl;
+    }
+    disconnect_index = 0;
 }

+ 31 - 6
CAE_Solution/src/rabbitClient/rabbitclient.h

@@ -7,18 +7,43 @@
 #include "commonheaders.h"
 #include "ReadConf/readconf.h"
 #include "c_rabbitmq/crabbitmqclient.h"
-#ifdef WIN32
-#endif
 #include "../../Libs/rabbitmq/win/include/rabbitmq-c/amqp.h"
 #include "../../Libs/rabbitmq/win/include/amqp.h"
 #include <QtGlobal>
+using namespace std;
 
-class rabbitClient
+class rabbitClient : public QObject
 {
+    Q_OBJECT
 public:
-    rabbitClient();
-    int sendMsg(const std::string str,amqp_connection_state_t state_);
-    int recvMsg(std::string str,amqp_connection_state_t state_);
+    explicit rabbitClient(QObject *parent = nullptr);
+    rabbitClient(QString);
+    ~rabbitClient();
+
+public :
+    void initRecv();
+    void initSend();
+    int disConnect();
+    void recv_connect();
+    void send_connect();
+
+    std::string ErrorReturn;
+
+public slots:
+    int sendMsg(const std::string str);
+    int recvMsg();
+
+signals:
+    void sendState_recv(bool);
+    void sendState_send(bool);
+    void recv(QString str);
+
+private:
+    bool connection_state = false;
+    ReadConf *rconf;
+    CRabbitMqClient *objRabbitmq;
+    int disconnect_index;//统计接收失败次数\发送失败次数
+
 };
 
 #endif // RABBITCLIENT_H

BIN
CAE_Solution/src/release/QVTKRenderer.obj


BIN
CAE_Solution/src/release/crabbitmqclient.obj


BIN
CAE_Solution/src/release/display.obj


BIN
CAE_Solution/src/release/loadxyplotdata.obj


BIN
CAE_Solution/src/release/main.obj


BIN
CAE_Solution/src/release/mesh.obj


BIN
CAE_Solution/src/release/mesh_adi.obj


BIN
CAE_Solution/src/release/mesh_tecplot.obj


BIN
CAE_Solution/src/release/mesh_ugrid.obj


BIN
CAE_Solution/src/release/meshbase.obj


BIN
CAE_Solution/src/release/meshmanager.obj


BIN
CAE_Solution/src/release/meshstructured.obj


BIN
CAE_Solution/src/release/meshunstructured.obj


BIN
CAE_Solution/src/release/points.obj


BIN
CAE_Solution/src/release/rabbitClient.obj


BIN
CAE_Solution/src/release/rabbitmq.4.dll


BIN
CAE_Solution/src/release/readconf.obj


BIN
CAE_Solution/src/release/src.exe


BIN
CAE_Solution/src/release/vtkviscameramanager.obj


BIN
CAE_Solution/src/release/vtkvismanager.obj


BIN
CAE_Solution/src/release/vtkvismeshbasetovtksource.obj


BIN
CAE_Solution/src/release/vtkvisunglyph.obj


BIN
CAE_Solution/src/release/vtkvisunshademesh.obj


BIN
CAE_Solution/src/release/vtkvisunstructuredgridmanager.obj


BIN
CAE_Solution/src/release/vtkvisunstructuredgridsource.obj


+ 1 - 0
CAE_Solution/src/src.pro

@@ -40,6 +40,7 @@ include( ./visualization_VTK/visualization_VTK.pri)
 include( ./QVTKRenderer/QVTKRenderer.pri)
 include( ./Manager/Manager.pri)
 include( ./Display/Display.pri)
+include( ./stateMachine/stateMachine.pri)
 #############################################################################
 #自动拷贝所需的dll到生成项目的路径下
 lib_install.files += $$PWD/../Libs/vtk8.2/win/bin/* \

+ 2589 - 0
CAE_Solution/src/visualization_VTK/vtkvisunslice.cpp

@@ -19,5 +19,2594 @@ vtkStandardNewMacro(vtkVISUnSlice)
 
 vtkVISUnSlice::vtkVISUnSlice()
 {
+    sliceActors_ = new vtkActor*[6];
+    sliceTable_ = new vtkLookupTable*[6];
 
+    for (int i = 0; i<6;i++)
+    {
+        sliceActors_[i] = vtkActor::New();
+        sliceActors_[i] = NULL;
+
+        sliceTable_[i] = vtkLookupTable::New();
+        sliceTable_[i] = NULL;
+    }
+
+    //sliceMapper_ = new vtkDataSetMapper*[6];
+    sliceMapper_ = vtkCollection::New();
+    sliceMapper_ = NULL;
+
+    contourLinesFilter_ = vtkContourFilter::New ();
+    contourLinesFilter_ = NULL;
+
+    contourLabelFilter_ = vtkContourFilter::New ();
+    contourLabelFilter_ = NULL;
+
+    sliceGlyph2D_ = vtkGlyphSource2D::New ();
+    sliceGlyph2D_ = NULL;
+
+    sliceGlyph3D_ = vtkGlyph3D::New();
+    sliceGlyph3D_ = NULL;
+
+    shadeColor_[0] = 1.0;
+    shadeColor_[1] = 0.0;
+    shadeColor_[2] = 0.0;
+
+    meshColor_[0] = 0.0;
+    meshColor_[1] = 1.0;
+    meshColor_[2] = 0.0;
+
+
+    planeNormal_[0] = 1.0;
+    planeNormal_[1] = 0.0;
+    planeNormal_[2] = 0.0;
+
+    conLevel_ = 5;
+    usedScalarIndex_ = -1;
+    usedVectorIndex_ = -1;
+
+    for (int i=0; i<3; i++)
+    {
+        planeOrigin_[i] = 0;
+    }
+
+    cutSource_ = NULL;
+    cutActor_ = NULL;
+    gridSource_ = NULL;
+
+    //cutMapper_ = NULL;
+
+    slicePlane_ = NULL;
+    planeWidget_ = NULL;
+
+    scalarRange_[0] = 0;
+    scalarRange_[1] = 0;
+
+    bandedContourFilter_ = 0;
+    contourLinesFilter_ = 0;
+    contourLabelFilter_ = 0;
+    scalarSource_ = 0;
+}
+
+vtkVISUnSlice::~vtkVISUnSlice()
+{
+    ErrorInfo(0, "destructure func 0");
+    if (cutActor_ != NULL)
+    {
+        if (_renderer != NULL)
+        {
+            _renderer->RemoveActor(cutActor_);
+        }
+        cutActor_->Delete();
+        cutActor_ = NULL;
+    }
+    ErrorInfo(0, "destructure func 1");
+
+    if(planeWidget_ != NULL)
+    {
+        //if(_renWin != NULL)
+        //{
+        //    planeWidget->SetInteractor(_renWin->GetInteractor());
+        //}
+        // planeWidget_->EnabledOff();
+        planeWidget_->Delete();
+        planeWidget_ = NULL;
+    }
+    ErrorInfo(0, "destructure func 2");
+
+    if (cutSource_ != NULL)
+    {
+        cutSource_->Delete();
+        cutSource_ = NULL;
+    }
+    ErrorInfo(0, "destructure func 3");
+    if (gridSource_ != NULL)
+    {
+        gridSource_->Delete();
+        gridSource_ = NULL;
+    }
+    ErrorInfo(0, "destructure func 4");
+
+    if(slicePlane_ != NULL)
+    {
+        slicePlane_->Delete();
+        slicePlane_ = NULL;
+    }
+    ErrorInfo(0, "destructure func 5");
+
+    /*if(cutMapper_ != NULL)
+    {
+        cutMapper_->Delete();
+        cutMapper_ = NULL;
+    }*/
+    for (int i=0;i<6;i++)
+    {
+        if (_renderer != NULL)
+        {
+            if (sliceActors_[i] != NULL)
+            {
+                _renderer->RemoveActor(sliceActors_[i]);
+                sliceActors_[i]->Delete();
+                sliceActors_[i] = NULL;
+            }
+        }
+    }
+    delete [] sliceActors_;
+
+    for (int i=0;i<6;i++)
+    {
+        if (sliceTable_[i] != NULL)
+        {
+            sliceTable_[i]->Delete();
+            sliceTable_[i] = NULL;
+        }
+    }
+    delete [] sliceTable_;
+
+    ErrorInfo(0, "destructure func 6");
+
+    if (sliceMapper_!= NULL)
+    {
+        sliceMapper_->Delete ();
+        sliceMapper_ = NULL;
+    }
+    if (contourLinesFilter_!= NULL)
+    {
+        contourLinesFilter_->Delete();
+        contourLinesFilter_ = NULL;
+    }
+    if (contourLabelFilter_!= NULL)
+    {
+        contourLabelFilter_->Delete();
+        contourLabelFilter_ = NULL;
+    }
+    if (sliceGlyph2D_!= NULL)
+    {
+        sliceGlyph2D_->Delete();
+        sliceGlyph2D_ = NULL;
+    }
+    if (sliceGlyph3D_!= NULL)
+    {
+        sliceGlyph3D_->Delete();
+        sliceGlyph3D_ = NULL;
+    }
+    if (scalarSource_ != 0)
+    {
+        scalarSource_->Delete();
+        scalarSource_ = 0;
+    }
+    ErrorInfo(0, "destructure func 7 end.");
+}
+
+/*
+ * @brief:  Set the slice scalar/vector data source(设置切片标量/矢量数据源)
+ * @param: vector data and scalar data
+ * @ret: void
+ * @birth: created by czm in 20230326
+ */
+void vtkVISUnSlice::SetSliceSource(char* scalar, char* vector)
+{
+    int index1 = -1;
+    int index2 = -1;
+
+    if(scalar != NULL)
+    {
+        index1 = _source->GetScalarIndex(scalar);
+    }
+    if(vector != NULL)
+    {
+        index2 = _source->GetVectorIndex(vector);
+    }
+
+    vtkUnstructuredGrid *unGrid = vtkUnstructuredGrid::New();
+        unGrid->DeepCopy(_source->unstruGrid);
+
+        cout << "point num:  " <<unGrid->GetNumberOfPoints() << ",   cell num:  " << unGrid->GetNumberOfCells() <<endl;
+        if (index1 != -1)
+        {
+            usedScalarIndex_ = index1;
+
+            if(_source->scalarSource[index1]->GetDataSize() != 0)
+            {cout << "scalar size : " <<_source->scalarSource[index1]->GetDataSize() << endl;
+                (unGrid->GetPointData())->SetScalars(_source->scalarSource[index1]);
+            }
+            else
+            {
+                (unGrid->GetCellData())->SetScalars(_source->cellScalarSource_[index1]);
+            }
+
+        }
+        if (index2 != -1)
+        {
+            usedVectorIndex_ = index2;
+
+            if(_source->vectorSource[index2]->GetDataSize() != 0)
+            {
+                (unGrid->GetPointData())->SetVectors(_source->vectorSource[index2]);
+            }
+            else
+            {
+                (unGrid->GetCellData())->SetVectors(_source->cellVectorSource_[index2]);
+            }
+        }
+        unGrid->Modified();
+
+    vtkPlane *plane = vtkPlane::New();
+        plane->SetNormal(planeNormal_[0], planeNormal_[1], planeNormal_[2]);
+
+    vtkCutter *cutter = vtkCutter::New();
+        cutter->SetInputData(unGrid);
+        cutter->SetCutFunction(plane);
+        cutter->GenerateCutScalarsOff();
+        cutter->SetSortByToSortByCell();
+        cutter->Update();
+
+        //cout<<"test here 1111"<<(cutter->GetOutput())->GetNumberOfPoints()<<endl;
+
+    gridSource_ = unGrid;
+    cutSource_ = cutter;
+    slicePlane_ =  plane;
+}
+
+/*
+* @brief: Write point,scalar and vector data to file.(将点、标量和矢量数据写入文件)
+* @param: filename
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::WriteScalarVectorData(const char* FileName)
+{
+    cutSource_->Update();
+
+    vtkFloatArray* cutScalar = vtkFloatArray::New();
+        cutScalar->SetNumberOfComponents(1);
+
+        if(usedScalarIndex_ != -1)
+        {
+            if(_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+            {
+                cutScalar->DeepCopy((cutSource_->GetOutput())->GetPointData()->GetScalars());
+            }
+            else
+            {
+                cutScalar->DeepCopy((cutSource_->GetOutput())->GetCellData()->GetScalars());
+            }
+        }
+        cutScalar->Modified();
+
+    vtkFloatArray* cutVector = vtkFloatArray::New();
+        cutVector->SetNumberOfComponents(3);
+
+        if(usedVectorIndex_ != -1)
+        {
+            if(_source->vectorSource[usedVectorIndex_]->GetDataSize() != 0)
+            {
+                cutVector->DeepCopy((cutSource_->GetOutput())->GetPointData()->GetVectors());
+            }
+            else
+            {
+                cutVector->DeepCopy((cutSource_->GetOutput())->GetCellData()->GetVectors());
+            }
+        }
+        cutVector->Modified();
+
+    double range[2];
+    double cutScalarRange_[2];
+
+    (cutSource_->GetOutput())->GetScalarRange(range);
+    cutScalarRange_[0] = range[0];
+    cutScalarRange_[1] = range[1];
+
+
+    int pointNum = 0;
+    pointNum = (cutSource_->GetOutput())->GetNumberOfPoints();
+
+    if (_source->vectorSource[usedVectorIndex_]->GetDataSize() == 0)
+    {
+        return;
+    }
+    double value;
+    double* v;
+    double p[3];
+
+    ofstream f(FileName);
+    if (!f)
+    {
+        return;
+    }
+    f<<std::setiosflags(ios::left)<<std::setw(30)<<"x"
+        <<std::setiosflags(ios::left)<<std::setw(30)<<"y"
+        <<std::setiosflags(ios::left)<<std::setw(30)<<"z"
+        <<std::setiosflags(ios::left)<<std::setw(20)<<"scalar"
+        <<std::setiosflags(ios::left)<<std::setw(20)<<"v0"
+        <<std::setiosflags(ios::left)<<std::setw(20)<<"v1"
+        <<std::setiosflags(ios::left)<<std::setw(20)<<"v2"
+        <<endl;
+
+    for(int j=0; j<pointNum; j++)
+    {
+        (cutSource_->GetOutput())->GetPoint(j, p);
+
+        value = cutScalar->GetValue(j);
+
+        v = cutVector->GetTuple3(j);
+
+        f<<std::setiosflags(ios::left)<<std::setw(20)<<p[0]
+            <<std::setiosflags(ios::left)<<std::setw(20)<<p[1]
+            <<std::setiosflags(ios::left)<<std::setw(20)<<p[2]
+            <<std::setiosflags(ios::left)<<std::setw(20)<<value
+            <<std::setiosflags(ios::left)<<std::setw(20)<<v[0]
+            <<std::setiosflags(ios::left)<<std::setw(20)<<v[1]
+            <<std::setiosflags(ios::left)<<std::setw(20)<<v[2]
+            <<endl;
+    }
+    f.close();
+}
+
+/*
+* @brief: Get cut scalar data.(获取切面标量数据。)
+* @param: void
+* @ret: float array
+* @birth: created by czm in 20230326
+*/
+vtkFloatArray* vtkVISUnSlice::GetCutScalarData(void)
+{
+    if(usedScalarIndex_ == -1)
+    {
+        return NULL;
+    }
+
+    cutSource_->Update();
+
+    vtkFloatArray* cutScalar = vtkFloatArray::New();
+        cutScalar->SetNumberOfComponents(1);
+
+        if(usedScalarIndex_ != -1)
+        {
+            if(_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+            {
+                cutScalar->DeepCopy((cutSource_->GetOutput())->GetPointData()->GetScalars());
+            }
+            else
+            {
+                cutScalar->DeepCopy((cutSource_->GetOutput())->GetCellData()->GetScalars());
+            }
+        }
+        cutScalar->Modified();
+
+    return cutScalar;
+}
+
+/*
+* @brief: Get cut vector data.(获取切面矢量数据。)
+* @param: index(index of the vector array)
+* @ret: float array
+* @birth: created by czm in 20230326
+*/
+vtkFloatArray* vtkVISUnSlice::GetCutVectorData(int index)
+{
+    if (index < 0 || index > 2)
+    {
+        return NULL;
+    }
+
+    if(usedVectorIndex_ == -1)
+    {
+        return NULL;
+    }
+
+    cutSource_->Update();
+
+    vtkFloatArray* vec = vtkFloatArray::New();
+        vec->SetNumberOfComponents(3);
+
+        if(usedVectorIndex_ != -1)
+        {
+            if(_source->vectorSource[usedVectorIndex_]->GetDataSize() != 0)
+            {
+                vec->DeepCopy((cutSource_->GetOutput())->GetPointData()->GetVectors());
+            }
+            else
+            {
+                vec->DeepCopy((cutSource_->GetOutput())->GetCellData()->GetVectors());
+            }
+        }
+        vec->Modified();
+
+    vtkFloatArray* cutVector = vtkFloatArray::New();
+        cutVector->SetNumberOfComponents(1);
+        cutVector->SetNumberOfTuples(vec->GetNumberOfTuples());
+        cutVector->CopyComponent(0, vec, index);
+        cutVector->Modified();
+
+    return cutVector;
+}
+
+/*
+* @brief: Get cut vector data.(获取切面矢量数据。)
+* @param: void
+* @ret: float array
+* @birth: created by czm in 20230326
+*/
+vtkFloatArray* vtkVISUnSlice::GetCutVectorData(void)
+{
+    if(usedVectorIndex_ == -1)
+    {
+        return NULL;
+    }
+
+    cutSource_->Update();
+
+    vtkFloatArray* cutVector = vtkFloatArray::New();
+        cutVector->SetNumberOfComponents(3);
+
+        if(usedVectorIndex_ != -1)
+        {
+            if(_source->vectorSource[usedVectorIndex_]->GetDataSize() != 0)
+            {
+                cutVector->DeepCopy((cutSource_->GetOutput())->GetPointData()->GetVectors());
+            }
+            else
+            {
+                cutVector->DeepCopy((cutSource_->GetOutput())->GetCellData()->GetVectors());
+            }
+        }
+        cutVector->Modified();
+
+    return cutVector;
+}
+
+/*
+* @brief: Get cut point data by index.(按索引获取切割点数据。)
+* @param: index Indicate the coordinate(0-x,1-y,2-z)
+* @ret: float array
+* @birth: created by czm in 20230326
+*/
+vtkFloatArray* vtkVISUnSlice::GetCutPointData(int index)
+{
+     if (index < 0 || index > 2)
+    {
+        return NULL;
+    }
+
+    cutSource_->Update();
+
+    vtkFloatArray* cutPointData = vtkFloatArray::New();
+       cutPointData->SetNumberOfComponents(1);
+
+    int pointNum = (cutSource_->GetOutput())->GetNumberOfPoints();
+
+    double point[3];
+
+    for(int j=0; j<pointNum; j++)
+    {
+        (cutSource_->GetOutput())->GetPoint(j, point);
+
+        cutPointData->InsertNextValue(point[index]);
+    }
+    cutPointData->Modified();
+
+    return cutPointData;
+}
+
+/*
+* @brief: Change slice scalar/vector data source(更改切片标量/矢量数据源)
+* @param: scalar
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifySliceSourceScalar(char* scalar)
+{
+    if (gridSource_ == NULL)
+    {
+        ErrorInfo(1,"Grid Source are not Setted!");
+        return;
+    }
+
+    int index = -1;
+    if(scalar != NULL)
+    {
+        index = _source->GetScalarIndex(scalar);
+    }
+    if (index == -1)
+    {
+        ErrorInfo(1,"Scalar data are not existed!");
+        return;
+    }
+    if (_source->scalarSource[index]->GetDataSize() != 0)
+    {
+        (gridSource_->GetPointData())->SetScalars(_source->scalarSource[index]);
+    }
+    else
+    {
+        (gridSource_->GetCellData())->SetScalars(_source->cellScalarSource_[index]);
+    }
+    gridSource_->Modified();
+
+    usedScalarIndex_ = index;
+
+    //2011-05-10 zhuqin add begin.
+    if(bandedContourFilter_ != NULL)
+    {
+        bandedContourFilter_->GenerateValues(conLevel_, _source->scalarRange[usedScalarIndex_][0],_source->scalarRange[usedScalarIndex_][1]);
+        bandedContourFilter_->ClippingOn();
+        bandedContourFilter_->Modified();
+    }
+    if (contourLinesFilter_ != NULL)
+    {
+      contourLinesFilter_->GenerateValues(conLevel_, _source->scalarRange[usedScalarIndex_][0],_source->scalarRange[usedScalarIndex_][1]);
+      contourLinesFilter_->Modified();
+    }
+    if (contourLabelFilter_!= NULL)
+    {
+        contourLabelFilter_->GenerateValues(conLevel_, _source->scalarRange[usedScalarIndex_][0],_source->scalarRange[usedScalarIndex_][1]);
+        contourLabelFilter_->Modified();
+    }
+    //2011-05-10 zhuqin add end.
+
+
+    for (int i= 0; i<6; i++)
+    {
+        if (i == 0 || i== 1 || i == 3)
+        {
+            if(sliceActors_[i] != NULL)
+            {
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->SetRange(_source->scalarRange[usedScalarIndex_][0],_source->scalarRange[usedScalarIndex_][1]);
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->Modified();
+
+                (sliceActors_[i]->GetMapper())->SetScalarRange(_source->scalarRange[usedScalarIndex_][0],_source->scalarRange[usedScalarIndex_][1]);
+
+                if (_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+                {
+                    (sliceActors_[i]->GetMapper())->SetScalarModeToUsePointData();
+                }
+                else
+                {
+                    (sliceActors_[i]->GetMapper())->SetScalarModeToUseCellData();
+                }
+
+                (sliceActors_[i]->GetMapper())->Modified();
+                sliceActors_[i]->Modified();
+            }
+        }
+
+    }
+
+}
+
+/*
+* @brief: Change slice scalar/vector data source(更改切片标量/矢量数据源)
+* @param: scalar
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifySliceSourceVector(char* vector)
+{
+    if (gridSource_ == NULL)
+    {
+        ErrorInfo(1,"Grid Source are not Setted!");
+        return;
+    }
+
+    int index = -1;
+
+    if(vector != NULL)
+    {
+        index = _source->GetVectorIndex(vector);
+    }
+    if (index == -1)
+    {
+        ErrorInfo(1,"Vector data are not existed!");
+        return;
+    }
+
+    usedVectorIndex_ = index;
+
+    if(_source->vectorSource[index]->GetDataSize() != 0)
+    {
+        (gridSource_->GetPointData())->SetVectors(_source->vectorSource[index]);
+    }
+    else
+    {
+        (gridSource_->GetCellData())->SetVectors(_source->cellVectorSource_[index]);
+    }
+    gridSource_->Modified();
+}
+
+/*
+* @brief: Create slice plane widget(创建切片平面小部件)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateSliceWidget()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+    double* bounds;
+    bounds = _source->GetSourceBounds();
+
+    planeOrigin_[0] = (bounds[0]+bounds[1])/2;
+    planeOrigin_[1] = (bounds[2]+bounds[3])/2;
+    planeOrigin_[2] = (bounds[4]+bounds[5])/2;
+
+    vtkImplicitPlaneWidget* planeWidget = vtkImplicitPlaneWidget::New();
+        planeWidget->SetInteractor(_renWin->GetInteractor());
+        planeWidget->SetPlaceFactor(1.0);
+
+        planeWidget->SetHandleSize(0.005);
+        planeWidget->SetDiagonalRatio(0.2);
+
+        planeWidget->GetOutlineProperty()->SetOpacity(0.0);
+        planeWidget->GetEdgesProperty()->SetOpacity(0.0);
+
+        planeWidget->GetPlane(slicePlane_);
+        planeWidget->SetInputData(cutSource_->GetOutput());
+
+        planeWidget->TubingOff();
+        //planeWidget->OutsideBoundsOff();
+        planeWidget->SetOrigin(planeOrigin_[0], planeOrigin_[1], planeOrigin_[2]);
+        planeWidget->PlaceWidget(bounds[0], bounds[1], bounds[2], bounds[3], bounds[4], bounds[5]);
+        planeWidget->On();
+
+        planeWidget_ = planeWidget;
+
+        vtkCallbackCommand *cc = vtkCallbackCommand::New();
+            cc->SetCallback(GenerateSliceProData);
+            cc->SetClientData(this);
+
+        planeWidget->AddObserver(vtkCommand::InteractionEvent, cc);
+
+        ShowOffSlicePlane();
+}
+
+/*
+* @brief: Generate Slice ProData(生成切片ProData)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::GenerateSliceProData(vtkObject *caller, unsigned long, void* obj, void *)
+{
+    vtkVISUnSlice* usObj = (vtkVISUnSlice*)obj;
+
+    if (usObj->planeWidget_ == NULL)
+    {
+        usObj->ErrorInfo(1,"Plane Widget Not Created");
+        return;
+    }
+    usObj->planeWidget_->GetPlane(usObj->slicePlane_);
+
+    //int num;
+    //num = cutSource_->GetOutput()->GetNumberOfPoints();
+}
+
+/*
+* @brief: Show the slice plane(显示切片平面)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnSlicePlane()
+{
+    if (planeWidget_ != NULL)
+    {
+        planeWidget_->DrawPlaneOn();
+        planeWidget_->UpdatePlacement();
+    }
+
+}
+
+/*
+* @brief: hide the slice plane(隐藏切片平面)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffSlicePlane()
+{
+    if (planeWidget_ != NULL)
+    {
+        planeWidget_->DrawPlaneOff();
+        planeWidget_->UpdatePlacement();
+    }
+
+}
+
+/*
+* @brief: Show On Slice Plane Widget(显示切片平面小部件)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnSlicePlaneWidget()
+{
+    if (planeWidget_ != NULL)
+    {
+       planeWidget_->On();
+    }
+
+    if (cutActor_)
+    {
+        cutActor_->VisibilityOn();
+    }
+}
+
+/*
+* @brief: Show Off Slice Plane Widget(隐藏切片平面小部件)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffSlicePlaneWidget()
+{
+    if (planeWidget_ != NULL)
+    {
+        planeWidget_->Off();
+    }
+
+    if (cutActor_)
+    {
+        cutActor_->VisibilityOff();
+    }
+}
+
+/*
+* @brief: Set the normal of the slice plane(设置切片平面的法线)
+* @param: xyz
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetSlicePlaneNormal(double nx, double ny, double nz)
+{
+    if (nx == 0 && ny == 0 && nz == 0) {
+        return;
+    }
+
+    if (planeWidget_ != NULL)
+    {
+        planeNormal_[0] = nx;
+        planeNormal_[1] = ny;
+        planeNormal_[2] = nz;
+
+        slicePlane_->SetNormal(nx, ny, nz);
+        planeWidget_->SetNormal(nx, ny, nz);
+    }
+}
+
+/*
+* @brief: Set the normal of the slice plane(设置切片平面的法线到x坐标轴)
+* @param: x
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetSlicePlaneNormalToX()
+{
+    if (planeWidget_ != NULL)
+    {
+        slicePlane_->SetNormal(1, 0, 0);
+        planeWidget_->SetNormal(1, 0, 0);
+
+        planeNormal_[0] = 1.0;
+        planeNormal_[1] = 0;
+        planeNormal_[2] = 0;
+    }
+}
+
+/*
+* @brief: Set the normal of the slice plane(设置切片平面的法线到y坐标轴)
+* @param: y
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetSlicePlaneNormalToY()
+{
+    if (planeWidget_ == NULL)
+    {
+        ErrorInfo(1,"Plane Widget Not Created");
+        return;
+    }
+    slicePlane_->SetNormal(0, 1, 0);
+    planeWidget_->SetNormal(0, 1, 0);
+
+    planeNormal_[0] = 0;
+    planeNormal_[1] = 1.0;
+    planeNormal_[2] = 0;
+}
+
+/*
+* @brief: Set the normal of the slice plane(设置切片平面的法线到z坐标轴)
+* @param: z
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetSlicePlaneNormalToZ()
+{
+    if (planeWidget_ == NULL)
+    {
+        ErrorInfo(1,"Plane Widget Not Created");
+        return;
+    }
+    slicePlane_->SetNormal(0, 0, 1);
+    planeWidget_->SetNormal(0, 0, 1);
+
+    planeNormal_[0] = 0;
+    planeNormal_[1] = 0;
+    planeNormal_[2] = 1.0;
+}
+
+/*
+* @brief: Get the normal direction of the slice plane(获取切片平面的法线方向)
+* @param: y
+* @ret: double[3]contains the normal direction
+* @birth: created by czm in 20230326
+*/
+double* vtkVISUnSlice::GetSlicePlaneNormal()
+{
+    return this->planeNormal_;
+}
+
+/*
+* @brief: Set the slice plane origin(设置切片平面原点)
+* @param: xyz
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetSlicePlaneOrigin(double ox, double oy, double oz)
+{
+    if (planeWidget_ == NULL)
+    {
+        ErrorInfo(1,"Plane Widget Not Created");
+        return;
+    }
+    slicePlane_->SetOrigin(ox, oy, oz);
+    planeWidget_->SetOrigin(ox, oy, oz);
+
+    planeOrigin_[0] = ox;
+    planeOrigin_[0] = oy;
+    planeOrigin_[0] = oz;
+
+}
+
+/*
+* @brief: Get the slice plane origin(获取切片平面原点)
+* @param: void
+* @ret: double[3] contains the origin
+* @birth: created by czm in 20230326
+*/
+double* vtkVISUnSlice::GetSlicePlaneOrigin()
+{
+    return this->planeOrigin_;
+}
+
+/*
+* @brief: Create UnSlice display pipeline(创建UnSlice显示管线)
+* @param: void
+* @ret: double[3] contains the origin
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceContourDisplay()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    double range[2];
+    if (usedScalarIndex_ != -1)
+    {
+        range[0] = _source->scalarRange[usedScalarIndex_][0];
+        range[1]  = _source->scalarRange[usedScalarIndex_][1];
+    }
+    else
+    {
+        range[0] = 0;
+        range[1] = 0;
+    }
+    cutSource_->Update();
+
+    //cout<<range[0]<<" "<<range[1]<<endl;
+
+    //cout<<"cut  num:  "<<(cutSource_->GetOutput())->GetNumberOfPoints()<<endl;
+
+    vtkGeometryFilter *geoFilter = vtkGeometryFilter::New();
+        geoFilter->SetInputData(cutSource_->GetOutput());
+        geoFilter->Update();
+
+    //cout<<"geo num: "<<(geoFilter->GetOutput())->GetNumberOfPoints()<<endl;
+
+    vtkBandedPolyDataContourFilter *conFilter = vtkBandedPolyDataContourFilter::New();
+        conFilter->SetInputData(geoFilter->GetOutput());
+        conFilter->GenerateValues(conLevel_, range[0], range[1]);
+        conFilter->ClippingOn();
+        conFilter->Modified();
+        conFilter->Update();
+
+    //cout<<"con num: "<<(conFilter->GetOutput())->GetNumberOfPoints()<<endl;
+
+
+    vtkDataSetMapper *mapper = vtkDataSetMapper::New();
+        /*mapper->InterpolateScalarsBeforeMappingOn();
+
+        if(_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+        {
+            //cout<<"test here 3333"<<endl;
+            mapper->SetInputConnection(conFilter->GetOutputPort());
+        }
+        else
+        {
+            mapper->SetInputConnection(geoFilter->GetOutputPort());
+        }
+        mapper->SetScalarRange(range[0],range[1]);
+
+        if (usedScalarIndex_ != -1)
+        {
+            if (_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+            {
+                mapper->SetScalarModeToUsePointData();
+            }
+            else
+            {
+                mapper->SetScalarModeToUseCellData();
+            }
+        }
+
+    vtkLookupTable *table = (vtkLookupTable*)mapper->GetLookupTable();
+        table->GetHueRange(range);
+        table->SetHueRange(range[1],range[0]);
+        table->SetNumberOfColors(conLevel_);*/
+    mapper->SetInputData(_source->unstruGrid);
+
+    vtkActor *actor = vtkActor::New();
+        actor->SetMapper(mapper);actor->GetProperty()->SetColor(1,0,0);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor(actor);
+    }
+
+    sliceActors_[0] = actor;
+
+    //sliceTable_[0] = table;
+
+    bandedContourFilter_ = conFilter;
+}
+
+/*
+* @brief: Show On UnSlice Display(显示UNslice)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnUnSliceContourDisplay()
+{
+    if (sliceActors_[0] != NULL)
+    {
+        sliceActors_[0]->VisibilityOn();
+    }
+}
+
+/*
+* @brief: Show Off UnSlice Display(关闭UNslice显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffUnSliceContourDisplay()
+{
+    if (sliceActors_[0] != NULL)
+    {
+
+        sliceActors_[0]->VisibilityOff();
+
+    }
+}
+
+/*
+* @brief: Delete UnSlice Display(删除UNslice显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::DeleteUnSliceContourDisplay()
+{
+    if (sliceActors_[0] != NULL)
+    {
+        sliceActors_[0]->VisibilityOff();
+
+        if (_renderer != NULL)
+        {
+            _renderer->RemoveActor(sliceActors_[0]);
+        }
+
+        sliceActors_[0]->Delete();
+    }
+}
+
+/*
+* @brief: Create UnSlice Contour Lines Display(创建取消切片等高线显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceContourLinesDisplay()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    double range[2];
+    if (usedScalarIndex_ != -1)
+    {
+        range[0] = _source->scalarRange[usedScalarIndex_][0];
+        range[1] = _source->scalarRange[usedScalarIndex_][1];
+    }
+    else
+    {
+        range[0] = 0;
+        range[1] = 0;
+    }
+
+    vtkContourFilter *conFilter = vtkContourFilter::New();
+        conFilter->SetInputConnection(cutSource_->GetOutputPort());
+        conFilter->GenerateValues(conLevel_, range[0],range[1]);
+        conFilter->Update();
+
+    vtkDataSetMapper *mapper = vtkDataSetMapper::New();
+        mapper->InterpolateScalarsBeforeMappingOn();
+        mapper->SetInputConnection(conFilter->GetOutputPort());
+        mapper->SetScalarRange(range[0],range[1]);
+
+        if (usedScalarIndex_ != -1)
+        {
+            if (_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+            {
+                mapper->SetScalarModeToUsePointData();
+            }
+            else
+            {
+                mapper->SetScalarModeToUseCellData();
+            }
+        }
+
+    vtkLookupTable *table = (vtkLookupTable*)mapper->GetLookupTable();
+        table->GetHueRange(range);
+        table->SetHueRange(range[1],range[0]);
+        table->SetNumberOfColors(conLevel_);
+
+    vtkActor *actor = vtkActor::New();
+        actor->SetMapper(mapper);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor(actor);
+    }
+
+    contourLinesFilter_ = conFilter;
+    /*if (sliceMapper_ != NULL)
+    {
+        sliceMapper_->AddItem (mapper);
+    }*/
+    sliceActors_[1] = actor;
+    sliceTable_[1] = table;
+}
+
+/*
+* @brief: Show On UnSlice Contour Lines Display(等高线显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnUnSliceContourLinesDisplay()
+{
+    if(sliceActors_[1] != NULL)
+    {
+        sliceActors_[1]->VisibilityOn();
+    }
+}
+
+/*
+* @brief: Show On UnSlice Contour Lines Display(关闭等高线显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffUnSliceContourLinesDisplay()
+{
+    if(sliceActors_[1] != NULL)
+    {
+        sliceActors_[1]->VisibilityOff();
+    }
+}
+
+/*
+* @brief: Delete UnSlice Contour Lines Display(删除等高线显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::DeleteUnSliceCOntourLinesDisplay()
+{
+    if (sliceActors_[1] != NULL)
+    {
+        sliceActors_[1]->VisibilityOff();
+
+        if (_renderer != NULL)
+        {
+            _renderer->RemoveActor(sliceActors_[1]);
+        }
+
+        sliceActors_[1]->Delete();
+    }
+}
+
+/*
+* @brief: Create UnSlice Contour Lines Label Display(创建UNslice等高线标签显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceContourLinesLabelDisplay()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    double range[2];
+    if (usedScalarIndex_ != -1)
+    {
+        range[0] = _source->scalarRange[usedScalarIndex_][0];
+        range[1] = _source->scalarRange[usedScalarIndex_][1];
+    }
+    else
+    {
+        range[0] = 0;
+        range[1] = 0;
+    }
+
+
+    vtkContourFilter *labelFilter = vtkContourFilter::New();
+        labelFilter->SetInputConnection(cutSource_->GetOutputPort());
+        labelFilter->GenerateValues(conLevel_, range[0],range[1]);
+        labelFilter->Update();
+
+    int numPoints = labelFilter->GetOutput()->GetNumberOfPoints();
+    vtkMaskPoints *mask = vtkMaskPoints::New();
+        mask->SetInputConnection(labelFilter->GetOutputPort());
+        mask->SetOnRatio((double)numPoints/conLevel_);
+        mask->SetMaximumNumberOfPoints(50);
+        mask->RandomModeOn();
+
+    vtkSelectVisiblePoints *visPoints = vtkSelectVisiblePoints::New();
+        visPoints->SetInputConnection(mask->GetOutputPort());
+        visPoints->SetRenderer(_renderer);
+
+    vtkLabeledDataMapper *mapper = vtkLabeledDataMapper::New();
+        mapper->GlobalWarningDisplayOff();
+        mapper->SetInputConnection(mask->GetOutputPort());
+        mapper->SetLabelModeToLabelScalars();
+        mapper->GetLabelTextProperty()->SetFontFamilyToArial();
+        mapper->GetLabelTextProperty()->SetFontSize(10);
+        mapper->GetLabelTextProperty()->SetColor(1,1,1);
+
+    vtkActor2D *actor = vtkActor2D::New();
+        actor->SetMapper(mapper);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor2D(actor);
+    }
+
+    contourLabelFilter_ = labelFilter;
+    sliceActors_[2] = (vtkActor*) actor;
+    /*if (sliceMapper_ != NULL)
+    {
+        sliceMapper_->AddItem (mapper);
+    }*/
+    sliceTable_[2] = NULL;
+
+}
+
+/*
+* @brief: Show on UnSlice Contour Lines Label Display(打开UNslice等高线标签显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnUnSliceContourLinesLabelDisplay()
+{
+    if(sliceActors_[2] != NULL)
+    {
+        sliceActors_[2]->VisibilityOn();
+    }
+}
+
+/*
+* @brief: Show off UnSlice Contour Lines Label Display(关闭UNslice等高线标签显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffUnSliceContourLinesLabelDisplay()
+{
+    if(sliceActors_[2] != NULL)
+    {
+        sliceActors_[2]->VisibilityOff();
+    }
+}
+
+/*
+* @brief: delete UnSlice Contour Lines Label Display(删除UNslice等高线标签显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::DeleteUnSliceContourLinesLabelDisplay()
+{
+    if (sliceActors_[2] != NULL)
+    {
+        sliceActors_[2]->VisibilityOff();
+
+        if (_renderer != NULL)
+        {
+            _renderer->RemoveActor(sliceActors_[2]);
+        }
+
+        sliceActors_[2]->Delete();
+    }
+}
+
+/*
+* @brief: Create UnSlice Vector Display(创建UNslice矢量显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceVectorDisplay()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+   double range[2];
+    if (usedScalarIndex_ != -1)
+    {
+        range[0] = _source->scalarRange[usedScalarIndex_][0];
+        range[1] = _source->scalarRange[usedScalarIndex_][1];
+    }
+    else
+    {
+        range[0] = 0;
+        range[1] = 0;
+    }
+
+    vtkGlyphSource2D *glyph2D = vtkGlyphSource2D::New();
+        glyph2D->SetGlyphTypeToArrow();
+        glyph2D->SetScale(1.0);
+        glyph2D->SetScale2(1.5);
+        glyph2D->SetCenter(0, 0, 0);
+        glyph2D->FilledOff();
+
+    vtkGlyph3D *glyph3D = vtkGlyph3D::New();
+        glyph3D->SetInputConnection(cutSource_->GetOutputPort());
+        glyph3D->SetSourceData(glyph2D->GetOutput());
+        glyph3D->ScalingOn();
+        glyph3D->ClampingOn();
+        glyph3D->GeneratePointIdsOff();
+        glyph3D->SetIndexModeToOff();
+        glyph3D->SetVectorModeToUseVector();
+        glyph3D->SetScaleFactor(0.2);
+
+    vtkDataSetMapper *mapper = vtkDataSetMapper::New();
+        mapper->SetInputData(glyph3D->GetOutput());
+        mapper->SetScalarRange(range[0], range[1]);
+        mapper->InterpolateScalarsBeforeMappingOn();
+
+        if (usedScalarIndex_ != -1)
+        {
+            if (_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+            {
+                mapper->SetScalarModeToUsePointData();
+            }
+            else
+            {
+                mapper->SetScalarModeToUseCellData();
+            }
+        }
+
+    vtkLookupTable *table = (vtkLookupTable*)mapper->GetLookupTable();
+        table->GetHueRange(range);
+        table->SetHueRange(range[1], range[0]);
+        table->SetNumberOfColors(conLevel_);
+
+    vtkActor *actor = vtkActor::New();
+        actor->SetMapper(mapper);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor(actor);
+    }
+    /*if (sliceMapper_ != NULL)
+    {
+        sliceMapper_->AddItem (mapper);
+    }*/
+    sliceActors_[3] = actor;
+    sliceTable_[3] = table;
+    sliceGlyph2D_ = glyph2D;
+    sliceGlyph3D_ = glyph3D;
+
+}
+
+/*
+* @brief: show on UnSlice Vector Display(打开UNslice矢量显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnUnSliceVectorDisplay()
+{
+    if(sliceActors_[3] != NULL)
+    {
+        sliceActors_[3]->VisibilityOn();
+    }
+}
+
+/*
+* @brief: show off UnSlice Vector Display(关闭UNslice矢量显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffUnSliceVectorDisplay()
+{
+    if(sliceActors_[3] != NULL)
+    {
+        sliceActors_[3]->VisibilityOff();
+    }
+}
+
+/*
+* @brief: Delete UnSlice Vector Display(删除UNslice矢量显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::DeleteUnSliceVectorDisplay()
+{
+    if (sliceActors_[3] != NULL)
+    {
+        sliceActors_[3]->VisibilityOff();
+
+        if (_renderer != NULL)
+        {
+            _renderer->RemoveActor(sliceActors_[3]);
+        }
+
+        sliceActors_[3]->Delete();
+    }
+}
+
+/*
+* @brief: Create UnSlice Shade Display(创建UnSlice着色显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceShadeDisplay()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    vtkGeometryFilter *geoFilter=vtkGeometryFilter::New();
+        geoFilter->SetInputData(cutSource_->GetOutput());
+
+    vtkDataSetMapper *mapper=vtkDataSetMapper::New();
+        mapper->SetInputConnection(geoFilter->GetOutputPort());
+        mapper->ScalarVisibilityOff();
+
+    vtkActor *actor=vtkActor::New();
+        actor->SetMapper(mapper);
+        actor->GetProperty()->SetColor(shadeColor_[0], shadeColor_[1], shadeColor_[2]);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor(actor);
+    }
+
+    if (sliceMapper_ != NULL)
+    {
+        sliceMapper_->AddItem (mapper);
+    }
+    sliceTable_[4] = NULL;
+    sliceActors_[4] = actor;
+
+}
+
+/*
+* @brief: Modify UnSlice Shade Color(修改UnSlice着色颜色)
+* @param: c0-r c1-g c2-b
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceShadeColor(double c0, double c1, double c2)
+{
+    if (sliceActors_[4]!=NULL)
+    {
+        shadeColor_[0] = c0;
+        shadeColor_[1] = c1;
+        shadeColor_[2] = c2;
+
+        (sliceActors_[4]->GetProperty())->SetColor(c0, c1, c2);
+    }
+}
+
+/*
+* @brief: show on UnSlice Shade Color(打开UnSlice着色颜色)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnUnSliceShade()
+{
+    if(sliceActors_[4] != NULL)
+    {
+        sliceActors_[4]->VisibilityOn();
+    }
+}
+
+/*
+* @brief: show off UnSlice Shade Color(关闭UnSlice着色颜色)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffUnSliceShade()
+{
+    if(sliceActors_[4] != NULL)
+    {
+        sliceActors_[4]->VisibilityOff();
+    }
+}
+
+/*
+* @brief: Create UnSlice Mesh Display(创建unslice网格显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceMeshDisplay()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    vtkGeometryFilter *geoFilter=vtkGeometryFilter::New();
+        geoFilter->SetInputData(cutSource_->GetOutput());
+
+    vtkDataSetMapper *mapper=vtkDataSetMapper::New();
+        mapper->SetInputConnection(geoFilter->GetOutputPort());
+        mapper->ScalarVisibilityOff();
+
+    vtkActor *actor=vtkActor::New();
+        actor->SetMapper(mapper);
+        actor->GetProperty()->SetColor(meshColor_[0], meshColor_[1], meshColor_[2]);
+        (actor->GetProperty())->SetRepresentationToWireframe();
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor(actor);
+    }
+
+    if (sliceMapper_ != NULL)
+    {
+        sliceMapper_->AddItem (mapper);
+    }
+    sliceTable_[5] = NULL;
+    sliceActors_[5] = actor;
+}
+
+/*
+* @brief: Modify UnSlice Mesh Color(修改unslice网格显示)
+* @param: c0-r c1-g c2-b
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceMeshColor(double c0, double c1, double c2)
+{
+    if (sliceActors_[5]!=NULL)
+    {
+        shadeColor_[0] = c0;
+        shadeColor_[1] = c1;
+        shadeColor_[2] = c2;
+
+        (sliceActors_[5]->GetProperty())->SetColor(c0, c1, c2);
+    }
+}
+
+/*
+* @brief: show on UnSlice Mesh Color(打开unslice网格显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOnUnSliceMesh()
+{
+    if(sliceActors_[5] != NULL)
+    {
+        sliceActors_[5]->VisibilityOn();
+    }
+}
+
+/*
+* @brief: show off UnSlice Mesh Color(关闭unslice网格显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ShowOffUnSliceMesh()
+{
+    if(sliceActors_[5] != NULL)
+    {
+        sliceActors_[5]->VisibilityOff();
+    }
+}
+
+/*
+* @brief: Set UnSlice Contour Opacity(设置UnSlice轮廓不透明度)
+* @param: value -- opacity value
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetUnSliceContourOpacity(double value)
+{
+    if (sliceActors_[0] != NULL)
+    {
+        (sliceActors_[0]->GetProperty())->SetOpacity(value);
+    }
+}
+
+/*
+* @brief: Get UnSlice Contour Opacity(获取UnSlice轮廓不透明度)
+* @param: void
+* @ret: opacity value
+* @birth: created by czm in 20230326
+*/
+double vtkVISUnSlice::GetUnSliceContourOpacity()
+{
+    if (sliceActors_[0] != NULL)
+    {
+        return (sliceActors_[0]->GetProperty())->GetOpacity();
+    }
+    return NULL;
+}
+
+/*
+* @brief: Modify UnSlice Vector Color Mode(修改UnSlice矢量颜色模式)
+* @param: ColorByScale ColorByScalar ColorByVector
+* @ret: opacity value
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceVectorColorMode(char* mode)
+{
+
+    if (sliceGlyph3D_ != NULL)
+    {
+        if (strcmp(mode, "ColorByScale") == 0)
+        {
+            sliceGlyph3D_->SetColorModeToColorByScale();
+        }
+        else if (strcmp(mode, "ColorByScalar") == 0)
+        {
+            sliceGlyph3D_->SetColorModeToColorByScalar();
+        }
+        else if (strcmp(mode, "ColorByVector") == 0)
+        {
+            sliceGlyph3D_->SetColorModeToColorByVector();
+        }
+        else
+        {
+            sliceGlyph3D_->SetColorModeToColorByScalar();
+        }
+    }
+}
+
+/*
+* @brief: Modify UnSlice Vector Scale Mode(修改UnSlice矢量缩放模式)
+* @param: mode -- Scale mode "ScaleByScalar" "ScaleByVector" "ScaleByVectorComponents" "DataScalingOff"
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceVectorScaleMode(char* mode)
+{
+
+    if (sliceGlyph3D_ != NULL)
+    {
+        if (strcmp(mode, "ScaleByScalar") == 0)
+        {
+            sliceGlyph3D_->SetScaleModeToScaleByScalar();
+        }
+        else if (strcmp(mode, "ScaleByVectorComponents") == 0)
+        {
+            sliceGlyph3D_->SetScaleModeToScaleByVector();
+        }
+        else if (strcmp(mode, "ColorByVector") == 0)
+        {
+            sliceGlyph3D_->SetScaleModeToScaleByVectorComponents();
+        }
+        else if (strcmp(mode, "DataScalingOff") == 0)
+        {
+            sliceGlyph3D_->SetScaleModeToDataScalingOff ();
+        }
+        else
+        {
+            sliceGlyph3D_->SetScaleModeToScaleByScalar();
+        }
+    }
+}
+
+/*
+* @brief: Modify UnSlice Vector Scale factor(修改UnSlice矢量缩放因子)
+* @param: scale -- Scale factor
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceVectorScaleFactor(double scaleFactor)
+{
+
+    if (sliceGlyph3D_ != NULL)
+    {
+        sliceGlyph3D_->SetScaleFactor(scaleFactor);
+    }
+}
+
+/*
+* @brief: Set UnSlice Vector Filled On(将UnSlice矢量填充设置为打开)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetUnSliceVectorFilledOn()
+{
+    if (sliceGlyph2D_ != NULL)
+    {
+        sliceGlyph2D_->FilledOn();
+    }
+}
+
+/*
+* @brief: Set UnSlice Vector Filled Off(将UnSlice矢量填充设置为关闭)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetUnSliceVectorFilledOff()
+{
+    if (sliceGlyph2D_ != NULL)
+    {
+        sliceGlyph2D_->FilledOff();
+    }
+}
+
+/*
+* @brief: Modify UnSlice Vector Position(修改UNslice矢量位置)
+* @param: p0-x p1-y p2-z
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceVectorPosition(double p0, double p1, double p2)
+{
+
+    if (sliceGlyph2D_ != NULL)
+    {
+        sliceGlyph2D_->SetCenter(p0, p1, p2);
+    }
+}
+
+/*
+* @brief: Modify UnSlice Shade(修改UNslice着色)
+* @param: value -- opacity value
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceShadeOpacity(double value)
+{
+    if (sliceActors_[4] != NULL)
+    {
+        (sliceActors_[4]->GetProperty())->SetOpacity(value);
+    }
+}
+
+/*
+* @brief: Modify UnSlice Contour Level(修改UNslice等高线水准)
+* @param: level
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceContourLevel(int level)
+{
+    if (level < 2)
+    {
+        ErrorInfo(0, "Contour Level must be within range: 2 to 50!, Using the Min Level 2 insteading!");
+
+        level = 2;
+    }
+    if(level>MAXLEVEL)
+    {
+        ErrorInfo(0, "Contour Level must be within range: 2 to 50!, Using the Max Level 50 insteading!");
+
+        level = MAXLEVEL;
+    }
+
+    conLevel_ = level;
+
+    if (sliceTable_[0] != NULL)
+    {
+        sliceTable_[0]->SetNumberOfColors(conLevel_);
+    }
+
+    if(bandedContourFilter_ != NULL)
+    {
+        bandedContourFilter_->GenerateValues(conLevel_, scalarRange_[0], scalarRange_[1]);
+        bandedContourFilter_->ClippingOn();
+    }
+
+    if (contourLinesFilter_ != NULL)
+    {
+        contourLinesFilter_->GenerateValues(conLevel_, scalarRange_[0], scalarRange_[1]);
+    }
+
+    if (sliceTable_[1] != NULL)
+    {
+        sliceTable_[1]->SetNumberOfColors(conLevel_);
+    }
+
+    if (contourLabelFilter_!= NULL)
+    {
+        contourLabelFilter_->GenerateValues(conLevel_, scalarRange_[0], scalarRange_[1]);
+    }
+
+}
+
+/*
+* @brief: Modify UnSlice Vector Position(修改UNslice矢量位置)
+* @param: lineWidth -- line width
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceMeshLineWidth(double lineWidth)
+{
+    if (sliceActors_[5]!=NULL)
+    {
+        (sliceActors_[5]->GetProperty())->SetLineWidth(lineWidth);
+    }
+}
+
+/*
+* @brief: Modify UnSlice Lines Width(修改UNslice等高线宽度)
+* @param: lineWidth -- line width
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyUnSliceContourLinesWidth(double lineWidth)
+{
+    if (sliceActors_[1]!=NULL)
+    {
+        (sliceActors_[1]->GetProperty())->SetLineWidth(lineWidth);
+    }
+}
+
+/*
+* @brief: Get slice plane widget(获取切片平面小部件)
+* @param:   void
+* @ret: vtkImplicitPlaneWidget
+* @birth: created by czm in 20230326
+*/
+vtkImplicitPlaneWidget* vtkVISUnSlice::GetSlicePlaneWidget()
+{
+    if (planeWidget_ != NULL)
+    {
+        return this->planeWidget_;
+    }
+
+    return NULL;
+}
+
+/*
+* @brief: Get slice plane(获取切片平面)
+* @param:   void
+* @ret: vtkPlane
+* @birth: created by czm in 20230326
+*/
+vtkPlane* vtkVISUnSlice::GetSlicePlane()
+{
+    if(slicePlane_ != NULL)
+    {
+        return this->slicePlane_;
+    }
+
+    return NULL;
+}
+
+/*
+* @brief: Set Slice PlaneWidget Handle Size(设置切片平面小部件句柄大小)
+* @param: size
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifySlicePlaneWidgetHandleSize(double size)
+{
+    if (planeWidget_ != NULL)
+    {
+        planeWidget_->SetHandleSize(size);
+        planeWidget_->UpdatePlacement();
+    }
+}
+
+/*
+* @brief: Modify Display Scalar Range(修改显示标量范围)
+* @param: min Scalar max Scalar
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyDisplayScalarRange(double min,double max)
+{
+    scalarRange_[0] = min;
+    scalarRange_[1] = max;
+    if (min == max) {
+        return;
+    }
+
+    if(bandedContourFilter_ != NULL)
+    {
+        //cout<<"test here 4444"<<endl;
+
+        bandedContourFilter_->GenerateValues(conLevel_, min, max);
+        bandedContourFilter_->Modified();
+    }
+
+
+    for (int i= 0; i<6; i++)
+    {
+        if (i == 0 || i== 1 || i == 3)
+        {
+
+            if(sliceActors_[i] != NULL)
+            {
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->SetRange(min, max);
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->Modified();
+
+                (sliceActors_[i]->GetMapper())->SetScalarRange(min, max);
+                (sliceActors_[i]->GetMapper())->Modified();
+
+                sliceActors_[i]->Modified();
+
+            }
+        }
+    }
+}
+
+/*
+* @brief: Clipping On Slice Contour Display(切片轮廓显示上的剪裁)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ClippingOnSliceContourDisplay()
+{
+
+    if(bandedContourFilter_ != NULL)
+    {
+        bandedContourFilter_->GenerateValues(conLevel_, scalarRange_[0], scalarRange_[1] );
+        bandedContourFilter_->ClippingOn();
+        bandedContourFilter_->Modified();
+    }
+
+
+    for (int i= 0; i<6; i++)
+    {
+        if (i == 0 || i== 1 || i == 3)
+        {
+            if(sliceActors_[i] != NULL)
+            {
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->SetRange(scalarRange_[0], scalarRange_[1]);
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->Modified();
+
+                (sliceActors_[i]->GetMapper())->SetScalarRange(scalarRange_[0], scalarRange_[1]);
+                (sliceActors_[i]->GetMapper())->Modified();
+
+                sliceActors_[i]->Modified();
+
+            }
+        }
+    }
+}
+
+/*
+* @brief: Clipping Off Slice Contour Display(剪裁切片轮廓显示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ClippingOffSliceContourDisplay()
+{
+
+    if(bandedContourFilter_ != NULL)
+    {
+        bandedContourFilter_->GenerateValues(conLevel_, scalarRange_[0], scalarRange_[1] );
+        bandedContourFilter_->ClippingOff();
+        bandedContourFilter_->Modified();
+    }
+
+    for (int i= 0; i<6; i++)
+    {
+        if (i == 0 || i== 1 || i == 3)
+        {
+            if(sliceActors_[i] != NULL)
+            {
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->SetRange(scalarRange_[0], scalarRange_[1]);
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->Modified();
+
+                (sliceActors_[i]->GetMapper())->SetScalarRange(scalarRange_[0], scalarRange_[1]);
+                (sliceActors_[i]->GetMapper())->Modified();
+
+                sliceActors_[i]->Modified();
+            }
+        }
+    }
+}
+
+/*
+* @brief: Set slice source(设置切片源)
+* @param: uGrid:slice source.  yValue:slice value of y.
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+bool vtkVISUnSlice::SetBoundSliceSource(vtkUnstructuredGrid* uGrid , double yValue)
+{
+    if (uGrid==NULL)
+    {
+        return false;
+    }
+    uGrid->Modified();
+
+    double pBound[6];
+    uGrid->GetBounds(pBound);
+
+    if (yValue<pBound[2] || yValue>pBound[3])
+    {
+        return false;
+    }
+
+    vtkPlane *plane = vtkPlane::New();
+    double planeNormal[3];
+    planeNormal[0] = 0.0;
+    planeNormal[1] = 1.0;
+    planeNormal[2] = 0.0;
+    plane->SetNormal(planeNormal[0], planeNormal[1], planeNormal[2]);
+
+    double planeCoord[3];
+    planeCoord[0] = 0.0;
+    planeCoord[1] = yValue;
+    planeCoord[2] = 0.0;
+    plane->SetOrigin(planeCoord[0],planeCoord[1],planeCoord[2]);
+
+    vtkCutter *cutter = vtkCutter::New();
+    cutter->SetInputData(uGrid);
+    cutter->SetCutFunction(plane);
+    cutter->GenerateCutScalarsOff();
+    cutter->SetSortByToSortByCell();
+    cutter->Update();
+
+    vtkIdType n = cutter->GetOutput()->GetNumberOfPoints();
+    cutSource_  = cutter;
+    return true;
+}
+
+/*
+* @brief: Get max value of X,and Set the point data source.(获取X的最大值,然后设置点数据源。)
+* @param: Points:point data source. max value of X.
+* @ret: bool
+* @birth: created by czm in 20230326
+*/
+bool vtkVISUnSlice::GetXMaxPointData(double* xMax,vtkPoints* Points)
+{
+    cutSource_->Update();
+    vtkFloatArray* cutPointData = vtkFloatArray::New();
+    cutPointData->SetNumberOfComponents(1);
+
+    int pointNum = (cutSource_->GetOutput())->GetNumberOfPoints();
+    if (pointNum <= 0)
+    {
+        return false;
+    }
+
+    vtkDoubleArray* xVector = vtkDoubleArray::New();
+    double point[3];
+
+    for (int j=0; j<pointNum; j++)
+    {
+        (cutSource_->GetOutput())->GetPoint(j, point);
+        xVector->InsertNextValue(point[0]);
+        Points->InsertNextPoint(point[0],point[1],point[2]);
+    }
+    vtkSortDataArray::Sort(xVector);
+    //cout<<"x max ="<<xVector[xVector.size()-1]<<endl;
+    cutPointData->Modified();
+    (*xMax) = xVector->GetValue(xVector->GetMaxId());
+    return true;
+}
+
+/*
+* @brief: SetSliceSource_FD(设置切片源。)
+* @param: scalar vector
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::SetSliceSource_FD(char* scalar, char* vector)
+{
+    int index1 = -1;
+    int index2 = -1;
+
+    if(scalar != NULL)
+    {
+        index1 = _source->GetScalarIndex(scalar);
+    }
+    if(vector != NULL)
+    {
+        index2 = _source->GetVectorIndex(vector);
+    }
+
+    vtkUnstructuredGrid *unGrid = vtkUnstructuredGrid::New();
+        unGrid->DeepCopy(_source->unstruGrid);
+
+        if (index1 != -1)
+        {
+            usedScalarIndex_ = index1;
+
+            scalarSource_ = vtkDoubleArray::New();
+            if(_source->scalarSource[index1]->GetDataSize() != 0)
+            {
+                scalarSource_->DeepCopy(_source->scalarSource[index1]);
+                (unGrid->GetPointData())->SetScalars(scalarSource_);
+            }
+            else
+            {
+                scalarSource_->DeepCopy(_source->cellScalarSource_[index1]);
+                (unGrid->GetCellData())->SetScalars(scalarSource_);
+            }
+
+        }
+        if (index2 != -1)
+        {
+            usedVectorIndex_ = index2;
+
+            if(_source->vectorSource[index2]->GetDataSize() != 0)
+            {
+                (unGrid->GetPointData())->SetVectors(_source->vectorSource[index2]);
+            }
+            else
+            {
+                (unGrid->GetCellData())->SetVectors(_source->cellVectorSource_[index2]);
+            }
+        }
+        unGrid->Modified();
+
+    vtkPlane *plane = vtkPlane::New();
+        plane->SetNormal(planeNormal_[0], planeNormal_[1], planeNormal_[2]);
+
+    vtkCutter *cutter = vtkCutter::New();
+        cutter->SetInputData(unGrid);
+        cutter->SetCutFunction(plane);
+        cutter->GenerateCutScalarsOff();
+        cutter->SetSortByToSortByCell();
+        cutter->Update();
+
+        //cout<<"test here 1111"<<(cutter->GetOutput())->GetNumberOfPoints()<<endl;
+
+    gridSource_ = unGrid;
+    cutSource_ = cutter;
+    slicePlane_ =  plane;
+}
+
+/*
+* @brief:Create Slice Widget_FD(创造切片窗口)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateSliceWidget_FD()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+    double* bounds;
+    bounds = _source->GetSourceBounds();
+
+    planeOrigin_[0] = (bounds[0]+bounds[1])/2;
+    planeOrigin_[1] = (bounds[2]+bounds[3])/2;
+    planeOrigin_[2] = (bounds[4]+bounds[5])/2;
+
+    vtkImplicitPlaneWidget* planeWidget = vtkImplicitPlaneWidget::New();
+        planeWidget->SetInteractor(_renWin->GetInteractor());
+        planeWidget->SetPlaceFactor(1.0);
+
+        planeWidget->SetHandleSize(0.005);
+        planeWidget->SetDiagonalRatio(0.2);
+
+        planeWidget->GetPlane(slicePlane_);
+        planeWidget->SetInputData(cutSource_->GetOutput());
+
+        planeWidget->TubingOff();
+        //add begin
+        planeWidget->GetEdgesProperty()->SetLineWidth(2.0);
+        planeWidget->GetPlaneProperty()->SetColor(0.5, 0.5, 0.5);
+        planeWidget->GetPlaneProperty()->SetOpacity(0.5);
+        planeWidget->GetSelectedPlaneProperty()->SetOpacity(0.5);
+        planeWidget->OutlineTranslationOff();
+
+        planeWidget->PlaceWidget(bounds[0], bounds[1], bounds[2], bounds[3], bounds[4], bounds[5]);
+        planeWidget->SetOrigin(planeOrigin_[0], planeOrigin_[1], planeOrigin_[2]);
+        slicePlane_->SetOrigin(planeOrigin_[0], planeOrigin_[1], planeOrigin_[2]);
+        vtkFloatArray *arry = GetCutScalarData();
+        if (arry)  arry->GetRange(scalarRange_);
+        //add end
+        planeWidget->On();
+
+        planeWidget_ = planeWidget;
+
+        vtkCallbackCommand *cc = vtkCallbackCommand::New();
+            cc->SetCallback(GenerateSliceProData_FD);
+            cc->SetClientData(this);
+
+        planeWidget->AddObserver(vtkCommand::InteractionEvent, cc);
+}
+
+/*
+* @brief: GenerateSliceProData_FD(生成切片数据)
+* @param: vtkObject
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::GenerateSliceProData_FD(vtkObject *caller, unsigned long, void* obj, void *)
+{
+    vtkVISUnSlice* usObj = (vtkVISUnSlice*)obj;
+
+    if (usObj->planeWidget_ == NULL)
+    {
+        usObj->ErrorInfo(1,"Plane Widget Not Created");
+        return;
+    }
+    usObj->planeWidget_->GetPlane(usObj->slicePlane_);
+    //add begin. when cut plane moving, update the cut plane's scalar range
+    double r[2];
+    vtkFloatArray *arry = usObj->GetCutScalarData();
+    if (arry)  arry->GetRange(r);
+    usObj->ModifyDisplayScalarRange_FD(r[0], r[1]);
+    //add end
+}
+
+/*
+* @brief: Create UnSlice Contour Display_FD(创造切片等高线展示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceContourDisplay_FD()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    double range[2];
+    if (usedScalarIndex_ != -1)
+    {
+        //range[0] = _source->scalarRange[usedScalarIndex_][0];
+        //range[1]  = _source->scalarRange[usedScalarIndex_][1];
+        range[0]  = scalarRange_[0];   //use current cut plane's scalar range,
+        range[1]  = scalarRange_[1];   //instead of the whole input's scalar range.
+    }
+    else
+    {
+        range[0] = 0;
+        range[1] = 0;
+    }
+    cutSource_->Update();
+
+    vtkGeometryFilter *geoFilter = vtkGeometryFilter::New();
+        geoFilter->SetInputData(cutSource_->GetOutput());
+        geoFilter->Update();
+
+    vtkBandedPolyDataContourFilter *conFilter = vtkBandedPolyDataContourFilter::New();
+        conFilter->GlobalWarningDisplayOff();
+        conFilter->SetInputData(geoFilter->GetOutput());
+        conFilter->GenerateValues(conLevel_, range[0], range[1]);
+        conFilter->ClippingOn();
+        conFilter->Modified();
+        conFilter->Update();
+
+    vtkDataSetMapper *mapper = vtkDataSetMapper::New();
+        mapper->InterpolateScalarsBeforeMappingOn();
+
+        if(_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+        {
+            mapper->SetInputConnection(conFilter->GetOutputPort());
+        }
+        else
+        {
+            mapper->SetInputConnection(geoFilter->GetOutputPort());
+        }
+        mapper->SetScalarRange(range[0],range[1]);
+
+        if (usedScalarIndex_ != -1)
+        {
+            if (_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+            {
+                mapper->SetScalarModeToUsePointData();
+            }
+            else
+            {
+                mapper->SetScalarModeToUseCellData();
+            }
+        }
+
+    vtkLookupTable *table = (vtkLookupTable*)mapper->GetLookupTable();
+        table->GetHueRange(range);
+        table->SetHueRange(range[1],range[0]);
+        table->SetNumberOfColors(conLevel_);
+
+    vtkActor *actor = vtkActor::New();
+        actor->SetMapper(mapper);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor(actor);
+    }
+
+    sliceActors_[0] = actor;
+
+    sliceTable_[0] = table;
+
+    bandedContourFilter_ = conFilter;
+}
+
+/*
+* @brief: Create UnSlice Contour Lines Display_FD(创造切片等高线轮廓展示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceContourLinesDisplay_FD()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    double range[2];
+    if (usedScalarIndex_ != -1)
+    {
+        //range[0] = _source->scalarRange[usedScalarIndex_][0];
+        //range[1] = _source->scalarRange[usedScalarIndex_][1];
+        range[0]  = scalarRange_[0];   //use current cut plane's scalar range,
+        range[1]  = scalarRange_[1];   //instead of the whole input's scalar range.
+    }
+    else
+    {
+        range[0] = 0;
+        range[1] = 0;
+    }
+
+    vtkContourFilter *conFilter = vtkContourFilter::New();
+        conFilter->GlobalWarningDisplayOff();
+        conFilter->SetInputConnection(cutSource_->GetOutputPort());
+        conFilter->GenerateValues(conLevel_, range[0],range[1]);
+        conFilter->Update();
+
+    vtkDataSetMapper *mapper = vtkDataSetMapper::New();
+        mapper->InterpolateScalarsBeforeMappingOn();
+        mapper->SetInputConnection(conFilter->GetOutputPort());
+        mapper->SetScalarRange(range[0],range[1]);
+
+        if (usedScalarIndex_ != -1)
+        {
+            if (_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+            {
+                mapper->SetScalarModeToUsePointData();
+            }
+            else
+            {
+                mapper->SetScalarModeToUseCellData();
+            }
+        }
+
+    vtkLookupTable *table = (vtkLookupTable*)mapper->GetLookupTable();
+        table->GetHueRange(range);
+        table->SetHueRange(range[1],range[0]);
+        table->SetNumberOfColors(conLevel_);
+
+    vtkActor *actor = vtkActor::New();
+        actor->SetMapper(mapper);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor(actor);
+    }
+
+    contourLinesFilter_ = conFilter;
+    sliceActors_[1] = actor;
+    sliceTable_[1] = table;
+}
+
+/*
+* @brief: Create UnSlice Contour Lines Lable Display_FD(创造切片等高线轮廓标签展示)
+* @param: void
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::CreateUnSliceContourLinesLabelDisplay_FD()
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return;
+    }
+
+    double range[2];
+    if (usedScalarIndex_ != -1)
+    {
+        //range[0] = _source->scalarRange[usedScalarIndex_][0];
+        //range[1] = _source->scalarRange[usedScalarIndex_][1];
+        range[0]  = scalarRange_[0];   //use current cut plane's scalar range,
+        range[1]  = scalarRange_[1];   //instead of the whole input's scalar range.
+    }
+    else
+    {
+        range[0] = 0;
+        range[1] = 0;
+    }
+
+    vtkContourFilter *labelFilter = vtkContourFilter::New();
+        labelFilter->GlobalWarningDisplayOff();
+        labelFilter->SetInputConnection(cutSource_->GetOutputPort());
+        labelFilter->GenerateValues(conLevel_, range[0],range[1]);
+        labelFilter->Update();
+
+    int numPoints = labelFilter->GetOutput()->GetNumberOfPoints();
+    vtkMaskPoints *mask = vtkMaskPoints::New();
+        mask->SetInputConnection(labelFilter->GetOutputPort());
+        mask->SetOnRatio((double)numPoints/conLevel_);
+        mask->SetMaximumNumberOfPoints(50);
+        mask->RandomModeOn();
+
+    vtkSelectVisiblePoints *visPoints = vtkSelectVisiblePoints::New();
+        visPoints->SetInputConnection(mask->GetOutputPort());
+        visPoints->SetRenderer(_renderer);
+
+    vtkLabeledDataMapper *mapper = vtkLabeledDataMapper::New();
+        mapper->GlobalWarningDisplayOff();
+        mapper->SetInputConnection(mask->GetOutputPort());
+        mapper->SetLabelModeToLabelScalars();
+        mapper->GetLabelTextProperty()->SetFontFamilyToArial();
+        mapper->GetLabelTextProperty()->SetFontSize(10);
+        mapper->GetLabelTextProperty()->SetColor(1,1,1);
+
+    vtkActor2D *actor = vtkActor2D::New();
+        actor->SetMapper(mapper);
+
+    if (_renderer != NULL)
+    {
+        _renderer->AddActor2D(actor);
+    }
+
+    contourLabelFilter_ = labelFilter;
+    sliceActors_[2] = (vtkActor*) actor;
+    sliceTable_[2] = NULL;
+
+}
+
+/*
+* @brief:Modify Display Scalar Range_FD(修改展示标量范围)
+* @param: min and max scalar
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifyDisplayScalarRange_FD(double min,double max)
+{
+    scalarRange_[0] = min;
+    scalarRange_[1] = max;
+    if (min == max) {
+        return;
+    }
+
+    if(bandedContourFilter_ != NULL)
+    {
+        bandedContourFilter_->GenerateValues(conLevel_, min, max);
+        bandedContourFilter_->Modified();
+    }
+    //add begin. update contour lines/labels values
+    if (contourLinesFilter_ != NULL)
+    {
+        contourLinesFilter_->GenerateValues(conLevel_, min, max);
+        contourLinesFilter_->Modified();
+    }
+    if (contourLabelFilter_!= NULL)
+    {
+        contourLabelFilter_->GenerateValues(conLevel_, min, max);
+        contourLabelFilter_->Modified();
+    }
+    //add end
+
+    for (int i= 0; i<6; i++)
+    {
+        if (i == 0 || i== 1 || i == 3)
+        {
+
+            if(sliceActors_[i] != NULL)
+            {
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->SetRange(min, max);
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->Modified();
+
+                (sliceActors_[i]->GetMapper())->SetScalarRange(min, max);
+                (sliceActors_[i]->GetMapper())->Modified();
+
+                sliceActors_[i]->Modified();
+
+            }
+        }
+    }
+}
+
+/*
+* @brief:Modify slice scalar source_FD(修改切片标量源)
+* @param: scalar
+* @ret: void
+* @birth: created by czm in 20230326
+*/
+void vtkVISUnSlice::ModifySliceSourceScalar_FD(char* scalar)
+{
+    if (gridSource_ == NULL)
+    {
+        ErrorInfo(1,"Grid Source are not Setted!");
+        return;
+    }
+
+    int index = -1;
+    if(scalar != NULL)
+    {
+        index = _source->GetScalarIndex(scalar);
+    }
+    if (index == -1)
+    {
+        ErrorInfo(1,"Scalar data are not existed!");
+        return;
+    }
+    if (scalarSource_ != 0)
+    {
+        scalarSource_->Delete();
+        scalarSource_ = 0;
+    }
+    scalarSource_ = vtkDoubleArray::New();
+    if (_source->scalarSource[index]->GetDataSize() != 0)
+    {
+        scalarSource_->DeepCopy(_source->scalarSource[index]);
+        (gridSource_->GetPointData())->SetScalars(scalarSource_);
+    }
+    else
+    {
+        scalarSource_->DeepCopy(_source->cellScalarSource_[index]);
+        (gridSource_->GetCellData())->SetScalars(scalarSource_);
+    }
+    gridSource_->Modified();
+
+    usedScalarIndex_ = index;
+
+    vtkFloatArray *arry = GetCutScalarData();
+    if (arry)  arry->GetRange(scalarRange_);
+    //2011-05-10 zhuqin add begin.
+    if(bandedContourFilter_ != NULL)
+    {
+        bandedContourFilter_->GenerateValues(conLevel_, scalarRange_[0],scalarRange_[1]);
+        bandedContourFilter_->ClippingOn();
+        bandedContourFilter_->Modified();
+    }
+    if (contourLinesFilter_ != NULL)
+    {
+      contourLinesFilter_->GenerateValues(conLevel_, scalarRange_[0],scalarRange_[1]);
+      contourLinesFilter_->Modified();
+    }
+    if (contourLabelFilter_!= NULL)
+    {
+        contourLabelFilter_->GenerateValues(conLevel_, scalarRange_[0],scalarRange_[1]);
+        contourLabelFilter_->Modified();
+    }
+    //2011-05-10 zhuqin add end.
+
+
+    for (int i= 0; i<6; i++)
+    {
+        if (i == 0 || i== 1 || i == 3)
+        {
+            if(sliceActors_[i] != NULL)
+            {
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->SetRange(scalarRange_[0],scalarRange_[1]);
+                (sliceActors_[i]->GetMapper())->GetLookupTable()->Modified();
+
+                (sliceActors_[i]->GetMapper())->SetScalarRange(scalarRange_[0],scalarRange_[1]);
+
+                if (_source->scalarSource[usedScalarIndex_]->GetDataSize() != 0)
+                {
+                    (sliceActors_[i]->GetMapper())->SetScalarModeToUsePointData();
+                }
+                else
+                {
+                    (sliceActors_[i]->GetMapper())->SetScalarModeToUseCellData();
+                }
+
+                (sliceActors_[i]->GetMapper())->Modified();
+                sliceActors_[i]->Modified();
+            }
+        }
+
+    }
+
+}
+
+/*
+* @brief:Get Source Bounds_FD(获取源边界)
+* @param: bounds
+* @ret: bool
+* @birth: created by czm in 20230326
+*/
+bool vtkVISUnSlice::GetSourceBounds_FD(double *bounds)
+{
+    if (cutSource_ == NULL)
+    {
+        ErrorInfo(1,"Slice Source Not Set");
+        return false;
+    }
+    double *range = _source->GetSourceBounds();
+    for (int i = 0; i < 6; ++i)
+    {
+        bounds[i] = range[i];
+    }
+    return true;
 }

+ 149 - 146
CAE_Solution/src/visualization_VTK/vtkvisunslice.h

@@ -25,186 +25,189 @@
 #include <vtkBandedPolyDataContourFilter.h>
 #include <vtkGeometryFilter.h>
 #include <vtkFloatArray.h>
-
+//Class that manage slice rendering
+//
+//To CreateSliceDisplay(), you need to do these first \n
+// SetDataSource(), then SetSliceSource(),CreateSliceWidget()
 
 class vtkVISUnSlice :public vtkVISUnstructuredGridManager
 {
 public:
     static vtkVISUnSlice *New();
     vtkVISUnSlice();
-//    ~vtkVISUnSlice();
+    ~vtkVISUnSlice();
 
-//    void SetSliceSource(char* scalar, char* vector);
-//    void ModifySliceSourceScalar(char* scalar);
-//    void ModifySliceSourceVector(char* vector);
+    void SetSliceSource(char* scalar, char* vector);
+    void ModifySliceSourceScalar(char* scalar);
+    void ModifySliceSourceVector(char* vector);
 
-//    void CreateSliceWidget();
+    void CreateSliceWidget();
 
-//    void ShowOnSlicePlane();
-//    void ShowOffSlicePlane();
+    void ShowOnSlicePlane();
+    void ShowOffSlicePlane();
 
-//    void ShowOnSlicePlaneWidget();
-//    void ShowOffSlicePlaneWidget();
+    void ShowOnSlicePlaneWidget();
+    void ShowOffSlicePlaneWidget();
 
-//    void ModifySlicePlaneWidgetHandleSize(double size);
+    void ModifySlicePlaneWidgetHandleSize(double size);
 
-//    void SetSlicePlaneNormal(double nx, double ny, double nz);
-//    void SetSlicePlaneNormalToX();
-//    void SetSlicePlaneNormalToY();
-//    void SetSlicePlaneNormalToZ();
+    void SetSlicePlaneNormal(double nx, double ny, double nz);
+    void SetSlicePlaneNormalToX();
+    void SetSlicePlaneNormalToY();
+    void SetSlicePlaneNormalToZ();
 
-//    double* GetSlicePlaneNormal();
+    double* GetSlicePlaneNormal();
 
-//    void SetSlicePlaneOrigin(double ox, double oy, double oz);
-//    double* GetSlicePlaneOrigin();
+    void SetSlicePlaneOrigin(double ox, double oy, double oz);
+    double* GetSlicePlaneOrigin();
 
-//    //--------------------------------------------
-//    // 2011.01.08
+    //--------------------------------------------
+    // 2011.01.08
 
-//    //void CreateSliceDisplay();
-//    void CreateUnSliceContourDisplay();
-//    void ShowOnUnSliceContourDisplay();
-//    void ShowOffUnSliceContourDisplay();
-//    void DeleteUnSliceContourDisplay();
+    //void CreateSliceDisplay();
+    void CreateUnSliceContourDisplay();
+    void ShowOnUnSliceContourDisplay();
+    void ShowOffUnSliceContourDisplay();
+    void DeleteUnSliceContourDisplay();
 
-//    void CreateUnSliceContourLinesDisplay();
-//    void ShowOnUnSliceContourLinesDisplay();
-//    void ShowOffUnSliceContourLinesDisplay();
-//    void DeleteUnSliceCOntourLinesDisplay();
+    void CreateUnSliceContourLinesDisplay();
+    void ShowOnUnSliceContourLinesDisplay();
+    void ShowOffUnSliceContourLinesDisplay();
+    void DeleteUnSliceCOntourLinesDisplay();
 
 
-//    void CreateUnSliceContourLinesLabelDisplay();
-//    void ShowOnUnSliceContourLinesLabelDisplay();
-//    void ShowOffUnSliceContourLinesLabelDisplay();
-//    void DeleteUnSliceContourLinesLabelDisplay();
+    void CreateUnSliceContourLinesLabelDisplay();
+    void ShowOnUnSliceContourLinesLabelDisplay();
+    void ShowOffUnSliceContourLinesLabelDisplay();
+    void DeleteUnSliceContourLinesLabelDisplay();
 
 
-//    void CreateUnSliceVectorDisplay();
-//    void ShowOnUnSliceVectorDisplay();
-//    void ShowOffUnSliceVectorDisplay();
-//    void DeleteUnSliceVectorDisplay();
-
-
-//    void CreateUnSliceShadeDisplay();
-//    void ModifyUnSliceShadeColor(double c0, double c1, double c2);
-//    void ShowOnUnSliceShade();
-//    void ShowOffUnSliceShade();
-
-
-//    void CreateUnSliceMeshDisplay();
-//    void ModifyUnSliceMeshColor(double c0, double c1, double c2);
-//    void ShowOnUnSliceMesh();
-//    void ShowOffUnSliceMesh();
+    void CreateUnSliceVectorDisplay();
+    void ShowOnUnSliceVectorDisplay();
+    void ShowOffUnSliceVectorDisplay();
+    void DeleteUnSliceVectorDisplay();
+
+
+    void CreateUnSliceShadeDisplay();
+    void ModifyUnSliceShadeColor(double c0, double c1, double c2);
+    void ShowOnUnSliceShade();
+    void ShowOffUnSliceShade();
+
+
+    void CreateUnSliceMeshDisplay();
+    void ModifyUnSliceMeshColor(double c0, double c1, double c2);
+    void ShowOnUnSliceMesh();
+    void ShowOffUnSliceMesh();
 
 
-//    void SetUnSliceContourOpacity(double value);
-//    double GetUnSliceContourOpacity();
+    void SetUnSliceContourOpacity(double value);
+    double GetUnSliceContourOpacity();
 
-//    void ModifyUnSliceVectorColorMode(char* mode);
-//    void ModifyUnSliceVectorScaleMode(char* mode);
-//    void ModifyUnSliceVectorScaleFactor(double scale);
+    void ModifyUnSliceVectorColorMode(char* mode);
+    void ModifyUnSliceVectorScaleMode(char* mode);
+    void ModifyUnSliceVectorScaleFactor(double scale);
 
-//    void SetUnSliceVectorFilledOn();
-//    void SetUnSliceVectorFilledOff();
+    void SetUnSliceVectorFilledOn();
+    void SetUnSliceVectorFilledOff();
 
-//    void ModifyUnSliceVectorPosition(double d0, double d1, double d2);
+    void ModifyUnSliceVectorPosition(double d0, double d1, double d2);
 
-//    void ModifyUnSliceShadeOpacity(double value);
-//    void ModifyUnSliceMeshLineWidth(double lineWidth);
-//    void ModifyUnSliceContourLevel(int level);
+    void ModifyUnSliceShadeOpacity(double value);
+    void ModifyUnSliceMeshLineWidth(double lineWidth);
+    void ModifyUnSliceContourLevel(int level);
 
-//    void ModifyUnSliceContourLinesWidth(double lineWidth);
+    void ModifyUnSliceContourLinesWidth(double lineWidth);
 
-//    vtkImplicitPlaneWidget* GetSlicePlaneWidget();
-//    vtkPlane* GetSlicePlane();
+    vtkImplicitPlaneWidget* GetSlicePlaneWidget();
+    vtkPlane* GetSlicePlane();
 
 
-//    void WriteScalarVectorData(const char* FileName);
-//    vtkFloatArray* GetCutScalarData(void);
-//    /*
-//         * cutVector[index]
-//         * 0    v0
-//         * 1    v1
-//         * 2    v2
-//         */
-//    vtkFloatArray* GetCutVectorData(int index);
-//    vtkFloatArray* GetCutVectorData(void);
-//    /*
-//         * cutPointData[index]
-//         * 0    x
-//         * 1    y
-//         * 2    z
-//         */
-//    vtkFloatArray* GetCutPointData(int index);
+    void WriteScalarVectorData(const char* FileName);
+    vtkFloatArray* GetCutScalarData(void);
+    /*
+         * cutVector[index]
+         * 0    v0
+         * 1    v1
+         * 2    v2
+         */
+    vtkFloatArray* GetCutVectorData(int index);
+    vtkFloatArray* GetCutVectorData(void);
+    /*
+         * cutPointData[index]
+         * 0    x
+         * 1    y
+         * 2    z
+         */
+    vtkFloatArray* GetCutPointData(int index);
 
-//    //ZHUQin 2011.03.24
-//    void ModifyDisplayScalarRange(double min,double max);
-//    void ClippingOnSliceContourDisplay();
-//    void ClippingOffSliceContourDisplay();
-//    //add by HaoJingjing 2015.12.11 begin.
-//    bool SetBoundSliceSource(vtkUnstructuredGrid* uGrid,double y);
-//    bool GetXMaxPointData(double *xMax,vtkPoints* Points);
-//    //add by HaoJingjing 2015.12.11 end.
+    //ZHUQin 2011.03.24
+    void ModifyDisplayScalarRange(double min,double max);
+    void ClippingOnSliceContourDisplay();
+    void ClippingOffSliceContourDisplay();
+    //add by HaoJingjing 2015.12.11 begin.
+    bool SetBoundSliceSource(vtkUnstructuredGrid* uGrid,double y);
+    bool GetXMaxPointData(double *xMax,vtkPoints* Points);
+    //add by HaoJingjing 2015.12.11 end.
 
-//    ///////
-//    void SetSliceSource_FD(char* scalar, char* vector);
-//    void CreateSliceWidget_FD();
-//    static void GenerateSliceProData_FD(vtkObject *caller, unsigned long, void *, void *);
-//    void CreateUnSliceContourDisplay_FD();
-//    void CreateUnSliceContourLinesDisplay_FD();
-//    void CreateUnSliceContourLinesLabelDisplay_FD();
-//    void ModifyDisplayScalarRange_FD(double min,double max);
-//    void ModifySliceSourceScalar_FD(char* scalar);
-//    bool GetSourceBounds_FD(double *bounds);
-//    ///////
-//protected:
-
-//    double planeNormal_[3];
-//    double planeOrigin_[3];
-
-//    int conLevel_;
-//    int usedScalarIndex_;
-//    int usedVectorIndex_;
-
-//    vtkUnstructuredGrid* gridSource_;
-//    vtkCutter* cutSource_;
-//    vtkActor* cutActor_;
-//    //vtkDataSetMapper* cutMapper_;
+    ///////
+    void SetSliceSource_FD(char* scalar, char* vector);
+    void CreateSliceWidget_FD();
+    static void GenerateSliceProData_FD(vtkObject *caller, unsigned long, void *, void *);
+    void CreateUnSliceContourDisplay_FD();
+    void CreateUnSliceContourLinesDisplay_FD();
+    void CreateUnSliceContourLinesLabelDisplay_FD();
+    void ModifyDisplayScalarRange_FD(double min,double max);
+    void ModifySliceSourceScalar_FD(char* scalar);
+    bool GetSourceBounds_FD(double *bounds);
+    ///////
+protected:
+
+    double planeNormal_[3];
+    double planeOrigin_[3];
+
+    int conLevel_;
+    int usedScalarIndex_;
+    int usedVectorIndex_;
+
+    vtkUnstructuredGrid* gridSource_;
+    vtkCutter* cutSource_;
+    vtkActor* cutActor_;
+    //vtkDataSetMapper* cutMapper_;
 
-//    double scalarRange_[2];
-//    vtkBandedPolyDataContourFilter* bandedContourFilter_;
-
-//    /*
-//         * sliceActor[blockIndex]
-//         * 0 contour
-//         * 1 contourlines
-//         * 2 contourlineslabel
-//         * 3 vector
-//         * 4 shade
-//         * 5 mesh
-//         */
-//    vtkActor** sliceActors_;
-//    vtkCollection* sliceMapper_;
-//    vtkLookupTable** sliceTable_;
-
-
-//    vtkContourFilter* contourLinesFilter_;
-//    vtkContourFilter* contourLabelFilter_;
-
-//    vtkGlyphSource2D* sliceGlyph2D_;
-//    vtkGlyph3D* sliceGlyph3D_;
-
-//    double shadeColor_[3];
-//    double meshColor_[3];
-
-
-//    vtkPlane* slicePlane_;
-//    vtkImplicitPlaneWidget* planeWidget_;
-//    static void GenerateSliceProData(vtkObject *caller, unsigned long, void *, void *);
-
-
-//private:
-//    vtkDoubleArray *scalarSource_;
+    double scalarRange_[2];
+    vtkBandedPolyDataContourFilter* bandedContourFilter_;
+
+    /*
+         * sliceActor[blockIndex]
+         * 0 contour
+         * 1 contourlines
+         * 2 contourlineslabel
+         * 3 vector
+         * 4 shade
+         * 5 mesh
+         */
+    vtkActor** sliceActors_;
+    vtkCollection* sliceMapper_;
+    vtkLookupTable** sliceTable_;
+
+
+    vtkContourFilter* contourLinesFilter_;
+    vtkContourFilter* contourLabelFilter_;
+
+    vtkGlyphSource2D* sliceGlyph2D_;
+    vtkGlyph3D* sliceGlyph3D_;
+
+    double shadeColor_[3];
+    double meshColor_[3];
+
+
+    vtkPlane* slicePlane_;
+    vtkImplicitPlaneWidget* planeWidget_;
+    static void GenerateSliceProData(vtkObject *caller, unsigned long, void *, void *);
+
+
+private:
+    vtkDoubleArray *scalarSource_;
 };
 
 #endif // VTKVISUNSLICE_H

+ 3 - 1
CAE_Solution/tests/tests.pro

@@ -2,5 +2,7 @@ TEMPLATE = subdirs
 
 SUBDIRS += \
     gmsh_test \
-    QVTKRender_test
+    QVTKRender_test \
+    QThread_test
+
 

Some files were not shown because too many files changed in this diff