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

本文介绍如何在Autocad平台中通过继承Autodesk.AutoCAD.Runtime.IExtensionApplication类来实现自定义鼠标右键菜单,包括初始化加载、添加菜单项、以及卸载功能。实现了对建筑树形结构、添加结构节点、生成面域和设置房屋类型等功能的快速访问。

在autocad中的一些扩展应用,比如在启动autocad平台时希望首先加载部分自己添加的应用,像鼠标右键菜单等,这里需要继承Autodesk.AutoCAD.Runtime.IExtensionApplication 类,如代码:

 

/**
 * FileName:        ExtensionApplication .CS
 * File Created: 2010-4-9 15:26
 * Description:      鼠标右键菜单
 * Purpose :      
 * History:
 * Creator :     成吉思汗

 * */
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:

        }

}

 

效果图形如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值