Có một tình huống lặp lại ở nhiều công ty thiết kế. Kỹ sư phải điền mã cấu kiện cho vài nghìn đối tượng trong mô hình Revit. Việc đó mất mấy ngày, và gần như luôn sót vài chỗ.
Rồi mô hình đổi. Lại làm lại từ đầu.
Đây chính là loại việc mà Revit API sinh ra để giải quyết. Một công cụ nhỏ vài trăm dòng mã có thể làm xong trong chưa đầy một phút, và làm lại bao nhiêu lần cũng được.
Bài này giải thích API của Revit qua những việc cụ thể nó làm được. Sau đó so sánh hai con đường Dynamo và C#. Rồi nói thật về mức lập trình cần biết, và đưa lộ trình học cho kỹ sư không xuất thân công nghệ thông tin.
Revit API là gì
API viết tắt của Application Programming Interface. Tạm hiểu là cái cửa mà Autodesk mở ra để phần mềm khác, hoặc mã lệnh do bạn viết, điều khiển được Revit.
Qua cửa đó, mã lệnh đọc được mọi đối tượng trong mô hình. Nó sửa được thuộc tính, tạo được đối tượng mới, xuất được dữ liệu, và thêm được nút lệnh vào giao diện.
Nói gọn: việc gì bấm chuột làm được thì mã lệnh gần như đều làm được. Nhanh hơn, và không bỏ sót.
Năm nhóm việc thường gặp nhất:
- Điền và đồng bộ tham số hàng loạt. Đọc bảng Excel mã vật tư hoặc mã cấu kiện, rồi gán vào hàng nghìn đối tượng theo quy tắc. Mô hình đổi thì chạy lại, không phải dò tay.
- Tự động đánh số và đặt tên. Đánh số cột, dầm, cửa, phòng và sheet theo quy ước công ty, theo thứ tự trục và tầng. Đổi quy ước thì chạy lại.
- Đặt đối tượng theo quy tắc. Tự đặt ống lồng tại mọi vị trí ống xuyên tường và sàn. Tự tạo khung nhìn và sheet cho từng tầng, từng bộ môn.
- Kiểm tra chuẩn mô hình. Quét toàn mô hình tìm đối tượng sai Category, sai tên, thiếu tham số bắt buộc, Family không thuộc thư viện công ty. Rồi xuất báo cáo. Đây là công cụ BIM Coordinator dùng hằng ngày.
- Xuất dữ liệu theo mẫu riêng. Bóc khối lượng từ mô hình rồi xuất thẳng ra mẫu bảng tiên lượng mà phòng dự toán đang dùng.
Điểm chung của cả năm: không cái nào là "viết phần mềm lớn". Chúng là công cụ nhỏ, giải quyết một việc lặp đi lặp lại. Và đó là phần lớn giá trị của việc lập trình cho Revit ở doanh nghiệp Việt Nam. Cũng là loại công cụ mà khóa Lập trình Revit API tại Viện hướng tới.
Dynamo hay C#: chọn cái nào
Có hai con đường để đi qua cửa API. Nên câu hỏi "Dynamo hay Revit API" thực ra là "Dynamo hay C#".
| Dynamo | C# (add-in .NET) | |
|---|---|---|
| Là gì | Lập trình trực quan. Kéo thả các nút, nối thành sơ đồ. Đi kèm Revit, miễn phí (dynamobim.org) | Viết mã bằng C# hoặc VB.NET, biên dịch thành add-in cài vào Revit |
| Cần biết lập trình? | Ban đầu thì không. Cần tư duy logic | Cần nền C# cơ bản |
| Đến kết quả đầu tiên | Vài giờ | Vài tuần |
| Hợp với việc gì | Tự động hóa một lần, thử ý tưởng, xử lý dữ liệu, hình học tham số | Công cụ dùng lặp lại, chia sẻ cho cả công ty, chạy nhanh với mô hình lớn |
| Hạn chế | Chậm với mô hình lớn. Sơ đồ phình to thì khó bảo trì và khó chia sẻ | Tốn công học và viết. Phải biên dịch lại theo phiên bản Revit |
| Ai dùng | Kỹ sư, kiến trúc sư tự động hóa việc của mình | Người phụ trách công cụ BIM của công ty |
Lời khuyên của Viện khá đơn giản. Bắt đầu bằng Dynamo. Chuyển sang C# khi công cụ cần dùng nhiều lần hoặc cho nhiều người.
Nhiều kỹ sư dừng ở Dynamo là đủ cho công việc của họ. Những người trở thành "người làm công cụ" của công ty thì cần C#. Và họ thường được trả lương khác hẳn. Bài Dynamo: cẩm nang lập trình trực quan cho Revit nói kỹ về con đường thứ nhất: node, graph, package và sáu việc kỹ sư dùng Dynamo hằng ngày.
Cần biết lập trình đến đâu
Đây là nỗi lo lớn nhất của kỹ sư xây dựng. Câu trả lời trung thực: ít hơn bạn nghĩ, nhưng không phải là không cần.
Để viết add-in C# cho Revit, bạn cần ba lớp kiến thức.
- Nền lập trình cơ bản. Biến, kiểu dữ liệu, điều kiện, vòng lặp, hàm, danh sách, lớp và đối tượng. Tương đương vài tuần học nghiêm túc. Không cần giải thuật phức tạp, không cần toán cao cấp.
- Mô hình đối tượng của Revit. Document, Element, Category, Parameter, Transaction. Cách lọc đối tượng, cách tạo và sửa. Đây là phần "Revit" của việc lập trình. Kỹ sư xây dựng học phần này nhanh hơn lập trình viên thuần, vì họ hiểu mô hình là gì.
- Công cụ làm việc. Visual Studio, cấu trúc một add-in, cách gỡ lỗi, cách đóng gói để cài cho người khác.
Còn đây là những thứ bạn không cần: bằng công nghệ thông tin, kinh nghiệm lập trình web hay ứng dụng di động, khả năng viết phần mềm thương mại.
Lợi thế của kỹ sư xây dựng khi học lập trình cho Revit nằm ở chỗ khác. Họ biết rõ bài toán cần giải. Lập trình viên thuần thường viết mã tốt hơn, nhưng không biết nên tự động hóa cái gì.
Ở các công ty, người kết hợp được hai thứ — hiểu mô hình và viết được mã — là người hiếm nhất.
Lộ trình học cho kỹ sư xây dựng
Có một điều kiện tiên quyết: dùng Revit thành thạo ở một nhánh. Đã dựng được mô hình thật, hiểu Family, Type, Instance và tham số.
Không thể tự động hóa thứ mình chưa làm được bằng tay. Nếu chưa vững, hãy đi qua lộ trình Revit trước.
| Chặng | Học gì | Kết quả |
|---|---|---|
| 1. Dynamo (2–4 tuần) | Giao diện, nút cơ bản, đọc và gán tham số, chọn đối tượng, làm việc với Excel | Một sơ đồ tự động hóa việc thật của bạn |
| 2. Nền C# (4 tuần) | Cú pháp, cấu trúc dữ liệu, lớp và đối tượng, Visual Studio | Viết được chương trình nhỏ độc lập |
| 3. Add-in C# (6–8 tuần) | Cấu trúc add-in, mô hình đối tượng Revit, lọc và sửa, tạo đối tượng, giao diện, sự kiện | Một add-in có nút lệnh trên ribbon |
| 4. Làm thật (liên tục) | Viết công cụ theo nhu cầu phòng ban, bảo trì theo phiên bản Revit | Bộ công cụ nội bộ của công ty |
Khóa Lập trình Revit API 15 buổi tại Viện đi trọn chặng 3, dành cho người đã có nền Revit. Khóa chia bảy phần. Bốn phần đầu là nhập môn add-in, xây dựng giao diện công cụ, tham chiếu và đọc dữ liệu đối tượng. Ba phần sau là gán thuộc tính, khởi tạo đối tượng bằng mã lệnh, và lập trình sự kiện.
Người chưa có nền C# được hướng dẫn tự học chặng 2 trước khóa. Ai còn làm nhiều với bản vẽ hai chiều thì có thêm khóa Lập trình trong AutoCAD 10 buổi.
Một lời khuyên về cách học. Đừng học theo danh sách hàm. Hãy chọn một việc bạn ghét làm tay nhất trong Revit, rồi học đúng những gì cần để tự động hóa nó.
Công cụ đầu tiên xấu cũng không sao. Nó là bằng chứng bạn làm được, và là thứ nhà tuyển dụng muốn xem.
Nơi nào đang cần vị trí này
Vị trí liên quan tới lập trình cho Revit ở Việt Nam thường mang tên BIM Developer, Revit API Developer, hoặc kỹ sư phát triển công cụ BIM. Đôi khi nó nằm luôn trong mô tả công việc của BIM Manager.
Bốn nhóm thường tuyển:
- Công ty phần mềm xây dựng và BIM. Phát triển add-in thương mại, công cụ bóc khối lượng, công cụ kiểm tra mô hình.
- Công ty thiết kế và tổng thầu lớn có đội BIM. Cần một vài người viết công cụ nội bộ, xây thư viện và tiêu chuẩn. Thường kiêm luôn vai trò Coordinator hoặc Manager.
- Công ty gia công BIM cho nước ngoài. Năng suất quyết định lợi nhuận, nên tự động hóa được đầu tư mạnh. Yêu cầu C# và tiếng Anh.
- Đơn vị nghiên cứu và phát triển phần mềm thuộc trường, viện. Như Trung tâm phát triển phần mềm của chính Viện Tin học Xây dựng, viết ứng dụng theo đơn đặt hàng doanh nghiệp.
Người vừa hiểu mô hình vừa viết được add-in thường có thu nhập cao hơn kỹ sư dựng mô hình cùng số năm kinh nghiệm. Lý do đơn giản là nguồn cung rất ít. Với kỹ sư xây dựng muốn tăng thu nhập mà không rời chuyên môn, đây là một trong số ít con đường không đòi hỏi chuyển sang làm quản lý.
Câu hỏi thường gặp
Học lập trình cho Revit có cần tiếng Anh không?
Cần đọc được tài liệu, vì tài liệu, tên hàm và cộng đồng hỏi đáp đều bằng tiếng Anh. Không cần nói giỏi.
Dynamo có đủ để đi làm không?
Đủ cho vị trí kỹ sư BIM tự động hóa việc của mình, và là điểm cộng khi ứng tuyển. Vị trí phát triển công cụ cho công ty thì thường yêu cầu C#.
Nên học C# hay Python?
API chính thức của Revit dùng .NET, tức C# hoặc VB.NET. Python dùng được qua Dynamo hoặc pyRevit và rất tiện cho việc nhỏ. Nhưng add-in phân phối cho cả công ty vẫn chủ yếu viết bằng C#. Học C# trước, Python học thêm sau rất nhanh.
Mỗi phiên bản Revit mới có phải viết lại công cụ không?
Thường chỉ cần biên dịch lại và sửa vài chỗ API thay đổi. Autodesk công bố danh sách thay đổi mỗi năm. Đây là lý do người bảo trì công cụ là vị trí lâu dài, không phải việc làm một lần.
Kiến trúc sư có học được lập trình cho Revit không?
Được. Nhiều kiến trúc sư đi theo hướng Dynamo để tham số hóa hình khối và mặt đứng, rồi một số chuyển sang C#. Điều kiện giống kỹ sư: vững Revit trước.
Học Revit API rồi có làm được cho phần mềm khác không?
Có. Cách nghĩ về mô hình đối tượng, lọc, sửa và tạo phần tử là chung. Người đã viết add-in Revit chuyển sang lập trình cho AutoCAD hay Tekla đều nhanh hơn nhiều so với học lại từ đầu.