Trung Tâm Revit Thực Hành NPD 2.3-Tham chiếu thư viện 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ự

THAM CHIẾU THƯ VIỆN

1- Import các thư viện liên kết động DLL

Hai File quan trọng nhất bắt buộc phải có trong mọi ứng dụng Add-ins Revit là:
  • RevitAPP.dll
  • RevitAPIUI.dll

Hai File này chứa trong thư mục chương trình của Revit:

C:\Program Files\Autodesk\Revit 2017

Đây cũng là lý do phải cài phần mềm Revit trước thì mới viết Code cho Add-ins được. Đồng thời mỗi phiên bản Revit sẽ có những thay đổi về các lệnh, cú pháp thậm chí những chỉnh sửa sai sót chính tả trong các phiên bản trước.

Nhấn chuột phải vào mục Reference để mở menu tắt (Shotcut), chọn Add Reference Hộp thoại Reference Manager mở ra:

  1. Danh sách các thư viện DLL có sẵn được cài đặt theo VS.
  2. Danh sách các thư viện DLL có trong Solution, của tất cả các Project. Đây là cách chung ta tham chiếu, liên kết các Project trong cùng Solution.
  3. Danh sách các thư viện DLL có trong Solution chia sẻ qua Project này.
  4. Danh sách thư viện trong thư mục COM của Window. Tại đây chứa nhiều thư viện của nhiều phần mềm khác nhau được cài vào Window.
  5. Tìm một nơi bất kỳ và danh mục những thư viện đã chọn gần đây. 
 
Chọn nút Browse.. góc dưới bên phải hộp thoại, tìm đến đường dẫn chứa thư viện của Revit:
C:\Program Files\Autodesk\Revit 2017
Chọn 2 file quan trọng đã nêu. (Nhấn giữ Ctrl để chọn 2 file xa nhau cùng lúc). Sau đó chọn Add để thêm các file DLL ra trang Browse. trong trang này có thể chứa nhiều DLL đã chọn trước đó. Cẩn thận check đúng hai file DLL vừa Add rồi bấm OK.
 
Để sử dụng hộp thoại với các thông báo, hộp thoại linh hoạt của MicroSoft thì nên thêm file System.Window.Forms.
 
Các file này chứa trong thư mục COM của Window:
Các chọn tương tự như trên. Chúng ta cần làm từ từ, vừa làm vừa suy ngẫm để hiểu cấu trúc lưu trữ của các thư viện DLL. Việc này rất quan trọng, mỗi khi cần một thủ tục hay phương thức nào đó, chúng ta dễ dàng nhìn thấy được hướng dẫn trên Google, nhưng khi viết lại trên code của mình thì báo lỗi. Khi bị báo lỗi, cần tìm hiểu các thủ tục hay phương thức đó được lưu trong NameSpace nào? thuộc thư mục nào?...
 
Hãy kiên nhẫn, vì việc lập trình không đơn giản là để viết ra lệnh, nó còn giúp chúng ta biết được giới hạn sự kiên nhẫn của bản thân. :)

2- Liên kết các thư viện trong Class

Sau khi import các thư viện vào dự án, cũng giống như Family Revit chúng ta chưa sử dụng ngay được mà phải khai báo nó trên đầu các Class. C# là ngôn ngữ lập trình hướng đối tượng, nó gồm các NameSpace (Không gian Tên) chứa nhiều Class (Lớp) bên trong một dự án. Giống như các thư mục lồng vào nhau. Khi muốn liên kết đến một lệnh nào trong Class thì phải chỉ NameSpace.Class. Tuy nhiên nếu các Class ở trong cùng một NameSpace thì không cần chỉ NameSpace nữa.
 
Tùy theo định hướng khai báo chi tiết đến đâu thì chúng ta có thể khai thác thư viện đến đó. Chúng ta cần hiểu đơn giản rằng một file thư viện chứa nhiều NameSpace, trong NameSpace chưa nhiều Class, trong Class chứa các Class thứ cấp, các thủ tục lệnh,... Nếu các thủ tục nằm trong các Class được khai báo trên đầu Class hiện tại thì chúng ta chỉ cần sử dụng mà không cần khai báo thêm, ngược lại nó nằm bên trong nhiều cấp của NameSpace khai báo bên trên thì chúng ta phải tiến hành khai báo thêm đường dẫn hướng đến thủ tục hay tham số cần tìm.
 
Đổi tên Class.cs thành Command.cs Đây là Class nhận lệnh từ ứng dụng Revit khi thực hiện lệnh. Có thể tạo nhiều Class khác để liên kết với Class này cho những ứng dụng phức tạp.
 
Thêm các tham chiếu thư viện vào Class :
using Autodesk.Revit;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.ApplicationServices;
 
 
 
 
 
 
 
 
 
 
Thêm các đoạn Code quan trọng cho Class Command. Lưu ý mỗi một lệnh trong Add-ins chỉ cần một Class kiểu Command. Có thể hình dung Class này giống như nhóm trưởng để nhận gói công việc và sau đó giao lại cho các nhóm viên làm, cuối cùng kết thúc thì báo cáo hoàn tất. Có thể đặt tên khác nhau và tạo nhiều Class liên kết với Class này để thực thi lệnh.
 

[Code]​

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

[/Code]

1- Khai báo tùy chọn thuộc tính can thiệp vào file Revit:
Dòng đầu tiên khai báo cách thức làm việc với dữ liệu của Revit:
 
   [Autodesk.Revit.Attributes. Transaction( Autodesk.Revit.Attributes. TransactionMode.Manual)]
  • TransactionMode.Automatic : Tự động cho phép can thiệp vào dữ liệu, nhưng nên biết rằng nếu xãy ra bất kỳ một lỗi nào trong qua trình thực thi lệnh thì Revit sẽ hủy toàn bộ những gì lệnh vừa thực thi. Dùng cho các lệnh ngắn gọn, lệnh cần sự toàn vẹn các thao tác. Giống như kiểu nhận thầu trọn gói trong thi công. smiley
  • TransactionMode.Manual: Chỉ định từng phân đoạn cho Revit biết khi nào can thiệp khi nào kết thúc để qua phân đoạn khác. Dùng trong nhiều trường hợp, đặc biệt với các lệnh xử lý nhiều đối tượng, nhiều tác vụ nối tiếp nhau.
  • TransactionMode.ReadOnlyKhông được can thiệp vào dữ liệu của chúng tôi! Revit nói rằng Code không được can thiệp dữ liệu, chỉ được phép đọc thông tin. Dùng khi lệnh chỉ cần đọc dữ liệu để Show ra hoặc xuất ra ngoài như Excel, SQL, để lấy khối lượng chẳng hạn.
Dòng tiếp theo là tùy chọn cho phép Revit theo dõi, kiểm soát các hành vi vẽ lại màn hình khi lệnh ngoài đang thực thi:
 
  [Autodesk.Revit.Attributes. Journaling( Autodesk.Revit.Attributes. JournalingMode.NoCommandData)]
  • JournalMode.NoCommandData: Không cần sự hỗ trợ, kiểm soát của Revit. Dùng tùy chọn này khi còn chưa thông thạo Revit, cứ để yên cho tôi quậy phá xem sao! không cần nhắc nhở gì cả.smiley
  • JournalMode.UsingCommandData : Cần sự giám sát và hỗ trợ của Revit bằng cách đưa ra các cặp dữ liệu để kiểm soát tiến trình thực thi lệnh. 

Dòng tiếp theo là tùy chọn cho phép Revit  kiểm soát hành vi khi lệnh ngoài đang thực thi:

     [Autodesk.Revit.Attributes. Regeneration( Autodesk.Revit.Attributes. RegenerationOption.Manual)]

 

2- Kế thừa lớp IExternalCommand: Lớp IExternalCommand chứa các thủ tục để Code chúng ta viết liên kết được với các thủ tục, đối tượng và tài nguyên trong Revit.
 
3- Thủ tục kết nối lệnh:
Phần thủ tục này có chứa các đối số mặc định, thông qua đó Revit gởi cho chúng ta những dữ liệu, tài nguyên của File Revit hay chương trình đang mở.
 
[Code]​
public Autodesk.Revit.UI.Result Execute( ExternalCommandData commandData,
            ref string message,  Autodesk.Revit.DB. ElementSet elements)
        {
            // Phần thân xữ lý lệnh
            
            return Autodesk.Revit.UI. Result.Succeeded; // Trả về kết quả thành công.
        }
[/Code]​
 

3- Thiết lập thông tin cho dự án

Nhấn phím phải vào tên Project, chọn Properties dưới cùng danh sách Menu tắt. Hộp thoại Properties hiện ra, chọn các thông số cần thiết:
  • Đặt tên file DLL chứa Code, gọi là Assembly :

  • Bấm vào Assembly Infomation để Copy chuỗi số GUID, sau đó dùng Paste vào File Addin được trình bày trong mục kế tiếp.
 
 

4- Chạy lệnh biên dịch

Nhấn phím phải vào tên Project, chọn Build trong Menu tắt, chương trình sẽ biên dịch thử. Nếu không có lỗi gì xãy ra là thành công.
 
Như vậy là chúng ta đã chuẩn bị xong cho một không gian viết Code tạo Addin trong Revit. Việc tiếp theo là chuẩn bị kịch bản cho một lệnh mục tiêu nào đó.
 
Trong lập tình cũng giống như thiết kế Family trong Revit, biết lập trình mới chỉ là khởi đầu, tìm đúng mục tiêu,  đưa giải pháp, chọn kịch bản và cuối cùng là tìm ra giải thuật. 
 
Người lập trình viên cũng tương đương như Họa Viên trong ngành kiến trúc xây dựng, chỉ có thể biết sử dụng ngôn ngữ, tìm ra giải thuật để giải quyết các tình huống điển hình. Còn người biết chọn mục tiêu, đưa giải pháp và chọn kịch bản thì công việc tương đương như Kiến truc Sư và Kỹ sư XD vậy.

 


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