Jump to content
Ultimaker Community of 3D Printing Experts
Sign in to follow this  
pm_dude

SD Card - Sorting the list on UM2 screen

Recommended Posts

Hello,

A while ago someone said that he would like to sort the list of files and folder displayed in the UM2 print menu.

I've looked at the Marlin code for that a bit and no sorting is done at all. It really depend on when the file was placed on the card or in a given folder.

I didn't wanted to start making a sort directly in Marlin when we load the content of the folder since the browser is already slow when many files are present so I did a Python script that goes through the folders recursively and move the folders and files in order (sorted folder first, then sorted files) in and out of a temp folder just to force the FAT to be ordered. It doesnt change the modified date of the files.

Currently it works on Windows. I haven't padded much since it was just a quick test. The path to start the sort is set as root manually at the end. I don't think it would be safe enough at the moment for a wide distribution but if you want to test it out here is the code. The worst that can happen is that files or folders will be moved in a temp folder at the same level and wont be moved back.

 


import os
import tempfile
def SortContent(folder):
print "sorting content for", folder
content = os.listdir(folder)
tempdir = tempfile.mkdtemp(dir=folder)
content.sort()
for f in content:
realPath = os.path.join(folder, f)
if os.path.isdir(realPath):
tempPath = os.path.join(tempdir, f)
try:
os.rename(realPath, tempPath)
os.rename(tempPath, realPath)
except:
print "ERROR: Folder could not be sorted", realPath, tempPath

for f in content:
realPath = os.path.join(folder, f)
if not os.path.isdir(realPath):
tempPath = os.path.join(tempdir, f)
try:
os.rename(realPath, tempPath)
os.rename(tempPath, realPath)
except:
print "ERROR: File could not be sorted", realPath, tempPath

for f in content:
realPath = os.path.join(folder, f)
if os.path.isdir(realPath):
SortContent(realPath)
os.rmdir(tempdir)

root = r'I:\\'
SortContent(root)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Our picks

    • How to 3D print with reinforced engineering materials
      Ultimaker is hosting a webinar where we explain how you can achieve and maintain a high print success rate using these new reinforced engineering materials. Learn from Ultimaker's Product Manager of Materials and top chemical engineer Bart van As how you can take your 3D printing to that next level.
      • 0 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!