Trung Tâm Revit Thực Hành NPD 5.1- Tạo Menu 601/1 Lô A, CMT8, P15, Q10, TP.HCM 6,000,000VND/Khóa +84-913-875-375 Trung Tâm Revit Thực Hành NPD

Ths.KTS NGUYỄN PHƯỚC DỰ

Tài liệu học Revit, Tác giả : ThS.KTS.Nguyễn Phước Dự

TẠO MEMU RIBBON

 

Trước tiên chúng ta xem cấu trúc của Menu Ribbon
1- RibbonTab :     (Tên ngắn gọn trong dãy Memu).
2- RibbonPanel:  ( Nhóm trên Ribbon)
3- SplitButton :   (Nhóm lệnh)
4- PushButton : (Nút lệnh)


Khởi tạo một dự án mới trong Solution với tên Ribbon_Tenban. Trong phần Tham chiếu, link vào thêm 5 thư viện như hình bên.

Tiếp theo tạo tìm các Icons (Hình nút lệnh) để gắn trên nút lệnh, có thể tìm rất nhiều trên mạng. Lựa chọn những Icon phù hợp bỏ vào thư mục trong dự án có tên Icons. Sau này đóng gói phần mềm cần phải đưa thư mục này theo. Thông thường thư mục này để cùng với thư mục chứa file Ribbon.dll.

Sau đó tạo đoạn Code như phần bên dưới. Chúng ta có thể quét chọn toàn bộ phần code bên dưới vào một Class tạo sẵn rồi Edit lại.


[Code]

using System;
using System.IO;
using System.Windows.Media.Imaging;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Events;
using Autodesk.Revit.DB.Events;
 
 

namespace NPD.Ribbon.CS

{
    [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
    [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]

    public class Ribbon : IExternalApplication

    {
        // Lấy đường dẫn hiện tại của chính File Ribbon này.
        public static string AddInPath = typeof(Ribbon).Assembly.Location;
        // Tách file, chỉ lấy thư mục. Lúc bây giờ nếu các file Code chứa lệnh đặt cùng file thư mục file Ribbon thì chúng ta đẫ định vị được chúng.
        public static string AddInPathNPD = Path.GetDirectoryName(AddInPath);
        // Lấy đường dẫn thư mục chứa Icon (Các hình biểu tượng trên nut lệnh)
        static string ButtonIconsFolder = Path.GetDirectoryName(AddInPath) + "Icons\\";
        //Khi khởi tạo ứng dụng xong, chương trình gán giá trị các Event (Sự kiện) vào ứng dụng ;

        private void OnDocOpened(object sender, DocumentOpenedEventArgs args)

        {
            Autodesk.Revit.ApplicationServices.Application app = (Autodesk.Revit.ApplicationServices.Application)sender;            
        }
        // Event (Sự kiện) xãy ra khi khởi tạo ứng dụng. Ngay lúc đó yêu cầu chương trình thêm vào ứng dụng một sự kiện khác: OnDocOpened

        public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application)

        {
            try
            {
                // create customer Ribbon Items
                CreateRibbonPanel_NPD(application);
                application.ControlledApplication.DocumentOpened += new EventHandler(OnDocOpened);
 
 
                return Autodesk.Revit.UI.Result.Succeeded;
            }
            catch (Exception ex)
            {
                TaskDialog.Show("Ribbon TTRevit NPD", ex.ToString());
 
                return Autodesk.Revit.UI.Result.Failed;
            }
        }
 
        // Event (Sự kiện) xãy ra khi đóng ứng dụng. Ngay lúc đó yêu cầu chương trình bỏ ra khỏi ứng dụng một sự kiện khác: OnDocOpened

        public Autodesk.Revit.UI.Result OnShutdown(UIControlledApplication application)

        {
 
            application.ControlledApplication.DocumentOpened -= new EventHandler(OnDocOpened);
            return Autodesk.Revit.UI.Result.Succeeded;
        }
        // Bắt đầu tạo menu

        private void CreateRibbonPanel_NPD(UIControlledApplication application)

        {
            // Đặt tên Menu
            string tabName = "NPD-Util";
            // Yêu cầu Revit tạo và thêm vào một Menu riêng của chúng ta.
            application.CreateRibbonTab(tabName);
            //Tạo một vùng chứa lệnh trong menu vừa tạo
            RibbonPanel NPDPanel_Arc = application.CreateRibbonPanel(tabName, "Architecture");
            // Khởi tạo dữ liệu kiểu nhóm lệnh SplitButton
            SplitButtonData splitButtonData1 = new SplitButtonData("Architectural", "Architectural");
            // gán dữ liệu vào nhóm lệnh kiểu SplitButton
            SplitButton splitButton1 = NPDPanel_Arc.AddItem(splitButtonData1) as SplitButton;
            // Bắt đầu tạo từng nút lệnh gán vào nhóm lệnh
 
            // Nút lệnh 1, tương ứng với lệnh Vẽ sàn
            PushButton pushButton11 = splitButton1.AddPushButton(new PushButtonData("DoDaySan", "Độ dày sàn", AddInPathNPD + "\\DoDaySan.dll", "Plugin_2017.DoDaySan"));
            pushButton11.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "DoDaySan-icon.png"), UriKind.Absolute));
            pushButton11.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "DoDaySan-icon.png"), UriKind.Absolute));
            pushButton11.ToolTip = "Đồng bộ TypeMark";
 
 
            // Nút lệnh 2, tương ứng với lệnh vẽ tường
// Thuộc tính được gán thông tin của lệnh vẽ tường.
            PushButton PushButton12 = splitButton1.AddPushButton(new PushButtonData("VeTuong", "Vẽ tường", AddInPath, "Plugin_2017.VeTuong2Diem"));
// Biến được gán thông tin của đường dẫn đên Icon của nút lệnh, ảnh nút lớn.
            PushButton12.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "VeTuong-icon.png"), UriKind.Absolute));
// Biến được gán thông tin của đường dẫn đên Icon của nút lệnh, ảnh nút nhỏ.
            PushButton12.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "VeTuong-icon.png"), UriKind.Absolute));
            PushButton12.ToolTip = "LienketToHost";
 
            // Nút lệnh 3, tương ứng với  lệnh cắt tường
            PushButton PushButton13 = splitButton1.AddPushButton(new PushButtonData("VeTuong", "Vẽ tường", AddInPath, "Plugin_2017.VeTuong2Diem"));
            PushButton13.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "VeTuong-icon.png"), UriKind.Absolute));
            PushButton13.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "VeTuong-icon.png"), UriKind.Absolute));
            PushButton13.ToolTip = "LienketToHost";
        }
    }
}
[/Code]
 

 


Sách học Revit, Tác giả : ThS.KTS.Nguyễn Phước Dự

(Nhấn Ctrl+V để Paste ảnh từ Clipboard)
Khách Đăng nhập