<?xml version="1.0" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Flyspray::</title>
  <subtitle type="text">
    Feed for all projects
  </subtitle>
  <id>https://www.qcad.io/bugtracker/</id>
    <updated>2026-09-02T08:22:21Z</updated>
  <link rel="self" type="text/xml" href="feed.php?feed_type=atom"/>
  <link rel="alternate" type="text/html" hreflang="en" href="/bugtracker/feed.php"/>
    <entry>
    <title>FS#2749: File &gt; Print Preview: Missing icon for page settings</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2749" />    
    <updated>2026-09-02T08:22:21Z</updated>    
    <published>2026-09-02T08:22:12Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
Page settings tool button icon not found.<br />
</p>
</div>
    </content>
    <author><name>Andrew</name></author>
    <id>https://www.qcad.io/bugtracker/:2749</id>
  </entry>
    <entry>
    <title>FS#2748: Ruler labels cut off</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2748" />    
    <updated>2026-09-02T08:17:27Z</updated>    
    <published>2026-09-02T08:16:31Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
See also:<br /><a href="https://forum.qcad.org/t/qcad-3-33-0-0-horizontal-ruler-numbers-cutt-off/12006/2" class="urlextern" title="https://forum.qcad.org/t/qcad-3-33-0-0-horizontal-ruler-numbers-cutt-off/12006/2"  rel="nofollow">https://forum.qcad.org/t/qcad-3-33-0-0-horizontal-ruler-numbers-cutt-off/12006/2</a> 
</p>
</div>
    </content>
    <author><name>Andrew</name></author>
    <id>https://www.qcad.io/bugtracker/:2748</id>
  </entry>
    <entry>
    <title>FS#2747: QCAD/CAM Layer List: missing icons for adding and editing layers</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2747" />    
    <updated>2026-09-01T06:43:19Z</updated>    
    <published>2026-09-01T06:43:19Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
See also:<br /><a href="https://forum.qcad.org/t/bug-in-3-33-0-icons-in-layerlist-of-marked-layer-turns-white-black/12002/3" class="urlextern" title="https://forum.qcad.org/t/bug-in-3-33-0-icons-in-layerlist-of-marked-layer-turns-white-black/12002/3"  rel="nofollow">https://forum.qcad.org/t/bug-in-3-33-0-icons-in-layerlist-of-marked-layer-turns-white-black/12002/3</a> 
</p>
</div>
    </content>
    <author><name>Andrew</name></author>
    <id>https://www.qcad.io/bugtracker/:2747</id>
  </entry>
    <entry>
    <title>FS#2746: Layer list, light mode: layer visibility icon unclear for selected items</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2746" />    
    <updated>2026-09-01T14:51:22Z</updated>    
    <published>2026-08-31T15:05:58Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
See also:<br /><a href="https://forum.qcad.org/t/bug-in-3-33-0-icons-in-layerlist-of-marked-layer-turns-white-black/12002" class="urlextern" title="https://forum.qcad.org/t/bug-in-3-33-0-icons-in-layerlist-of-marked-layer-turns-white-black/12002"  rel="nofollow">https://forum.qcad.org/t/bug-in-3-33-0-icons-in-layerlist-of-marked-layer-turns-white-black/12002</a> 
</p>
</div>
    </content>
    <author><name>Andrew</name></author>
    <id>https://www.qcad.io/bugtracker/:2746</id>
  </entry>
    <entry>
    <title>FS#2745: Modify &gt; Break Out: Degenerate case with arc producing full circle</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2745" />    
    <updated>2026-08-25T08:27:19Z</updated>    
    <published>2026-08-25T08:17:39Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
Draw line from 0,10 to 30,10
</p>

<p>
Draw arc from 3 points: 5,5 - 15,20 - 25,0
</p>

<p>
Break out arc segment at 4.2,8.95<br />
</p>
</div>
    </content>
    <author><name>Andrew</name></author>
    <id>https://www.qcad.io/bugtracker/:2745</id>
  </entry>
    <entry>
    <title>FS#2744: Select by handle to find an offending drawing object</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2744" />    
    <updated>2026-08-20T02:17:50Z</updated>    
    <published>2026-08-20T02:10:19Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
As we can read in this forum topic:<br /><a href="https://forum.qcad.org/t/tip-when-dealing-with-an-exception-occurred-entity-not-saved-xxxx-error-on-save/11970" class="urlextern" title="https://forum.qcad.org/t/tip-when-dealing-with-an-exception-occurred-entity-not-saved-xxxx-error-on-save/11970"  rel="nofollow">https://forum.qcad.org/t/tip-when-dealing-with-an-exception-occurred-entity-not-saved-xxxx-error-on-save/11970</a>
</p>

<p>
The tool can report “<strong>Object selected: nnn</strong>” when selecting an offending entity while nothing seems to be selected.<br />The search for the offending entity can be simplified by also reporting its Block name.
</p>
<pre class="code">    if (isEntity(obj)) {
        di.selectEntity(obj.getId());
        EAction.handleUserMessage(qsTr(&quot;Object selected:&quot;) + &quot; &quot; + obj.getId() + &quot; (&quot; + obj.getBlockName() + &quot;)&quot;);
    }</pre>

<p>
The object ID nnn is of no use for a common user.
</p>

<p>
Automatically switching to the Block in question is perhaps even better.
</p>

<p>
In the referred topic the user explains how to find and delete the entity.<br />It won&#039;t be saved thus saving and reopening is then the more simplier solution.
</p>

<p>
Offending is for example an ellipse with a negative ratio.<br />Not automatically fixed by <em>correctMajorMinor()</em>.<br />But easily fixed when selected (in the current Block).
</p>

<p>
Regards,<br />CVH<br />
</p>
</div>
    </content>
    <author><name>CVH</name></author>
    <id>https://www.qcad.io/bugtracker/:2744</id>
  </entry>
    <entry>
    <title>FS#2743: Performance: slow performance when (un-)collapsing parent layers</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2743" />    
    <updated>2026-08-19T17:53:14Z</updated>    
    <published>2026-08-19T17:52:07Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
See also:<br /><a href="https://forum.qcad.org/t/performance-issue-with-sublayers-any-suggestions/11961" class="urlextern" title="https://forum.qcad.org/t/performance-issue-with-sublayers-any-suggestions/11961"  rel="nofollow">https://forum.qcad.org/t/performance-issue-with-sublayers-any-suggestions/11961</a> 
</p>
</div>
    </content>
    <author><name>Andrew</name></author>
    <id>https://www.qcad.io/bugtracker/:2743</id>
  </entry>
    <entry>
    <title>FS#2742: Layer list: collapsed layers not remembered correctly if there are layer states</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2742" />    
    <updated>2026-08-19T16:24:36Z</updated>    
    <published>2026-08-19T16:24:01Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
If a drawing has layer states, the collapse state of layers that are also in the layer state is not remembered correctly.<br />
</p>
</div>
    </content>
    <author><name>Andrew</name></author>
    <id>https://www.qcad.io/bugtracker/:2742</id>
  </entry>
    <entry>
    <title>FS#2741: Comparing values with the squared tolerance (1e-18)</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2741" />    
    <updated>2026-08-16T06:24:12Z</updated>    
    <published>2026-08-15T07:24:07Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
Andrew, 
</p>

<p>
Nicely summarized by an AI:<br />Comparing two floating-point values within a tolerance is NOT<br />the same as comparing their squared values within the squared tolerance.<br />Squaring changes the scale of values and the distance between them.<br />This breaks the linear logic used in standard tolerance checks, especially for values near zero or larger values.
</p>

<p>
<strong><em>Why These Methods Are Not Equal</em></strong>:<br />- Different scaling near zero: <br />If a = 0.1 and b = 0.2, their absolute difference is <strong>0.10</strong>.<br />Their squared values are 0.01 and 0.04, with a difference of <strong>0.03</strong> (three times smaller).<br />- Different scaling for large values: <br />If a = 1000.1 and b = 1000.2, their difference is <strong>0.10</strong>, <br />but their squared values differ by about <strong>200</strong> (2000 times larger).<br />- Tolerance distortion: <br />A linear tolerance epsilon allows a fixed window <strong>[a-epsilon &lt; b &lt; a+epsilon]</strong>. Squaring maps this to a non-linear, asymmetric range that grows much faster for larger base values.
</p>

<p>
<strong><em>When It Fails</em></strong>:<br />- Small values (&lt;±1): <br />The squared difference becomes much smaller than the linear difference.<br />A tolerance that passes linear values might fail squared values.<br />- Larger values (&gt;±1): <br />The squared difference becomes much larger than the linear difference.<br />A tolerance that passes linear values will likely fail squared values.<br />- Negative values: Squaring loses the sign. <br />If (a = -1.001) and (b = 1.001), they are far apart linearly,<br />but their squared values are nearly identical (1.002 vs 1.002).
</p>
<hr />
<hr />

<p>
 Recently implemented at various places in QCAD.<br />For example to compare a distance in XY with a value within tolerance avoiding the<br /><strong>sqrt()</strong> of the vector magnitude by retrieving the squared magnitude.<br />Where the distance <strong>d = sqrt(dX²+dY²+dZ²)</strong> is compared with a positive value <strong>v</strong> within a small tolerance (e.g. <em>RS.PointTolerance = 1e-9</em>)<br />Including dZ because there is no 2D variant for <em>RVector::getSquaredMagnitude()</em>.<br />Or for example where the squared distance is calculated in direct as <strong>dSqr = dX²+dY²</strong>.
</p>

<p>
Typically worked out as <strong>fabs(d - v) &lt; 1e-9</strong> (analog of <em>RMath.fuzzyCompare</em>).<br />What results in <strong>fabs(sqrt(dX²+dY²) - v) &lt; 1e-9</strong>.
</p>

<p>
And then falsely replaced by <strong>fabs(dX²+dY² - v²) &lt; 1e-9*1e-9</strong> <br />Or comparing a difference to within <em class="u"><strong>1e-18</strong></em>.<br />In the case of larger numbers (&gt;1):<br />Subtracting 2 much larger but near equal values with no more than 17 significant digits.
</p>

<p>
<strong>Also algebraically incorrect !</strong> … <br />Squaring both sides of (<strong>|d - v| &lt; tol</strong>) to exploit <strong>d²</strong> instead of <strong>d</strong> results in: (<strong>(d - v)² &lt; tol²</strong>)<br />And this expands to: (<strong>d² - 2dv + v² &lt; tol²</strong>) where the root <strong>d</strong> is still present.
</p>

<p>
(<strong>fabs(d - v) &lt; tol</strong>) is already a reduction of a window comparison: (<strong>d &gt; v-tol &amp;&amp; d &lt; v+tol</strong>)<br />At best, avoiding the subtraction of a small value in floating point: (<strong>d+tol &gt; v &amp;&amp; d &lt; v+tol</strong>)<br />We then also avoid digit cancellation when subtracting larger values in <strong>fabs(d - v)</strong>.<br />But squaring this also leads to (<strong>(d+tol)² &gt; v²</strong>) or (<strong>d²+<em class="u">2*d*tol</em>+tol² &gt; v²</strong>) for the first test.  
</p>
<hr />
<hr />

<p>
With the initial window comparison:<br />Squaring (<strong>d &gt; v-tol &amp;&amp; d &lt; v+tol</strong>) results in: (<strong>d² &gt; (v-tol)² &amp;&amp; d² &lt; (v+tol)²</strong>)<br />In wich we can replace <strong>d²</strong> and the intended value <strong>v ≈ </strong>sqrt(d²) to compare with: <br />(<strong>dSqr=dX²+dY² &gt; (v-tol)² &amp;&amp; dSqr=dX²+dY² &lt; (v+tol)²</strong>)
</p>

<p>
This may fail when <strong>(d == v)</strong>.<br />And always when <strong>tol</strong> is too small to be added or subtracted in floating-point.<br />When comparing (squared) values within a small tolerance we must thus include equality:
</p>
<pre class="code">if (dSqr &gt;= (v-tol)*(v-tol) &amp;&amp; dSqr &lt;= (v+tol)*(v+tol)) {...}</pre>

<p>
Programmatically more complex … <br />… and perhaps no longer a faster method than taking the root.<br />The second test is skipped when the first is true.
</p>

<p>
It certainly avoids the absurd comparison with <strong>1e-18</strong>.<br />Because that is mostly true for real near equal distances after squaring.
</p>

<p>
 Regards,<br />CVH<br />
</p>
</div>
    </content>
    <author><name>CVH</name></author>
    <id>https://www.qcad.io/bugtracker/:2741</id>
  </entry>
    <entry>
    <title>FS#2740: System reverts to &quot;Custom&quot; Printing Page size rather than taking ANSI-A (Letter) or other Named size</title>
    <link href="https://www.qcad.io/bugtracker/index.php?do=details&amp;task_id=2740" />    
    <updated>2026-08-14T11:15:49Z</updated>    
    <published>2026-08-12T19:50:04Z</published>
    <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
      <div xmlns="http://www.w3.org/1999/xhtml"> 
<p>
I&#039;ve noted that on my (relatively) new Mac Mini (M4), when I open my drawings, it yells at me when I open a block about using a &quot;Custom&quot; paper size.  it should be &quot;A&quot; size (US-Letter).  When I try to set it to ANSI-A (Letter), even after saving, it reverts to &quot;Custom&quot; (though the dimensions remain correct (8.5&quot;x11&quot;)<br />
</p>
</div>
    </content>
    <author><name>Steven Guttag</name></author>
    <id>https://www.qcad.io/bugtracker/:2740</id>
  </entry>
  </feed>
