Reject .f3d import with a STEP redirect hint

Fusion 360 .f3d uses Autodesk's closed ShapeManager kernel — no offline
reader exists and it is input-only even in Autodesk's own cloud API, so
native import/export is infeasible. Intercept .f3d at priv::load_files
(the single funnel for drag-drop and File > Open) and show a dialog
pointing the user to export STEP from Fusion, then load any other files
in the batch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BVzKmX6Y1aEteit1HTXG4Q
This commit is contained in:
Tommaso Bianchi
2026-06-30 15:00:05 +02:00
co-authored by Claude Opus 4.8
parent aa2907f730
commit 5ecb319dee
+21
View File
@@ -5872,6 +5872,27 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
if (input_files.empty())
return std::vector<size_t>();
// Fusion 360 .f3d cannot be opened: closed Autodesk ShapeManager kernel, no offline reader
// exists. Redirect the user to STEP (which we import natively). Skip any .f3d, load the rest.
{
bool any_f3d = false;
for (const auto& p : input_files)
if (boost::iends_with(p.string(), ".f3d")) { any_f3d = true; break; }
if (any_f3d) {
MessageDialog(static_cast<wxWindow*>(q),
_L("Fusion 360 .f3d files can't be opened directly — they use Autodesk's "
"closed file format, which no offline tool can read.\n\n"
"In Fusion 360, use File ▸ Export and choose STEP (.step), then open that "
"file here."),
_L("Unsupported format: .f3d"), wxOK | wxICON_INFORMATION).ShowModal();
std::vector<fs::path> kept;
for (const auto& p : input_files)
if (!boost::iends_with(p.string(), ".f3d")) kept.push_back(p);
if (kept.empty()) return std::vector<size_t>();
return load_files(kept, strategy, ask_multi);
}
}
if (!input_files.empty())
q->m_3mf_path = input_files[0].string();