This commit is contained in:
2026-02-11 04:11:05 +08:00
parent b445c3e334
commit 1a8a3b59d2
104 changed files with 10241 additions and 2457 deletions
@@ -330,36 +330,72 @@ protected override bool IsInputKey(Keys keyData)
return true;
}
/// <summary>
/// Convert WinForms Keys to W3C KeyboardEvent.key string.
/// </summary>
static string WinFormsKeyToW3C(Keys key) => (key & Keys.KeyCode) switch
{
Keys.Home => "Home",
Keys.End => "End",
Keys.PageUp => "PageUp",
Keys.PageDown => "PageDown",
Keys.Left => "ArrowLeft",
Keys.Right => "ArrowRight",
Keys.Up => "ArrowUp",
Keys.Down => "ArrowDown",
Keys.LShiftKey or Keys.RShiftKey or Keys.ShiftKey => "Shift",
Keys.LControlKey or Keys.RControlKey or Keys.ControlKey => "Control",
Keys.LMenu or Keys.RMenu or Keys.Menu => "Alt",
Keys.Return => "Enter",
Keys.Escape => "Escape",
Keys.Back => "Backspace",
Keys.Tab => "Tab",
Keys.Delete => "Delete",
Keys.Insert => "Insert",
Keys.Space => " ",
Keys.F1 => "F1",
Keys.F2 => "F2",
Keys.F3 => "F3",
Keys.F4 => "F4",
Keys.F5 => "F5",
Keys.F6 => "F6",
Keys.F7 => "F7",
Keys.F8 => "F8",
Keys.F9 => "F9",
Keys.F10 => "F10",
Keys.F11 => "F11",
Keys.F12 => "F12",
>= Keys.A and <= Keys.Z => ((char)('a' + ((key & Keys.KeyCode) - Keys.A))).ToString(),
>= Keys.D0 and <= Keys.D9 => ((char)('0' + ((key & Keys.KeyCode) - Keys.D0))).ToString(),
_ => "Unidentified"
};
private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e)
{
Focus();
DispEngine.KeyDown((long)e.KeyData);
// Map specific keys for view transformation
long key = (long)e.KeyData;
if (key == (long)Keys.LShiftKey || key == (long)Keys.RShiftKey || key == (long)Keys.ShiftKey)
key = (long)Keys.Shift;
string key = WinFormsKeyToW3C(e.KeyData);
DispEngine.KeyDown(key);
DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t()
{
HOME = (long)Keys.Home,
PAGE_UP = (long)Keys.PageUp,
PAGE_DOWN = (long)Keys.PageDown,
F1 = (long)Keys.F1,
F2 = (long)Keys.F2,
F3 = (long)Keys.F3,
F4 = (long)Keys.F4,
SHIFT = (long)Keys.Shift,
ARROW_LEFT = (long)Keys.Left,
ARROW_RIGHT = (long)Keys.Right,
ARROW_DOWN = (long)Keys.Down,
ARROW_UP = (long)Keys.Up
HOME = "Home",
PAGE_UP = "PageUp",
PAGE_DOWN = "PageDown",
F1 = "F1",
F2 = "F2",
F3 = "F3",
F4 = "F4",
SHIFT = "Shift",
ARROW_LEFT = "ArrowLeft",
ARROW_RIGHT = "ArrowRight",
ARROW_DOWN = "ArrowDown",
ARROW_UP = "ArrowUp"
});
}
private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e)
{
DispEngine.KeyUp((long)e.KeyData);
DispEngine.KeyUp(WinFormsKeyToW3C(e.KeyData));
}
</code></pre><h3 id="lifecycle-management">Lifecycle Management</h3>
<p>Window event handling ensures proper state management:</p>
@@ -564,11 +600,51 @@ private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e)
});
}
</code></pre><pre><code class="lang-csharp" name="RenderingCanvas">/// &lt;summary&gt;
/// Convert WPF Key to W3C KeyboardEvent.key string.
/// &lt;/summary&gt;
static string WpfKeyToW3C(Key key) =&gt; key switch
{
Key.Home =&gt; &quot;Home&quot;,
Key.End =&gt; &quot;End&quot;,
Key.PageUp =&gt; &quot;PageUp&quot;,
Key.PageDown =&gt; &quot;PageDown&quot;,
Key.Left =&gt; &quot;ArrowLeft&quot;,
Key.Right =&gt; &quot;ArrowRight&quot;,
Key.Up =&gt; &quot;ArrowUp&quot;,
Key.Down =&gt; &quot;ArrowDown&quot;,
Key.LeftShift or Key.RightShift =&gt; &quot;Shift&quot;,
Key.LeftCtrl or Key.RightCtrl =&gt; &quot;Control&quot;,
Key.LeftAlt or Key.RightAlt =&gt; &quot;Alt&quot;,
Key.Return =&gt; &quot;Enter&quot;,
Key.Escape =&gt; &quot;Escape&quot;,
Key.Back =&gt; &quot;Backspace&quot;,
Key.Tab =&gt; &quot;Tab&quot;,
Key.Delete =&gt; &quot;Delete&quot;,
Key.Insert =&gt; &quot;Insert&quot;,
Key.Space =&gt; &quot; &quot;,
Key.F1 =&gt; &quot;F1&quot;,
Key.F2 =&gt; &quot;F2&quot;,
Key.F3 =&gt; &quot;F3&quot;,
Key.F4 =&gt; &quot;F4&quot;,
Key.F5 =&gt; &quot;F5&quot;,
Key.F6 =&gt; &quot;F6&quot;,
Key.F7 =&gt; &quot;F7&quot;,
Key.F8 =&gt; &quot;F8&quot;,
Key.F9 =&gt; &quot;F9&quot;,
Key.F10 =&gt; &quot;F10&quot;,
Key.F11 =&gt; &quot;F11&quot;,
Key.F12 =&gt; &quot;F12&quot;,
&gt;= Key.A and &lt;= Key.Z =&gt; ((char)('a' + (key - Key.A))).ToString(),
&gt;= Key.D0 and &lt;= Key.D9 =&gt; ((char)('0' + (key - Key.D0))).ToString(),
_ =&gt; &quot;Unidentified&quot;
};
/// &lt;summary&gt;
/// Handles the key up event
/// &lt;/summary&gt;
private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e)
{
DispEngine.KeyUp((long)e.Key);
DispEngine.KeyUp(WpfKeyToW3C(e.Key));
}
/// &lt;summary&gt;
@@ -576,27 +652,23 @@ private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e)
/// &lt;/summary&gt;
private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e)
{
DispEngine.KeyDown((long)e.Key);
string key = WpfKeyToW3C(e.Key);
DispEngine.KeyDown(key);
// Map specific keys for view transformation
long key = (long)e.Key;
if (key == (long)Key.RightShift)
key = (long)Key.LeftShift;
DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t()
{
HOME = (long)Key.Home,
PAGE_UP = (long)Key.PageUp,
PAGE_DOWN = (long)Key.PageDown,
F1 = (long)Key.F1,
F2 = (long)Key.F2,
F3 = (long)Key.F3,
F4 = (long)Key.F4,
SHIFT = (long)Key.LeftShift,
ARROW_LEFT = (long)Key.Left,
ARROW_RIGHT = (long)Key.Right,
ARROW_DOWN = (long)Key.Down,
ARROW_UP = (long)Key.Up
HOME = &quot;Home&quot;,
PAGE_UP = &quot;PageUp&quot;,
PAGE_DOWN = &quot;PageDown&quot;,
F1 = &quot;F1&quot;,
F2 = &quot;F2&quot;,
F3 = &quot;F3&quot;,
F4 = &quot;F4&quot;,
SHIFT = &quot;Shift&quot;,
ARROW_LEFT = &quot;ArrowLeft&quot;,
ARROW_RIGHT = &quot;ArrowRight&quot;,
ARROW_DOWN = &quot;ArrowDown&quot;,
ARROW_UP = &quot;ArrowUp&quot;
});
}
</code></pre><h3 id="lifecycle-management-1">Lifecycle Management</h3>
@@ -771,7 +843,7 @@ engine.SetViewToHomeView();
</tr>
<tr>
<td>Key press</td>
<td><a class="xref" href="../../../../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_KeyDown_System_Int64_">KeyDown(long)</a> / <a class="xref" href="../../../../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_KeyUp_System_Int64_">KeyUp(long)</a> and <a class="xref" href="../../../../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_KeyDownTransform_System_Int64_Hi_Native_key_table__transform_view_by_key_pressing_t_">KeyDownTransform(long, key_table__transform_view_by_key_pressing_t)</a></td>
<td>&lt;xref:Hi.Disp.DispEngine.KeyDown(System.Int64)&gt; / &lt;xref:Hi.Disp.DispEngine.KeyUp(System.Int64)&gt; and &lt;xref:Hi.Disp.DispEngine.KeyDownTransform(System.Int64,Hi.Native.key_table__transform_view_by_key_pressing_t)&gt;</td>
</tr>
<tr>
<td>Touch events</td>
@@ -94,8 +94,8 @@
<ol>
<li>Normal message handling:</li>
</ol>
<pre><code class="lang-csharp" name="Normal Messages">MessageHost.AddMessage(&quot;Operation completed successfully.&quot;);
MessageHost.AddWarning(&quot;Please check your input.&quot;);
<pre><code class="lang-csharp" name="Normal Messages">MessageHost.ReportMessage(&quot;Operation completed successfully.&quot;);
MessageHost.ReportWarning(&quot;Please check your input.&quot;);
</code></pre>
<ol start="2">
<li>Exception handling in synchronous code:</li>
@@ -307,7 +307,7 @@ namespace HiNC_2025_win_desktop.Geom
}
catch (Exception ex)
{
MessageHost.AddError(string.Format(Application.Current.FindResource(&quot;Vec3d_Update_Error&quot;).ToString(), ex.Message));
MessageHost.ReportError(string.Format(Application.Current.FindResource(&quot;Vec3d_Update_Error&quot;).ToString(), ex.Message));
ex.ShowException(this);
}
finally
@@ -398,7 +398,7 @@ namespace HiNC_2025_win_desktop.Geom
}
catch (Exception ex)
{
MessageHost.AddError(string.Format(Application.Current.FindResource(&quot;Vec3d_Update_Error&quot;).ToString(), ex.Message));
MessageHost.ReportError(string.Format(Application.Current.FindResource(&quot;Vec3d_Update_Error&quot;).ToString(), ex.Message));
ex.ShowException(this);
}
finally
@@ -555,7 +555,7 @@ namespace HiNC_2025_win_desktop.Geom
catch (Exception ex)
{
// 记录异常但不中断用户操作
MessageHost.AddError(string.Format(Application.Current.FindResource(&quot;Vec3d_Update_Error&quot;).ToString(), ex.Message));
MessageHost.ReportError(string.Format(Application.Current.FindResource(&quot;Vec3d_Update_Error&quot;).ToString(), ex.Message));
ex.ShowException(this);
}
finally
@@ -87,6 +87,21 @@
<article data-uid="">
<h1 id="release-note">Release Note</h1>
<h2 id="hinc-packages-version-31144">HiNc Packages Version 3.1.144</h2>
<ul>
<li>Enhance Siemens Sinumerik support:
<ul>
<li>Siemens CYCLE800 coordinate transform and reset</li>
<li>Siemens MCALL CYCLE81() drilling cycle parsing</li>
<li>Siemens TRAORI/TRAFOOF/SUPA flag parsing</li>
</ul>
</li>
<li>Fix Siemens TRAFOOF plain rotation coordinate transform issue</li>
<li>Fix Siemens coordinate transform for successive file running</li>
<li>Fix relief face collision floating-point precision issue</li>
<li>Replace MongoDB with SQLite for local step data storage (significant package size reduction)</li>
<li>Add machining and motion resolution dynamic adjustment functions</li>
</ul>
<h2 id="hinc-packages-version-31106">HiNc Packages Version 3.1.106</h2>
<ul>
<li>Rename mapping API for clearer naming: