autocad的扩展应用---鼠标右键菜单的制作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Windows;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Client.AutoCad;


[assembly: ExtensionApplication(typeof(Estate.AutoCadCommand.ExtensionApplication))]
namespace Estate.AutoCadCommand
{
    public class ExtensionApplication : Autodesk.AutoCAD.Runtime.IExtensionApplication 
    {

        #region 构造函数 
        /// <summary>
        /// 构造函数
        /// </summary>
        public ExtensionApplication() 
        {
            //ToDo;
        }
        
        #endregion

        #region 继承的方法
        /// <summary>
        /// 初始化加载,系统要初始加载的东西都在这个地方哟
        /// </summary>
        public void Initialize()
        { 
            //加载鼠标右键菜单
            MouseRightMenu mrmenu = new MouseRightMenu();
            mrmenu.AddContextMenu();
 
           
        }
        /// <summary>
        /// 卸载,系统退出时要卸载的东西都在这个地方哟
        /// </summary>
        public void Terminate()
        {
            MouseRightMenu mrmenu = new MouseRightMenu();
            mrmenu.RemoveContextMenu();

        }
        #endregion  
    }
}

 

/***********************鼠标右键类************************************/

 public class MouseRightMenu 
{

        #region 成员变量
        ContextMenuExtension m_ContextMenu; 
        #endregion

        #region 构造函数
        public MouseRightMenu() { }
        #endregion


        #region 添加菜单和卸载菜单
        /// <summary>
        /// 添加菜单        
        /// </summary>
        public void AddContextMenu()
        {
            m_ContextMenu = new ContextMenuExtension();
            // 自定义菜单变量
            m_ContextMenu.Title = CustomVariables.RightMouseMenuName_1;
            Autodesk.AutoCAD.Windows.MenuItem mi_StructurePaletteSet;   // 显示建筑树形结构菜单
            Autodesk.AutoCAD.Windows.MenuItem miAddStructure;   //将图结构添加到树形幢结构
            Autodesk.AutoCAD.Windows.MenuItem miGenerantdRegion;   //将图型生成面域
            Autodesk.AutoCAD.Windows.MenuItem miRoomTypeSetting;   //设置房屋类型

            // 添加菜单
            mi_StructurePaletteSet = new Autodesk.AutoCAD.Windows.MenuItem(CustomVariables.RightMouseMenuName_1_1);
            miAddStructure = new Autodesk.AutoCAD.Windows.MenuItem(CustomVariables.RightMouseMenuName_1_2);
            miGenerantdRegion = new Autodesk.AutoCAD.Windows.MenuItem(CustomVariables.RightMouseMenuName_1_3);
            miRoomTypeSetting = new Autodesk.AutoCAD.Windows.MenuItem(CustomVariables.RightMouseMenuName_1_4); 
            // 加载自定义菜单事件
            mi_StructurePaletteSet.Click += mi_StructurePaletteSet_OnClick;
            miAddStructure.Click += miAddStructure_OnClick;
            miGenerantdRegion.Click += miGenerantdRegion_OnClick;
            miRoomTypeSetting.Click += miRoomTypeSetting_OnClick;
            // 将二级菜单添加到一级菜单中
            m_ContextMenu.MenuItems.Add(mi_StructurePaletteSet);
            m_ContextMenu.MenuItems.Add(miAddStructure);
            m_ContextMenu.MenuItems.Add(miGenerantdRegion);
            m_ContextMenu.MenuItems.Add(miRoomTypeSetting);
            // 将一级菜单添加到默认鼠标菜单中
            Autodesk.AutoCAD.ApplicationServices.Application.AddDefaultContextMenuExtension(m_ContextMenu);
        }

        /// <summary>
        /// 清除菜单
        /// </summary>
        public void RemoveContextMenu()
        {
            if (m_ContextMenu != null)
            {
                Autodesk.AutoCAD.ApplicationServices.Application.RemoveDefaultContextMenuExtension(m_ContextMenu);
                m_ContextMenu = null;
            }
        }
        #endregion

     

     /// <summary>
        ///  显示幢结构
        /// </summary>
        /// <param name="Sender"></param>
        /// <param name="e"></param>
        private void mi_StructurePaletteSet_OnClick(object Sender, EventArgs e)
        { 
             //ToDo: 
        }

        /// <summary>
        ///  添加幢结构节点
        /// </summary>
        /// <param name="Sender"></param>
        /// <param name="e"></param>
        private void miAddStructure_OnClick(object Sender, EventArgs e)
        {  
                //ToDo:

        }
        #endregion 
         
        /// <summary>
        /// g构面
        /// </summary>
        /// <param name="Sender"></param>
        /// <param name="e"></param>
        private void miGenerantdRegion_OnClick(object Sender, EventArgs e)
        {

             //ToDo:
        }
        /// <summary>
        /// 设置房屋类型
        /// </summary>
        /// <param name="Sender"></param>
        /// <param name="e"></param>
        private void miRoomTypeSetting_OnClick(object Sender, EventArgs e)
        {
             //ToDo:

        }

}

 

posted @ 2015-07-24 09:43  来之  阅读(744)  评论(0编辑  收藏  举报