diff --git a/VirtualRobot/Import/MeshImport/AssimpReader.cpp b/VirtualRobot/Import/MeshImport/AssimpReader.cpp
index dbe01e17a72418dbae2b7d59aa3d7a3e12f36e34..9f58c8d155a1b92a24d32973a8fe96ef09f7d482 100644
--- a/VirtualRobot/Import/MeshImport/AssimpReader.cpp
+++ b/VirtualRobot/Import/MeshImport/AssimpReader.cpp
@@ -1,3 +1,5 @@
+#include <filesystem>
+
 #include "AssimpReader.h"
 #include <VirtualRobot/Visualization/TriMeshModel.h>
 #include <VirtualRobot/ManipulationObject.h>
@@ -170,6 +172,24 @@ namespace VirtualRobot
         }();
         return extensions;
     }
+    bool AssimpReader::can_load(const std::string& file)
+    {
+        std::filesystem::path p{file};
+        if (!p.has_extension())
+        {
+            return false;
+        }
+        std::string ext = p.extension().string().substr(1);
+        for (auto& c : ext)
+        {
+            c = std::toupper(c);
+        }
+        if (ext.empty())
+        {
+            return false;
+        }
+        return get_extensions().find(ext) != std::string::npos;
+    }
 
     bool AssimpReader::readFileAsTriMesh(const std::string& filename, const TriMeshModelPtr& t)
     {
diff --git a/VirtualRobot/Import/MeshImport/AssimpReader.h b/VirtualRobot/Import/MeshImport/AssimpReader.h
index 1de2490d988788f7bbf8acdcb03ac65a777bd6a4..2dfbe866aa4ca1d8bb7088939d18205dd17df3ab 100644
--- a/VirtualRobot/Import/MeshImport/AssimpReader.h
+++ b/VirtualRobot/Import/MeshImport/AssimpReader.h
@@ -21,6 +21,7 @@ namespace VirtualRobot
             return "Open Asset Import Library";
         }
         static std::string get_extensions();
+        static bool can_load(const std::string& file);
 
         // read data and store it to trimesh
         bool readFileAsTriMesh(const std::string& _filename, const TriMeshModelPtr& t);