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