Microvellum Subassemblies Guide

Microvellum Subassemblies Guide

1. What is a Subassembly?

Subassemblies are one of the most flexible parts of Microvellum, allowing you to reuse a component — a drawer box, a door, a hardware group — across many products without rebuilding it each time.

That flexibility is derived from the subassembly being stored across several levels of data all at once, allowing one to save modifications and adjustments without disturbing the component everywhere else it is used. But understanding where changes are saved and which version is currently in use can be slightly confusing. This guide explains how subassemblies work, how Microvellum determines which one to use, and how to apply changes where they are desired without causing any undesired effects.

Notes
Always Remember: The most specific version is always prioritized. A change you make in one place stays in that place until you deliberately save it somewhere broader.

2. The Five Levels

Every subassembly lives at one of five levels. They run from the broadest — shared by everything — to the narrowest, which affects a single row.

Level

What it covers

Use it when…

Library

Your master version, available for all future projects. It is never used directly inside a project; a copy is pulled in instead.

You want this to become the company standard going forward.

Project (shared)

The project's working copy. This is the default version for everything in the job.

The change should apply to the whole job.

Project (parent-specific)

A version attached to one parent subassembly, used everywhere that parent appears in the job.

Every instance of one assembly needs its own variation.

Product

A version used by a single product.

One cabinet needs something different.

Row

A version used by a single row of a single product.

One line item needs a one-off change.


Notes
Library vs. project: The Library is a source, not a live part of your job. Your project always works from its own copy, so editing a subassembly in a project never changes the Library, and updating the Library never reaches back into projects already underway.

3. Which Version You Get

When a product calls for a subassembly by name, Microvellum looks for it from the narrowest level to the broadest and uses the first one it finds:

  1. Row

  2. Product

  3. Project — parent-specific

  4. Project — shared

  5. Library

If the search reaches the Library, Microvellum copies that Library version into your project as a new shared project version and uses the copy. From then on, the project has its own working copy. This happens automatically whenever there is no project version detected.

If nothing is found at any level, the subassembly cannot be copied and you will get an error. In practice that almost always means the name is misspelled or the item has not been added to the library you are using.

How names are matched

  • Capitalization is ignored. DRAWER BOX and Drawer Box are the same subassembly.

  • Spaces and underscores are interchangeable. Drawer Box and Drawer_Box are the same subassembly.

  • When you save over an existing subassembly, the stored spelling updates to match what you just saved, so the name matches and updates to your most recent version.

  • Multiple subassemblies of the same name can exist within one project, but within a single level, a name can only belong to one subassembly.

4. Saving Your Changes

Editing a subassembly changes only the version you were working on. Nothing moves to another level on its own- moving a change up or down in level is always a deliberate save.

There are three directions you can save, and each behaves differently.

Direction

What it is called

What happens

Saving up

(narrower to broader)

Promotion

The version you edited moves up to a broader level. It no longer exists at the level you started from, so the broader version is the one that now applies.

Saving down

(broader to narrower)

Override

A copy is created at a narrower level. The version you started from stays exactly where it is and continues to serve everything else.

Saving at the same level

Update

The version you are working on is updated in place. Nothing else moves or changes.

Saving up covers row to product, row to project, and product to project. Saving down covers project to product, project to row, and product to row. Saving to the Library is a separate action and is covered in section 7.

What promotion does not do

Promoting a change does not clean up other, more specific versions elsewhere in the job. Those remain in place, because they are still more specific than the version you’ve just promoted. This includes subassemblies already placed into products, for instance.


Notes
Example:
Row 3 of Cabinet A has its own drawer box. You promote it to project level so the whole job uses it.
Cabinet B already had its own product-level drawer box. Cabinet B keeps using that one. Only the parts of the job with no override of their own pick up your promoted version.
This is expected behavior, not an error. If you want those overrides gone, revert them individually.

What overriding does not do

Saving down leaves the original untouched, remaining that way to ensure it can be reverted based on it for every other product and row. If you later want the narrower version to serve the whole job, promote it.

5. Subassemblies Inside Subassemblies

A nested subassembly is one used inside another subassembly rather than directly in a product. Nesting goes one level deep: product, then subassembly, then nested subassembly.

At project level, a nested subassembly takes one of two forms:

  • Shared — used everywhere in the job, like any other shared project subassembly.

  • Parent-specific — attached to one parent subassembly and used everywhere that parent appears, overriding the shared version.

A nested subassembly can be saved at project, product, or row level, regardless of the level its parent is on.

How nested subassemblies follow their parent

When you...

The nested subassemblies...

Save the parent up (promote it)

Move with it. They stay linked and are not duplicated.

Save the parent down (override it)

Are copied under the new version, so the new parent gets its own set.

Overwrite an existing parent

Are replaced entirely by the incoming set — the two are never mixed.

Delete or revert the parent

Are deleted with it.

Revert a nested subassembly on its own

Behave independently — you can roll one back without touching the parent.


Notes
NOTE: Parent-specific nested subassemblies are project-level features. The Library stores subassemblies on their own, without parent-specific children.

6. Reverting

Reverting deletes the version you are currently using so that the next broadest version takes over. It does not copy or move anything down, it simply removes the override you no longer want.

Because of that, you can only revert when something broader exists to fall back on.

When you revert a...

You go back to...

Row version

The product version, or the next available level above it if there is no product version.

Product version

The parent-specific project version if one applies, otherwise the shared project version.

Parent-specific project version

The shared project version. If there isn't one, a fresh copy is pulled from the Library.

Shared project version

A fresh copy pulled from the Library.

Library version

Not applicable — Library versions cannot be reverted.


Notes
If revert isn't available: A subassembly you created new inside a project may have no Library counterpart, which means there is nothing to fall back to. Saving it to the Library first gives it that fallback and makes revert available. As such, it is recommended to save new subassemblies to the Library, if you intend to use them beyond their current project.

7. Saving to the Library

Saving to the Library updates the master version used by future projects — and by current projects if they revert back to it. It does not change the working copy in the project you are in.

Situation

What happens

A subassembly with this name already exists in the library

It is overwritten, and its stored name is updated to the spelling you just used.

You type a name that is not in use

A new, independent Library subassembly is created under that name.

You type a name that is already in use elsewhere

The save is rejected and the conflict is reported, telling you whether the name was found in the project or in the library. Nothing is overwritten and no duplicate is created.

No matching subassembly exists

A new Library subassembly is created.

A Library subassembly is identified by its name together with the library it belongs to, so the same name can exist in a different library without conflict. Project-specific details are cleared when the subassembly is saved to the Library — what is stored is the component itself, not where it happened to be used.

8. Save as New

Save as New creates an independent copy under a new name. The original is never consumed or altered, and the copy follows all the same rules from then on.

The name you choose must be genuinely unused — no other subassembly drawn from the same library, or living in the same project, may already be using it. If the name is taken, the save is rejected and Microvellum reports where the conflict was found.

Notes
Why a name conflict is not offered as an overwrite
A subassembly's name is its identity. Reusing an existing name would not create a separate copy — it would enroll your new version into the existing subassembly's hierarchy, which is the opposite of what Save as New is for.
If you actually want the existing subassembly, reference it by name in the normal way instead of using Save as New. If you want a separate one, choose a different name.

A name that is refused becomes available again if the subassembly currently using that name is later deleted.

The two modes

Mode

What you get

Assign to current row

The new subassembly is created at row level and the row you are working in is updated to point at the new name.

Do not assign to current row

A new shared project-level subassembly is created and the row keeps pointing at the original name.

Repointing is never automatic outside of the first mode. If a save fails partway through, the previous name is restored so the operation leaves your work untouched.

9. Quick Reference

Common tasks and the level each one belongs at.

You want to...

Do this

Result

Change one line item only

Edit and save at row level

An override that affects that row alone.

Change one cabinet

Save at product level

An override for that product; other products are unaffected.

Change every instance of one assembly in the job

Save as a parent-specific project version

Applies wherever that parent assembly is used.

Apply a change to the whole job

Save up to project level

Becomes the default; existing narrower overrides still remain in their own respective scope.

Make it the standard for future jobs

Save to the Library

Future projects start from the new version. Current projects are unaffected.

Undo an override

Revert

The override is deleted and the next broadest version takes over.

Create a variation without touching the original

Save as New with an unused name

An independent subassembly; the original stays as it was.