The layout looks like this. A row of conveyor templates sits in a Perspective coordinate container. Each one is an embedded view built from an SVG, and every SVG is the same size. You select the row, copy, paste, and the pasted row comes out staggered. Some templates are a few pixels high or low, and gaps open where the originals were flush. Zooming the Designer makes pieces creep. Scaling looks wrong, and each template carries blank space you never drew.
The usual fixes are listed first, with the reason each one fails, so you stop spending time on them.
Stop Re-Pasting and Hand-Nudging
| Quick fix people try | Why it fails |
|---|---|
| Delete the pasted set and paste again | The misalignment was often already in the source set. Pasting reproduces the stored coordinates. It does not repair them. |
| Multi-select the conveyors and tap the arrow keys to line them up | This is the most common cause of the drift. Nudging a multi-selection with the keyboard throws components out of line. Each tap can make it worse. |
| Zoom in and align by eye | Components appear to shift slightly as the Designer zoom changes. Alignment that looks right at one zoom level will not look right at another. |
| Re-export the SVGs at identical sizes | Matching SVG dimensions does not give matching component bounds. Padding inside the SVG, the view size, and the embedded component size all add their own offsets. |
| Switch to the pipe drawing tool | Pipes handle flow graphics well. They are not a reusable template. You lose the single edit point, configurable popups, per-conveyor names, and PLC tag binding through parameters. |
Get the line running with a clean realignment first. Then fix the structure so the drift cannot come back.
Find What Actually Moved Them
Four separate mechanisms produce this symptom. Work out which one you have before you touch anything.
- Keyboard nudge on a multi-selection. This one has been confirmed in the field. Items moved with the mouse stay in line. Items moved with the arrow keys drift. The likely explanation is coordinate rounding. Each selected component gets its own position update, and each update is quantized separately. That matters most when the container stores positions as fractions of its size (percent mode) instead of fixed pixels. One tap can be invisible, and ten taps leave a visible stagger.
- Copy/paste and duplication bugs in older 8.1 builds. The Ignition 8.1.38 release notes list the entry Fixed more Coordinate container component duplication bugs. The 8.1.36 notes list a fix for Perspective components moving diagonally when the parent container has a border width applied. Earlier releases include related entries. If you run an older build, some of what you see is a product defect and not your layout.
- Designer zoom rendering. At non-integer zoom factors, fractional coordinates snap to different screen pixels. Items look like they move even when the stored values do not change. Always trust the property values over what you see on screen.
- Template geometry. Blank space around a template, and scaling that is "almost" right, come from mismatched boxes. The SVG artboard or viewBox is larger than the drawing, the embedded view is sized differently from the SVG, or the embedded component in the layout is sized differently again. Each mismatch adds an offset that looks like misalignment.
Match the Symptom to the Cause
| What you see | Most likely cause | Check |
|---|---|---|
| Paste result is staggered, but the source row looked aligned | The source was already off by fractions, or a duplication bug in an older build | Read the x/y of each source component in the Property Editor. Check the installed Ignition version. |
| Row goes out of line after arrow-key moves | Per-component rounding during a keyboard nudge | Undo the nudge, repeat the move with the mouse, and compare the values. |
| Components slide diagonally when moved | Border width on the parent container (fixed in 8.1.36) | Temporarily remove the parent border and repeat the move. |
| Items shift when zooming the Designer | Sub-pixel rendering at the current zoom | Compare the stored x/y at two zoom levels. If the values are unchanged, the layout is fine. |
| White margin around every template | SVG padding, or a view size larger than the drawing | Open the template view by itself and compare its size to the SVG bounds. |
| Templates scale unevenly between screens | Percent-mode container mixed with fixed-size embedded views, or aspect ratio not locked | Check the coordinate container mode in both the template and the main layout. |
Realign the Line Tonight
This procedure restores a straight, flush row without restructuring anything.
- Record the Ignition version from the Gateway status page or the Designer About dialog. You need it for the permanent fix.
- Pick one conveyor as the anchor. Type its x/y into the Property Editor as whole numbers. Do not drag it.
- Select the rest of the row plus the anchor. Use the Designer alignment tools to align the edges you need, for example top edges for a horizontal run.
- Use the spacing/distribute tool with spacing set to zero so the sections butt together. Expect some odd behavior. Check the result in the next step.
- Walk the row in the Property Editor. Each component's position should equal the previous position plus the previous width, with no fractional values. Type in any value that is off.
- From here on, move groups with the mouse only. Do not use the arrow keys on a multi-selection.
- Before a large copy/paste, save, close the view, and reopen it. Then copy and paste. This has helped some installations where multi-object paste misbehaved. Treat it as a workaround and not a guaranteed fix.
Stop here if the row still refuses to hold alignment after you type exact values. That points to a product defect in your build. Go to the upgrade step.
Fix It Properly: Group Each Run in Its Own Container
The durable fix is to stop moving loose templates around the main layout.
- Add a coordinate container to the main layout for each conveyor run.
- Paste the aligned conveyors into that container. They keep their positions relative to each other.
- Move and copy the container from now on, not the individual conveyors. Moving the container cannot change the alignment inside it.
- Set the container's
overflowproperty so no scroll bars appear when a template sits on the edge. - Size the container to exactly fit its contents. That keeps the alignment tools in the parent layout working on clean bounds.
Copy/paste then becomes a single-object operation, and single-object paste is the reliable case. This matters even more on builds before the 8.1.38 duplication fixes. Grouping also cuts down the multi-object selections that trigger the keyboard-nudge drift.
If you are below 8.1.38, plan an upgrade. Read the Perspective sections of the release notes for each version between your build and the target, and look for coordinate container and component movement fixes. Test in a staging Gateway first. Never upgrade a running production Gateway blind.
Build Templates That Tile Cleanly
Blank space and bad scaling are almost always set when the template is built. Correct them once in the template view and every instance inherits the fix.
- Crop the SVG to its geometry. Set the artboard or viewBox to the drawing's outer bounds before export. Remember that a stroke extends half its width outside the path, so the bounds must include it or neighbors will overlap by a pixel.
- Make the view size equal the SVG size. The template view's default size should equal the cropped SVG dimensions in whole pixels. A larger view means built-in margin.
- Pin the SVG to the view. Inside the template, place the drawing at the origin at full view size. Use a fixed-pixel coordinate container unless you need the template to stretch.
- Size the embedded view component to match. In the main layout, give each embedded conveyor the same width and height as its template view. Any difference gets scaled or padded.
- Pick one scaling strategy. Percent-mode containers scale with the viewport but store fractional coordinates, which makes exact butt joints harder. Fixed-mode containers hold exact pixel positions and scale only if you scale the whole view. Do not mix the two across nesting levels without a reason.
- Keep borders off layout containers. Put visual borders inside the template or on a styled child. Border width on the parent is linked to diagonal-movement behavior in pre-8.1.36 builds.
Pick the Right Graphic Strategy
If a conveyor is a controllable object, keep templates. Pipes and single drawings suit graphics that only show state.
| Approach | Keeps one edit point | Per-conveyor popups and PLC tags | Alignment effort | Use when |
|---|---|---|---|---|
| Template views as embedded views in a coordinate container | Yes | Yes, through view parameters | Highest; needs the grouping and sizing discipline above | Each section is a controllable object with its own name, popup, and tags |
| Pipe drawing tool | No | Limited | Low | Flow paths that only need color or animation |
| Single drawing per conveyor line, with styles bound to individual paths | Per line | Possible per path, but popups need extra wiring | Lowest; geometry is fixed inside one SVG | Long fixed runs where sections never move independently |
A hybrid often works well. Draw each physical run as one SVG so the joints are exact. Wrap it in one template that takes an array of section names and tag paths, and bind section styles to paths inside the drawing. You keep one edit point and lose the tile-alignment problem.
Verify the Fix
- Read x, y, width, and height for every conveyor in a run. Positions should chain exactly, with no fractional remainders in fixed mode.
- Change the Designer zoom through several levels. Recheck two or three components. The stored values must not change even if the rendering flickers.
- Copy the grouping container and paste it. Compare child positions in the copy against the original. They should be identical.
- Launch a session in a browser at two different window sizes. Confirm that the joints stay closed and that no scroll bars or margins appear.
- Click through several conveyors. Confirm each popup opens with the right name and tag bindings, which proves the parameters survived the restructuring.
FAQ
What happens if I use arrow keys to move multiple Perspective components?
The selected components can drift out of line relative to each other, likely because each position is rounded separately. Move multi-selections with the mouse, or group them in a coordinate container and move the container.
What happens if the parent coordinate container has a border width?
On Ignition builds before 8.1.36, components could move diagonally when dragged inside a bordered parent. Upgrade, or move the border onto a child element so the layout container has no border width.
What happens if my template view is larger than its SVG?
Every instance carries the extra area as blank margin, so neighboring conveyors cannot butt together. Crop the SVG to its geometry and set the view size and embedded component size to the same whole-pixel dimensions.
When should I stop troubleshooting and contact Inductive Automation support?
Escalate when a run still loses alignment after you have typed exact whole-number positions and grouped it in its own container on a current 8.1 build, or when paste results differ from the source values you recorded. Send Inductive Automation support your Gateway version, an exported copy of the affected view, and the steps that reproduce the shift.