Rhino WIP Feature: New Audit3dmFile…Graphically

What is Audit3dmFile?

The updated Audit3dmFile command in Rhino WIP presents an interactive “tree map” visualization showing the relative size of objects in the file.

Why is this useful?

Audit3dmFile allows you to see which objects (or data!) take up the most space on disk. Once identified, you can use the tree map (or the list) to select the object in the file.

Commands

  • Audit3dmFile

Try It

  1. Download the latest RhinoWIP and open your “favorite” 3dm file.
  2. Run Audit3dmFile and select the Audit This File option.
  3. Click on the largest rectangles in the Tree Map: those are the biggest objects in the file. Right-click to Select (or Zoom) to those objects in Rhino.

Please give it a try and report bugs, wishes, etc. Here are those we know about.

44 Likes

Cool!

Which has a Refresh button, would be good for Audit3dmFile as well.

The selection is not immediately visible in the viewport (not yellow).

After that, the selection is visible.


The filename of the tested 3dm in the titlebar would be nice.


Some blocks are clipped in the blocks section:


If an object is selected, and you resize the Audit3dmFile window, the yellow selection frame loses the correct position.
I now see that’s already known…

2 Likes

Agreed. Added to the list: RH-89393 Audit3dmFile: Refresh button (I had thought I’d already logged it, but I guess I hadn’t). Thanks for the reminder.

I think I know what’s causing this and it’s related to this item: RH-87790 Audit3dmFile: Do not render rectangles that are under a certain size
…which is really part of a broader issue I’m not sure how I’ll solve just yet: the issue of having 500,000 small (in bytes) items.

Got it. Logged here: RH-89394 Audit3dmFile: Add Filename to Title Bar

1 Like

that’s cool, reminds me of wiztree :smiley:

Wow - this is a great tool! Nice having more ways to develop insights into where the weight in geometries is coming from.

Speaking of WinDirStat, (and also SequoiaView), how crazy is it that in 2025 we still have to resort to these little known applications to get a global view of memory usage? (I know the technical justifications for it on OS’es, but it seems conspicuousnessly ignored in the tech wold at large)

Thanks for testing and the encouraging feedback. It definitely has a long way to go…there are loads of bugs when dealing with 3dm files with very large numbers of objects (which I actually think is fairly typical these days).

In these cases, my current approach will likely be to only render the top largest, say, thousand objects (rectangles) in the TreeMap, but allow you to zoom to the areas of the TreeMap if you like. We’ll see where the wheels fall off with that approach.

It’s also way too slow to Audit those files with a truly large number of objects right now…but we can fix that in time.

1 Like

When the Rhino file is not saved, AuditThisFile doesn’t work.
Natural, but a warning or hint would be good.


That’s not what I meant, instead it’s about the Rhino viewport, see here:

Also note that the Audit window vanished.

Hi Charles -
Thanks for the feedback.

RH-89409 Audit3dmFile: Audit Unsaved Open File

RH-89408 Audit3dmFile: Show Object as Selected in Viewport

That’s in the list of known issues → RH-89066 Audit3dmFile window does not stay on top, cannot be alt-tabbed

-wim

1 Like

Nobody tell Bob but I think I’m going to finally download wip 9 to play with this.

2 Likes

…which is really part of a broader issue I’m not sure how I’ll solve just yet: the issue of having 500,000 small (in bytes) items.

Maybe a single pseudo-block representing the total size of all objects below a certain size threshold? Throw a “small objects” label over it, maybe with the object count, or give it a different color to distinguish it from single-element blocks.

1 Like

I like that idea. Certainly easier to implement than a ZUI.

First time I ran the command on a 1.3 GB file Rhino crashed. I’ll try again soon :slight_smile:

2 Likes

Ok, new try with a 1.8 GB file

  1. What is Model User Data Table?

  2. Layer Table… it would be nice to have a full layer structure

  3. I see no option to export the data. Audit3dmFile has an option to SaveAs which would be nice here too.

2 Likes

Thanks for running it again Martin! Slowly, but surely, I’ll optimize for speed.

It contains all the plugin-specific “user data” goo - data that specific plugins can attach to objects, etc. I’ve been considering a way of breaking this out per-object - rather than per table - as sometimes that can identify a particular bloat issue that is item-specific, rather than plugin-specific.

I see. So even if “Layer with stuff” is actually a sublayer of Layer 01, Layer 01 would sort to the top, right? Instead of this?

Agreed. I thought I’d logged that one, but I think I’d forgotten… is this what you have in mind:
RH-89801 Audit3dmFile: Save As button on legacy audit log ?

1 Like

I meant it would be nice to see the layer path. In my files I always have child layers with identical names but different parents. The layer name itself does not tell me what it is or where it belongs to.

The layer table in the TestAudit3dmFile report also contains layer names from linked blocks. I don’t know how this should be handled.

3 Likes

Is there a way for handling files like this (so many lineworks) can object in groups show as a single object? not sure, but for this test file (with linked PDFs) It took over 10 minutes to populate:

2 Likes

Not yet, but this is on my list to fix…at the moment, this one captures the problem sort of

RH-87790 Audit3dmFile: Do not render rectangles that are under a certain size

but the proposed solution certainly does beg some questions when there’s lots of objects of small size.

2 Likes

this is awesome!

2 Likes

RH-89394 is fixed in Rhino WIP

1 Like

RH-89409 is fixed in Rhino WIP

1 Like