7 changed files with 186 additions and 10 deletions
@ -0,0 +1,19 @@ |
|||
{ |
|||
"material": [1e5, 0.3, 1e3], |
|||
"mshFilePath": "/home/cflin/Documents/CppField/source/RigidElasticSim/sim-test/rigid-test/cube/cube_9743.msh", |
|||
|
|||
"DBC": [ |
|||
{ |
|||
"min": [-0.001, -0.001, -0.001], |
|||
"max": [1.001, 0.001, 1.001] |
|||
} |
|||
], |
|||
|
|||
"NBC": [ |
|||
{ |
|||
"min": [-0.001, 0.999, -0.001], |
|||
"max": [1.001, 1.001, 1.001], |
|||
"force": [-10, 0, 0] |
|||
} |
|||
] |
|||
} |
@ -0,0 +1,24 @@ |
|||
{ |
|||
"material": [1e5, 0.3, 1e3], |
|||
"mshFilePath": "/home/cflin/Documents/CppField/source/RigidElasticSim/sim-test/rigid-test/rearAxle-mod/rearAxle-mod_.msh", |
|||
|
|||
"DBC": [ |
|||
{ |
|||
"min": [-0.1, 0.4, -0.1], |
|||
"max": [0.6, 0.6, 1.1] |
|||
} |
|||
], |
|||
|
|||
"NBC": [ |
|||
{ |
|||
"min": [-0.1, 0.8, -0.1], |
|||
"max": [1.1, 1.1, 1.1], |
|||
"force": [1, 0, 0] |
|||
}, |
|||
{ |
|||
"min": [-0.1, -0.1, -0.1], |
|||
"max": [1.1, 0.2, 1.1], |
|||
"force": [1, 0, 0] |
|||
} |
|||
] |
|||
} |
@ -0,0 +1,19 @@ |
|||
{ |
|||
"material": [1e5, 0.3, 1e3], |
|||
"mshFilePath": "/home/cflin/Documents/CppField/source/RigidElasticSim/sim-test/rigid-test/rocker-arm/rocker-arm_.msh", |
|||
|
|||
"DBC": [ |
|||
{ |
|||
"min": [-0.001, 0.8, 0.8], |
|||
"max": [1.001, 1.1, 1.1] |
|||
} |
|||
], |
|||
|
|||
"NBC": [ |
|||
{ |
|||
"min": [-0.001, 0.25, -0.001], |
|||
"max": [1.001, 0.4, 0.1], |
|||
"force": [0, -10, 0] |
|||
} |
|||
] |
|||
} |
@ -0,0 +1,116 @@ |
|||
//
|
|||
// Created by cflin on 4/14/23.
|
|||
//
|
|||
|
|||
#ifndef EXAMPLE_UTIL_H |
|||
#define EXAMPLE_UTIL_H |
|||
#include <string> |
|||
#include <cstdio> |
|||
#include <cstring> |
|||
|
|||
#ifdef _WIN32 |
|||
#include <windows.h> |
|||
#include <Commdlg.h> |
|||
#endif |
|||
namespace ssim { |
|||
|
|||
inline std::string directory_dialog_save(){ |
|||
const int FILE_DIALOG_MAX_BUFFER = 1024; |
|||
char buffer[FILE_DIALOG_MAX_BUFFER]; |
|||
buffer[0] = '\0'; |
|||
buffer[FILE_DIALOG_MAX_BUFFER - 1] = 'x'; // Initialize last character with a char != '\0'
|
|||
|
|||
#ifdef __APPLE__ |
|||
// For apple use applescript hack
|
|||
// There is currently a bug in Applescript that strips extensions off
|
|||
// of chosen existing files in the "choose file name" dialog
|
|||
// I'm assuming that will be fixed soon
|
|||
FILE * output = popen( |
|||
"osascript -e \"" |
|||
" tell application \\\"System Events\\\"\n" |
|||
" activate\n" |
|||
" set existing_file to choose file name\n" |
|||
" end tell\n" |
|||
" set existing_file_path to (POSIX path of (existing_file))\n" |
|||
"\" 2>/dev/null | tr -d '\n' ","r"); |
|||
if (output) |
|||
{ |
|||
auto ret = fgets(buffer, FILE_DIALOG_MAX_BUFFER, output); |
|||
if (ret == NULL || ferror(output)) |
|||
{ |
|||
// I/O error
|
|||
buffer[0] = '\0'; |
|||
} |
|||
if (buffer[FILE_DIALOG_MAX_BUFFER - 1] == '\0') |
|||
{ |
|||
// File name too long, buffer has been filled, so we return empty string instead
|
|||
buffer[0] = '\0'; |
|||
} |
|||
} |
|||
#elif defined _WIN32 |
|||
|
|||
// Use native windows file dialog box
|
|||
// (code contributed by Tino Weinkauf)
|
|||
|
|||
OPENFILENAME ofn; // common dialog box structure
|
|||
char szFile[260]; // buffer for file name
|
|||
|
|||
// Initialize OPENFILENAME
|
|||
ZeroMemory(&ofn, sizeof(ofn)); |
|||
ofn.lStructSize = sizeof(ofn); |
|||
ofn.hwndOwner = NULL;//hwnd;
|
|||
ofn.lpstrFile = szDir; |
|||
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
|
|||
// use the contents of szFile to initialize itself.
|
|||
ofn.lpstrFile[0] = '\0'; |
|||
ofn.nMaxFile = sizeof(szDir); |
|||
ofn.lpstrFilter = ""; |
|||
ofn.nFilterIndex = 1; |
|||
ofn.lpstrFileTitle = NULL; |
|||
ofn.nMaxFileTitle = 0; |
|||
ofn.lpstrInitialDir = NULL; |
|||
ofn.Flags = OFN_PATHMUSTEXIST; |
|||
|
|||
// Display the Open dialog box.
|
|||
int pos = 0; |
|||
if (GetSaveFileName(&ofn)==TRUE) |
|||
{ |
|||
while(ofn.lpstrFile[pos] != '\0') |
|||
{ |
|||
buffer[pos] = (char)ofn.lpstrFile[pos]; |
|||
pos++; |
|||
} |
|||
buffer[pos] = 0; |
|||
} |
|||
|
|||
#else |
|||
// For every other machine type use zenity
|
|||
FILE * output = popen("/usr/bin/zenity --directory --file-selection --save","r"); |
|||
if (output) |
|||
{ |
|||
auto ret = fgets(buffer, FILE_DIALOG_MAX_BUFFER, output); |
|||
if (ret == NULL || ferror(output)) |
|||
{ |
|||
// I/O error
|
|||
buffer[0] = '\0'; |
|||
} |
|||
if (buffer[FILE_DIALOG_MAX_BUFFER - 1] == '\0') |
|||
{ |
|||
// File name too long, buffer has been filled, so we return empty string instead
|
|||
buffer[0] = '\0'; |
|||
} |
|||
} |
|||
|
|||
// Replace last '\n' by '\0'
|
|||
if(strlen(buffer) > 0) |
|||
{ |
|||
buffer[strlen(buffer)-1] = '\0'; |
|||
} |
|||
|
|||
#endif |
|||
return std::string(buffer); |
|||
} |
|||
|
|||
} // ssim
|
|||
|
|||
#endif //EXAMPLE_UTIL_H
|
Loading…
Reference in new issue