Ths.KTS NGUYỄN PHƯỚC DỰ
Tài liệu học Revit, Tác giả : ThS.KTS.Nguyễn Phước Dự
Sách 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)
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
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
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)