--names for filtering included or excluded entities by name, e.g. --include --names "Wall Compound*"

This commit is contained in:
Stinkfist0
2016-03-10 21:15:50 +02:00
parent b9c5b0e6c8
commit e9f551ea71
3 changed files with 18 additions and 16 deletions
+15 -12
View File
@@ -87,12 +87,15 @@ void print_options(
const boost::optional<boost::program_options::options_description>& geom_options,
const boost::optional<boost::program_options::options_description>& serialization_options)
{
if (generic_options)
if (generic_options) {
std::cerr << "\nCommand line options\n" << generic_options;
if (geom_options)
}
if (geom_options) {
std::cerr << "\nGeometry options\n" << geom_options;
if (serialization_options)
}
if (serialization_options) {
std::cerr << "\nSerialization options\n" << serialization_options;
}
std::cerr << std::endl;
}
@@ -120,7 +123,7 @@ int main(int argc, char** argv) {
("input-file", boost::program_options::value<std::string>(), "input IFC file")
("output-file", boost::program_options::value<std::string>(), "output geometry file");
std::vector<std::string> entity_vector/*, names*/;
std::vector<std::string> entity_vector, names;
double deflection_tolerance;
boost::program_options::options_description geom_options;
geom_options.add_options()
@@ -171,12 +174,13 @@ int main(int argc, char** argv) {
("entities", boost::program_options::value< std::vector<std::string> >(&entity_vector)->multitoken(),
"A list of entities that should be included in or excluded from the "
"geometrical output, depending on whether --exclude or --include is specified. "
" Defaults to IfcOpeningElement and IfcSpace to be excluded. "
"Defaults to IfcOpeningElement and IfcSpace to be excluded. SVG output defaults "
"to IfcSpace to be included."
"The names are handled case-insensitively. Cannot be placed right before input file argument.")
/*("names", boost::program_options::value< std::vector<std::string> >(&names)->multitoken(),
("names", boost::program_options::value< std::vector<std::string> >(&names)->multitoken(),
"A list of names or wildcard patterns that should be included in or excluded from the "
"geometrical output, depending on whether --exclude or --include is specified. "
"The names are handled case-sensitively. Cannot be placed right before input file argument.")*/
"The names are handled case-sensitively. Cannot be placed right before input file argument.")
("no-normals",
"Disables computation of normals. Saves time and file size and is useful "
"in instances where you're going to recompute normals for the exported "
@@ -297,10 +301,9 @@ int main(int argc, char** argv) {
std::string output_extension = output_filename.substr(output_filename.size()-4);
boost::to_lower(output_extension);
// If no entities are specified these are the defaults to skip from output
if (entities.empty()) {
// If no entity or names filters are specified these are the defaults to skip from output
if (entities.empty() && names.empty()) {
entities.insert("IfcSpace");
/// @todo Document in --help that SVG uses "--include --entities IfcSpace" by default.
if (output_extension == ".svg") {
include_entities = true;
} else {
@@ -405,10 +408,10 @@ int main(int argc, char** argv) {
try {
if (include_entities) {
context_iterator.includeEntities(entities);
//context_iterator.include_entity_names(names);
context_iterator.include_entity_names(names);
} else {
context_iterator.excludeEntities(entities);
//context_iterator.exclude_entity_names(names);
context_iterator.exclude_entity_names(names);
}
} catch (const IfcParse::IfcException& e) {
std::cout << "[Error] " << e.what() << std::endl;
+3 -3
View File
@@ -276,7 +276,7 @@ namespace IfcGeom {
include_entities_in_processing = false;
}
// Arbitrary names or wildcard expressions are handled case-sensitively.
/// @note Arbitrary names or wildcard expressions are handled case-sensitively.
void include_entity_names(const std::vector<std::string>& names)
{
names_to_include_or_exclude.clear();
@@ -285,7 +285,7 @@ namespace IfcGeom {
include_entities_in_processing = true;
}
// Arbitrary names or wildcard expressions are handled case-sensitively.
/// @note Arbitrary names or wildcard expressions are handled case-sensitively.
void exclude_entity_names(const std::vector<std::string>& names)
{
names_to_include_or_exclude.clear();
@@ -346,7 +346,7 @@ namespace IfcGeom {
}
foreach(const boost::regex& r, names_to_include_or_exclude) {
if (boost::regex_match((*it)->Name(), r)) {
if (boost::regex_match((*jt)->Name(), r)) {
found = true;
break;
}
-1
View File
@@ -176,7 +176,6 @@ namespace IfcGeom {
std::vector<std::pair<int,int> > edges_temp;
const TColgp_Array1OfPnt& nodes = tri->Nodes();
/// @todo can these UVs be used for texture coordinates as is?
const TColgp_Array1OfPnt2d& uvs = tri->UVNodes();
std::vector<gp_XYZ> coords;
BRepGProp_Face prop(face);