Trung Tâm Revit Thực Hành NPD 4.2.2-Chọn đối tượng bằng Code 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ự

PHƯƠNG THỨC CHỌN ĐỐI TƯỢNG BẰNG CODE

 
Vài phương thức cơ bản chọn đối tượng bằng Code mà chương trình tự chọn để xử lý theo một điều kiện cho trước bởi yêu cầu của câu lệnh. Cách chọn này người lập trình tự định hướng và xử lý cho chính xác, người dùng không thể can thiệp. Về nguyên tắc, chương trình sẽ lấy một tập hợp đối tượng được chọn của người dùng và lọc (Filter) lại những đối tượng cần xử lý hoặc lọc từ toàn bộ đối tượng trong file Revit (Document).
Từ đây chúng ta làm quen các từ Document Filter. Document là toàn bộ dữ liệu của File Revit đang mở, còn Filter là lọc các một hay nhiều đối tượng theo một nhay nhiều điêu kiện, qui tắc toán học,...để chọn ra một tập hợp đối tượng cần xử lý bên trong tập hợp lớn hơn.
  1. Chọn đối tượng:
  • Chọn toàn bộ đối tượng của file Revit:

Phương thức New FilteredElementCollector( document) là lấy toàn bộ tra về  cho biến "TatCaDoiTuongTrongFile". Biến này có kiểu dữ liệu đặc biệt "FilteredElementCollector ".

[Code]
FilteredElementCollector  TatCaDoiTuongTrongFile= new FilteredElementCollector( document);
[/Code]

  • Chọn toàn bộ đối tượng nào đó của file Revit. Ví dụ chọn toàn bộ sàn:

[Code]
ICollection TatCaSan=  TatCaDoiTuongTrongFile. OfClass( typeof(Floor)).ToElements();
[/Code]

Đoạn code trên là cách chúng ta lọc toàn bộ đối tượng sàn trong tập hợp lớn "TatCaDoiTuongTrongFile". OfClass là chọn loại đối tượng, typeof là loại đối tượng. Dòng lệnh trên bao gồm luôn cả các đối tượng kiểu sàn, tức các tên tập hợp sàn.
  • Chỉ chọn những đối tượng sàn được vẽ ra:
[Code]
ICollection TatCaSan=   TatCaDoiTuongTrongFile.OfClass( typeof(Floor)).  WhereElementIsNotElementType( ).ToElements();[Code]
 
  • Chỉ chọn những đối tượng sàn thuộc kết cấu, tức tham số Structural =1:
ICollection SanKetCau= TatCaDoiTuongTrongFile. OfCategory(BuiltInCategory. OST_FloorsStructure).ToElements();
  • Bây giờ chúng ta có yêu cầu chọn một số sàn theo điều kiện. Ví dụ điều kiện vật liệu, ví du có vât liệu là "BTCT #200":
[Code]
List San_KC_M200 = new List ();
  foreach (Element elem in SanKetCau)
            {
      Parameter para = elem.LookupParameter( "Materrial");
Element Material_ID = doc.GetElement( para.AsElementId());
Material_Name= Material_ID .Name;
 
                if (Material_Name== "BTCT #200")
                {
                    San_KC_M200 .Add(elem);
                }
            }
[/Code]
Khai báo một biến mới để chứa danh sách sàn M#200 chọn được:
List San_KC_M200 = new List (); 
Còng lặp duyệt từng đối tượng đề kiểm tra điều kiện:
  foreach (Element elem in SanKetCau)
            {
Chọn một đối tượng và tìm tham số Vật liệu với từ khóa là Material, lấy ID của loại vật liệu chứa trong tham số Material. Vì giá trị vật liệu chứa trong tham số là một ID chứ không phải một tên kiểu chuỗi:
      Parameter para = elem.LookupParameter("Material");
Đọc vật liệu từ số ID:
Element VatLieu= doc.GetElement(para.AsElementId());
Lấy tên vật liệu:
Material_Name= Material_ID .Name;
So sánh điều kiện, nếu đúng thì thêm vào biến "San_KC_M200 ".
                if (Material_Name== "BTCT #200")
                {
                    San_KC_M200 .Add(elem);
                }
            }
 

 


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