Working with a Room Object on a PCB in Altium Designer
This document is no longer available beyond version 21. Information can now be found here: Working with Rooms on a PCB for version 24
Parent page: PCB Objects
Summary
A room is a primitive design object. It is a region that assists in the placement of components. Rectangular or polygon-type rooms can be placed on either the top or bottom layer of the board and can either be placed empty (associating components at a later stage) or placed around components in the design (automatically associating them to the room). Alternatively, orthogonal, non-orthogonal, and rectangular-shaped rooms may be created automatically based on selected components in the design space.
Availability
Rooms are available for placement/creation in the PCB Editor only. You can place them directly or create them from selected components. Use one of the following methods to access the placement commands:
- Select Design » Rooms » Place Rectangular Room (shortcut: D, M, R).
- Select Design » Rooms » Place Polygonal Room (shortcut: D, M, M).
- Select the type of room desired from the Place Room drop-down () on the Utilities toolbar.
- Create a new room object by adding a new Room Definition design rule.
- Select rooms to be generated based on schematic sheets in the design using the Class Generation tab of the Project Options dialog.
Placement
The procedure involved to obtain a room on the PCB document depends on whether you are placing or creating the room and which particular method of placement/creation you have chosen to use.
Placement Using Menu or Toolbar Command
Rectangular or polygonal-shaped rooms can be placed on the top or bottom layers of the design.
Rectangular Room
After launching the command, the cursor will change to a crosshair and you will enter room placement mode. Placement is made by performing the following sequence of actions:
- Click or press Enter to anchor the first corner of the room.
- Move the cursor to adjust the size of the room then click or press Enter to anchor the diagonally-opposite corner and complete placement of the room.
- Continue placing further rooms or right-click or press Esc to exit placement mode.
Polygonal Room
After launching the command, the cursor will change to a crosshair and you will enter room placement mode. Placement is made by performing the following sequence of actions:
- Position the cursor then click to anchor the starting point for the room.
- Position the cursor then click to anchor a series of vertex points that define the polygonal shape of the room.
- After placing the final vertex point, right-click or press Esc to complete placement of the room. There is no need to close the polygon since the software will automatically complete the shape by connecting the start point to the final point placed.
- Continue placing further polygonal rooms or right-click or press Esc to exit placement mode.
While defining the region shape, use Shift+Spacebar to cycle through various corner modes. Arcs can be increased or decreased in radius using Shift+. (period) or Shift+, (comma), respectively. Use the Spacebar to toggle the direction of the corner. Use the Backspace key while in placement mode to remove the last placed vertex point. Repeatedly use the Backspace key to 'unwind' the outline for the polygon back to the initial starting point.
Auto-Component Association
By placing a room - rectangular or polygonal - around one or more components so that they fall completely within its boundaries, the components will automatically be associated with the room. The scope or query created for the room's definition rule depends on whether all components are part of an existing component class or not. If they are, then this component class will be used. If not, a new component class is created with these components as its members. It is therefore possible to have multiple rooms, each with a scope that targets a particular component class and has one or more mutual component members between those classes.
Manual Component Association
When an empty room is placed in the design, components required to be placed in the room should be grouped together by the use of a specific component class. A Room Definition rule will automatically be created and assigned to the room with an initial scope (Full Query) of All. Edit this query to target the specific component class previously defined. The components can then be moved to the room by the use of the Tools » Component Placement » Arrange Within Room command.
Creation Using Menu or Toolbar Command
Non-orthogonal, orthogonal, and rectangular-shaped rooms can be created automatically based on selected components in the design space. In each case, the method of creation is the same:
- First, ensure that all components for which you want to create the room are selected in the main design space.
- Launch the relevant creation command; a component class is automatically defined to include the selection (Design » Rooms » Create xxx Room from selected components).
- The chosen room type is then created, the definition of which is defined to associate the created component class.
- The room will be sized accordingly in order to fit all components in the selection as defined by the limits of their bounding rectangles.
Creation by Adding a Room Definition Design Rule
For each room that is placed or created, an associated Room Definition design rule is also created. You may add a new rule of this type and a corresponding room object will appear in the design space. To add a new Room Definition rule, right-click on the Room Definition entry, which can be found under the Placement category in the PCB Rules and Constraints Editor dialog, then select New Rule from the subsequent pop-up menu. The new rule will be added to the folder tree on the left-hand side of the dialog and will appear in the summary list for that rule type in the main editing window of the dialog.
Click on the entry for the newly-created rule in the folder-tree pane (or double-click on the rule entry in the summary list) to edit/define the scope and constraint attributes for the rule. Use the Define button to access the design space and determine the location, shape, and size of the required room, either polygonal or rectangular. After defining the boundaries of the room, you will be returned to the dialog.
After defining all constraints for the rule as required, click OK to exit the dialog. The corresponding room object will appear in the design space in accordance with the definition of the rule.
Creating Compiler Based Rooms
The Class Generation tab of the Project Options dialog includes options to generate Rooms for each sheet in the design. If the Generate Rooms option is checked, a Room for each sheet will be created and all components within that sheet will be associated with the corresponding Room when a Design » Update command is run.
Graphical Editing
This method of editing allows you to select a placed room object directly in the design space and graphically change its size, shape, location, or orientation.
Changing Room Size and Location
When a room object is selected, the following editing handles are available regardless of whether it is was originally placed as a rectangular or polygonal room:
Dragging corner handles (A) will scale the room horizontally and vertically simultaneously. Dragging an edge handle (B) scales the object in that direction (either horizontally or vertically). The room can be rotated or flipped while dragging by using the following:
- Press the Spacebar to rotate the object counterclockwise or Shift+Spacebar for clockwise rotation. Rotation is in accordance with the value for the Rotation Step defined on the PCB Editor - General page of the Preferences dialog.
- Press the X or Y keys to flip the object along the X-axis or Y-axis.
- Press the L key to flip the object to the other side of the board. If the room has associated components, those components will be flipped along with the room. A room object can also be moved using the Design » Rooms » Move Room command.
Changing Room Shape
To graphically modify the boundary shape of a room, you will need to launch the Design » Rooms » Edit Polygonal Room Vertices command from the main menus (shortcut: D, M, E). Although the command name suggests it is for use with polygonal rooms only, it is, in fact, for use with all rooms since a rectangular room is itself a polygon. After launching the command, click inside the room to be modified. The boundary track editing handles for the room's polygonal boundary shape will be displayed.
- Click A then move the cursor to move the vertex. Click again at the new location to position the vertex.
- Click B or click over an object edge (in between handles) then move the cursor to slide that edge. The Shift+Spacebar hotkeys can be used to cycle through modes (sliding edge, breaking edge, incurvating edge).
- Ctrl+Click B or Ctrl+Click along an object edge then move the cursor to add more vertices to that edge as well as move the vertex. Click again at the new location to position the vertex. In effect, the new vertex becomes an A vertex, and new B vertices are added between it and the original A vertices.
- Continue modifying the shape of the room as required or right-click or press Esc to stop. The display of the room will update in accordance with the new boundary shape.
Slicing Rooms
Commands are available that allow you to graphically 'slice' a placed room object into two or more separate rooms. These commands offer two levels of 'slice' and are summarized as follows:
Standard Slice
This allows you to slice an existing room object into multiple rooms. If the original room was associated with and contained components that were members of a component class, a newly-generated room that inherits one or more of these components will NOT have a new component class created and assigned to it. Therefore, the components in the new room will still be members of the original component class. To perform this level of slice:
- Select Design » Rooms » Slice Room from the main menus.
- Click on the Place Room drop-down () of the Utilities toolbar.
- Right-click a room object then select Room Actions » Slice Room from the context menu.
Smart Slice
The Smart Slice allows you to slice an existing room object into multiple rooms. If the members of the original room are part of a component class and slicing results in members residing in the newly-generated rooms, then each new room WILL have a component class created and associated with it. The component class membership will be updated accordingly so that each component in a new room will be added to the class for that room and removed from the original room class. Any room that is created that does not inherit a member component of the original room will have no component class created and assigned to it. To perform this level of slice, right-click over a room object then choose Room Actions » Slice and Create Classes from the context menu.
The Slicing Process
After launching either command, filtering will be applied to the document resulting in all room objects remaining visible and all other objects becoming dimmed. The cursor will change to a crosshair and you will be prompted to select a start point for the slice. Move the cursor to the required point with respect to the room you want to slice then click or press Enter. You are now in slice mode (which is essentially line placement mode). Move the cursor then click or press Enter to anchor a series of vertex points that define the shape of the slice.
- Position the cursor then click to anchor the starting point for the slice.
-
Position the cursor then click to anchor a series of vertex points that define the shape of the slice.
- After placing the final vertex point, right-click or press Esc to complete placement of the slice.
- When you have finished defining the slice, right-click or press Esc.
- Continue defining further slices or right-click or press Esc to exit slice mode. A confirmation dialog will open, which states how many rooms the original room will contain. Click Yes to commit the slice(s) you have made or No to discard. The resulting new room object(s) will be updated accordingly and the relevant Room Definition rule created and associated.
- While defining the splice shape, use Shift+Spacebar to cycle through various corner modes. Use the Spacebar to toggle the direction of the corner. Each placement mode (except any angle) requires a start and end point.
- Use the Backspace key while in slice mode to remove the last placed slice segment.
Room Wrapping
The following Design » Rooms sub-menu commands are available that allow you to quickly change the shape of existing room objects within a design:
- Wrap Non-Orthogonal Room Around Components
- Wrap Orthogonal Room Around Components
- Wrap Rectangular Room Around Components
In each case, after launching the command the cursor will change to a crosshair and you will be prompted to select a room to modify. Position the cursor over the required room then click or press Enter. The room will change to the required shape (if not already) and will resize in order to fit its member components as defined by the limits of their bounding rectangles. Continue modifying further rooms or right-click or press Esc to exit.
Non-Graphical Editing
The following methods of non-graphical editing are available.
Editing via the Edit Room Definition Dialog or Properties Panel
Panel page: Room Properties
This method of editing uses the Edit Room Definition dialog and Properties panel to modify the properties of a Room object.
During placement, the dialog can be accessed by pressing the Tab key. After placement, the dialog can be accessed in the following ways:
- Double-click on the placed room object.
- Right-click the room object then select Properties from the pop-up menu.
The Room mode of the Properties panel can be accessed after object placement in one of the following ways:
- If the Properties panel is already active, by selecting the Room object.
- After selecting the Room object, select the Properties panel from the Panels button at the bottom right of the design space, or by selecting View » Panels » Properties from the main menu.
The properties displayed in the panel reflect the settings that were used to create the selected room.
Editing via the PCB List Panel
Panel page: PCB List
The PCB List panel allows you to display design objects from one or more documents in tabular format, enabling quick inspection and modification of object attributes. Used in conjunction with appropriate filtering, it enables the display of just those objects falling under the scope of the active filter – allowing you to target and edit multiple design objects with greater accuracy and efficiency.
Copying Room Formats
One of the most powerful features of Rooms is the ability to copy the formatting of one Room to that of another that contains an identical set of components. The command is particularly useful when used in multi-channel designs because it allows the placement and routing made in one channel to be propagated to all other channels. The command is accessible by performing the following steps:
- In the design space, select the room from which to copy formatting.
- Click Design » Rooms » Copy Room Formats from the main menus.
- In the design space, double-click the room to which you want the formatting copied.
-
The Confirm Channel Format Copy dialog opens. Use the options to define the format copying required.
Hiding Rooms
Rooms within a given document can be globally displayed, hidden, or displayed in draft mode using options on the View Options tab of the View Configuration panel.
Notes
- Once component(s) have been assigned to a room, they move when the room is moved. To move a room without moving the components, temporarily disable the associated Room Definition rule in the PCB Rules and Constraints Editor dialog.
- A room can be locked to prevent accidentally moving it. To lock a room, double-click on it and enable the Room Locked option in the Edit Room Definition dialog.
- The context-sensitive right-click menu can be accessed when the cursor is over a room object and provides commands for selecting the connections in the room, routing the connections in the room using the Situs Autorouter and unrouting the room.