<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic snapping in custom tools (ArcGIS Engine C#.net) in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/snapping-in-custom-tools-arcgis-engine-c-net/m-p/523655#M14099</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm kindof new to ArcObjects development but i'm working in the ArcGIS Engine environment (C#.net) and&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;trying to create a custom tool with snapping. currently having a problem getting the snapping extension..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in the documentation it says to use IHookHelper2&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; however I don't seem to be able to CAST the hook into the IHookHelper2..&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;comes back with a null...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;m_hookHelper2 = (IHookHelper2)hook;&amp;nbsp;&amp;nbsp; &amp;lt;- does not work...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I also tried to get the IApplication / mapDocument from the hook... which also did not work &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;(this is the &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//0001000001s1000000"&gt;documentation&lt;/A&gt;&lt;SPAN&gt; code..... need to know where / how to get the m_hookHelper2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[C#]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IExtensionManager extensionManager = m_hookHelper2.ExtensionManager;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (extensionManager != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UID guid = new UIDClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; guid.Value = "{E07B4C52-C894-4558-B8D4-D4050018D1DA}"; //Snapping extension.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IExtension extension = extensionManager.FindExtension(guid);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_SnappingEnvironment = extension as ISnappingEnvironment;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 27 Sep 2012 01:51:06 GMT</pubDate>
    <dc:creator>TomaCasa</dc:creator>
    <dc:date>2012-09-27T01:51:06Z</dc:date>
    <item>
      <title>snapping in custom tools (ArcGIS Engine C#.net)</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/snapping-in-custom-tools-arcgis-engine-c-net/m-p/523655#M14099</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm kindof new to ArcObjects development but i'm working in the ArcGIS Engine environment (C#.net) and&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;trying to create a custom tool with snapping. currently having a problem getting the snapping extension..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in the documentation it says to use IHookHelper2&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; however I don't seem to be able to CAST the hook into the IHookHelper2..&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;comes back with a null...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;m_hookHelper2 = (IHookHelper2)hook;&amp;nbsp;&amp;nbsp; &amp;lt;- does not work...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I also tried to get the IApplication / mapDocument from the hook... which also did not work &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;(this is the &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//0001000001s1000000"&gt;documentation&lt;/A&gt;&lt;SPAN&gt; code..... need to know where / how to get the m_hookHelper2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[C#]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IExtensionManager extensionManager = m_hookHelper2.ExtensionManager;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (extensionManager != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UID guid = new UIDClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; guid.Value = "{E07B4C52-C894-4558-B8D4-D4050018D1DA}"; //Snapping extension.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IExtension extension = extensionManager.FindExtension(guid);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_SnappingEnvironment = extension as ISnappingEnvironment;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Sep 2012 01:51:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/snapping-in-custom-tools-arcgis-engine-c-net/m-p/523655#M14099</guid>
      <dc:creator>TomaCasa</dc:creator>
      <dc:date>2012-09-27T01:51:06Z</dc:date>
    </item>
    <item>
      <title>Re: snapping in custom tools (ArcGIS Engine C#.net)</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/snapping-in-custom-tools-arcgis-engine-c-net/m-p/523656#M14100</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;For your tool did you start with one of the ArcGIS templates as discussed here in &lt;/SPAN&gt;&lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/#/Creating_commands_and_tools/000100000066000000/" rel="nofollow noopener noreferrer" target="_blank"&gt;Creating commands and tools&lt;/A&gt;&lt;SPAN&gt;? If not using one of these templates will stub out the appropriate code for establishing the hook for you. For example with a standard Map Control tool implementation you would see the following for OnCreate:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private IHookHelper m_hookHelper = null;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void OnCreate(object hook)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_hookHelper = new HookHelperClass();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_hookHelper.Hook = hook;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_hookHelper.ActiveView == null)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_hookHelper = null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_hookHelper = null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_hookHelper == null)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.m_enabled = false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.m_enabled = true;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO:&amp;nbsp; Add other initialization code
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note that HookHelperClass is first instantiated then the hook is passed to the IHookHelper.Hook rather than casting the hook directly as IHookHelper as you were doing in your code. With the code above you should be able to cast m_hookHelper as IHookHelper2 without any issues as long as your initial hook is occurring at an appropriate time such as OnCreate for a tool.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 22:49:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/snapping-in-custom-tools-arcgis-engine-c-net/m-p/523656#M14100</guid>
      <dc:creator>JohnHauck</dc:creator>
      <dc:date>2021-12-11T22:49:34Z</dc:date>
    </item>
    <item>
      <title>Re: snapping in custom tools (ArcGIS Engine C#.net)</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/snapping-in-custom-tools-arcgis-engine-c-net/m-p/523657#M14101</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;yeah i was using the ArcGIS templates for command and tools...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ok thanks for that... got it working by casting the m_hookHelper into IHookHelper2..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;m_hookHelper2 = (IHookHelper2)m_hookHelper; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;seems to grab the snapping extension now &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;will post back if i have any more issues...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Oct 2012 00:26:41 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/snapping-in-custom-tools-arcgis-engine-c-net/m-p/523657#M14101</guid>
      <dc:creator>TomaCasa</dc:creator>
      <dc:date>2012-10-02T00:26:41Z</dc:date>
    </item>
  </channel>
</rss>

