<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Batching Slider messages]]></title><description><![CDATA[<p dir="auto">My Tool gets a lot of messages when using sliders or dragging on numeric fields in the AM.  In the C++ SDK (2026) is there an approved or suggested way to detect when the interaction has finished so that I can defer any heavy calculations until then?  In particular I would like to add just one Undo for the entire interaction.</p>
<p dir="auto">Thanks.</p>
]]></description><link>http://developers.maxon.net/forum/topic/16390/batching-slider-messages</link><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 21:31:13 GMT</lastBuildDate><atom:link href="http://developers.maxon.net/forum/topic/16390.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Mar 2026 13:26:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Batching Slider messages on Wed, 04 Mar 2026 19:56:44 GMT]]></title><description><![CDATA[<p dir="auto">Thank you.  MSG_DESCRIPTION_USERINTERACTION_END is just what was needed.</p>
]]></description><link>http://developers.maxon.net/forum/post/77076</link><guid isPermaLink="true">http://developers.maxon.net/forum/post/77076</guid><dc:creator><![CDATA[SteveHill3D]]></dc:creator><pubDate>Wed, 04 Mar 2026 19:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to Batching Slider messages on Wed, 04 Mar 2026 17:23:47 GMT]]></title><description><![CDATA[<p dir="auto">Hey <a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/stevehill3d">@<bdi>SteveHill3D</bdi></a>,</p>
<p dir="auto">it's okay, the start is always a bit chaotic.  That snippet alone would have told me some things.</p>
<p dir="auto">Yes, sorry, <code>MSG_DESCRIPTION_POSTSETPARAMETER</code> is fired within the drag event (the parameter has still to be set). The final description event is <code>MSG_DESCRIPTION_USERINTERACTION_END</code>. But I still do not really understand what you are doing. What is triggering the updates? Just dragging one of the sliders will not update the tool in our edge cutter tool example (because it does not really implement the interactive mode that comes with description tools).</p>
<p dir="auto">So, the tool should either fire when you have keyboard or viewport inputs and implemented <code>MouseInput</code> or <code>KeyboardInput</code>. When you click <em>Apply</em>, it should call <code>DoCommand</code>. You can of course hook into <code>Message</code> to react to all sorts of things (and that is indeed how you implement the interactive mode), but you message implies that your tool fires on your own. Which it should not.</p>
<p dir="auto">Cheers,<br />
Ferdinand</p>
]]></description><link>http://developers.maxon.net/forum/post/77075</link><guid isPermaLink="true">http://developers.maxon.net/forum/post/77075</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Wed, 04 Mar 2026 17:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Batching Slider messages on Wed, 04 Mar 2026 16:29:55 GMT]]></title><description><![CDATA[<p dir="auto">Thanks for the reply.  Sorry for the imprecision - it is difficult to know what information is relevant when starting out, and I was trying to be concise.  I am currently deriving from DescriptionToolData.  I tried using MSG_DESCRIPTION_POSTSETPARAMETER but I get those during dragging also and the flags in the message are always the same even at the end  i.e. USERINTERACTION | INDRAG as reported by:</p>
<pre><code>Bool MyTool::Message(BaseDocument *doc, BaseContainer &amp;data, Int32 type, void *t_data)
{
  if (type == MSG_DESCRIPTION_POSTSETPARAMETER)
  {
    auto ps = (DescriptionPostSetValue *)t_data;
    DiagnosticOutput("Post set @ @", ps-&gt;descid[0][0], ps-&gt;flags);
  }
  ...
  return SUPER::Message(doc, data, type, t_data);
}
</code></pre>
<p dir="auto">Maybe I need to rethink and consider a ToolData basis.</p>
<p dir="auto">Steve.</p>
]]></description><link>http://developers.maxon.net/forum/post/77072</link><guid isPermaLink="true">http://developers.maxon.net/forum/post/77072</guid><dc:creator><![CDATA[SteveHill3D]]></dc:creator><pubDate>Wed, 04 Mar 2026 16:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Batching Slider messages on Wed, 04 Mar 2026 13:42:22 GMT]]></title><description><![CDATA[<p dir="auto">Hey <a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/stevehill3d">@<bdi>SteveHill3D</bdi></a>,</p>
<p dir="auto">Thank you for reaching out to us. It depends a bit on what is your '<em>tool</em>'. When it is a 'classic' tool, i.e., implemented as a <code>ToolData</code> with a <code>GeDialog</code>, then <a href="https://developers.maxon.net/docs/cpp/2026_1_0/group___b_f_m.html#gga043aa16174ac859767bd89036ac4fd1da4d8380c87083e8cc01c59eb5382065bc" target="_blank" rel="noopener noreferrer nofollow ugc"><code>BFM_DRAGEND</code></a> would be the way to sort out <code>BFM_ACTION</code> events for a slider that are the final action of a drag event. When you search for the message symbol <code>BFM_DRAGEND</code> and its sibling symbols <code>BFM_DRAGSTART</code> and <code>BFM_ACTION_INDRAG</code> here on the forum, you will find multiple code examples around the topic of sliders. I think there are also some examples in the C++ SDK.</p>
<p dir="auto">When your tool is a <code>DescriptionToolData</code>, i.e., a node in disguise, then you cannot handle drag events yourself. Your tool should fire on its own only after <code>MSG_DESCRIPTION_POSTSETPARAMETER</code> has fired for your node, i.e., after the final value of a drag event for some slider has been set.</p>
<p dir="auto">Please have a look at our <a href="https://developers.maxon.net/forum/topic/15244/" target="_blank" rel="noopener noreferrer nofollow ugc">Support Procedures</a>, we require users to post code for pretty much all questions, as it minimizes the guess work on our side. As for example me here writing about two cases.</p>
<p dir="auto">Cheers,<br />
Ferdinand</p>
]]></description><link>http://developers.maxon.net/forum/post/77071</link><guid isPermaLink="true">http://developers.maxon.net/forum/post/77071</guid><dc:creator><![CDATA[ferdinand]]></dc:creator><pubDate>Wed, 04 Mar 2026 13:42:22 GMT</pubDate></item></channel></rss>