private void SelectButton_Click(object sender, EventArgs e)
        {
            Inventor.ReferenceKeyManager rkm = m_app.ActiveDocument.ReferenceKeyManager;

            string context, key;

            GetContextAndKey(ReferenceKeysTreeView.SelectedNode, out context, out key);
            int i = GetContextIndex(context);

            try
            {
                byte[] bytes = new byte[] { };
                rkm.StringToKey(key, ref bytes);
                object  matchType;
                dynamic result = rkm.BindKeyToObject(ref bytes, i, out matchType);
                if (result.GetType() == Type.GetType("Invenor.ObjectCollection"))
                {
                    m_app.ActiveDocument.SelectSet.SelectMultiple(result);
                }
                else
                {
                    m_app.ActiveDocument.SelectSet.Select(result);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Could not bind key to object");
            }
        }
        private int LoadContext(string context)
        {
            Inventor.ReferenceKeyManager rkm = m_app.ActiveDocument.ReferenceKeyManager;

            byte[] bytes = new byte[] { };
            rkm.StringToKey(context, ref bytes);

            return(rkm.LoadContextFromArray(ref bytes));
        }
        private byte [] GetContextBytes(string context)
        {
            byte[] bytes = new byte[] { };
            context = GetContextString(context);

            Inventor.ReferenceKeyManager rkm = m_app.ActiveDocument.ReferenceKeyManager;
            rkm.StringToKey(context, bytes);

            return(bytes);
        }
        private int CreateContext(out string context)
        {
            Inventor.ReferenceKeyManager rkm = m_app.ActiveDocument.ReferenceKeyManager;

            int index = rkm.CreateKeyContext();

            byte[] bytes = new byte[] { };
            rkm.SaveContextToArray(index, ref bytes);

            context = rkm.KeyToString(bytes);

            return(index);
        }
        private void CreateReferenceKeyButton_Click(object sender, EventArgs e)
        {
            SelectSet ss = m_app.ActiveDocument.SelectSet;

            if (ss.Count != 1)
            {
                MessageBox.Show("Please select a single object before using this command", "No single object selected");
                return;
            }

            try
            {
                string context, key;
                GetContextAndKey(ReferenceKeysTreeView.SelectedNode, out context, out key);
                int i = GetContextIndex(context);

                byte[] bytes = new byte[] { };
                ss[1].GetReferenceKey(ref bytes, i);

                Inventor.ReferenceKeyManager rkm = m_app.ActiveDocument.ReferenceKeyManager;
                key = rkm.KeyToString(bytes);

                if (ReferenceKeysTreeView.SelectedNode.Nodes.ContainsKey(key))
                {
                    TreeNode existingNode = ReferenceKeysTreeView.SelectedNode.Nodes.Find(context, false)[0];
                    ReferenceKeysTreeView.SelectedNode = existingNode;

                    MessageBox.Show("Such key already exists and is now highlighted in the Browser", "Duplicate key");

                    return;
                }

                TreeNode node = ReferenceKeysTreeView.SelectedNode.Nodes.Add(key, key);
                node.ImageKey         = kReference;
                node.SelectedImageKey = kReference;
                node.EnsureVisible();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Could not create key");
            }
        }
        private void DeleteButton_Click(object sender, EventArgs e)
        {
            TreeNode node = ReferenceKeysTreeView.SelectedNode;

            if (node != null)
            {
                // if it's a context
                if (node.Parent == null)
                {
                    int index = GetContextIndex(node.Text);
                    if (index > 0)
                    {
                        Inventor.ReferenceKeyManager rkm = m_app.ActiveDocument.ReferenceKeyManager;
                        rkm.ReleaseKeyContext(index);
                    }
                }

                node.Remove();

                EnsureDefaultContext();
            }
        }
        private void CreateContextButton_Click(object sender, EventArgs e)
        {
            string context;
            int    i = CreateContext(out context);

            if (ReferenceKeysTreeView.Nodes.ContainsKey(context))
            {
                TreeNode existingNode = ReferenceKeysTreeView.Nodes.Find(context, false)[0];
                ReferenceKeysTreeView.SelectedNode = existingNode;

                Inventor.ReferenceKeyManager rkm = m_app.ActiveDocument.ReferenceKeyManager;
                rkm.ReleaseKeyContext(i);

                MessageBox.Show("A suitable context already exists and is now highlighted in the Browser", "Duplicate context");

                return;
            }

            TreeNode node = ReferenceKeysTreeView.Nodes.Add(context, $"{context} [{i}]");

            node.ImageKey         = kContext;
            node.SelectedImageKey = kContext;
            node.EnsureVisible();
        }
Example #8
0
 private InvReferenceKeyManager(Inventor.ReferenceKeyManager invReferenceKeyManager)
 {
     InternalReferenceKeyManager = invReferenceKeyManager;
 }
Example #9
0
 public static InvReferenceKeyManager ByInvReferenceKeyManager(Inventor.ReferenceKeyManager invReferenceKeyManager)
 {
     return(new InvReferenceKeyManager(invReferenceKeyManager));
 }