Advanced Symbols – Part 2: Multi-Sheet Symbols

In my previous installment of this series, I talked about, among other things, composite symbols made up from multiple raster images. This is cool and all, but it raises one interesting question; what about effects? When you place a symbol, all parts of that symbol is grouped together into one entity, which lives on a single sheet.

If you make a symbol that contains a small cottage, with a tree and a few bushes outside, you’ll probably want different shadow lengths on each of these components. But, to do that, you need different sheets, right?

This is where multi-sheet symbols come in. Basically, a multi-sheet symbol is a symbol that gets split into multiple symbols when you place it, thereby putting each component of the symbol on the appropriate sheet. This may sound a bit like exploding a symbol, but with multi-sheet symbols, it is the designer of the symbol that decides which sheet each part should go on without any manual intervention from the symbol user.

Multi-Sheet Symbols

Before we go on, I recommend you start by downloading my example file (requires DD3 and CD3). In it, click the Symbols in Map button to access the symbols defined in the drawing. Start by placing a copy of the House symbol. Issue a Redraw and note how the symbol appears with the same effects for every entity. Now try to place the House multisheet symbol, issue another redraw, and observe the difference in the shadows.

In this example, the house symbol is not a multi-sheet symbol, so the entire symbol with all it’s entities was placed on the SYMBOL sheet, and inherited the effects defined there. The second symbol on the other hand is a multi-sheet symbol, and as you placed it, CC3+ actually split it into four different symbols; one for the trees, one for the bushes, one for the house, and one for the smoke. These four symbols where then placed on predefined sheets where I had already set up proper shadow effects. You can observe this split in a couple of ways. First, if you try to use the List command on the House symbol you placed, you’ll see that the selection step will report that you have only selected a single entity, and the actual list output will show the same. But if you use list on the multi-sheet symbol, you’ll notice that you are actually selecting four entities (The actual number selected depends on how you click, but if you do a window select by dragging a selection rectangle around the symbol, you should get all four), and the output from list will show four different symbols on four different sheets.
Another way to observe the split is to toggle Symbols in Map off and then immediately on again (we do this to refresh the view), and you should see that there are now 4 additional symbols in the list, all named House multisheet followed by a number.

The secret to these multi-sheet symbols is a setting called Convert Line Style names to Sheets. If you open up symbol manager, and select the House multisheet symbol, then hit the Options buttons, you’ll see that this symbol has this option enabled. Likewise, the House symbol does not have it enabled.

What this setting does is to allow us to use the Line Style property of entities to determine what sheet they are on. This may sound a bit strange at first, because what do line styles have to do with sheets? Nothing really, but all entities in CC3+ do have a line style property. And for most entities, it is completely ignored, since it is only really meaningful on actual lines. Images for example, are completely unaffected by the line style. So, the line style property was reused for this purpose, because it was mostly ignored by most entities, and because implementing additional properties for entities would have caused problems with backwards compatibility. So, to put an entity in a symbol on a specific sheet when the symbol is placed, all you have to do is to assign it a line style with the exact same name as the sheet you wish the entity to be placed on. You can either assign line styles to the different entities before you define the symbol, or you can edit the symbol from the symbol manager and do it for any existing symbol. New line styles can easily be created from the Line Style dialog (Tools –> Set Properties –> Line Style). Just hit the new button in that dialog, and give it the desired name, and leave the rest of the settings alone, they won’t matter, since we aren’t really using them as line styles, we just need their names. You can assign a line style to an entity by using Change Properties on it.

Sheets & Effects

So, creating these multi-sheet symbols isn’t too difficult, all we need to do is to enable the option for the symbol, as well as set the appropriate line style on the entities in the symbol to tell which sheet they go on.

But there are a few additional considerations here. First of all, the map these symbols are to be used in need to already have the sheets already defined. If not, the sheets will be created automatically, but since no order is stored in the symbol, it will mean that all the sheets will go to the end of the drawing order, causing the symbols to appear on top of everything. And their internal order isn’t defined either, so if the symbol contains overlapping parts, there is no guarantee these will appear in the correct order. Of course, you can always re-order the sheets after they are created, but this is not something a user of the symbol would expect to have to do. Generally, this means that these multi-sheet symbols are most useful when they are used along with the proper template for the style they are designed for.

As for effects, remember that symbols always rely on effects in the map they are placed in, they don’t carry their own effects with them. So not only do the sheet need to exist as outlined above, but they should also be set up with the appropriate effects. Again, this is something you would do when you create a template for a map style.

You can try these things yourself. Simply start up a new map of any type, and then load up my map as a symbol catalog (rename the example map to multisheet.fsc first [fsc is the extension used by symbol catalogs, as opposed to fcw which is for maps]). You should be able to insert the symbols just fine, but they won’t have the appropriate effects.


Now, there is one type of entity that actually take advantages of lines styles, and unsurprisingly, that is lines (and paths). For example, if you are drawing a modern road, you may want to use a dashed line style for the road markings. Unfortunately, that conflicts if you are making multi-sheet symbols, the line will end up becoming a solid line when you place the symbol. This is the downside of re-using properties like this. However, there is one workaround here, and that is to use the TRACED command on the lines. This will actually turn the lines into polygons, where each dash in the line becomes it own polygon. And since a solid filled polygon isn’t affected by the line style, you can use this to make entities that look exactly like a dashed line. Remember to delete the original line after doing this, or both the line and the new polygons will be in the final symbol.

In official products

One place where these symbols are used in official products is in the Fantasy Handdrawn style in Symbol Set 1: Fantasy Overland. Here, the mountains are multi-sheet symbols, where the mountains are split into background and foreground entities. This allows for the symbols to do partial overlaps, as well as for setting up different effects on the foreground and background.



2 Responses to “Advanced Symbols – Part 2: Multi-Sheet Symbols”

  1. Just some clarifications for using the TRACED command on a dashed line:
    1.) To set the color and fill styles should I use LIKE on the line then set the line style to the target sheet name and the line width to “0” before I trace it?
    2.) If the line has a non-zero thickness and the offset is 0, does the tracing go around that thickness?

  2. Basically yes to both.

    The great thing about traced is that it traces what is rendered on the screen (not including effects though), so it respect things like line thickness and such, which is why it is so helpful for this purpose.