<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lukas Wavrin, Author at DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/author/lukasw/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Thu, 11 Jun 2026 17:32:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://static.dmcinfo.com/wp-content/uploads/2025/04/site-icon-150x150.png</url>
	<title>Lukas Wavrin, Author at DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Creating Custom Graphics for SCADA HMIs with Ignition Perspective and Photoshop</title>
		<link>https://static.dmcinfo.com/blog/18518/creating-custom-graphics-for-scada-hmis-with-ignition-perspective-and-photoshop/</link>
		
		<dc:creator><![CDATA[Lukas Wavrin]]></dc:creator>
		<pubDate>Wed, 11 May 2022 09:23:19 +0000</pubDate>
				<category><![CDATA[HMI and SCADA]]></category>
		<category><![CDATA[Ignition]]></category>
		<category><![CDATA[Adobe Photoshop]]></category>
		<category><![CDATA[HMI]]></category>
		<category><![CDATA[Perspective]]></category>
		<category><![CDATA[SCADA]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/18518/creating-custom-graphics-for-scada-hmis-with-ignition-perspective-and-photoshop/</guid>

					<description><![CDATA[<p>In automation, one of the most requested screens for a SCADA application is the plant or department overview screen. This screen is developed to quickly provide the user an understanding of the manufacturing floor status. Often, the key to an effective overview screen is an effective graphic. This graphic may come in many forms. A [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/18518/creating-custom-graphics-for-scada-hmis-with-ignition-perspective-and-photoshop/">Creating Custom Graphics for SCADA HMIs with Ignition Perspective and Photoshop</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">In automation, one of the most requested screens for a SCADA application is the plant or department overview screen. This screen is developed to quickly provide the user an understanding of the manufacturing floor status. Often, the key to an effective overview screen is an effective graphic.</p>

<p class="wp-block-paragraph">This graphic may come in many forms. A steam plant, for example, may utilize a piping and instrumentation diagram (P&amp;ID) to illustrate the movement and temperature of fluids throughout the building. The packaging room of a product manufacturing plant may utilize a CAD drawing of manufacturing equipment with overlays to indicate status. In any case, the graphic should be easily recognizable, quickly interpretable, and useful to a wide range of users.</p>

<p class="wp-block-paragraph">In this blog, we will demonstrate how to create a custom animated graphic that satisfies these requirements for a SCADA application built in Ignition Perspective.</p>

<p class="wp-block-paragraph"><a href="https://inductiveautomation.com/ignition/" target="_blank">Ignition </a>is one of the fastest-growing SCADA/HMI platforms Inductive Automation developed, and <a href="https://inductiveautomation.com/ignition/modules/perspective" target="_blank">Perspective </a>is the web-friendly visualization module that hosts user interfaces accessed from any web browser. Our clients often implement Perspective applications that are simultaneously accessed from industrial HMIs, tablets, laptop computers, and cell phones with ease.</p>

<p class="wp-block-paragraph">The custom graphic created in this tutorial was implemented in the Ignition Perspective SCADA application of a client operating a consumer goods packaging plant. This tutorial is broken into the following sections.</p>

<ol class="wp-block-list">
 <li>Converting existing illustration to a web-friendly format</li>
 <li>Importing drawings to Perspective</li>
 <li>Creating an effective graphic with dynamic bindings</li>
</ol>

<p class="wp-block-paragraph">The following tools are needed to follow along with this guide:</p>

<ul class="wp-block-list">
 <li>Inductive Automation Ignition, including the Perspective module and Designer installation &mdash;</li>
 <li>Adobe Creative Suite, including Photoshop and Illustrator
 <ul class="wp-block-list">
  <li>Note &ndash; free programs, such as <a href="https://www.gimp.org/" target="_blank">Gimp</a>, can also be used to follow this tutorial. Because DMC is a subscriber of the Adobe Creative Suite, which happens to provide some of most efficient tools for the job, these steps are not outlined in detail</li>
 </ul>
 </li>
</ul>

<p class="wp-block-paragraph">Keep reading for step-by-step instructions to convert a 2D CAD drawing to a customizable Perspective graphic.</p>

<h2 class="wp-block-heading">Converting Existing Illustration to SVG</h2>

<p class="wp-block-paragraph">A major benefit of Ignition Perspective is the ability to embed custom scalable vector graphics (SVGs) in the user interface. An SVG is a drawing file, like a CAD or PDF file, consisting of defined paths rather than fixed pixels. This difference allows the graphic to scale predictably without losing definition or quality. Scalability is an excellent quality for a graphic that will be displayed on devices with varying resolution. SVGs provide a path to custom graphics in Perspective without the need for a Designer-based illustration tool like that used in the Vision module.</p>

<p class="wp-block-paragraph"><strong>Option 1: Convert straight to SVG</strong></p>

<p class="wp-block-paragraph">Some drawing files may be imported directly to Adobe Illustrator and saved to an SVG. This is the best-case scenario because only the pixels of interest will be saved from the drawing file. To do this, we simply open the file in Adobe Illustrator, crop if needed, and Export As an SVG. At this stage, ensure each piece of equipment in the drawing is separated into objects with appropriate names. This can be accomplished in Illustrator by creating layers with apt naming prior to export.</p>

<p class="wp-block-paragraph">To confirm your SVG is in the correct format, open it with any text editor. The SVG should consist of some header information describing styles, size, and viewbox as well as a list of path objects. These objects will be displayed in Perspective as individual elements.</p>

<figure class="wp-block-image"><img decoding="async" alt="Example of CSV with single element, &quot;sorterFill.&quot; Note: that path has been cutoff for conciseness." src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_1.png"  /></figure>

<p class="wp-block-paragraph" style="text-align: center;"><em>Figure 1: Example of CSV with single element, &quot;sorterFill.&quot; Note: that path has been cutoff for conciseness.</em></p>

<p class="wp-block-paragraph"><strong>Option 2: Extract drawing with image editing software</strong></p>

<p class="wp-block-paragraph">Other drawing files are not provided in a scalable format or are too complex to be redrawn on your machine. In this case, we can use an image editing software to extract the shapes of interest from the provided drawing.</p>

<p class="wp-block-paragraph"><strong>Step 1: Import illustration to Photoshop (or other photo editing software)</strong></p>

<p class="wp-block-paragraph">For this example, we start with a customer&rsquo;s 2D drawing file in the locked DWG format. Similar processes can be followed for PDFs, DWFs, PNGs, etc. This file contains the top-down drawing of the packaging room floor. Since our photo editing software cannot directly import a DWG file, we will first print the drawing to a high quality TIF image. We will do this with &nbsp;DWG TrueView, a free program from Autodesk. The output filetype is not as important as the quality and size of the image. We only need to convert it to a filetype that our image editing software can process.&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="Import illustration to Photoshop" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_2_Screenshot.png"  /></figure>

<p class="wp-block-paragraph">This TIF file can be dropped into the image editing software. In this guide, we will use Adobe Photoshop. Once dropped into Photoshop, adjust the image to fill your canvas, and rasterize it with the confirmation button.</p>

<figure class="wp-block-image"><img decoding="async" alt="Rasterizing in Photoshop with the confirmation button" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_3.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step 2: Use the Magic Wand tool to select the parts of the drawing to be animated</strong></p>

<p class="wp-block-paragraph"><strong>Hint:</strong> unchecking the &ldquo;Contiguous&rdquo; box in the Magic Wand properties ribbon allows for quick selection of background in grayscale images. In our example, we use the Magic Wand to quickly select all white pixels.<strong> Right click &gt;&nbsp;Select Inverse</strong> yields the selection of all grayscale pixels.&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="Use the Magic Wand tool to select the parts of the drawing to be animated" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_3_Gif_1.gif"  /></figure>

<p class="wp-block-paragraph"><strong>Step 3: Layer Via Copy</strong></p>

<p class="wp-block-paragraph" style="margin-left:.5in;">Right click the selection and create a new layer via copy using the provided menu. The original layer can be disabled to view only the selected pixels.</p>

<p class="wp-block-paragraph"><strong>Step 4: Clean up Selection</strong></p>

<p class="wp-block-paragraph" style="margin-left:.5in;">At this point, we can use our photo editing software&rsquo;s eraser tool to remove pixels from the animation. In our example, we will remove electrical enclosures and repeated hardware.</p>

<figure class="wp-block-image"><img decoding="async" alt="Clean up Selection tool to remove electrical enclosures and repeated hardware" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_4_Gif_2.gif"  /></figure>

<p class="wp-block-paragraph"><strong>Step 5: Separate equipment into unique layers and create Fill Layers</strong></p>

<p class="wp-block-paragraph" style="margin-left:.5in;">Use any selection tools necessary to select and separate the drawing into equipment regions. Separate the regions by right clicking the selections and creating new layers via cut. When finished, we should have a layer for each piece of equipment and nothing else. Delete any background or leftover layers.</p>

<figure class="wp-block-image"><img decoding="async" alt="Separate equipment into unique layers and create Fill Layers" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_5_Gif_3.gif"  /></figure>

<p class="wp-block-paragraph">Once the equipment is separated into layers, each one must be used to create a new Fill Layer. A Fill Layer is needed to vectorize the pixels in preparation for exporting to SVG. First, select all the pixels for a given equipment layer. This can be done by right clicking the layer preview and selecting &ldquo;Select Pixels.</p>

<p class="wp-block-paragraph">Once the pixels are selected, right click the selection, and select &ldquo;Make Work Path.&rdquo;A popup will prompt the user for a tolerance. This setting may be adjusted if results are not satisfactory. For our example, we selected a tolerance of 1 pixel. Images with denser pixel date may not require such a tight tolerance.</p>

<p class="wp-block-paragraph">Create a new Fill Layer using the dropdown navigation: <strong>Layer -&gt; New Fill Layer -&gt; Solid Color</strong>. Select a neutral color, presumably black, and name the layer appropriately. Names selected here will be displayed as properties in the Perspective project object, so they should be intuitive.</p>

<figure class="wp-block-image"><img decoding="async" alt="Create a new Fill Layer using the dropdown navigation: Layer  New Fill Layer  Solid Color" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_6_Gif_4.gif"  /></figure>

<p class="wp-block-paragraph"><strong>Step 6: Export as SVG</strong></p>

<p class="wp-block-paragraph">Once a fill layer is created for each division of equipment, disable all other layers. Only the fill layers should be displayed in the editing window. At this stage, we are ready to export our SVG. Use the dropdown navigation to select Export As, and select SVG from the dropdown menu in the popup that appears.</p>

<figure class="wp-block-image"><img decoding="async" alt="Export as SVG" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_7.png"  /></figure>

<p class="wp-block-paragraph"><strong>Note:</strong> you may want to ensure the drawing is in the proper orientation. This step is not critical but will make responsive resizing in Perspective windows much smoother. Image rotation in Perspective can be accomplished, but it currently requires nesting in a coordinate container.</p>

<h2 class="wp-block-heading">Import SVG to Ignition Perspective Project</h2>

<p class="wp-block-paragraph">Now that the SVG was created from the provided system drawing, it can be imported to the Ignition designer. The easiest way to do this is to drag and drop the file into a blank Perspective view. For this example, we are employing a flex container. Ensure that the SVG is embedded and not linked in the view.</p>

<figure class="wp-block-image"><img decoding="async" alt="Import SVG to Ignition Perspective Project" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_8.png"  /></figure>

<p class="wp-block-paragraph">Once the drawing is embedded, the component will appear in the Project Browser. Browse the `elements` property to ensure that all layers have imported successfully as separate elements.</p>

<p class="wp-block-paragraph">For our example, we set Grow and Shrink properties to 1and allowed the basis to be set automatically. This ensures maximum responsiveness in embedding views. It may also be reasonable to set minHeight and minWidth constraints on the SVG component, or flex container, if needed for a given application.</p>

<h2 class="wp-block-heading">Create Intuitive Overlays and Animations in Perspective</h2>

<p class="wp-block-paragraph">Each element of the SVG component can be customized like other Perspective components. Namely, a &ldquo;style&rdquo; object may be defined for each element to employ standard Perspective CSS-esque customization. For this example, we will be animating/coloring the pieces of equipment drawing based on OPC status tags using Perspective styles.</p>

<p class="wp-block-paragraph"><strong>Step 1: Create Perspective styles</strong></p>

<p class="wp-block-paragraph" style="margin-left: 40px;">For this example, we will use style to change the color and of each piece of equipment. This is not the only way of animating equipment with styles. Border, transparency, and visibility can also be customized for a more inclusive design. Let&rsquo;s first define our &ldquo;alarm&rdquo; class. When this class is applied, we want the equipment to flash between red and black at a fixed rate. Use the Timing and Shape/Fill properties to accomplish this.</p>

<figure class="wp-block-image"><img decoding="async" alt="Create Perspective styles" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_9.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step 2: Create dynamic bindings</strong></p>

<p class="wp-block-paragraph">Once styles have been created, they need to be dynamically assigned to the class property of each element of the SVG. This can be accomplished in a few ways:</p>

<p class="wp-block-paragraph" style="margin-left:.5in;"><strong>Option 1: Create bindings for each element</strong></p>

<p class="wp-block-paragraph" style="margin-left: 80px;">For simple drawings, a binding may be defined for each object in the SVG. For each element, create a &ldquo;style&rdquo; object with a &ldquo;classes&rdquo; value. This value will be bound to the appropriate OPC tag. In our example, we use an indirect tag binding to retrieve the equipment status from tag UDTs. Two transforms are then applied: a script transform to check tag quality &mdash; end user wanted custom error behavior &mdash; and a map transform to select the appropriate predefined style from an enumeration.</p>

<p class="wp-block-paragraph"><figure class="wp-block-image"><img decoding="async" alt="Creating dynamic bindings for each element" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_10.png"  /></figure><figure class="wp-block-image"><img decoding="async" alt="Creating dynamic bindings for each element" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_11_Gif_5.gif"  /></figure></p>

<p class="wp-block-paragraph" style="margin-left: 40px;"><strong>Option 2: Update style classes via scripting</strong></p>

<p class="wp-block-paragraph" style="margin-left: 80px;">For complicated drawings with many pieces of equipment, scripting may be a more efficient use of developer time. Consider creating a timed event or a custom root property with a polling expression binding to execute the following pseudo code:</p>

<figure class="wp-block-image"><img decoding="async" alt="Update style classes via scripting" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_12.png"  /></figure>

<p class="wp-block-paragraph">This allows the styling to be set without configuring individual bindings on each element. For this code to work, the names of SVG elements must match tag names in the tag provider UDT that is supplying status information, and the eqPath parameter of the view must be a valid tag path to a UDT instance.</p>

<p class="wp-block-paragraph">Once our bindings have been created, we are ready to embed the animation throughout the project.</p>

<figure class="wp-block-image"><img decoding="async" alt="Update style classes via scripting" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo_13_Gif_5.gif"  /></figure>

<p class="wp-block-paragraph">In this guide, we&apos;ve learned how to create a custom illustration and animation from a 2D drawing file and import it to an Ignition Perspective project. To learn more designing dynamic Perspective projects, see Caz&rsquo;s series of blogs listed below!</p>

<p class="wp-block-paragraph">Learn more about DMC&apos;s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming/ignition-programming">Ignition expertise</a>, and <a href="https://static.dmcinfo.com/contact">contact us</a> to get started on your next <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming">HMI</a>, <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming">SCADA</a>, or <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/manufacturing-execution-systems-services">MES </a>project!</p>

<p class="wp-block-paragraph"><strong>See other blogs related to this topic:</strong> Creating Dynamic Ignition Perspective Projects<br />
<a href="https://static.dmcinfo.com/latest-thinking/blog/id/10250/creating-dynamic-ignition-perspective-projects-part-one-bindings-and-transforms">Part 1: Bindings and Transforms</a><br />
<a href="https://static.dmcinfo.com/latest-thinking/blog/id/10251/creating-dynamic-ignition-perspective-projects-part-2-button-event-actions">Part 2: Button Event Actions</a><br />
<a href="https://static.dmcinfo.com/latest-thinking/blog/id/10252/creating-dynamic-ignition-perspective-projects-part-3-embedded-views-and-flex-containers">Part 3: Embedded Views and Flex Containers</a><br />
<a href="https://static.dmcinfo.com/latest-thinking/blog/id/10253/creating-dynamic-ignition-perspective-projects-part-4-parameters-indirect-bindings-and-flex-repeaters">Part 4: View Parameters, Indirect Bindings, and Flex Repeaters</a></p>
<p>The post <a href="https://static.dmcinfo.com/blog/18518/creating-custom-graphics-for-scada-hmis-with-ignition-perspective-and-photoshop/">Creating Custom Graphics for SCADA HMIs with Ignition Perspective and Photoshop</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
