src/tools/lvr2_chunking/Options.cpp
Go to the documentation of this file.
1 
35 #include "Options.hpp"
36 
37 #include <iostream>
38 
39 namespace chunking
40 {
41 
42 using boost::program_options::command_line_parser;
43 using boost::program_options::value;
44 using std::cout;
45 using std::endl;
46 
47 Options::Options(int argc, char** argv) : m_descr("Supported options")
48 {
49  // Create option descriptions
50  m_descr.add_options()("help",
51  "Produce help message")("inputFile", value<std::vector<string>>()->multitoken(), "Input file names.")(
52  "outputDir", value<string>(), "Output directory name.")(
53  "chunkSize", value<float>()->default_value(10.0f), "Side length of chunks.")(
54  "maxChunkOverlap", value<float>()->default_value(0.1f),
55  "maximum allowed overlap between chunks relative to the chunk size.")(
56  "chunkedMesh", value<string>(), "Chunked mesh hdf5-file name.")(
57  "load", value<bool>()->default_value(false), "Set this value to true, if you want to load an hdf5-file")(
58  "x_min", value<float>()->default_value(0.0f), "bounding box minimum value in x-dimension")(
59  "y_min", value<float>()->default_value(0.0f), "bounding box minimum value in y-dimension")(
60  "z_min", value<float>()->default_value(0.0f), "bounding box minimum value in z-dimension")(
61  "x_max", value<float>()->default_value(10.0f), "bounding box maximum value in x-dimension")(
62  "y_max", value<float>()->default_value(10.0f), "bounding box maximum value in y-dimension")(
63  "z_max", value<float>()->default_value(10.0f), "bounding box maximum value in z-dimension")(
64  "cacheSize", value<int>()->default_value(200), "while loading the maximum number of chunks in RAM")(
65  "meshName", value<std::string>()->default_value(""), "group name of the mesh if the HDF5 contains multiple meshes");
66 
67  // Parse command line and generate variables map
68  store(command_line_parser(argc, argv).options(m_descr).positional(m_posDescr).run(),
69  m_variables);
70  notify(m_variables);
71 }
72 
73 bool Options::printUsage() const
74 {
75  if (m_variables.count("help"))
76  {
77  cout << m_descr << endl;
78  return true;
79  }
80 
81  if (!m_variables.count("inputFile") && !getLoad())
82  {
83  cout << "Error: You must specify an input file." << endl;
84  cout << endl;
85  cout << m_descr << endl;
86  return true;
87  }
88 
89  if(getLoad() && !m_variables.count("chunkedMesh"))
90  {
91  cout << "Error: You must specify an hdf5-file (\"chunkedMesh\") when loading." << endl;
92  cout << endl;
93  cout << m_descr << endl;
94  return true;
95  }
96 
97  return false;
98 }
99 
100 std::vector<string> Options::getInputFile() const
101 {
102 
103  return m_variables["inputFile"].as<std::vector<string>>();
104 }
105 
106 string Options::getOutputDir() const
107 {
108  return m_variables["outputDir"].as<string>();
109 }
110 
112 {
113  return m_variables["chunkSize"].as<float>();
114 }
115 
117 {
118  return m_variables["maxChunkOverlap"].as<float>();
119 }
121 {
122  return m_variables["chunkedMesh"].as<string>();
123 }
124 bool Options::getLoad() const
125 {
126  return m_variables["load"].as<bool>();
127 }
128 
129 float Options::getXMin() const
130 {
131  return m_variables["x_min"].as<float>();
132 }
133 float Options::getYMin() const
134 {
135  return m_variables["y_min"].as<float>();
136 }
137 float Options::getZMin() const
138 {
139  return m_variables["z_min"].as<float>();
140 }
141 float Options::getXMax() const
142 {
143  return m_variables["x_max"].as<float>();
144 }
145 float Options::getYMax() const
146 {
147  return m_variables["y_max"].as<float>();
148 }
149 float Options::getZMax() const
150 {
151  return m_variables["z_max"].as<float>();
152 }
154 {
155  int size = m_variables["cacheSize"].as<int>();
156  if(size > 0)
157  {
158  return size;
159  }
160  return 200;
161 }
162 std::string Options::getMeshGroup() const
163 {
164  return m_variables["meshName"].as<std::string>();
165 }
166 
168 {
169  // TODO Auto-generated destructor stub
170 }
171 
172 } // namespace chunking
float getChunkSize() const
Returns the side length of a chunk.
std::vector< std::string > getInputFile() const
Returns the input file.
bool printUsage() const
Prints a usage message to stdout.
float getXMax() const
Returns the x-max of the bounding box.
const kaboom::Options * options
string getChunkedMesh() const
Returns the chunked mesh file.
float getMaxChunkOverlap() const
Returns the maximum allowed chunk overlap.
variables_map m_variables
The internally used variable map.
int getCacheSize() const
Returns the cacheSize (maximum number of chunks in HashMap while loading)
float getZMin() const
Returns the z-min of the bounding box.
float getYMax() const
Returns the y-max of the bounding box.
options_description m_descr
The internally used option description.
float getXMin() const
Returns the x-min of the bounding box.
bool getLoad() const
Returns the load-flag. set to true for loading an existing hdf5-file and to false for chunking and sa...
Options(int argc, char **argv)
Ctor. Parses the command parameters given to the main function of the program.
positional_options_description m_posDescr
The internally used positional option description.
float getYMin() const
Returns the y-min of the bounding box.
string getOutputDir() const
Returns the output directory.
float getZMax() const
Returns the z-max of the bounding box.
std::string getMeshGroup() const
Returns the mesh group in the HDF5.
char ** argv


lvr2
Author(s): Thomas Wiemann , Sebastian Pütz , Alexander Mock , Lars Kiesow , Lukas Kalbertodt , Tristan Igelbrink , Johan M. von Behren , Dominik Feldschnieders , Alexander Löhr
autogenerated on Mon Feb 28 2022 22:46:08