乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 59|回复: 4

菜单问题

[复制链接]

10

主题

11

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2011-3-1 09:22:00 | 显示全部楼层 |阅读模式
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using Autodesk..ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.Windows;
using Autodesk.AutoCAD.Runtime;
using System.Windows.Forms;
namespace menu
{
    public class Class1
    {
        [CommandMethod("SendCommand")]
        public void SendCommand()
        {
            MessageBox.Show("dddd");
        }
        [CommandMethod("AddRibbon")]
        public void AddRibbon()
        {
            Autodesk.AutoCAD.ApplicationServices.Application.MainWindow.Text = "CGBridge";
            RibbonControl rc = RibbonControl();
            
            RibbonTab rt = RibbonTab("系统", "1");
            RibbonPanel rp = RibbonPanel("菜单面板");
            RibbonButton rblogin = RibbonButton("登陆系统", "登陆系统", "");
            RibbonButton rbconnect = RibbonButton("连接设置", "连接设置", "");
            RibbonButton rbdatain = RibbonButton("数据加载", "数据加载", "");
            RibbonButton rbuser = RibbonButton("用户管理", "用户管理", "");
            RibbonButton rbquit = RibbonButton("系统退出", "系统退出", "");
            rp.Source.Items.Add(rblogin);
            rp.Source.Items.Add(rbconnect);
            rp.Source.Items.Add(rbdatain);
            rp.Source.Items.Add(rbuser);
            rp.Source.Items.Add(rbquit);
            rt.Panels.Add(rp);
            RibbonTab rtedit = RibbonTab("要素编辑", "1");
            RibbonPanel rpedit = RibbonPanel("菜单");         
            RibbonButton rbaddpoint = RibbonButton("增加点", "增加点", "");
            RibbonButton rbaddpolyline = RibbonButton("增加折线", "增加折线", "");
            RibbonButton rbaddpolygon = RibbonButton("增加区域", "增加区域", "");
            rpedit.Source.Items.Add(rbaddpoint);
            rpedit.Source.Items.Add(rbaddpolyline);
            rpedit.Source.Items.Add(rbaddpolygon);
            rtedit.Panels.Add(rpedit);
            rc.Tabs.Clear();
            
            rc.Tabs.Add(rt);
            rc.Tabs.Add(rtedit);
        }
        ///  /// 获得菜单控制 ///  ///  
        ///
        public static  RibbonControl RibbonControl()
        {
            if (Autodesk.Windows.ComponentManager.Ribbon == null)
                Autodesk.Windows.ComponentManager.ItemInitialized += new EventHandler(ComponentManager_ItemInitialized);
            return ComponentManager.Ribbon;
        }
        ///  /// 创建菜单标签 ///  /// 标签名 /// 标签ID ///
        ///
        public static RibbonTab RibbonTab(string Name, string id)
        {
            RibbonTab ribTab = new Autodesk.Windows.RibbonTab();
            ribTab.Title = Name;
            ribTab.Id = id;
            ribTab.IsActive = true;
           
            return ribTab;
        }
        ///  /// 创建菜单面板 ///  /// 面板名 ///  
        ///
        ///
        ///
        ///
       public static RibbonPanel RibbonPanel(string Title)
       {
           RibbonPanelSource ribSourcePanel = new RibbonPanelSource();
           //Autodesk.Windows
           ribSourcePanel.Title = Title;//now the panel
           RibbonPanel ribPanel = new RibbonPanel();
           ribPanel.Source = ribSourcePanel;
           return ribPanel;
       } ///  /// 创建菜单按钮 ///  /// 按钮名 /// 命令名 ///
        ///
        public static RibbonButton RibbonButton(string btName, string cmdName,string strbmp)
        {
            RibbonButton ribButton = new RibbonButton();
            ribButton.Text = btName;
            ribButton.CommandParameter = cmdName;
            ribButton.ShowText = true;
            ribButton.LargeImage = new System.Windows.Media.Imaging.BitmapImage(new System.Uri(System.Windows.Forms.Application.StartupPath +strbmp));
            ribButton.Size = Autodesk.Windows.RibbonItemSize.Large;
            ribButton.ShowImage = true;
            ribButton.CommandHandler = new AdskCommandHandler();
            return ribButton;
        }
        /////  /// 用于激活菜单 ///  ///  ///  
        //  ///
        static void ComponentManager_ItemInitialized(object sender, RibbonItemEventArgs e)
        {
            if (Autodesk.Windows.ComponentManager.Ribbon != null)
                Autodesk.Windows.ComponentManager.ItemInitialized -= new EventHandler(ComponentManager_ItemInitialized);
        }
        ///  /// 执行按钮的命令 ///  
        ///
        public class AdskCommandHandler : System.Windows.Input.ICommand
        {
            ///  /// 是否可执行(接口) ///  /// 命令名
            /// ///  
            ///
            ///
            ///
            ///
            public bool CanExecute(object parameter)
            { return true; } ///  /// 改变可执行状态 ///  
            ///
            public event EventHandler CanExecuteChanged; ///  /// 执行命令 ///  /// 命令的名字
            ///
            public void Execute(object parameter)
            {
                //is from a Ribbon Button?
                Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
                RibbonButton ribBtn = parameter as RibbonButton;
                if (ribBtn != null)
                {
                    if ((String)ribBtn.CommandParameter == "系统退出")
                         Autodesk.AutoCAD.ApplicationServices.Application.Quit();
                    else if((String)ribBtn.CommandParameter == "数据加载")
                         doc.SendStringToExecute("COSQL ", true, false, false);
                    else
                         Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute((String)ribBtn.CommandParameter, true, false, true);
                    //MessageBox.Show((String)ribBtn.CommandParameter);
                }
                //Autodesk.AutoCAD.ApplicationServices.Application.Quit();// Autodesk.AutoCAD.ApplicationServices.Application.MainWindow.Text = "CGBridge"; Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute((String)ribBtn.CommandParameter, true, false, true);
                //is from s Ribbon Textbox?
                RibbonTextBox ribTxt = parameter as RibbonTextBox;
                if (ribTxt != null) //System.Windows.Forms.MessageBox.Show(ribTxt.TextValue);
                    MessageBox.Show("fff");
            }
        }
    }
}
第2个菜单不能激活 如何修改?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2011-3-2 13:23:00 | 显示全部楼层
用局部cui实现更简单
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2011-8-5 16:29:00 | 显示全部楼层
在CAD2012上无法显示菜单,这是为什么?
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2011-8-5 18:10:00 | 显示全部楼层
回楼上,应该是2010以后版本需要是在 "AutoCAD 经典" 模式下才会显示下拉菜单;
"AutoCAD 经典" 是中文版的名字,英文版我猜应该是"AutoCAD Classic";
另,本人没用过2011,2012版本
回复

使用道具 举报

25

主题

77

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
177
发表于 2012-7-28 20:41:00 | 显示全部楼层
正想学习呢,有用
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 14:37 , Processed in 2.679937 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表