Browse Source

add unit lable && modified box ui to drag

master
cflin 2 years ago
parent
commit
1daa84d062
  1. 14
      src/static_sim/SimTargetOption.cpp
  2. 3
      src/static_sim/SimTargetOption.h
  3. 2
      src/viewer/StaticSimGUI.cpp
  4. 1
      src/viewer/StaticSimGUI.h
  5. 30
      src/viewer/StaticSimGUIMenu.cpp

14
src/static_sim/SimTargetOption.cpp

@ -4,7 +4,7 @@
#include <string>
#include "SimTargetOption.h"
namespace ssim{
const std::string SimTargetOption::TAEGET_NAME[SimTargetOption::ENUM_SIZE] = {
const std::string SimTargetOption::TARGET_NAME[SimTargetOption::ENUM_SIZE] = {
"位移范数",
"位移-X",
"位移-Y",
@ -16,4 +16,16 @@ namespace ssim{
"应力-Z",
"柔顺度"
};
const std::string SimTargetOption::TARGET_UNIT[SimTargetOption::ENUM_SIZE] = {
"m",
"m",
"m",
"m",
"Pa",
"Pa",
"Pa",
"Pa",
"Pa",
"J"
};
};

3
src/static_sim/SimTargetOption.h

@ -12,7 +12,8 @@ namespace ssim {
enum Target {
U_NORM = 0, UX, UY, UZ, S_NORM, S_VON_Mises,/*primary stress*/SX, SY, SZ, COMPLIANCE, ENUM_SIZE
};
static const std::string TAEGET_NAME[ENUM_SIZE];
static const std::string TARGET_NAME[ENUM_SIZE];
static const std::string TARGET_UNIT[ENUM_SIZE];
SimTargetOption(int init_state = 1) : state(init_state) {}

2
src/viewer/StaticSimGUI.cpp

@ -65,7 +65,7 @@ namespace ssim {
ImGui::SetNextWindowSizeConstraints(ImVec2(menu_width, -1.0f), ImVec2(menu_width, -1.0f));
bool _viewer_menu_visible = true;
ImGui::Begin(
SimTargetOption::TAEGET_NAME[gui_ctrl_.target_to_evaluate].c_str(),
SimTargetOption::TARGET_NAME[gui_ctrl_.target_to_evaluate].c_str(),
&_viewer_menu_visible,
ImGuiWindowFlags_NoSavedSettings
| ImGuiWindowFlags_AlwaysAutoResize

1
src/viewer/StaticSimGUI.h

@ -65,6 +65,7 @@ namespace ssim {
void draw_colorbar(){
auto colorbar_menu=[&](){
ImGui::TextWrapped(("单位: "+ SimTargetOption::TARGET_UNIT[gui_ctrl_.target_to_evaluate]).c_str());
static ColorbarPlugin color_plugin;
color_plugin.draw_colorbar_jet(gui_ctrl_.colorbar_bd.xmin,gui_ctrl_.colorbar_bd.xmax);
};

30
src/viewer/StaticSimGUIMenu.cpp

@ -55,10 +55,13 @@ namespace ssim {
std::vector<float> v_max_point = {(float) i_DBC.relMaxBBox.x(),
(float) i_DBC.relMaxBBox.y(),
(float) i_DBC.relMaxBBox.z()};
if (ImGui::InputFloat3(("Dirichlet最小值 " + std::to_string(i + 1)).c_str(),
v_min_point.data()) ||
ImGui::InputFloat3(("Dirichlet最大值 " + std::to_string(i + 1)).c_str(),
v_max_point.data())) {
static bool is_drag[2];
ImGui::PushItemWidth(-80);
is_drag[0]= ImGui::DragFloat3(("最小值 " + std::to_string(i + 1)+"##Dir").c_str(),v_min_point.data(),0.01,0.0,1.0,"%.3f");
is_drag[1]= ImGui::DragFloat3(("最大值 " + std::to_string(i + 1)+"##Dir").c_str(),v_max_point.data(),0.01,0.0,1.0,"%.3f");
ImGui::PopItemWidth();
if (is_drag[0] || is_drag[1]) {
gui_ctrl_.is_modified = true;
i_DBC.relMinBBox = {v_min_point[0], v_min_point[1], v_min_point[2]};
i_DBC.relMaxBBox = {v_max_point[0], v_max_point[1], v_max_point[2]};
@ -83,18 +86,17 @@ namespace ssim {
(float) i_NBC.relMaxBBox.z()};
std::vector<float> v_force = {(float) i_NBC.force.x(), (float) i_NBC.force.y(),
(float) i_NBC.force.z()};
if (
ImGui::InputFloat3(("Neumann最小值 " + std::to_string(i + 1)).c_str(),
v_min_point.data()) ||
ImGui::InputFloat3(("Neumann最大值 " + std::to_string(i + 1)).c_str(),
v_max_point.data()) ||
ImGui::InputFloat3(("Neumann力 " + std::to_string(i + 1)).c_str(),
v_force.data())) {
static bool is_drag[3];
ImGui::PushItemWidth(-80);
is_drag[0]= ImGui::DragFloat3(("最小值 " + std::to_string(i + 1)+"##Neu").c_str(),v_min_point.data(),0.01,0.0,1.0,"%.3f");
is_drag[1]= ImGui::DragFloat3(("最大值 " + std::to_string(i + 1)+"##Neu").c_str(),v_max_point.data(),0.01,0.0,1.0,"%.3f");
is_drag[2]= ImGui::DragFloat3(("" + std::to_string(i + 1)+" (N)"+"##Neu").c_str(),v_force.data(),1,-1e10,1e10,"%.3f");
ImGui::PopItemWidth();
if (is_drag[0] || is_drag[1] || is_drag[2]) {
gui_ctrl_.is_modified = true;
i_NBC.relMinBBox = {v_min_point[0], v_min_point[1], v_min_point[2]};
i_NBC.relMaxBBox = {v_max_point[0], v_max_point[1], v_max_point[2]};
i_NBC.force = {v_force[0], v_force[1], v_force[2]};
}
}
if (gui_ctrl_.is_modified) {
@ -109,7 +111,7 @@ namespace ssim {
if (ImGui::CollapsingHeader("材料设置", ImGuiTreeNodeFlags_DefaultOpen)) {
static const int item_width=200;
ImGui::SetNextItemWidth(item_width);
ImGui::InputFloat("杨氏模量", &sp_StaticSim_->get_material_property().Youngs_Modulus, 1.0f, 2e11f,
ImGui::InputFloat("杨氏模量 (Pa)", &sp_StaticSim_->get_material_property().Youngs_Modulus, 1.0f, 2e11f,
"%.2e");
ImGui::SetNextItemWidth(item_width);
@ -117,7 +119,7 @@ namespace ssim {
"%.3f");
ImGui::SetNextItemWidth(item_width);
ImGui::InputFloat("密度", &sp_StaticSim_->get_material_property().density, 1.0f, 1000.0f, "%.3f");
ImGui::InputFloat("密度 (kg/m^3)", &sp_StaticSim_->get_material_property().density, 1.0f, 1000.0f, "%.3f");
}
if (ImGui::Button(("原始模型"), ImVec2(-1, 0))) {

Loading…
Cancel
Save