Use current selection to determine proposed filename when exporting to stl files
This commit is contained in:
parent
369cdd8b3b
commit
6197f48321
3 changed files with 37 additions and 15 deletions
|
@ -556,18 +556,8 @@ std::string Model::propose_export_file_name_and_path() const
|
||||||
for (const ModelObject *model_object : this->objects)
|
for (const ModelObject *model_object : this->objects)
|
||||||
for (ModelInstance *model_instance : model_object->instances)
|
for (ModelInstance *model_instance : model_object->instances)
|
||||||
if (model_instance->is_printable()) {
|
if (model_instance->is_printable()) {
|
||||||
input_file = model_object->input_file;
|
input_file = model_object->get_export_filename();
|
||||||
if (! model_object->name.empty()) {
|
|
||||||
if (input_file.empty())
|
|
||||||
// model_object->input_file was empty, just use model_object->name
|
|
||||||
input_file = model_object->name;
|
|
||||||
else {
|
|
||||||
// Replace file name in input_file with model_object->name, but keep the path and file extension.
|
|
||||||
input_file = (boost::filesystem::path(model_object->name).parent_path().empty()) ?
|
|
||||||
(boost::filesystem::path(input_file).parent_path() / model_object->name).make_preferred().string() :
|
|
||||||
model_object->name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!input_file.empty())
|
if (!input_file.empty())
|
||||||
goto end;
|
goto end;
|
||||||
// Other instances will produce the same name, skip them.
|
// Other instances will produce the same name, skip them.
|
||||||
|
@ -1433,6 +1423,26 @@ void ModelObject::print_info() const
|
||||||
cout << "volume = " << mesh.volume() << endl;
|
cout << "volume = " << mesh.volume() << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string ModelObject::get_export_filename() const
|
||||||
|
{
|
||||||
|
std::string ret = input_file;
|
||||||
|
|
||||||
|
if (!name.empty())
|
||||||
|
{
|
||||||
|
if (ret.empty())
|
||||||
|
// input_file was empty, just use name
|
||||||
|
ret = name;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Replace file name in input_file with name, but keep the path and file extension.
|
||||||
|
ret = (boost::filesystem::path(name).parent_path().empty()) ?
|
||||||
|
(boost::filesystem::path(ret).parent_path() / name).make_preferred().string() : name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void ModelVolume::set_material_id(t_model_material_id material_id)
|
void ModelVolume::set_material_id(t_model_material_id material_id)
|
||||||
{
|
{
|
||||||
m_material_id = material_id;
|
m_material_id = material_id;
|
||||||
|
|
|
@ -275,6 +275,8 @@ public:
|
||||||
// Print object statistics to console.
|
// Print object statistics to console.
|
||||||
void print_info() const;
|
void print_info() const;
|
||||||
|
|
||||||
|
std::string get_export_filename() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Print;
|
friend class Print;
|
||||||
friend class SLAPrint;
|
friend class SLAPrint;
|
||||||
|
|
|
@ -1840,8 +1840,18 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type)
|
||||||
|
|
||||||
// Update printbility state of each of the ModelInstances.
|
// Update printbility state of each of the ModelInstances.
|
||||||
this->update_print_volume_state();
|
this->update_print_volume_state();
|
||||||
|
|
||||||
|
const Selection& selection = get_selection();
|
||||||
|
int obj_idx = selection.get_object_idx();
|
||||||
|
|
||||||
|
fs::path output_file;
|
||||||
|
// first try to get the file name from the current selection
|
||||||
|
if ((0 <= obj_idx) && (obj_idx < (int)this->model.objects.size()))
|
||||||
|
output_file = this->model.objects[obj_idx]->get_export_filename();
|
||||||
|
|
||||||
|
if (output_file.empty())
|
||||||
// Find the file name of the first printable object.
|
// Find the file name of the first printable object.
|
||||||
fs::path output_file = this->model.propose_export_file_name_and_path();
|
output_file = this->model.propose_export_file_name_and_path();
|
||||||
|
|
||||||
wxString dlg_title;
|
wxString dlg_title;
|
||||||
switch (file_type) {
|
switch (file_type) {
|
||||||
|
|
Loading…
Reference in a new issue