Parent page: Pre-layout Stage
A Room object
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.
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.
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.
After launching the Design » Rooms » Place Rectangular Room 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.
Press the Tab
key during placement to access the Edit Room Definition
dialog, from where you can change properties for the room's associated Room Definition Rule
After launching the Design » Rooms » Place Polygonal Room 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.
Press the Tab
key during placement to access the Edit Room Definition
dialog, from where you can change properties for the room's associated Room Definition Rule
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 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.
Double-click on a placed room to open the Edit Room Definition dialog in order to edit its rule properties.
As well as being a design rule in its own right (Room Definition), a room can also be used as an object when defining the scope of another rule, such as Clearance or Height. Since the room is to be used as an object rather than a rule, you can disable the rule. The following two queries can be used when using a room object in another rules' scope definition:
This can be used, for example, to route a net at different widths as the routing travels across the board. Refer to Automatically Changing the Routing Width As You Route to learn more.
Automatically Generated 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.
In the PCB, each room is defined as a design rule, which will be created with the scope of
InComponentClass('<SheetSymbolDesignator>'). A room will not be created if the sheet does not contain any components. When the schematic is initially transferred to the PCB, the components in each component class are arranged in a row, and then a room is created around that component class, as shown below.
The PCB after initial design synchronization - a room has been created for each sheet, and that room has that sheet's component class assigned to it.
Creating a Room from a Set of Tracks
A room object can be defined using a closed boundary made up of selected track and/or arc objects. To do this, select all constituent track and arc primitives of the closed boundary in the design space and choose the Tools » Convert » Create Room from Selected Primitives command from the main menus.
After launching the command, the Edit Room Definition dialog will open. Use this dialog to define the room's associated Room Definition design rule, including which components (or class of components) are targeted by (associated with) the room and related constraints. After clicking OK, a room will be created from the closed boundary formed by the track primitives. The room's boundary follows the center line of the bounding track objects and it is not selected. Select and move the room to its required location in the workspace. Double-click on it to access the Edit Room Definition dialog, from where you can further change scope and/or constraints for the associated room definition rule as required.
- The room will be created on the layer specified in the associated rule's constraints, not the layer that the selected tracks are on. This means you can define the shape on a mechanical Layer, then create the room on the required signal layer.
- The selected tracks will still exist after the room has been created and will remain selected.
For Altium Designer to be able to perform a track to room conversion, the outline must be correctly defined. That means the outline must form a closed shape, with the ends of touching track segments correctly meeting (starting/ending in the same X, Y location).
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 from the main menus or the Room Actions » Move Room command from the room's context menu. After launching the command, the cursor will change to a cross-hair and you will enter room movement mode. Movement is made by performing the following sequence of actions:
- Position the cursor over the room in the design that you want to move then click or press Enter.
If the room contains any no-net objects and/or locked objects, the Room containing No Net/Locked Objects dialog will open. Use this dialog to determine whether these objects should be moved with the room or not then click OK.
For this dialog to appear, the Ask when moving rooms containing No Net/Locked Objects
option must be enabled on the PCB Editor - General
page of the Preferences
The Room containing No Net / Locked Objects dialog
- No Net Objects - enable to move objects with no nets with the room.
- Locked Objects - enable to move locked objects with the room.
- Don't ask me about moving room's locked/no net objects until next PCB session (use currently selected settings) - enable this option to save the selected settings and continue using them for the rest of your PCB session. The dialog will not open again unless a new session is started.
- The room will attach to the cursor. Move the room to the required position then click or press Enter to effect placement.
- Continue moving further rooms or right-click or press Esc to exit.
When the room being moved involves one or more components, dynamic alignment guides (green indicator lines that appear when pressing the Ctrl or Shift key in relation to the boundaries or pads of components in the room and nearby components) can be used while the selection is still floating on the cursor.
- Since the movement of a room involves the room as well as any components and additional design objects, it is considered a complex selection. In this case, the only component push mode available is Ignore. Connection display is also disabled.
- A room can also 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.
- Any nets associated to an object within the room will remain connected and the connection lines follow the object when the room is moved. Any routed track connected to the object that is outside the room will not be moved.
- 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.
- When a room is mirrored along the X or Y axes, the Designator and Comment of each associated component will become mirrored.
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) or the Room Actions » Edit Polygonal Room Vertices command from the room's right-click menu. 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.
This command can be used regardless of whether or not the target room is locked.
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:
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.
When using the Design » Rooms » Slice Room command, note that the slicer will only work provided the current layer is the layer on which the room to be sliced resides. Therefore, first ensure that the correct layer is made the current layer.
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.
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
The above commands also can be accessed from the Room Actions sub-menu when right-clicking over a room in the design space.
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.
When using any of the Wrap commands, if the current room is already the shape that you are trying to change it to and was created based on its member components, it will already be optimally sized (wrapped) around the components, and using the command will have no effect.
If attempting to graphically modify an object that has its Locked
property enabled, a dialog will appear asking for confirmation to proceed with the edit. If the Protect Locked Objects
option is enabled on the PCB Editor – General
page of the Preferences
dialog and the Locked
option for that design object is enabled as well, then that object cannot be selected or graphically edited. Click the locked object to select it then disable the Locked
property in the List
panel or disable the Protect Locked Objects
option to graphically edit the object.
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.
The Edit Room Definition dialog and the Room mode of the Properties panel
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.
You can change the units of measurement currently used in the dialog with the shortcut Ctrl+Q. The current unit of measurement is displayed in the dialog title area.
The constraints for a Room Definition rule can also be edited directly in the PCB Rules and Constraints Editor dialog (Design » Rules).
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.
- Name – the current name of the room (and the associated Room Definition rule). This can be changed as required. As well as helping identify each room, the name can be used to target a specific room in a design rule.
- X (first field) – this field shows the current X position of the first vertex of the room relative to the current origin. Edit the value in the field to change the position of the room relative to the current origin. The value can be entered in either metric or imperial; include the units when entering a value whose units are not the current default. Default units (metric or imperial) are determined by the Units setting in the Other region of the Properties panel in Board mode (accessed when no objects are selected in the design space) and are used if the unit is not specified.
- Y (second field) – this field shows the current Y position of the first vertex of the room relative to the current origin. Edit the value in the field to change the position of the room relative to the current origin. The value can be entered in either metric or imperial; include the units when entering a value whose units are not the current default. Default units (metric or imperial) are determined by the Units setting in the Other region of the Properties panel in Board mode (accessed when no objects are selected in the design space) and are used if the unit is not specified.
icon to the right of this region must be displayed a
(unlocked) in order to access the below fields. Toggle the lock/unlock icon to change its lock status.
This region is used to modify the locations of existing vertices of the currently selected room object. Arc connections between vertex points can be defined and support is also provided for exporting vertex information to and importing from a CSV-formatted file.
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.
In the PCB List panel, the selected room object will appear as the Object Kind:
Confinement Constraint Rule.
To arrange selected rooms within the design space, the Design » Rooms » Arrange Rooms command can be used. After launching the command, the Arrange Rooms dialog will open. Use this dialog to specify how you want the rooms arranged and in what order they are to be placed. You can also specify positioning for the start point of the placement - either textually in the dialog or graphically in the workspace - as well as spacing values between adjacent rooms. After clicking OK, the selected rooms will be moved into place accordingly.
The Arrange Rooms dialog
- Any rooms that are currently locked in position will not be moved. If such rooms are required to be moved, unlock them first and launch the command again.
- If a room's associated components are locked (through the room's defined constraints) to that room, those components will move with the room.
- Columns - displays the current number of columns used to place the rooms. Edit this field to change the number of columns.
- Rows - displays the current number of rows used to place the rooms. Edit this field to change the number of rows.
If there are more rooms than will fit into the custom rows and columns arrangement, more rows will be added at the top.
- SortBy - displays the current sort order, i.e., the criteria used to distinguish the first room from the next, and so on. Click to view and select a sort criteria from the list. The available options are:
The default for sorting is biggest first. Using names, closest to Z is first.
- Sort in Ascending order - enable to sort the rooms in ascending (smallest to largest) order according to the SortBy criteria.
- Origin X - displays the current X (horizontal) coordinate in relation to the origin from where to start placing the rooms. Edit this field to change the X coordinate, which can be defined in either mm or mil units. To specify the units when entering a number, add the mm or mil suffix to the value. Default units (metric or imperial) are determined by the Units setting in the Properties panel and are used if no units are specified.
Origin Y - displays the current Y (vertical) coordinate in relation to the origin from where to start placing the rooms. Edit this field to change the Y coordinate, which can be defined in either mm or mil units. To specify the units when entering a number, add the mm or mil suffix to the value. Default units (metric or imperial) are determined by the Units setting in the Properties panel and are used if no units are specified.
The Select Origin Using Mouse option must be disabled in order to edit Origin X and Origin Y.
- Select Origin Using Mouse - enable to manually set the origin for the room arrangement using the cursor.
- X-Spacing - displays the current X (horizontal) distance to leave between adjacent rooms. Edit this field to change the distance, which can be defined in either mm or mil units. To specify the units when entering a number, add the mm or mil suffix to the value. Default units (metric or imperial) are determined by the Units setting in the Properties panel and are used if no units are specified.
Y-Spacing - displays the current Y (vertical) distance to leave between adjacent rooms. Edit this field to change the distance, which can be defined in either mm or mil units. To specify the units when entering a number, add the mm or mil suffix to the value. Default units (metric or imperial) are determined by the Units setting in the Properties panel and are used if no units are specified.
The Auto Spacing option must be disabled in order to edit X-Spacing and Y-Spacing.
- Auto Spacing - enable to have the rooms arranged with equal X (horizontal) and Y (vertical) spacing.
- Place On Grid - enable to force the rooms to arrange in alignment with the PCB document grid.
Moving Rooms To Grid
To move selected rooms to the nearest point on the applicable and modified snap grid, the Design » Rooms » Move Rooms To Grid command can be used. After launching the command, a confirmation dialog will open asking whether you want to move objects with the selected rooms. Click Yes to move the room(s) and all constituent objects to the nearest point on the applicable snap grid. Click No to move the rooms only.
Selected components that have been locked will be moved if you have chosen to include room objects in the move.
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:
- Click Design » Rooms » Copy Room Formats from the main menus.
- Position the cursor over the room that you wish to copy the formatting from, and click or press Enter.
- You will then be prompted to choose a destination room. Position the cursor over the room that you wish to copy the formatting to, and click or press Enter.
The Confirm Channel Format Copy dialog opens. Use the options to define the format copying required. Format copying can be applied from the chosen Source Room to the chosen Destination Room, or from the Source Room to each of the rooms in the detected Channel Class.
To copy a room format and apply it to other rooms, the applicable Room Definition design rules must be enabled. If you get component matching or channel offset errors when you run the Copy Room Formats command then you might have one or more of the required Room Definition design rules disabled in the PCB Rules and Constraints Editor.
- Source Room - This field contains the name of the source room (representing the channel from the schematic), whose component placement and routing will be copied.
- Destination Room - This field contains the name of the destination room (representing the channel from the schematic), that the copied placement and routing will be applied to.
If the project is a multi-channel design and the source and destination channels are members of the same Channel Class, then format copying will be applied to the channels enabled in the Channel Class region of the dialog.
- Copy Component Placement - Enable this option to copy the component placement of the source room to the designated room.
- Copy Component Text Formats - Enable this option to copy the designator and comment format of the source room to the designated room.
- Copy Routed Nets - Enable this option to copy the routing layout (routed nets) of the source room to the designated room.
- Copy Room Size/Shape - Enable this option to copy the source room shape and apply this shape to the designated room.
- Copy Selected Objects Only - Enable this option to copy the formatting of selected objects of the source room to the designated room.
The source channel (room) and the designated channel (room) must belong to the same channel class if you want to copy the formatting of a source channel (room) to other channels (rooms).
Touching Objects Options
- Copy All Objects Touching the Room - Check this option to copy objects touching the room.
- Exclude NoNet Objects - Check this option and objects without nets will not be copied.
Fully Enclosed Only/Enclosed & Touching
- Fully Enclosed Objects Only - Check this option to copy fully enclosed objects only.
- Enclosed & Touching Objects - Check this option to copy both enclosed and touching objects.
Channel to Channel Component Matching
Choose one of the following options to determine how the same component is identified within each channel:
- Match Components by Channel Offsets - each component in a repeated channel is assigned a channel offset during design transfer to the PCB editor, use this to identify the same component in each channel.
- Match Components by Source Designator - use the designator to identify the matching components in each channel.
Each channel (room) has a number of components and they each have a unique offset value within that channel.
Remove Affected Connections
Choose one of the following three options to remove affected connections after the channel format copy has been processed:
- Whole connections - The affected connections within and outside the room are removed.
- Touching parts of connections only - The affected connections touching the room are removed.
- Contained parts of connections only - The affected connections within the room are removed.
When a multi-channel design is transferred from schematic to PCB, the repeated circuitry (channels) are identified as a Channel Class in the PCB editor's Object Class Explorer dialog. It is this Channel Class that is then used to identify which channels the format copying is to be applied to - in the image at the start of this page it will be all channels in the
OutputChannel Channel Class (as shown at the top right of the dialog).
- Channel Class - Displays the name of the Channel Class that the channel members belong to. This field is not editable.
- Channel Members - This list contains the channels, each identified by its room name. If the source room is part of a defined channel class, the class and all of its members will be listed. The layer (side of board that the room has been placed on), and number of components in each channel, is displayed. Each channel includes a checkbox used to control if format copying is to be applied to that channel, the checkbox becomes accessible if the Apply To Specified Channel option is enabled.
- Apply To Specified Channel - The default behavior is to copy the format from the Source Room to all channels in the Channel Class that the source room (channel) is a member of. When this option is enabled the Copy checkbox for each channel becomes available, giving selective control over which channels in the class will be targetted by the format copy action.
If the Channel Class region of the dialog is empty, check that the Channel Class is correctly defined in the Object Class Explorer dialog (Design » Classes). If there is no Channel Class identified, the copy command is only applied from the Source Room to the Designation Room.
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.
- 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.