#include #include "stdafx.h" #include "vtkInterface.h" #include "SigmaView.h" #include "Util.h" KevVtkDataNode::KevVtkDataNode() { m_sceneParameter = nullptr; } static void CopyVtkParameters(const VtkSceneParameterSettings& src, KevVtkSceneParameter& dest) { // general dest.m_showAxies = src.m_showAxies; dest.m_showScalarBar = src.m_showScalarBar; dest.m_showMeshLinearExtrusion = src.m_showMeshLinearExtrusion; dest.m_ShowCoordinateGridLine = src.m_ShowCoordinateGridLine; dest.m_ShowMeshEdgeColorGradient = src.m_ShowMeshEdgeColorGradient; dest.m_zScale = src.m_zScale; // background dest.m_background_color_r = src.m_background_color_r; dest.m_background_color_g = src.m_background_color_g; dest.m_background_color_b = src.m_background_color_b; // camera dest.m_camera_distance = src.m_camera_distance; dest.m_camera_position_x = src.m_camera_position_x; dest.m_camera_position_y = src.m_camera_position_y; dest.m_camera_position_z = src.m_camera_position_z; dest.m_camera_focalPoint_x = src.m_camera_focalPoint_x; dest.m_camera_focalPoint_y = src.m_camera_focalPoint_y; dest.m_camera_focalPoint_z = src.m_camera_focalPoint_z; dest.m_camera_viewUp_x = src.m_camera_viewUp_x; dest.m_camera_viewUp_y = src.m_camera_viewUp_y; dest.m_camera_viewUp_z = src.m_camera_viewUp_z; dest.m_camera_azimuth = src.m_camera_azimuth; dest.m_camera_elevation = src.m_camera_elevation; dest.m_camera_roll = src.m_camera_roll; dest.m_camera_viewAngle = src.m_camera_viewAngle; dest.m_camera_clippingRange_0 = src.m_camera_clippingRange_0; dest.m_camera_clippingRange_1 = src.m_camera_clippingRange_1; // actor dest.m_actor_ambientColor_r = src.m_actor_ambientColor_r; dest.m_actor_ambientColor_g = src.m_actor_ambientColor_g; dest.m_actor_ambientColor_b = src.m_actor_ambientColor_b; dest.m_actor_diffuseColor_r = src.m_actor_diffuseColor_r; dest.m_actor_diffuseColor_g = src.m_actor_diffuseColor_g; dest.m_actor_diffuseColor_b = src.m_actor_diffuseColor_b; dest.m_actor_specularColor_r = src.m_actor_specularColor_r; dest.m_actor_specularColor_g = src.m_actor_specularColor_g; dest.m_actor_specularColor_b = src.m_actor_specularColor_b; dest.m_actor_ambient = src.m_actor_ambient; dest.m_actor_diffuse = src.m_actor_diffuse; dest.m_actor_specular = src.m_actor_specular; // light dest.m_light_mode = src.m_light_mode; dest.m_light_intensity = src.m_light_intensity; dest.m_light_color_r = src.m_light_color_r; dest.m_light_color_g = src.m_light_color_g; dest.m_light_color_b = src.m_light_color_b; dest.m_light_ambientColor_r = src.m_light_ambientColor_r; dest.m_light_ambientColor_g = src.m_light_ambientColor_g; dest.m_light_ambientColor_b = src.m_light_ambientColor_b; dest.m_light_diffuseColor_r = src.m_light_diffuseColor_r; dest.m_light_diffuseColor_g = src.m_light_diffuseColor_g; dest.m_light_diffuseColor_b = src.m_light_diffuseColor_b; dest.m_light_specularColor_r = src.m_light_specularColor_r; dest.m_light_specularColor_g = src.m_light_specularColor_g; dest.m_light_specularColor_b = src.m_light_specularColor_b; dest.m_light_position_x = src.m_light_position_x; dest.m_light_position_y = src.m_light_position_y; dest.m_light_position_z = src.m_light_position_z; dest.m_light_focalPoint_x = src.m_light_focalPoint_x; dest.m_light_focalPoint_y = src.m_light_focalPoint_y; dest.m_light_focalPoint_z = src.m_light_focalPoint_z; dest.m_light_azimuth = src.m_light_azimuth; dest.m_light_elevation = src.m_light_elevation; // vtk mesh edge color dest.m_mesh_edge_color_r = src.m_mesh_edge_color_r; dest.m_mesh_edge_color_g = src.m_mesh_edge_color_g; dest.m_mesh_edge_color_b = src.m_mesh_edge_color_b; dest.m_mesh_edge_mode = src.m_mesh_edge_mode; dest.m_singularValueFilterFlag = src.m_singularValueFilterFlag; dest.m_singularThreshold = src.m_singularThreshold; dest.m_zMaxScale = src.m_zMaxScale; dest.m_thickness = src.m_thickness; dest.m_wellMode = src.m_wellMode; dest.m_wellColumnHeight = src.m_wellColumnHeight; dest.m_wellColumnRadius = src.m_wellColumnRadius; dest.m_wellColumnColor = src.m_wellColumnColor; dest.m_wellColumnNameColor = src.m_wellColumnNameColor; dest.m_wellColumnNameSize = src.m_wellColumnNameSize; dest.m_wellColumnNameGap = src.m_wellColumnNameGap; dest.m_faultModeEnum = src.m_faultModeEnum; if (src.m_wellTypeColors != nullptr) { CString wellTypeColors(CW2A(src.m_wellTypeColors)); dest.m_wellTypeColors = std::string(wellTypeColors.GetString()); } dest.m_wellColumnThrough = src.m_wellColumnThrough; dest.m_wellSymbalRadius = src.m_wellSymbalRadius; } static void CopyVtkParameters(const KevVtkSceneParameter& src, VtkSceneParameterSettings& dest) { // general dest.m_showAxies = src.m_showAxies; dest.m_showScalarBar = src.m_showScalarBar; dest.m_showMeshLinearExtrusion = src.m_showMeshLinearExtrusion; dest.m_ShowCoordinateGridLine = src.m_ShowCoordinateGridLine; dest.m_ShowMeshEdgeColorGradient = src.m_ShowMeshEdgeColorGradient; dest.m_zScale = src.m_zScale; // background dest.m_background_color_r = src.m_background_color_r; dest.m_background_color_g = src.m_background_color_g; dest.m_background_color_b = src.m_background_color_b; // camera dest.m_camera_distance = src.m_camera_distance; dest.m_camera_position_x = src.m_camera_position_x; dest.m_camera_position_y = src.m_camera_position_y; dest.m_camera_position_z = src.m_camera_position_z; dest.m_camera_focalPoint_x = src.m_camera_focalPoint_x; dest.m_camera_focalPoint_y = src.m_camera_focalPoint_y; dest.m_camera_focalPoint_z = src.m_camera_focalPoint_z; dest.m_camera_viewUp_x = src.m_camera_viewUp_x; dest.m_camera_viewUp_y = src.m_camera_viewUp_y; dest.m_camera_viewUp_z = src.m_camera_viewUp_z; dest.m_camera_azimuth = src.m_camera_azimuth; dest.m_camera_elevation = src.m_camera_elevation; dest.m_camera_roll = src.m_camera_roll; dest.m_camera_viewAngle = src.m_camera_viewAngle; dest.m_camera_clippingRange_0 = src.m_camera_clippingRange_0; dest.m_camera_clippingRange_1 = src.m_camera_clippingRange_1; // actor dest.m_actor_ambientColor_r = src.m_actor_ambientColor_r; dest.m_actor_ambientColor_g = src.m_actor_ambientColor_g; dest.m_actor_ambientColor_b = src.m_actor_ambientColor_b; dest.m_actor_diffuseColor_r = src.m_actor_diffuseColor_r; dest.m_actor_diffuseColor_g = src.m_actor_diffuseColor_g; dest.m_actor_diffuseColor_b = src.m_actor_diffuseColor_b; dest.m_actor_specularColor_r = src.m_actor_specularColor_r; dest.m_actor_specularColor_g = src.m_actor_specularColor_g; dest.m_actor_specularColor_b = src.m_actor_specularColor_b; dest.m_actor_ambient = src.m_actor_ambient; dest.m_actor_diffuse = src.m_actor_diffuse; dest.m_actor_specular = src.m_actor_specular; // light dest.m_light_mode = src.m_light_mode; dest.m_light_intensity = src.m_light_intensity; dest.m_light_color_r = src.m_light_color_r; dest.m_light_color_g = src.m_light_color_g; dest.m_light_color_b = src.m_light_color_b; dest.m_light_ambientColor_r = src.m_light_ambientColor_r; dest.m_light_ambientColor_g = src.m_light_ambientColor_g; dest.m_light_ambientColor_b = src.m_light_ambientColor_b; dest.m_light_diffuseColor_r = src.m_light_diffuseColor_r; dest.m_light_diffuseColor_g = src.m_light_diffuseColor_g; dest.m_light_diffuseColor_b = src.m_light_diffuseColor_b; dest.m_light_specularColor_r = src.m_light_specularColor_r; dest.m_light_specularColor_g = src.m_light_specularColor_g; dest.m_light_specularColor_b = src.m_light_specularColor_b; dest.m_light_position_x = src.m_light_position_x; dest.m_light_position_y = src.m_light_position_y; dest.m_light_position_z = src.m_light_position_z; dest.m_light_focalPoint_x = src.m_light_focalPoint_x; dest.m_light_focalPoint_y = src.m_light_focalPoint_y; dest.m_light_focalPoint_z = src.m_light_focalPoint_z; dest.m_light_azimuth = src.m_light_azimuth; dest.m_light_elevation = src.m_light_elevation; // vtk mesh edge color dest.m_mesh_edge_color_r = src.m_mesh_edge_color_r; dest.m_mesh_edge_color_g = src.m_mesh_edge_color_g; dest.m_mesh_edge_color_b = src.m_mesh_edge_color_b; dest.m_mesh_edge_mode = src.m_mesh_edge_mode; dest.m_singularValueFilterFlag = src.m_singularValueFilterFlag; dest.m_singularThreshold = src.m_singularThreshold; dest.m_zMaxScale = src.m_zMaxScale; dest.m_thickness = src.m_thickness; dest.m_wellMode = src.m_wellMode; dest.m_wellColumnHeight = src.m_wellColumnHeight; dest.m_wellColumnRadius = src.m_wellColumnRadius; dest.m_wellColumnColor = src.m_wellColumnColor; dest.m_wellColumnNameColor = src.m_wellColumnNameColor; dest.m_wellColumnNameSize = src.m_wellColumnNameSize; dest.m_wellColumnNameGap = src.m_wellColumnNameGap; dest.m_faultModeEnum = src.m_faultModeEnum; CString wellTypeColors = CString(src.m_wellTypeColors.c_str()); dest.m_wellTypeColors = wellTypeColors.AllocSysString(); dest.m_wellColumnThrough = src.m_wellColumnThrough; dest.m_wellSymbalRadius = src.m_wellSymbalRadius; } /** * 获取三维参数 * * \param pView 图件 * \param parameter 参数 */ extern "C" __declspec(dllexport) KevVtkSceneParameter* Vtk_GetSceneParameter(CSigmaView* pView) { ASSERT(pView != nullptr); if (pView->m_pDoc->m_pXy->vtkSceneParameterSettings) { auto* parameter = new KevVtkSceneParameter(); CopyVtkParameters(*(pView->m_pDoc->m_pXy->vtkSceneParameterSettings), *parameter); return parameter; } return nullptr; } /** * 设置三维参数 * * \param pView 图件 * \param parameter 参数 */ extern "C" __declspec(dllexport) void Vtk_SetSceneParameter(CSigmaView* pView, KevVtkSceneParameter* parameter) { ASSERT(pView != nullptr); if (parameter != nullptr) { auto* settings = new VtkSceneParameterSettings(); CopyVtkParameters(*parameter, *settings); pView->m_pDoc->m_pXy->vtkSceneParameterSettings.reset(settings); } else { pView->m_pDoc->m_pXy->vtkSceneParameterSettings.reset(); } } /** * 获取三维配置明细,主要是提供给 C# 用的 * * \param pView 图件 * \param parameter 出参,获取到的参数 * \return */ extern "C" __declspec(dllexport) bool Vtk_GetSceneParameterDetails(CSigmaView* pView, VtkSceneParameterSettings& parameter) { ASSERT(pView != nullptr); auto& settings = pView->m_pDoc->m_pXy->vtkSceneParameterSettings; if (settings) { parameter = *settings; return true; } return false; }