Floor to sheet nghĩa là gì

Chia sẽ BCDD lên mạng xã hội nhé !

Có thể nói views và sheets trong Revit là những thứ cơ bản nhất mà một người dùng BIM cần phải nắm vững. Với sự hỗ trợ của Dynamo thì mọi việc sẽ trở nên dễ dàng và nhanh chóng hơn. Bài viết này sẽ đưa bạn đọc đi hết qua quy trình quản lý views & sheets trong một dự án Revit với sự hỗ trợ của Dynamo.

Với mục tiêu giúp cho cả những người không quen với Dynamo cũng có thể tiếp cận được quy trình thì chúng ta sẽ cùng tìm hiểu qua một công cụ gọi là Dynamo Player.

Browse Folders: dẫn đến thư mục có chứa các files Dynamo

Open Current Folder in Windows: mở lên thư mục hiện tại có chứa các file Dynamo.

Refresh Graph List: Làm mới danh sách Dynamo.

Play Graph: Chạy file Dynamo.

Edit Graph Inputs: chỉnh dữ liệu đầu vào để chạy Dynamo.

Open Graph in Dynamo: Mở file Dynamo lên để hiệu chỉnh.

Nội dung

  • 1. Tạo floor plans và ceiling plans
  • 2. Tạo GA [General Arrangement] Plans
  • 3. Dàn trang mặt bằng GA lên sheets
  • 4. Tạo và thiết lập dependent views.
  • 5. Dàn các Setout Plans mới tạo ở mục 4 lên Sheets
  • 6. Tạo các mặt bằng cho vách lõi [Core Plans]
  • 7. Tạo 3D views dựa vào scope box

1. Tạo floor plans và ceiling plans

1.1 Lấy tất cả levels trong Revit

1.2 Tạo views tương ứng với các levels.

Lưu ý node quan trọng nhất ở đây là FloorPlanView.ByLevel dùng để tạo views từ levels có được.

Ở đây chúng tôi [BCDD] dùng boolean là vì file Dynamo này dùng để tạo floor plans và ceiling plans. Boolean có tác dụng khi chỉ muốn tạo một trong hai loại plan.

1.3 Lấy tên của các levels

1.4 Đổi tên cho views bằng cách đổi lại giá trị cho tham số “View Name” chúng ta sẽ dùng node Element.SetParameterByName

1.5 Thiết lập phase cho các plans

1.6 Tương tự như trên, ceiling plans sẽ được tạo bằng node CeilingPlanView.ByLevel

Hoàn toàn tương tự như trên để thiết lập tên và phase cho các ceiling plans bằng node quan trọng Element.SetParameterByName

1.7 Run !!! Ở mục input chọn True hết, điều này có nghĩa là sẽ tiến hành tạo views cho cả floor plan và ceiling plan.

Chú ý bên Revit sẽ có thông báo muốn đổi tên của Levels hay không? Chọn No vì bạn chỉ muốn đổi tên của views.

Dưới đây là kết quả sau khi Run file. Các floor plans vs ceiling plans tương ứng với levels đã được tạo với -Working ở phía sau tên views.

File dynamo tạo floor plans và ceiling plans có thể download tại đây

2. Tạo GA [General Arrangement] Plans

2.1 Lấy tất cả levels trong Revit

2.2 Cũng giống như trên, ở đây chúng ta lại tạo floor plans và sửa lại tên của các plans. Thay vì có hậu tố “-Working” như trên thì các views này sẽ có tiền tố “GA-“.

2.3 Tự động gán view phase, view template và view type.

Việc xác định view type như sau [để ý ID của index 19 nhé]:

2.4 Gán scope box cho các views

Trước tiên là lấy ra các scope box bằng node Categories và All Element of Category, sau đó lọc scope box muốn gán cho view và cuối cùng là gán thông qua node Element.SetParameterByName

Kết quả sau khi run sẽ như sau:

Kết quả dưới đây cho thấy rằng GA plans đã được tạo, View template đã được gán, scop box đã được gán và phase cũng đã được gán cho các views.

File Dynamo tạo GA plans

3. Dàn trang mặt bằng GA lên sheets

Script này có một số input như titleblock, vị trí đặt viewport theo phương X và Y, Sheet Number, người vẽ, người kiểm bản vẽ.

3.1 Sàn lọc ra các views cần dàn trang lên sheet.

Ở đây chúng tôi dựa vào tham số ViewCategory lọc ra những views nằm chung trong thư mục “1000 GENERAL ARRANGEMENT”.

Tức là những view có “1000 GENERAL ARRANGEMENT” ở tham số ViewCategory sẽ được lấy ra.

3.2 Bước tiếp theo là sắp xếp các view theo level tức là từ thấp đến cao. Sử dụng node List.SortByKey với đầu vào là các views và giá trị cao độ tương ứng theo level của chúng.

Kết quả như sau:

3.3 Thiết lập Sheet Name từ View Name sau đó hiệu chỉnh thêm nhờ node String.Replace

3.4 Thiết lập Sheet Number

Chắc bạn đăng thắc mắc node String.PadLeft dùng để làm gì?

Xin thưa, nó được dùng trong những trường hợp bạn muốn những số 0 xuất hiện phía trước để đảm bảo cấu trúc đặt tên của sheet number được thống nhất.

3.5 Tạo Sheets từ Sheet Name và Sheet Number mới có.

Node Sheet.ByNameNumberTitleBlockAndView được dùng, lưu ý ngoài input Sheet Number vs Sheet Name thì còn có Title Block và một view [chúng tôi dùng drafting view rỗng như một thủ thuật]

3.6 Dàn views lên sheets, lưu ý nối views và sheets cẩn thận.

Lưu ý là bạn có thể đổi viewport type như no title như bên dưới

3.7 Gán một vài tham số cho các sheets tạo được cũng khá đơn giản, chỉ cần dùng node Element.SetParameterByName.

File có thể được download tại đây

Đối với những dự án lớn hay các dự án có mặt bằng rộng thì việc chia nhỏ mặt bằng ra để dàn vừa một sheet bản vẽ A1 là cần thiết. Scope box sẽ được dùng trong trường hợp này. Và chính điều này sẽ gia tăng đáng kể số lượng bản vẽ trong mô hình. Lấy một ví dụ như công trình 5 tầng có 50 lưới trục theo phương dài. Nhẩm tính thì công trình này sẽ được chia làm 5 Zones, mỗi tầng thì sẽ có mặt bằng sàn, mặt bằng trần [đối với kiến trúc], mặt bằng coordination, mặt bằng thép [đối với kết cấu]…sương sương cũng tầm 75 bản vẽ rồi. Dynamo có thể hổ trợ việc này rất nhanh chóng !! như sau:

4. Tạo và thiết lập dependent views.

Lưu ý: các bước 4.1 đến 4.3 tương tự như đã thực hiện ở trên.

4.1 Lấy levels sau đó tạo các floor plans rồi sửa tên theo cấu trúc tùy ý theo yêu cầu của khách hàng hay tiêu chuẩn của công ty.

4.2 Thiết lập phase cho view, gán view template, view type.

4.3 Chọn scope box rồi gán cho các views

4.4 Tạo các dependent views và nhóm chung các zone lại với nhau.

Lưu ý số lượng dependent view ở đây phải khớp với số lượng zone đã chia.

Lưu ý node quan trọng nhất của file này nằm ở đây, chính là node View.DuplicateAsDependent của package Clockwork.

Ở ví dụ này chúng tôi có 10 tầng mỗi tầng chia làm 2 zones nên tổng cộng sẽ có 20 views đi vào input View của node này. Vại còn input name? giờ mới đi tạo nè.

4.5.1 Lọc ra những scope box mong muốn vì trong dự án có thể sẽ có nhiều loại scope box khác như scope box riêng cho móng, cầu thang, vách lõi…

4.5.2 Việc tiếp theo là tạo view name từ chính tên của những scope box đã lọc kết hợp với view name của 20views đã được duplicate và đầu ra là 20 view name ở node cuối cùng.

Chúng tôi sẽ kéo chúng lại gần hơn và chụp chính xác vị trí để bạn dễ hình dung nhé !

Vại là đã có ddue input view và name rồi.

Dùng một tí thủ thuật với list trong Dynamo ta tách ra 2 list riêng rẻ, một list chưa 10 views của zone A còn list kia thì 10 views zone B.

4.6 Gán scope box cho các dependent views

Lưu ý đầu vào “list” của node List.Cycle được lấy từ các scope box được sàn lọc lúc nãy.

Kết quả sau khi run file:

Toàn bộ file vui lòng tải về tại đây

5. Dàn các Setout Plans mới tạo ở mục 4 lên Sheets

5.1 Lọc các plans bằng tham số ViewCategory

5.2 Sắp xếp các views theo levels

5.3 Lọc những views có chứa scope box mong muốn mà cụ thể ở đây là scope box zone A và B.

5.4 Tạo Sheet Name

5.5 Tạo Sheet Number

Công dụng của String.PadLeft đã giải thích ở trên rồi nhé !

Còn node List.Cycle có tác dụng nhân bảng list đầu vào lên n lần với n tương ứng là đầu vào amount. Phần còn lại chỉ là các thủ thuật, kỹ năng làm việc với List trong Dynamo mà thou.

5.6 Tạo Sheets

Cũng giống như trên, để node tạo sheets hoạt động được thì cần phải có đủ các input nên một dafting view rỗng được dùng.

5.7 Dàn views lên sheets và đổi viewport type.

5.8 Gán một vài tham số quan trọng và chung cho các sheets

Kết quả như sau:

File tải về tại đây:

6. Tạo các mặt bằng cho vách lõi [Core Plans]

Ý tưởng cốt lõi cũng là tạo các floor plan bằng node mà ai cũng bit là node gì đó 🙂 [FloorPlanView.ByLevel] sau đó, sửa lại tên views dựa vào tên của scope box và tên của level rồi  gán các scope box vào các views vừa tạo là có ngay các Core plans [ahihi dễ mà].

6.1 Lọc ra scope box mong muốn bằng tên. Cụ thể ở đây là Core 1

Bạn có để ý là không phải tầng nào cũng có lõi vách? đặc biệt là mái cho nên chúng ta phải làm một việc là đi lọc ra những tầng nào có lõi vách mà thou.

6.2 Lọc ra những levels đụng với scope box của Core trên Dynamo.

Vại làm sao để bit tụi nó có đụng nhau hay không? Xin thưa, ứng với mỗi levels chúng ta sẽ lấy được tọa độ z của nó từ đó xác định được một điểm có tạo độ [0,0,z] và một vector theo phương z. Có điểm, có vector thì có thể xác lập được một mặt phẳng. Về phía scope box của Core chúng ta sẽ tạo một khối đặc bao quanh nó bằng node Element. BoundingBox và BoundingBox. ToCuboid. Cuối cùng dùng node Geometry. DoesIntersect để xác định xem chúng nó có đụng nhau hay không.

Tới đây chưa xong đâu, bạn phải dùng ListFilter.ByBoolMask để rún ngắn lại số lượng scope box cần gán cho các core plans.

Kết quả là có 9 tầng có core plan nên dùng scope box này 9 lần.

Bạn còn phải dùng ListFilter.ByBoolMask thêm một lần nửa để lọc ra 9 levels đụng với scope box của core plans để từ đó tạo ra các core plan views từ những levels này.

6.3 Tạo ra các Core plans và sửa tên dựa vào tên scope box của Core vs Level.

6.4 Giống ở trên, gán phase cho view, view template và view type.

6.5 Gán scope box cho các views

Kết quả sau khi Run file:

7. Tạo 3D views dựa vào scope box

3D view được tạo có thể là 3D view cho các tầng hay 3D cho Core/Stair…nhưng phải phụ thuộc vào scope box

Ý tưởng chính là tạo một khối đặc xung quanh scope box sau đó cắt đôi nó ra bằng một mặt phẳng cao hơn level một khoảng x nào đó và tạo boundingbox cho phần dưới. Lấy boundingbox này để tạo ra các 3D view theo tầng.

7.1 Dùng node bên dưới để chọn scope box sau đó tạo BoundingBox rồi tạo khối đặc xung quanh bằng node BoundingBox.ToCuboid

7.2 Tương tự như ở trên lọc ra những level đụng với scope box vì có những scope box như khu vực cầu thang chẵng hạn sẽ không đụng hết các levels.

Khác với ở trên khi chỉ lấy mặt phẳng ngay level, ở đây chúng ta dùng mặt phẳng cao hơn level 1900mm.

Để ý hình ở trên bạn sẽ thấy chúng ta có 5 mặt phẳng để dùng cho các công đoạn sau.

7.3 Dùng node quan trọng nhất Geometry.Split để cắt khối đặc ở trên làm 2 phần và chỉ lấy phần dưới sau đó tạo BoudingBox cho khối dưới.

7.4 Tạo views 3D

Lưu ý là chúng ta đã có 2 boundingbox ở bước 7.1 và 7.3. Chúng ta sẽ dùng node View3D.SetSectionBox để tạo view 3D dựa vào boudingbox ở 7.3 tuy nhiện node này còn có input view3D. Chúng ta lại dùng AxonometricView.ByEyePointTargetAndBoundingBox để tạo view 3D từ boundingbox ở 7.1

Kết quả sau khi Run file:

Bạn tải file về tại đây:

Nếu thấy bài viết này hữu ích, hãy cân nhắc việc ủng hộ BCDD tại đây

Bài viết được biên soạn bởi đội ngũ BCDD

Post Views: 2.055

Chủ Đề