Product: Mingcedar Studio DESIGNER
Choose between Move and Scale | Mingcedar Studio
Map a number to a horizontal or vertical offset from the original position, for sliders, level markers and indicators.
<section id="move-scale-compare" class="docs-block docs-block-intro docs-block-current"> <span class="section-kicker">Geometry</span> <h2>Choose between Move and Scale</h2> <p>Map a number to a horizontal or vertical offset from the original position, for sliders, level markers and indicators.</p> <div class="docs-detail-list"> <article id="move-scale-compare-item-1" class="docs-detail-row"> <strong>Overview</strong> <p>Move is a Geometry behavior for numeric single-axis motion. Use Rotate for angles and Scale for size changes.</p> </article><article id="move-scale-compare-item-2" class="docs-detail-row"> <strong>How to use it: every control in the editor</strong> <p>Move clamps Source value to Limit minimum / Limit maximum and maps that interval to At limit minimum / At limit maximum. The output is a canvas distance relative to the original component position. Source minimum / Source maximum are available as ValueMin / ValueMax aliases. Changing the source range alone does not update the input limits.</p> <ul> <li>Behavior name is editable; Component name is read-only.</li><li>Quality override / Override border by quality configures Good and Bad borders for data quality, separately from process limits.</li><li>JS functions... inserts a method into the focused expression field.</li><li>Source value returns a number, for example ReadTagDouble("PLC_LINE01.TANK01.LEVEL", 0). Condition returns a boolean; false skips the behavior and does not hide the component.</li><li>Source minimum / Source maximum default to 0 / 100 and supply the ValueMin / ValueMax expression aliases.</li><li>At limit minimum / At limit maximum specify movement offsets, initially 0 / 120 for a new Move behavior, at the input-limit endpoints. Capture calculates an endpoint from the component geometry.</li><li>Limit minimum / Limit maximum start as independent values 0 / 100 and control clamping and normalization. Enter ValueMin / ValueMax to follow the source range.</li><li>Move axis: Horizontal or Vertical. Hide outside input limits controls visibility on an out-of-range input.</li><li>Save / Ctrl+S validates and saves; Cancel / Esc discards the edit.</li> </ul> <pre class="docs-code-block"><code>// Source value
ReadTagDouble("PLC_LINE01.TANK01.LEVEL", 0)
// Source minimum / maximum: 0 / 100
// Limit minimum / maximum: ValueMin / ValueMax
// At limit minimum / maximum: 0 / -shape.height
// Move axis: Vertical</code></pre> </article><article id="move-scale-compare-item-3" class="docs-detail-row"> <strong>How the Capture buttons work</strong> <p>Capture beside At limit minimum / At limit maximum calculates the offset from the same component in PowerPoint. The editor records the original geometry, writes the difference between target and original coordinates, and then attempts to restore the original position.</p> <ul> <li>Choose Move axis first: Horizontal uses the Left difference and Vertical uses the Top difference.</li><li>Move the component to the desired endpoint, then use Capture beside that endpoint.</li><li>The offset uses 0.### formatting and can be replaced with a numeric expression.</li><li>The same component must remain selected. Unavailable original or current geometry produces an error.</li><li>If restoration fails, the saved offset remains; restore the component before continuing.</li> </ul> </article><article id="move-scale-compare-item-4" class="docs-detail-row"> <strong>When to use it</strong> <p>Use a measured value to drive linear motion, for example:</p> <ul> <li>Tank level: map the level percentage into a vertical offset so the liquid block floats up and down with the level</li><li>Slider / horizontal indicator: map a 0-100 value into a horizontal offset to produce slider or horizontal indicator bar motion</li> </ul> </article><article id="move-scale-compare-item-5" class="docs-detail-row"> <strong>Limitations and troubleshooting</strong> <p>Check these settings:</p> <ul> <li>Movement outputs use canvas distance. Use shape.width for one component width; 100 means 100 canvas units.</li><li>Limit minimum / Limit maximum controls the actual mapping, with out-of-range visibility controlled separately.</li><li>Check the movement axis before Capture to avoid recording the wrong coordinate difference.</li><li>After changing the source range, update input limits or enter ValueMin / ValueMax to follow it.</li> </ul> </article><article id="move-scale-compare-item-6" class="docs-detail-row"> <strong>Overview</strong> <p>Drag Geometry → Scale onto a component to drive its size from a number.</p> </article><article id="move-scale-compare-item-7" class="docs-detail-row"> <strong>How to use it: every control in the editor</strong> <p>Scale clamps Source value to Limit minimum / Limit maximum and maps that interval to At limit minimum / At limit maximum. The output is a scale factor; 1 preserves the original size. Source minimum / Source maximum are available as ValueMin / ValueMax aliases. Changing the source range alone does not update the input limits.</p> <ul> <li>Behavior name is editable; Component name is read-only.</li><li>Quality override / Override border by quality configures Good and Bad borders for data quality, separately from process limits.</li><li>JS functions... inserts a method into the focused expression field.</li><li>Source value returns a number, for example ReadTagDouble("PLC_LINE01.TANK01.LEVEL", 0). Condition returns a boolean; false skips the behavior and does not hide the component.</li><li>Source minimum / Source maximum default to 0 / 100 and supply the ValueMin / ValueMax expression aliases.</li><li>At limit minimum / At limit maximum specify scale factors, initially 0.5 / 1.5 for a new Scale behavior (change them to 0 / 1 for the level-fill example), at the input-limit endpoints. Capture calculates an endpoint from the component geometry.</li><li>Limit minimum / Limit maximum start as independent values 0 / 100 and control clamping and normalization. Enter ValueMin / ValueMax to follow the source range.</li><li>Moving edge: Top moves the top edge and fixes the bottom; Right moves the right edge and fixes the left.</li><li>Save / Ctrl+S validates and saves; Cancel / Esc discards the edit.</li> </ul> <pre class="docs-code-block"><code>// Source value
ReadTagDouble("PLC_LINE01.TANK01.LEVEL", 0)
// Source minimum / maximum: 0 / 100
// Limit minimum / maximum: ValueMin / ValueMax
// At limit minimum / maximum: 0 / 1
// Moving edge: Top</code></pre> </article><article id="move-scale-compare-item-8" class="docs-detail-row"> <strong>How the Capture buttons work</strong> <p>The editor records the original size. Resize the same component in PowerPoint and click Capture beside an endpoint. It calculates target size / original size using Moving edge, writes the factor and attempts to restore the original geometry.</p> <ul> <li>Choose Moving edge first, because it decides whether the calculation uses width or height and which edge defines the target size.</li><li>Top / Bottom use height: Top uses original bottom minus current top, and Bottom uses current bottom minus original top.</li><li>Left / Right use width: Left uses original right minus current left, and Right uses current right minus original left.</li><li>If the original width/height is zero, the target size would be negative, or the selected object is not the same component, Target warns and refuses to write.</li><li>Capture writes a 0.### factor. If you need a fixed expression instead, you can still overwrite At limit minimum / At limit maximum by hand.</li> </ul> </article><article id="move-scale-compare-item-9" class="docs-detail-row"> <strong>When to use it</strong> <p>Use size to represent a value, for example:</p> <ul> <li>Level fill: a fill block inside a tank rises with the level percentage; set Moving edge to Top so the bottom stays fixed.</li><li>Bar growth: a throughput or load bar grows from one end with the value; set Moving edge to the edge it grows toward.</li><li>Icon response: an icon scales between At limit minimum and At limit maximum with a value as a strength indicator.</li> </ul> </article><article id="move-scale-compare-item-10" class="docs-detail-row"> <strong>Limitations and troubleshooting</strong> <p>Check these Scale settings:</p> <ul> <li>Moving edge is the edge that moves, not the fixed one: choosing Top means the top edge moves and the bottom is fixed; Left means the left moves and the right is fixed. To keep an edge still, pick its opposite.</li><li>At limit minimum / At limit maximum are scale factors, not percentages: the original size is 1.0, not 100.</li><li>One Moving edge means one direction: if you pick Right, do not expect it to scale toward both sides; the fixed edge does not move.</li><li>Scale has no out-of-range hiding option. A false Condition only skips scaling; use Visibility in State Color or Script Color when the component must be hidden.</li><li>Recheck Limit minimum / Limit maximum when changing the input range, or use ValueMin / ValueMax to keep the effective range aligned with the source range.</li> </ul> </article> </div> <div class="docs-note-grid"> <figure id="move-scale-compare-image-1" class="docs-note-card manual-doc-image-card"> <img src="/WEB_img/HQPPT/current/geometry/move.png" alt="Move behavior editor" loading="lazy" decoding="async"> <figcaption> <strong>Move editor</strong> <p>Set the source range, offset range, and axis to map a value proportionally into a single-axis offset.</p> </figcaption> </figure><figure id="move-scale-compare-image-2" class="docs-note-card manual-doc-image-card"> <img src="/WEB_img/HQPPT/current/geometry/scale.png" alt="Scale behavior editor" loading="lazy" decoding="async"> <figcaption> <strong>Scale editor</strong> <p>Map a value into a scale factor and use Moving edge to choose which edge moves and which stays fixed.</p> </figcaption> </figure> </div> </section>