Fix T97769: new OBJ exporter does not replace spaces in object names
The Python based exporter was replacing spaces with underscores in object/group names, mostly to handle cases where names could begin or end with spaces. The new exporter was not doing that. Note: spaces in material names were already handled by the new exporter. Fixes T97769. Updated test coverage expectations; one of the test files has an object with a space in the name.
This commit is contained in:
parent
ead8260a49
commit
89f0fedb5c
Notes:
blender-bot
2023-02-14 09:02:41 +01:00
Referenced by issue #97769, New OBJ exporter: is not replacing spaces with underscores in object names; the old one was
|
@ -179,13 +179,19 @@ void OBJWriter::write_mtllib_name(const StringRefNull mtl_filepath) const
|
|||
fh.write_to_file(outfile_);
|
||||
}
|
||||
|
||||
static void spaces_to_underscores(std::string &r_name)
|
||||
{
|
||||
std::replace(r_name.begin(), r_name.end(), ' ', '_');
|
||||
}
|
||||
|
||||
void OBJWriter::write_object_name(FormatHandler<eFileType::OBJ> &fh,
|
||||
const OBJMesh &obj_mesh_data) const
|
||||
{
|
||||
const char *object_name = obj_mesh_data.get_object_name();
|
||||
std::string object_name = obj_mesh_data.get_object_name();
|
||||
spaces_to_underscores(object_name);
|
||||
if (export_params_.export_object_groups) {
|
||||
const std::string object_name = obj_mesh_data.get_object_name();
|
||||
const char *mesh_name = obj_mesh_data.get_object_mesh_name();
|
||||
std::string mesh_name = obj_mesh_data.get_object_mesh_name();
|
||||
spaces_to_underscores(mesh_name);
|
||||
fh.write<eOBJSyntaxElement::object_group>(object_name + "_" + mesh_name);
|
||||
return;
|
||||
}
|
||||
|
@ -389,7 +395,8 @@ void OBJWriter::write_poly_elements(FormatHandler<eFileType::OBJ> &fh,
|
|||
mat_name = MATERIAL_GROUP_DISABLED;
|
||||
}
|
||||
if (export_params_.export_material_groups) {
|
||||
const std::string object_name = obj_mesh_data.get_object_name();
|
||||
std::string object_name = obj_mesh_data.get_object_name();
|
||||
spaces_to_underscores(object_name);
|
||||
fh.write<eOBJSyntaxElement::object_group>(object_name + "_" + mat_name);
|
||||
}
|
||||
buf.write<eOBJSyntaxElement::poly_usemtl>(mat_name);
|
||||
|
|
|
@ -290,7 +290,7 @@ TEST_F(obj_importer_test, import_nurbs_mesh)
|
|||
{
|
||||
Expectation expect[] = {
|
||||
{"OBCube", OB_MESH, 8, 12, 6, 24, float3(1, 1, -1), float3(-1, 1, 1)},
|
||||
{"OBTorus Knot",
|
||||
{"OBTorus_Knot",
|
||||
OB_MESH,
|
||||
108,
|
||||
108,
|
||||
|
|
Loading…
Reference in New Issue