Hướng dẫn python revit la gì

Trước đó mình đã viết một bài Hướng dẫn cơ bản về cách tiếp cận với RevitPythonShell, hôm nay sẽ là một bài dẫn dẵn bạn tiếp tục khám phá công cụ thú vị này. Ở đây chúng ta sẽ bắt đầu đi vào tìm hiểu sâu hơn để hiểu rõ cách khai thác cũng như sử dụng nhé.

Cụ thể thì RevitPythonShell có ưu điểm gì ?

RevitPythonShell là một bổ trợ Revit được tạo bởi Daren Thomas, nó cho phép bạn truy cập toàn quyền vào API Revit bằng ngôn ngữ lập trình Python. Nó là một trình bao tương tác cho phép bạn thử nghiệm với các đoạn mã ngắn trong Autodesk Revit khi đang chạy. Điều này cung cấp một cách thiết thực hơn để tạo tiện ích bổ sung cho Revit, v.v.

Các chức năng chính của RevitPythonShell :

1.Tập lệnh ngôn ngữ Python [IronPython]

2.Cú pháp nổi bật

3.Toàn quyền truy cập vào API Revit

4.Tập lệnh RevitPythonShell có thể được xuất dưới dạng các addin độc lập

5.Thư viện chuẩn Python và thư viện khung công tác .NET có sẵn

6.Chỉnh sửa và chạy các tập lệnh mà không cần khởi động lại Revit

Các khởi tạo truy cập sẵn có

__revit__ : Điều này tương tự với Autodesk.Revit.Application khi bạn bắt đầu chạy một ExternalCommandData để khởi tạo một Document : `

Ví dụ :

from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Architecture import *
from Autodesk.Revit.DB.Analysis import *
uidoc = __revit__.ActiveUIDocument
document = doc = __revit__.ActiveUIDocument.Document

__commandData__ : Tương đương với một ExternalCommandData

def quit[]:
__window__.Close[]
exit = quit
0 : ElementSet được chuyển đến
def quit[]:
__window__.Close[]
exit = quit
1 khi bạn đã nhấp vào "Open Python Shell" hoặc khởi chạy một tập lệnh từ thanh Ribbon

def quit[]:
__window__.Close[]
exit = quit
2 : Tương đương với kết quả trả về từ tập lệnh ExternalCommandData ví dụ như kết quả trả về thành công
def quit[]:
__window__.Close[]
exit = quit
4.

def quit[]:
__window__.Close[]
exit = quit
5 được gọi như một biến chung chung bao gồm các kiểu như string,int,double,v.v..

def quit[]:
__window__.Close[]
exit = quit
6 : một tham chiếu đến một UIControlledApplication instance và chỉ trong lúc bắt đầu tệp lệnh.

def quit[]:
__window__.Close[]
exit = quit
7 : Tham chiếu đến một cửa sổ đầu ra .

Ví dụ thoát chương trình cửa sổ :

def quit[]:
__window__.Close[]
exit = quit

def quit[]:
__window__.Close[]
exit = quit
8 : Hỗ trợ một tập lệnh python thực thi đường dẫn từ bên ngoài, ví dụ như
def quit[]:
__window__.Close[]
exit = quit
9

Như vậy tổng kể lại chúng ta sẽ có một số biến định nghĩa khai báo như sau :

uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = __revit__.ActiveUIDocument.Selection.Elements
alert[msg] = UI.TaskDialog.Show['RevitPythonShell', msg]
quit[] hoặc exit[] = __window__.Close[]

Xin chào thế giới

Như vậy rất dễ để ta có thể hiển thị lên màn hình revit một thông báo xin chào thế giới đơn giản với câu lệnh:

uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = __revit__.ActiveUIDocument.Selection.Elements
alert[msg] = UI.TaskDialog.Show['RevitPythonShell', msg]
quit[] hoặc exit[] = __window__.Close[]
0

Nếu màn hình chính hiện lên như thế này tức là bạn đã thành công.

Lọc tường hiển thị tên và Id

Lần này chúng ta sẽ thử lọc ra tất cả các tường có trong dự án, hiển thị tên và Id định danh của chúng.

from Autodesk.Revit.DB import *
uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
from Autodesk.Revit.UI import TaskDialog
from Autodesk.Revit.UI import UIApplication
walls = FilteredElementCollector[doc].OfClass[Wall]
for c in walls:
	print[c.Name+"_"+c.Id.ToString[]]
	

Nếu màn console của tệp lệnh thực thi hiển thị lên gần giống như thế này tức là bạn đã thành công.

Tạo một nút chọn tương tác

Nếu là một người dùng bình thường không cần thiết phải biết đến mã nhưng chúng ta lại muốn họ có thể sử dụng và tương tác được.Như vậy ta phải bắt đầu suy nghĩ đến việc tạo ra một nút chọn tương tác người dùng.

Đầu tiên cần chuẩn bị một xml như sau:






Như vậy tệp

uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = __revit__.ActiveUIDocument.Selection.Elements
alert[msg] = UI.TaskDialog.Show['RevitPythonShell', msg]
quit[] hoặc exit[] = __window__.Close[]
1 và tệp lệnh python
uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = __revit__.ActiveUIDocument.Selection.Elements
alert[msg] = UI.TaskDialog.Show['RevitPythonShell', msg]
quit[] hoặc exit[] = __window__.Close[]
2 phải cùng nằm trong một vị trí đường dẫn.Lúc này ta chọn đến deploy và tiến hành deploy

Nếu hiện lên thông báo này tức là bạn đã deploy thành công.

Và thư mục output chính là toàn bộ dll đã được deploy

Kiểm tra Addin Đã Deploy

Nếu dùng các công cụ kiểm tra mã đã deploy, ta sẽ thấy như sau, điều này cũng cho ta biết rằng mã đã đƯợc deploy chuẩn mà không vướng bất cứ lỗi nào trong quá trình build.

Lúc này ta sẽ dùng đến công cụ thứ hai chính là Addinmanager để hoàn tất khởi chạy tệp lệnh người dùng chính xác :

Xuất bản cài đặt

Việc xuất bản cài đặt này hoàn toàn tương tự với bài viết tham chiếu dll Bắt đầu viết mã với RevitAPI nên mình sẽ không hướng dẫn ở đây nữa, thật đơn giản phải không nào :D.

Mở rộng

Bài viết được thực hiện trên phiên bản revit 2021, nếu bạn có câu hỏi thắc mắc hoặc bất cứ lỗi nào hãy để lại bình luận bên dưới bài viết nhé.Cám ơn đã ghé thăm và đọc bài viết.

Chủ Đề