Part I: CAD and AutoCAD for the Theater

Chapter Thirteen: Complex Drawing Objects

    1. Groups
    2. A Drawing in a Drawing
      1. block
      2. wblock
      3. point of origin
      4. attributes
      5. xreferences
      6. overlay mode
    3. Raster Images
      1. raster files
      2. photos in CAD
      3. landscape objects

last chapter. AutoCAD Backstage home. AutoCAD Backstage Index. next chapter.



While it is possible to produce high quality drawings with the basic entities presented in the last chapter, the entities and techniques presented here will add speed and reliability to your drawings. By using a BLOCK or XREFERENCE a complicated group of entities can be moved, rotated or otherwise edited as a single entity. The use of Blocks and Xreferences helps to keep the file size down and avoid redrawing the same elements over and over. Since you use the same drawing all the time, you are ensuring a positive level of consistency. You can update all instances of particular Block or Xreference with confidence that all instances of that drawing have been updated at the same time. Once your drawing is loaded with layers, linetypes and blocks that are no longer being used you can PURGE them to bring the file size down to the essentials. Because purging makes the file smaller, it improves access and regeneration speeds.

A BLOCK is a drawing within the drawing. A block can be a large and complex drawing or a very simple drawing. A given drawing may contain scores of different blocks, some inserted hundreds of times. You must learn to keep libraries of block insert drawings: hardware blocks, title blocks, notation blocks, symbol blocks and so on. There is no reason to create the same title block every time you start a new drawing. Save the last one and insert it as a block in the new drawing.

An XREFERENCE is similar to a block, except it is never saved in the current drawing. The host drawing contains the Xreference instructions which freshly inserts an Xreferenced drawing whenever the host drawing is opened. Xreferencing will help in two ways. The host drawing file size stays smaller. Any changes to the Xreferenced drawing will appear when the host re-opens the Xreference the next time.

Using Blocks:

A block is a drawing saved as a block within file of another drawing. If it is a drawing imported into the current drawing, the original drawing will still exist. A copy of the original is saved in the current drawing's file. When the block is inserted into the drawing, the insertion accesses the block file. If the block is inserted several hundred times, there is still only one copy of the block saved in the file. For repeated drawing elements, this can dramatically reduce file size. It also means that it is easier to change the repeated elements. Change the block file and all of the inserted blocks are automatically changed. To create a block, draw the block drawing as you would any other. If you want to create a happy face, draw the circle for the head. Draw circles or ellipses for the eyes and an arc for the mouth. Issue the BLOCK command:

Command:	[Block]
Block name or [?]:	[hface] or any other available name.
Insertion base point:	pick a point.
Select objects:	select the circles and arc.
Select objects:	press Enter.

The entities disappear. Actually they are now stored in memory. When you INSERT the block into the drawing, the entities composing the block reappear as a single Block entity. Issue the INSERT command:

Command:	[Insert]
Block name or [?] < >:	[hface]
Insertion point:	pick a point.
	X scale factor <1>/Corner/XYZ:	accept the default <1>.
Y scale factor [default=X]:	accept the default.
Rotation angle <0.00>:	accept the default.

The happy face should be back. Try to copy one eye and you will copy the entire face. The face is now one entity. Type [?] for the block name and AutoCAD will list the blocks already saved in the current drawing. Issue the Insert command again and the last block inserted will appear as the default block name.

Each block insertion may be given a different rotation, location and scale or size. A 3D block can be inserted with different X, Y and Z scales. Editing commands work on the block as a single entity. Blocks can be mirrored, arrayed or copied. By adding ATTRIBUTES to blocks, each block insertion can have individual notations. There is still only one block file saved in the drawing file with that block name. Each insertion of the block references the block file.

For theatrical purposes, movable scenic pieces (wagons), furniture or repeated elements are best handled as blocks. This saves space in the drawing and makes movable elements much easier to manipulate. Extremely complex elements such as wagons or large scenic elements are moved or rotated as complete wholes, the same way they are moved in reality. Insert a block onto what ever layer you wish. You can place separate copies of a block onto several different layers. If the block is drawn on a specific layer but you insert it on another, it is being controlled by two different layers. Layer handling becomes complicated if the block contains elements drawn in other layers. Layers become nested within each other. Turn Off or Freeze either layer and the block disappears. In most cases, this can be confusing and troublesome.

Draw all block entities on layer 0.

By drawing all blocks on layer 0, you eliminate one of the conflicting layer attachments. Insert the block into whatever final layer you want the block to reside. In this way separate insertions of the block can reside on separate layers. The act one drawing of a unit can be a block residing on "1ACT" layer and the storage position of the unit can be indicated by another copy of the block residing on "2ACT" layer.

There are exceptions to the layer 0 rule for blocks. In some instances you may want portions of a block to be Frozen while other portions are still visible. In that case place those block entities on a separate layer. Freeze that layer and those entities will disappear, while the rest of the block remains. Another useful trick to separately control the appearance of elements within blocks is to add some elements with color and linetype set to BYLAYER and other elements with color and linetype set to BYBLOCK. When the block is inserted onto a given layer in the drawing all the block entities will inherit the color and linetype of the layer. If you use the CHPROP (Change Properties) command to change the color and linetype of an inserted block, block entities drawn with color and linetype set to BYLAYER will stay the color and linetype of the layer. Entities drawn to BYBLOCK will inherit the new properties assigned to the block.

When working in 3D, I often create a layer of elements that are not intended to be visible. So I create a layer called HIDE and place them on that layer. I will explain this in the 3D section. It is not unusual for me to create a layer for details that I want to be visible only in drawings of sufficiently large scale to make them useful. At all other times this layer is shut Off or Frozen. The entities within the block that are on Frozen layers will not be displayed even though the rest of the block entities are. Because the block is inserted onto a layer as a single unit, some color (line weight) or linetype changes have to be handled within the block. Small details and notes generally call for a lighter line weight than the rest of the block. Hidden lines or overhangs could require a different linetype. This is one of the exceptions to HLL #5, draw with color and linetype set to BYLAYER.

To edit blocks without disturbing their original insertion(s), create a separate copy of the block in an unused portion of the drawing. Insert the block with 0.00 rotation at the end of a reference line. You can draw a random line specifically for that purpose. Explode the block and change whatever entities you wish. By adding [*] to the front of the block name when you Insert it, it will automatically Explode.

When you are ready to re-block, issue the BLOCK command. Type in the name of the block. AutoCAD will tell you that block already exists and asks if you want to re-record it. Answer yes. You must use the exact same insertion point and the same rotation angle. If the insertion point or rotation change, all insertions of that block will move or rotate. When asked for the insertion point, select the end of the reference line. Select all of the elements desired and make sure not to selected any other elements. When you have it all, press Enter. This immediately updates all insertions of the block.

Do not select block entities with a Crossing Window.

Use Window in preference to a Crossing Window to select the block entities. It is very easy to inadvertently select a seemingly insignificant piece of another block or Xreference and accidentally include it into the block. I have been surprised to see the entire theater disappear from the drawing and reappear at the cock-eyed angle of a scene wagon. If that happens, do not panic, Undo and re-block again.

OOPS is an AutoCAD command. If you type [OOPS] and press Enter just after you create a block, all of the entities re-appear unblocked, while the block stays in memory. You can re-block, or you can edit and create another similar block.

Block Files and WBlocks:

Any drawing can be a block. Type [INSERT] and press Enter. Enter the name of another drawing in the current directory. You could try inserting the test theater drawing from the last chapter, [ZTEST_G]. Type [DDINSERT] for an Insert dialogue box. The File button in the dialogue box brings up a search list of directories and drawing files. Select a drawing file to insert. Whenever a drawing is inserted, it brings all of its blocks, layers, linetypes, and such along with it. A drawing inserted as a block will be stripped of Paper Space and Viewport entities, only the Model Space entities are inserted. When you have blocks that you may want to re-use, save them in a block library. Create separate directories for groups of symbols, hardware drawings, title blocks, theaters, etc. This keeps them organized and distinct enough to avoid those periodic fits of house-cleaning that tend to wipe out files. By keeping lists of them, or using the DDINSERT command they will be easily accessible.

AutoCAD sets up a list of directories in which it will automatically search for files. These are default file search paths. To insert a block from an unpathed directory, add the subdirectory name and a slash in front of the drawing name. If the drawing "CHAIR1.DWG" is in the "FRNT" subdirectory of "ACADWIN" on the "C:" drive, the full path and filename would be: "C:\-ACADWIN\FRNT\CHAIR1.DWG". At the Insert "Block name:" command, type [FRNT/CHAIR] and press Enter. You can add your block libraries to the file search paths found in Preferences on the File pull down menu. Click on the Environment button and add your directories to the end of the list in the Support Dirs window. Be aware that the more directories added to this list the longer a given search takes.

Blocks can be pulled from inside another drawing. If there is a block that you need, which you know is in the memory of another drawing, use INSERT to bring it into your current drawing. Type [INSERT] at the command prompt and push Enter. Type in the name of the drawing containing the desired blocks and press Enter. When AutoCAD asks you for the insertion point, press [^C] to cancel the operation. While the drawing will not have been inserted, all of its blocks (and layers, and linetypes and...) will now be in the memory of your current drawing and will be available for use. If you cannot remember the exact name of the block, the DDINSERT Block button, or the INSERT [?] entry shows the current list. Because this operation also pulls in all the other blocks, layers, linetypes and such that were in that original drawing, so you may need to Purge the drawing (see PURGE on page 59).

If you wish to export a block from the current drawing to a block library or somewhere else, use the WBLOCK command. Type [WBLOCK] and press Enter. AutoCAD will ask for a drawing name. If you already have a block in the current drawing and wish to export that, at the "Block name:" prompt, type the name of the block to WBlock and press Enter. The block should now be copied as a separate drawing.

If you have no block to start with, you can create a WBlock the same way that you create a Block. Type [WBLOCK] and press Enter. As above, enter the name of the new WBlock (and full path if not the current path), and press Enter. When AutoCAD asks for a drawing name, press Enter without entering anything. Now the prompts match the Block command prompts. The result is a drawing outside of the current drawing. No block will be saved in the current drawing file. Creating a WBlock in this way can be confusing if you try to edit the WBlock drawing later. The current drawing's User Coordinate System (UCS), the coordinate grid in effect at the time, will be exported as the World Coordinate System (WCS) of the WBlock. The insertion point will not match the (0,0) point of the WBlock's WCS. The two points will be displaced from each other as far as they were in the original drawing. If you move the entities in the WBlock they will not insert properly. The simple solution is to always create WBlocks from Blocks.

Do not forget, any drawing can be a block. The insertion base point for a normal drawing is the (0,0,0) point.


Text can be added to blocks in the normal way. However, text added to blocks through the TEXT or DTEXT commands cannot be edited once the block has been blocked, except by exploding and re-blocking. The text entry will be the same for every block. If the block is mirrored or inserted with a negative scale (which mirrors the block), text within the block will not flip regardless of the MIRRTEXT setting.

The solution is the ATTRIBUTE. Attributes are text entities designed specially for block files. The attributes for each block insertion can be edited independently. Each insertion of a block can be numbered or labeled separately without creating new blocks. To create an Attribute from the command prompt type [ATTDEF] for Attribute Define and press Enter. Two lines will appear in the command area:

Attribute modes -- Invisible:N  Constant:N  Verify:N  Preset:N
Enter (ICVP) to change, RETURN when done:

The default Attribute asks for a text entry when the block is inserted. To change to a different Attribute mode, type the first letter of the Attribute mode and press Enter. Invisible attributes are useful for important information which you want associated with a block, but do not want visible in the drawing. This might include catalog numbers for parts or the source of borrowed furniture props. This hidden information can be exported to a spreadsheet or database. To make invisible attributes visible use the ATTDISP (Attribute Display) command. Type [ATTDISP] and press Enter. Type [ON] at the prompt and the invisible status will be overridden, causing all invisible Attributes to become visible. The invisible Attribute mode can be combined with other Attribute modes.

Constant Attributes, unlike other attributes, cannot be changed once they are blocked. They have the additional problem of not flipping when mirrored, despite the MIRRTEXT setting. Verify Attributes cause the block Insert command to pause for input, and then pause again to verify that the input is correct. If MIRRTEXT is set to <0>, Verify Attributes and all other attributes except Constant Attributes will flip to read in the correct direction when mirrored.

Preset Attributes will not pause the block Insert command for input. The default information will automatically be entered when the block is inserted. To Change a Preset Attribute or any other Attribute except a Constant Attribute, type [DDATTE] for (Dynamic Dialogue Attribute Edit) and press Enter. Select the block insert to edit and press Enter. A dialogue box will appear showing all of the editable attributes in the block. Edit the entries that you wish to change and click on the OK button. The block insert should now display the new attribute entries.

Attributes can be edited with the DDEDIT command before they are blocked but not after. When you invoke DDEDIT and select the attribute, three edit windows appear: the attribute Tag, the attribute Prompt and the attribute default Data Entry. All three edit fields can be changed. Additionally DDMODIFY can be used to change the Attribute Type, Scale, Text Height, Justification and Style, as well as the edit fields.


An Xreference is a drawing inserted into another drawing. Except for attributes, which cannot be edited in an Xreferenced drawing, an "Xref" can be handled much like a block. The major difference is that the Xref is not actually saved in the drawing in which it is inserted. Other than a few notations, an Xref adds very little to the size of the host drawing. The Xreference must be a separate drawing. The Xreference loads into the host drawing afresh every time the drawing is opened. Any changes that have been made to the original Xreferenced drawing will be reflected in subsequent calls to that Xref.

Like a block insertion, a drawing inserted as a Xreference will be stripped of Paper Space and Viewport entities, only the Model Space entities are referenced.

Start a new drawing. To insert an Xreference, type [XREF] and press Enter. The Xref command line will read: "?/Bind/Detach/Path/Reload/<Attach>:". Type [?] and press Enter to list the Xreferences to the current drawing, (none as yet). Accept the default "Attach" to place an Xreference in the drawing.

Command:  [XREF]
?/Bind/Detach/Path/Reload/<Attach>:  [ZTEST_G]
Insertion point:  pick a point.
   X scale factor <1>/Corner/XYZ:  accept the default <1>.
Y scale factor [default=X]:  accept the default.
Rotation angle <0.00>:  accept the default.

You will notice that the Attach commands are identical to the Insert commands. The results are different. The new "Xref" is not a part of the drawing file. The layers and linetypes that it brings with it will have the Xreference's filename appended to the front of them with "|" as a separator. Blocks contained in the Xreference will not appear in the host drawing block files.

To remove an Xreference, bring up the Xref command line and type [D] for DETACH, press Enter, and type in the name of the Xreference to detach. When you press Enter again the Xref will disappear along with all of its layers and linetypes. Purging is not necessary. If the host drawing is being sent to someone else, you will have to send the Xreference as well, or you can BIND the Xreference to the drawing. Binding makes a block out of the Xreference with the exception that the layers, linetypes and blocks all have the Xref filename appended to the front of them with "$0$" as a separator. The file is now increased by the size of the Xreference.

If the Xreference changes path the host drawing may not be able to find it. If you have sent the drawing to someone else and they place the file in a differently named directory, the host drawing will draw a blank and insert the name of the Xreference instead of inserting the drawing. The solution is to re-path the Xref. From the Xref command line, choose [P] for PATH and press Enter. Type in the filename of the troubled Xref and press Enter. AutoCAD will find the Old path and ask for a "New path:". Type in the new directory and filename. You can change files entirely in this way.

RELOAD will cause the host drawing to reload the selected Xreference. This might be necessary if you are on a network and someone else is editing the Xreference, or if you are editing the Xreference in another window. Reload will update any changes.

Large drawings that that are inserted into many other drawings are ideal candidates for Xreferencing. The basic theater groundplan or section will be placed in every drawing of a show that plays in the theater. There is no reason to duplicate it ad nauseaum. There are several reasons not to. First and most obvious is file size. Why take up more room on the hard drive, or in the floppy disk backups? If you improve the looks or the accuracy of the groundplan later, you will want that to be reflected wherever the groundplan is in use. If you move the show from your theater to another theater, you will want to be able to strip out the theater information quickly and easily. Finally, it is difficult to make inadvertent changes to a large block or Xref without noticing.

Another good candidate for Xreferencing is any information that appears in several drawings and is subject to change. An obvious example is the line schedule. This changes repeatedly and must appear accurately on all groundplans and sections. If it is inserted separately as a block or as text elements, you would be forced to edit the information in every drawing and run the risk of forgetting a drawing. That can cause havoc with the loading crew. Create a drawing that includes nothing more than a list of linesets and what is on them. Xreference that drawing into all pertinent drawings. When it is time to edit the line schedule, call up the original drawing and edit that. All insertions of that drawing will automatically be updated.

Unlike a block, which is usually drawn on layer 0, an Xreference often contains a large number of elements that must be broken up into several layers. You still have dual layer control conflicts.

Always place Xreferences on Layer 0.

By placing the Xreference on layer 0, only the original Xreference layers control the Xreference's appearance. If you place the Xref on a layer other than 0 and Freeze that layer, the Xref will disappear. The Xref's layers are imported into the new drawing with the Xref's drawing name and the original layer name separated by a pipe [|] symbol. When large Xrefs like the theater groundplan are inserted, the layers are often set and then ignored until it is time to plot. Other layers or more likely to be Frozen or Thawed repeatedly as the drawing progresses. Those are the layers that you will want first on the layer list. The DDLMODES command brings up the layer list alphabetically. To force the Xref layers to the bottom of the list, give the Xref drawing a name that starts with a letter toward the end of the alphabet. Since all the Xref layer names now start with the name of the Xref, they will automatically go to the bottom of the list. All stage house drawings in my files have a filename that starts with "Z". If I find a drawing whose name begins with Z, I have a good idea what type of drawing it is. Xref attach the "ZTEST_G" drawing above and bring up the layer list:

Layer list:


As the drawing progresses you may be adding layers for Act1, Act2, Lighting, Masking, Backdrop1, Backdrop2 and so on. These would all naturally appear ahead of the "ZTEST_G|..." layers. By the time a show drawing is finished it is not unusual to have five or six pages of layer names to sort through. The attachment of the Xreference filename provides an excellent organizing tool.

When you Freeze or Thaw Xref layers, or you change their color and linetype settings, you will want the changes to be retained in the host drawing. To insure this, set VISRETAIN to <1>. This causes the Xref layer list to be memorized and saved in the host drawing. This setting is poorly documented but important. If VISRETAIN is set to <0>, all changes made in the Layer Control Box will not be saved when the drawing is closed. The next time the drawing is opened, the layers will revert to the settings currently supplied in the Xreference file.

The XBIND command allows you to Bind only portions of an Xreference. Invoking this command prompts you with a list of choices, "Block/Dimstyle/-LAyer/-LType/-Style:". Enter your choice and press Enter. You will be asked for the name of the block, dimstyle, layer, linetype or style that you wish to bind. You must type in the full name of the item as it appears now, with the filename and pipe symbol added to the front of it. When it is bound to the drawing the Xreference can be detached, but the bound items will remain. Bound items now have their original filename, with "$0$" appended to the front of their name.

chapter index.

last chapter. AutoCAD Backstage home. AutoCAD Backstage Index. next chapter.

Copyright © 1999 Wm W Wells. All rights reserved.