So you have a 3D design file and you only need to view it, you don’t like the idea of launching an entire 3D CAD program like FreeCAD, and you are on Linux. What do you do?
I’m giving you Mayo, an open-source viewer by Hugues Delorme, based on the OpenCASCADE kernel. You can inspect a 3D or a 2D design, explore its hierarchy, make plane sections, measure distances and surfaces, and export it to another file format. Let’s take a look at what’s available here.
As is usual in these cases, the article below is an edited transcript of the video.
Importing/Exporting
Mayo reads common exchange and delivery file formats: STEP, IGES, STL, glTF, OBJ, DXF, PLY, and OCCBREP (OpenSCASCADE B-REP). It also exports roughly the same file formats: plus VRML and image files (PNG, JPEG, TIFF etc.), minus DXF.
The next version of Mayo is coming with support for cloud points in PLY. There is also an experimental branch that adds support for the Open Asset Import Library, which would add about 40 more file formats to that, and then Hugues has been contemplating adding support for IFC for a while, which would be a huge deal in architecture.
Overall, it does take some time to open a model that is more complex than a simple 3D-printed part, especially if it has an assembly. This is mainly because the program will try to fix various inconsistencies it finds in the file.
Viewport Navigation
Mayo uses a simple navigation model where you rotate with the left mouse button and pan with the right mouse button. And it has two ways to zoom. If you want smaller steps, just rotate the mouse wheel. But if you want larger steps, press the left and the right mouse buttons at the same time and move the mouse up or down. If you zoomed in or out too much, click this button to fit the entire model into the viewport.
If you prefer a different navigation model, Mayo got you covered. Go to Tools > Options and choose a different navigation style. Apart from the native one, Mayo has presets for Catia, SolidWorks, Unigraphics, and ProEngineer.
Of course, Mayo also has the cube widget. You can grab it and make small rotations or double-click on cube’s faces to select a view preset. Another way to select a view preset is to click this button here to open a drop-down list:
Tree View
The tree view is where you see the hierarchy of a project and control the visibility of various parts of the design by toggling respective checkboxes. Selecting a part in the treeview selects it in the viewport and the opposite works just as well.
The treeview is also one of the two options where you can switch between multiple opened designs. You can single-click there to select a different design, or you can do it in the tab above the viewport.
Object Data
The area below the treeview displays information about the selected part of a design. There’s a name which is like an ID, a product name that can be more descriptive, then there’s the kind of a shape the part is, and its location in absolute units. And then the fun part is the material data. If the engineer who made this design specified material, you can see what it is and what density it has.
View styles
Mayo has different view styles for shapes and meshes. It’s all in the Display menu. You can switch to a wireframe mode where all lines are the same, or a wireframe mode where hidden lines have a dash pattern and a different color, or a shaded view without edges. And yes, the default style where you get a shaded view with edges. If Mayo ever gets to have a toolbar, these are some of the options I’d expect it to have there.
Plane sections
A very nice feature that Mayo has is doing a section on one or multiple planes. To do that, click this button, select a plane to dissect and then either drag the slider or use numeric input. You can easily tell which part of the design is clipped by this diagonal line pattern.
You can do a section on multiple planes at the same time. And you can create your custom plane and do a section on it.
I think it would be useful to control the position of a section directly in the viewport, so maybe that’s one possible improvement the developer would be willing to make.
Assemblies
If the design has an assembly, you can click here and drag the slider to control how far apart everything goes:
Unlike sections, this view change is preserved even if you close the slider to control the assembly view.
Measure tool
Mayo also features a measure tool that you can enable by clicking this button:
So you have here a choice of things to measure and then display units which can be standard ones or the imperial units if you happen to be in a country where people commonly measure anything with whatever :)
You can view the location of a vertex, the center of a circle, the minimum distance between two objects, the angle between two linear curves, the length of a linear curve — and you can see the sum of multiple selected curves — and finally a surface area for a face, again, with a sum for multiple selected faces.
Settings
You can configure many aspects of how Mayo works: how it meshes B-Reps, whether it hatches clipped planes, how it exports to STL and so on. Some of these options have extensive explanations which sometimes comes in handy.
Summary
Let’s sum it up. If you do mechanical engineering or 3D printing or what have you and you are on Linux, Mayo is an absolute gem and totally worth having around.
It is somewhat limited in terms of how many file formats it can open and save, which I believe will be taken care of in due time. The license of choice, which is BSD-2 Clause, however, makes it impossible to use libredwg directly, so getting Mayo to open AutoCAD files would be rather difficult, unless the developer introduces a plugin architecture.
Navigation is mostly fine, it’s configurable, and apparently FreeCAD-like rotation controls are planned for the next release. Plane sections are very useful and bringing their controls to the viewport would improve that feature even more. And the measure tool is a great little feature that might give you even less reasons to use a full-blown CAD program for viewing projects.
The software has builds for Linux (AppImage) and Windows.
Designs used in the screenshots and the video:
- Vintage engine by yiexu
- RC Car 1:8 two-speed transmission by Nagy Imre
- fragment.ply by HuangCongQing
Libre Arts is a reader-supported publication. If you appreciate the work I do, donations are once again possible. You can subscribe on Patreon or make a one-time donation with BuyMeACoffee or Wise (see here for more info).