CỘNG ĐỒNG BIM LONG AN -2018
Điều hướng, sử dụng chuột trong Grasshopper : + Pan (di chuyển sang trái, phải, lên hoặc xuống): nhấn giữ chuột phải đồng thời kéo về hướng mong muốn. + Zoom (phóng to nhỏ): nhấn giữ Ctrl đồng thời kích chuột phải và kéo lên nếu phóng to, và kéo xuống nếu thu nhỏ. Hoặc cách đơn giản quen thuộc, zoom chuột giữa như AutoCAD. Điều hướng, sử dụng chuột trong Rhino : + Pan và Zoom : tượng tự như trong Grasshopper + Xoay trong khung nhìn 3D (Perspective): nhấn giữ chuột phải và xoay theo hướng mong muốn.
CozyBim
Trang 18
CỘNG ĐỒNG BIM LONG AN -2018
ĐỊNH NGHĨA GRASSHOPPER Grasshopper cho phép tạo ra các phép lập trình trực quan bằng biểu đồ được gọi là các định nghĩa. Các định nghĩa này được tạo thành bởi các nút kết nối giữa các module khác nhau thông qua các dây nối. Một định nghĩa với Grasshopper trông giống như sau:
IX.
CozyBim
Trang 19
CỘNG ĐỒNG BIM LONG AN -2018
Mỗi định nghĩa Grasshopper có một Program Flow thể hiện việc xử lý bắt đầu từ đâu. Các xử lý diễn ra trong thân của định nghĩa và điểm kết thúc của các xử lý. Một định nghĩa Grasshopper được thực thi từ trái sang phải. Biểu đồ liên kết giữa các đối tượng được đọc và thực hiện các xử lý tương ứng từ “thượng nguồn” đến “hạ nguồn”.
Tất cả các đối tượng và các kết nối biểu diễn đồ thị logic của chương trình. Biểu đồ này cho thấy luồng dữ liệu, sự phụ thuộc của các input vào output của đối tượng kết nối với nó trước đó. Bất cứ lúc nào biểu đồ của chúng ta thay đổi, mọi kết nối hạ lưu và đối tượng sẽ được cập nhật.
CozyBim
Trang 20
CỘNG ĐỒNG BIM LONG AN -2018
X. DỮ LIỆU TRONG PARAMETER Như đã biết các parameter chỉ được sử dụng để chứa dữ liệu, hầu hết các parameter có thể chứa 2 loại dữ liệu khác nhau: tạm gọi là “Tạm thời” và “Liên tục”. Dữ liệu tạm thời được nhận từ nguồn trả ra là một hoặc nhiều các parameter hoặc component khác và sẽ bị mất đi khi khởi động lại một tập tin grasshopper. Dữ liệu liên tục là dữ liệu đã được người dùng chỉ định cụ thể. Dữ liệu này được lưu trữ ngay trên đối tượng parameter. Bất cứ lúc nào parameter được nối với một đối tượng nguồn thì dữ liệu liên tục bị bỏ qua, nhưng không mất đi. Dữ liệu liên tục của các parameter được khai báo thông qua gọi trình đơn đổ xuống (chuột phải), và các parameter chứa dữ liệu khác nhau có cách quản lý dữ liệu khác nhau. Lấy ví dụ parameter là Point, parameter này cho phép khai báo 1 hoặc nhiều điểm thông qua menu đổ xuống khi kích chuột phải trên parameter. Xem qua trình tự các bước sử dụng 1 parameter: Bước 1: Thực hiện kéo thả Point từ mục Params vào môi trường soạn thảo của grasshopper (được gọi là canvas). Ta sẽ có được như hình sau:
Parameter lúc này có màu cam, màu này tương đương với thông báo là parameter đang rỗng chưa có bất kỳ dữ liệu nào. Lúc này đầu ra cũng không có giá trị nào. Có thể sử dụng 1 Panel để kiểm tra kết quả đầu ra. Khi kích chuột phải trên parameter, menu ngữ cảnh xuất hiện và cho phép có 2 tùy chọn để khai báo dữ liệu liên tục cho parameter: one Points hoặc Multiple Points.
CozyBim
Trang 21
CỘNG ĐỒNG BIM LONG AN -2018
Ta có thể chọn 1 trong 2 để khai báo dữ liệu. Khi chọn 1 trong 2 chức năng, cửa sổ Grasshopper tạm thời biến mất (nếu cửa sổ Grasshopper có 1 phần che lên cửa sổ Rhino đang mở) và sẽ nhận được yêu cầu chọn điểm trong môi trường của Rhino.
Khi hoàn thành chọn các điểm, nhấn Enter để trả các điểm chọn cho dữ liệu liên tục của parameter. Điều này có nghĩa parameter không còn rỗng và sẽ chuyển về máu xám.
Lúc này chúng ta có thể sử dụng parameter để truyền đầu ra cho các đối tượng khác. Tiếp tục kéo thả vào canvas một component là Construct Point từ thẻ Vector và tại mục Point.
CozyBim
Trang 22
CỘNG ĐỒNG BIM LONG AN -2018
Kết nối đầu ra của component này cho đầu vào của Point. Lúc này parameter Point sẽ chứa dữ liệu là 1 điểm có tọa độ 0.0, 0.0, 0.0 được trả ra từ component Construct Point. Dữ liệu lúc này là dữ liệu tạm thời. Nếu ta thực hiện xóa component Construct Point đi thì dữ liệu liên tục đã khai báo trước đó vẫn còn.
CozyBim
Trang 23
CỘNG ĐỒNG BIM LONG AN -2018
XI. CÁC XỬ LÝ TOÁN HỌC CƠ BẢN Biết cách làm việc với các dữ liệu số là một kỹ năng rất cần thiết khi tiếp cận với Grasshopper (sau đây gọi tắt là GH). GH chứa nhiều component để thực hiện các phép tính toán học, tìm điều kiện, và thao tác với các bộ số. Trong toán học, các con số được tổ chức dưới dạng các bộ số và 2 kiểu quen thuộc nhất là: - Số nguyên: […, -5, -4, -3, -2, 0, 1, 2, 3, 4, 5,…] - Số thực: [-6, …, -4.8, -3.6, -2.4, -1.2, 0.0, 1.234, e, 3.0, 4.0, …,9] Đây là 2 kiểu số mà người dùng cần quan tâm và chúng được dùng rộng rãi trong hầu hết các định nghĩa GH. 1. Tổng quan về Tab toán học - Maths Hầu hết các component xử lý các phép toán và các hàm toán học nằm ở các mục con của tab Maths:
1. Domain (tức là miền): được sử dụng để thiết lập một phạm vi giá trị giữa 2 số (trước đây gọi là k hoảng). Các component trong tab Domain cho phép tạo hoặc phân rã thành các dạng miền khác nhau. 2. Matrix (tức ma trận): Trong toán học, ma trận là một mảng các con số được sắp xếp thành các hàng và cột. Tab này chứa một loạt các công cụ tiện tích để thiết lậ p cũng như chỉnh sửa các ma trận. 3. Operators (các phép tính): được dùng để thực hiện các phép tính toán học như cộng, trừ, nhân, chia,…Các biểu thức điều kiện cho phép bạn xác định một tập hợp các số nhóm A lớn hơn, nhỏ hơn, hoặc bằng với tập các số nhóm B,… 4. Polynominals (các đa thức): là một trong những khái niệm quạn trọng trong đại số, toán học cũng như khoa học. Bạn có thể dùng các component trong mục này để tính các giai thừa, logarit, hoặc lũy thừa bậc n của một số,… 5. Script (bản thảo): chứa các biểu thức đơn, đa thức với nhiều biến cũng như các trình soạn thảo dưới dạng VB.Net và C#. 6. Time (thời gian): là mục chứa các component hỗ trợ trong việc thiết lập nhanh ngày, tháng, thời gian,… 7. Trig (viết tắt của Trionometry, tức phép tính lượng giác): cho phép người dùng giải quyết các bải toán liên quan đến hàm lượng giác như Sin, Cos,
Tan,… 8. Util (viết tắt của Utilities, tức các tiện ích): chứa các hằng số như Pi, logait tự nhiên e, hoặc các component hỗ trợ tìm các các giá trị cực đại Min, Max, giá trị trung bình hay nội suy,…
CozyBim
Trang 24
CỘNG ĐỒNG BIM LONG AN -2018
2. Các phép tính toán học Như đã đề cập, mục Operators là tập hợp các component sử dụng các hàm đại số với 2 giá trị đầu vào dạng số và trả ra giá trị kết quả. Đa phần, người dùng sẽ sử dụng các phép tính toán học để thực hiện các phép tính số học từ tập hợp các bộ số. Tuy nhiên, các phép tính này còn được thực hiện trên các dạng dữ liệu khác kể cả điểm và vector.
3. Các toán tử điều kiện Hầu hết mọi ngôn ngữ lập trình đều có một phương pháp để tìm ra các hàm điều kiện. Các chương trình này có khả năng phân tích câu hỏi điều kiện “if” và hành động sau đó sẽ phụ thuộc vào kết quả của điều kiện “if” kia. Ví dụ, nếu một đối tượng là Polyline thì lấy ra các đỉnh của Polyline đó, còn không thì xóa nó đi. Thì lúc đó, đoạn mã đầu tiên sẽ kiểm tra đối tượng này và trả ra giá trị boolean là True nếu nó là Polyline và hành động kế sau là lấy ra các đỉnh. Ngược lại, là False nếu không phải là Polyline và xóa đối tượng này đi. Điều này được dùng trong việc phân tích kết quả để làm dữ liệu cho các công việc tiếp theo. Và GH cũng không ngoại lệ. Có 4 toán tử điều kiện quen thuộc nằm ở mục Operators của tab Math mà có thể đưa ra một điều kiện và trả ra một giá trị kiểu boolean.
- Larger than (so sánh lớn):
CozyBim
Trang 25
CỘNG ĐỒNG BIM LONG AN -2018
- Smaller than (so sánh bé):
- Equality (so sánh bằng): - Similarity (so sánh tương đồng): Component Similarity đánh giá 2 list dữ liệu và kiểm tra sự tương đồng giữa chúng. Nó gần như giống với component so sánh bằng nhưng có thêm 1 đầu vào là % tối thiểu A và B được phép lệch nhau. Bên cạnh đó, nó còn trả ra độ lệch giữa A và B.
4. Các hàm lượng giác Hàm lượng giác là hàm toán học của góc và được dùng khi nghiên cứu về tam giác và các công việc mang tính chất tuần hoàn như dạng sóng âm, sóng biển, sóng ánh sáng hay cho các đường cong dạng xoắn trôn ốc,…
CozyBim
Trang 26
CỘNG ĐỒNG BIM LONG AN -2018
Hình trên thể hiện một số dạng hình học thông dụng của các hàm lượng giác 1. Đường thẳng : y(t) = 0 2. Đường cong hình Sin: y(t) = Sin(t) 3. Đường trôn ốc: x(t) = Sin(t); y(t) = Cos(t); z(t) = b(t) 4. Vòng xoắn: x(t) = t*Sin(t); y(t) = t*Cos(t) 5. Các biểu thức Component Expression (biểu thức) là công cụ rất linh hoạt vì nó có thể được ứng dụng cho nhiều công việc khác nhau. Chúng ta có thể sử dụng một component Expression (hoặc component Evaluate, là dạng hàm chứa biểu thức Expression nên được xem như “anh trai của Expression”) để giải quyết các thuật toán toán học và trả ra dữ liệu số. Dữ liệu này được dùng làm đầu vào cho các component khác.
CozyBim
Trang 27
CỘNG ĐỒNG BIM LONG AN -2018
XII. CÁC MODULE THƯỜNG DÙNG Tất cả các module có thể được gọi ra canvas bằng 2 cách: - Kéo thả hoặc kích chọn từ toolbar trong các thẻ tab và chọn vị trí vào canvas. - Đúp chuột trái trên giao diện trống của canvas và nhập từ khóa để tìm nhanh các module. Sau khi tìm thấy chọn vào module cần sử dụng. Các module thể hiện trong canvas có thể có nhiều cách khác nhau. Thông thường, tất cả module được thể hiện bằng các text là nick name của các thành phần trên module. Tùy thuộc vào sở thích của bạn ta có thể thay đổi cách quan sát phù hợp. Tại menu File, chọn Display. Tại đây, 3 mục đầu tiên cho phép thay đổi thể hiện của các module trong canvas. - Draw Icons: tên của module được thay thế bằng icon. - Draw Full Names: thể hiện tên đầy đủ của các thành phần trên module.
Thông thường, tắt 2 chế độ này để các thành phần ngắn mối quan hệ giữa các thành phần khác nhau. Các Parameter cho các loại dữ liệu cơ bản thường dùng
CozyBim
gọn và thể hiện rõ ràng
Trang 28
CỘNG ĐỒNG BIM LONG AN -2018
Các module đặc biệt để lấy dữ liệu input - Boolean Toggle: không nhận giá trị vào. Đúp chuột trái sẽ thay ra một giá trị boolean là True hay False.
- Slide: Là đối tượng thường hay sử dụng khi cần một giá năng thay đổi khi người dùng kéo vị trí trên thanh trượt.
đổi kết quả trả
trị số trả ra và có khả
Đúp chuột trái trên thanh trượt để nhập vào giá trị mong muốn. Đúp chuột trên tên để mở thiết lập cho thanh trượt (Có thể thực hiện chuột phải, và chọn Edit).
Name: là tên của thanh trượt. Expression: là biểu thức tính toán dựa trên giá trị gốc từ thanh trượt, giá trị của biểu thức tính được trả ra output. Tại đây, giá trị gốc của thanh trượt được đại diện bằng biến "x". Ví dụ tôi muốn xuất ra output giá trị gấp 2 lần giá trị từ thanh trượt, nhập tại ô expression: x*x. Phần Slide Accuracy quy định phần thập phân của giá trị. Numeric domain quy định giá trị nhỏ nhất và lớn nhất của thanh trượt. Value là giá trị chọn và được trả cho outphut. Việc thiết lập cho slide khá mất thời gian. Tuy nhiên có một cách nhanh chóng thực hiện các thiệt lập hợp lý cho số đầu ra. Ví dụ, thực hiện như sau. Đúp chuột CozyBim
Trang 29
CỘNG ĐỒNG BIM LONG AN -2018
trên canvas và nhập số 50 sau đó enter. Tức thì sẽ có 1 slide với thiết lập là số nguyên và một khoảng range tương đối hợp lý. Nếu muốn là số thực, có thể nhập 50.00. - Panel: được sử dụng với khá nhiều mục đích khác nhau. Panel có cả input, do đó để xem trước kết quả của các outout khác ta có thể trả cho Panel để thấy được kết quả đó. Một số giá trị không đổi trong tính toán, thay bằng nhập giá trị theo phương thức dữ liệu liên tục, có thể sử dụng 1 panel để nhập giá trị và trả ra input cần thiết. Hoặc có thể dùng đẻ viết các chú thích trong giải thuật...
- Control Knob: là một dạng như slide nhưng ở dạng núm tròn. Thường được sử dụng khi cần xác định tỷ lệ từ 0-1. Mặc định dãi giá trị của knob từ 0-10. Ta có thể thay đổi số chữ số thập phân, cũng như thay lại phạm vi. 1 giá trị tương đương với 1 vòng quay của knob.
- Value List: cho phép chọn 1 giá trị từ 1 danh sách đổ xuống. Để thiết lập thành phần của danh sách, đúp chuột vào đối tượng hoặc chuột phải và chọn Edit. Mỗi phần tử trong danh sách được khai báo bởi 1 dòng bao gồm 2 thành phần phân cách bằng dấu bằng =. Phần bên trái là text sẽ xuất hiện khi chọn mũi tên đổ xuống cho người dùng chọn. Phần bên phải là giá trị được tr ả ra tương ứng.
- MD Slide: ouput là 1 cặp giá trị 3 thành phần x,y và z luôn bằng 0. Giá trị trả ra do người dùng chọn vị trí tương ứng trên đối tượng.
CozyBim
Trang 30
CỘNG ĐỒNG BIM LONG AN -2018
- Graph Mapper: cung cấp các dạng đồ thi toán học cơ bản. Căn cứ vào dữ liệu input, out được trả ra là kết quả tính của hàm số tương đương với đồ thị. Chuột phải trên đối tượng để chọn các dạng đồ thị toán học khác nhau.
CozyBim
Trang 31
CỘNG ĐỒNG BIM LONG AN -2018
XIII. TƯƠNG XỨNG DỮ LIỆU Tương xứng dữ liệu là vấn đề xảy ra khi một component có các input với kích thước dữ liệu khác nhau. Thay đổi t huật toán tương xứng dữ liệu có thể dẫn đến kết quả khác nhau. Để hiểu rõ về vấn đề này. Ta thử với một ví dụ cụ thể như sau. Sử dụng 2 đối tượng Point Avà Point B. Khai báo Point A với 5 điểm và Point B với 7 điểm (List A và List B như hình dưới). Khi kết nối 2 Point này cho 2 điểm của một Line thì việc gì sẽ xảy ra.
Như bạn thấy, có nhiều cách khác nhau để vẽ ra các đường thẳng giữa hai tập điểm này. Ba component để xác định thuật toán tương xứng dữ liệu giữa 2 List này sẽ tìm thấy tại Sets/List panel gồm có: Longest List, Shorten List, Cross References. Các component này cung cấp thêm các option để cho ra các phép tương xứng linh hoạt hơn. Nhấp chuột phải vào mỗi component cho phép bạn chọn một trong các tùy chọn tương xứng dữ liệu khác nhau từ trình đơn. Cách đơn giản nhất là kết nối lần lượt các phần tử đầu cho đến khi một trong những danh sách hết phần tử thì dừng. Thuật toán này được gọi là "Shortest List":
CozyBim
Trang 32
CỘNG ĐỒNG BIM LONG AN -2018
Chọn một thuật toán phù hợp từ trình đơn bằng cách kích chuột phải vào component. Thuật toán "Longest List" kết nối các input cho đến khi tất cả các tập kết thúc.
Cuối cùng, là thuật toán "Cross References" sẽ tạo ra các kết nối bất kỳ có thể giữa 2 tập hợp. Thuật toán này rất nguy hiểm vì lượng đầu ra có thể rất lớn.
Chúng ta hãy xem xét qua các component:
CozyBim
trường hợp tùy chọn của thuật toán Shortest List
Trang 33
CỘNG ĐỒNG BIM LONG AN -2018
Ở đây ta có 2 tập hợp input {A,B,C,D,E} và {X,Y,Z}. Khi sử dụng Trim End các phần tử của tập dài hơn sẽ được loại bỏ ở phần cuối của tập hợp để tạo ra tập mới có số lượng bằng tập ngắn.
Với trường hợp sử dụng Trim Start thì tập dài hơn sẽ loại bỏ các phần tử phía đầu cho đến khi có tập bằng số lượng với tập ngắn.
Tùy chọn Interpolate sẽ lấy các phần
tử của tập dài hơn ở các vị trí chia đều theo
số lượng từ tập ngắn hơn.
Ở đây chúng ta có hai danh sách đầu vào {A, B, C} và {X, Y, Z}. Với trường hợp thông thường Grasshopper chỉ xem xét các kết hợp {A, X}, {B, Y} và {C, Z}. Với component Cross Reference và tùy chọn Holistic (toàn bộ) còn có thêm sáu sự kết hợp khác: {A, Y}, {A, Z}, {B, X}, {B, Z}, {C, X} và {C, Y}. Đầu ra của component Cross Reference có tất cả là chín hoán vị. Chúng ta có thể biểu thị hành vi của dữ liệu tham khảo chéo bằng cách sử dụng một bảng. Các hàng đại diện cho danh sách đầu tiên của mặt hàng, các cột thứ hai. Nếu chúng ta tạo ra tất cả các hoán vị, bảng sẽ có một dấu chấm trong mỗi ô đơn, vì mỗi ô đại diện cho một sự kết hợp duy nhất của hai chỉ mục nguồn liệt kê.
CozyBim
Trang 34
CỘNG ĐỒNG BIM LONG AN -2018
Đôi khi chúng ta không muốn sử dụng mọi hoán vị. Bạn muốn loại trừ một số vị trí nhất định bởi nếu không sẽ dẫn đến những tính toán không có ý nghĩa hoặc không hợp lệ. Một nguyên tắc loại trừ phổ biến là bỏ qua tất cả các ô nằm trên đường chéo của bảng. Tùy chọn Diagonal sẽ bỏ qua các vị trí của đường chéo tại các hoán vị theo chỉ số {0,0}, {1,1}, {2,2} và {3,3 } Nếu chúng ta áp dụng tùy chọn này cho ví dụ {A, B, C}, {X, Y, Z}, chúng ta sẽ không nhận được các kết hợp {A, X}, {B, Y} và {C, Z }:
Và một vài hình ảnh cho các tùy
CozyBim
chọn khác:
Trang 35
CỘNG ĐỒNG BIM LONG AN -2018
ĐIỂM - CHIỀU DÀI THEO ĐƯỜNG CONG Trong Grasshopper có một vài bài toán thường gặp với các đường cong và điểm như, tìm điểm thuộc đường cong xác định bằng một giá trị chiều dài theo đường cong cho trước hoặc ngược lại, tìm chiều dài theo đường cong tại 1 điểm cho trước, hay tìm phương vuông góc với đường cong qua một điểm cho trước. Tìm phương vuông góc với đường cong qua một điểm cho trước Trường hợp này dùng component Curve Closest Point, tìm tại thẻ Curve –
XIV.
Analysis.
CozyBim
Trang 36
CỘNG ĐỒNG BIM LONG AN -2018
Xét với ví dụ vẽ đường thẳng vuông góc với đường cong qua 1 điểm cho trước. - Dùng Curve và chọn 1 đường cong từ Rhino - Dùng Point và chọn 1 điểm bất kỳ bên ngoài và trong phạm vi đường cong - Dùng Curve Closest Point. - Và dùng 1 Line qua 2 điểm để thấy kết quả. - Phương án xử lý như hình sau
Tìm điểm theo chiều dài cho trước Trong Grasshopper không có component cụ thẻ kiểu như Get Point From Length hay Get Length From Point. Thực hiện việc này phải qua thêm vài bước phụ bằng cách sử dụng component Evaluate Length. Tìm thấy tại thẻ Curve – Analysis. Component này có chức năng trả ra điểm tại vị trí thuộc đường cong theo 1 tỷ lệ dài (0 đến 1) của đường cong. Như vậy ta cần thực hiện thêm phép chia để xác định tỷ lệ. Kết quả trả ra còn có thêm output Tangent là vector tiếp tuyến với đường cong tại điểm tìm được. Và một output khác là Curve Parameter mô tả yếu tố cong tại điểm. Giải quyết bài toán như sau: - Dùng 1 Curve để nhặt 1 đường cong - Dùng 1 Slide để xác định chiều dài mong muốn - Dùng 1 Length để lấy chiều dài của đường cong - Thực hiện phép chia chiều dài xác định cho tổng dài để xác định tỷ lệ - Dùng Evaluate Length. Chuyển các input cần thiết để có kết quả điểm cần tìm.
CozyBim
Trang 37
CỘNG ĐỒNG BIM LONG AN -2018
Tìm chiều dài tại điểm cho trước Bài toán này có thể giải bằng 3 component khác nhau. Về nguyên tắc bất kỳ điểm nằm trên đường cong hay không, trước hết phải tìm điểm Closest Point. Nếu điểm nằm trên đường cong thì 2 điểm trùng nhau. Từ điểm Closest tìm được ta sẽ tìm ra chiều dài của đường cong đến điểm này. 3 component bao gồm: - Sub Curve (Thẻ Curve – Spline) sau đó tìm Length của đường cong tìm được. - Length Domain (Thẻ Curve – Analysis). - Length Parameter (Thẻ Curve – Analysis). Với Component này ta có được cả 2 giá trị chiều dài tính đến đầu và cuối đường cong. Sử dụng như sau:
CozyBim
Trang 38
CỘNG ĐỒNG BIM LONG AN -2018
XV.
LIST TRONG GRASSHOPPER List trong Grasshopper là một mảng dữ liệu. Dữ liệu trong List được truy cập hoặc thao tác thông qua chỉ số vị trí của mỗi phần tử. Chỉ số vị trí trong List được bắt đầu từ 0.
1. Các phần tử 2. Chỉ số vị trí Cách đơn giản nhất để xem dữ liệu được lưu trữ trong List là kết nối một Panel (Params / Input / Panel) với output của một component cụ thể. Theo mặc định, Panel sẽ tự động hiển thị tất cả các số vịt rí ở bên trái của Panel và hiển thị các phần tử dữ liệu ở phía bên phải của Panel. Chỉ số vị trí là một yếu tố quan trọng khi chúng ta làm việc với List. Bạn có thể bật và tắt hiển thị chỉ số vị trí bằng cách nhấp chuột phải vào Panel và chọn mục " Draw Indices" trong trình đơn phụ.
CozyBim
Trang 39
CỘNG ĐỒNG BIM LONG AN -2018
Thông thường có 5 cách để tạo ra 1 List. - Tạo List bằng cách thủ công nhập tay từng phần tử trong khai báo giá trị của các parameter - Dùng component: Range - Dùng component Series - Dùng component Random - Kết quả trả ra tính toán của các component khác nhau.
CozyBim
Trang 40
CỘNG ĐỒNG BIM LONG AN -2018
XVI. TẠO MẢNG - LIST 1. Nhập dữ liệu dạng mảng thủ công Cách dễ nhất để tạo ra một List là tự nhập một danh sách các giá trị vào một parameter. Để thay đổi giá trị trong List, không có cách nào khác người dùng phải tự nhập lại giá trị của từng phần tử cần sửa. Ví dụ sử dụng paramter Number. Nhấp chuột phải vào parameter và chọn "Manage Number Collection" để nhập các giá trị cho phần tử trong List.
1. Chuột phải trên Number component và chọn Number collection Manager. 2. Chọn icon Add Item để thêm các phần tử vào List. 3. Đúp chuột vào các phần tử đã thêm để sửa giá trị.
CozyBim
Trang 41
CỘNG ĐỒNG BIM LONG AN -2018
Một cách khác cũng thường được sử dụng là dùng Panel và nhập nhiều giá trị trên các dòng. Đồng thời, chuột phải trên Panel và bỏ dấu chọn tại mục “Multiline Data”. 2. RANGE Component Range có thể tìm thấy tại Sets/Sequence/Range, component này có chức năng tạo ra một tạo ra một list các giá trị có khoảng cách đều nhau từ giá trị thấp nhất đến giá trị cao nhất quy định trước. Dãi quy định trong phạm vi giới hạn giữa 2 giá trị thấp nhất và cao nhất này được gọi là miền Domain.
Range component sẽ chia miền số Domain thành các phân đoạn và trả về một list các giá trị các đầu của các phân đoạn đó.
Component này yêu cầu 2 input. Domain là
miền xác định. N là số phân đoạn chia
đều. Một miền Domain có thể có 3 cách để khai báo. Dùng dấu “:” hoặc từ khóa “to”. Ví dụ cần khai báo miền số từ 1 đến 10, ta có thể viết “0:10” hoặc “0 to 10”. Một cách khác ngắn gọn hơn trong trường hợp 1 giới hạn là 0. Ví dụ domain từ 0 đến 10 ta có thể chỉ dùng khai báo đơn giản “10”. Một cách khác để định nghĩa một domain là sử dụng Construction Domain component. Bạn có thể tìm thấy component này tại Maths/Domain.
Trong ví dụ bên dưới, miền số được định nghĩa là mọi số có thể giữa 0 và 20. Thành phần Range chiếm miền đó và chia nó theo số bước N (trong trường hợp này là 10). Vì vậy, chúng ta có 10 phân đoạn. Output của Range luôn luôn là nhiều hơn số bước 1 lần. Trong ví dụ trên, chúng ta đã tạo ra 10 bước, do đó thành phần Range trả về 11 giá trị.
CozyBim
Trang 42
CỘNG ĐỒNG BIM LONG AN -2018
Với trường hợp sử dụng Construction Domain ta có thể có khai báo tham khảo như sau:
3. SERIES Series component cũng tương tự như Range component, trong đó, nó cũng tạo ra một danh sách các số. Tuy nhiên, Series tạo ra một tập các số kín trên cơ sở giá trị bắt đầu, bước nhay và số lượng các giá trị trong List. Tìm component tại Sets/Sequence.
CozyBim
Trang 43
CỘNG ĐỒNG BIM LONG AN -2018
Series có 3 input bao gồm Start là giá số lượng phần tử tạo ra.
trị bắt đầu, Step là bước nhảy và Count là
4. RANDOM Ta có thể tìm thấy component tại Sets/Sequence. Component được sử dụng dể tạo một List với các giá trị bất kỳ và ngẫu nhiên thuộc một miền giá trị xác định. Component này cũng yêu càu 3 tham số đầu vào, R là một miền giá trị, N là số lượng phần tử và khi thay đổi Seed thì cho ra các list có giá trị ngẫu nhiên khác nhau.
CozyBim
Trang 44
CỘNG ĐỒNG BIM LONG AN -2018
XVII. THAO TÁC VỚI LIST Một trong những tính năng mạnh mẽ của Grasshopper là khả năng nhanh chóng xây dựng và thao tác các List chứa đựng dữ liệu khác nhau. Chúng ta có thể lưu trữ nhiều loại dữ liệu khác nhau trong một List (numbers, points, vectors, curves, surfaces, breps...) và có khá nhiều công cụ hữu ích được tìm thấy tại mục Sets / List. 1. LIST LENGTH Component List Length (tìm tại Sets/List/List Length) trả ra số lượng phần tử của một list. Chỉ số trong list luôn bắt đầu từ 0, do đó, chỉ số lớn nhất trong 1 list sẽ bằng số lượng phần tử trừ đi 1. Trong ví dụ sau chúng ta kết nối 1 list với input của một component List Length và kết quả nhận được là list có 6 giá trị.
2. LIST ITEM List Item component (tìm tại Sets/List/List Item) tr ả ra một phần tử trong danh sách của list tại vị trí xác định. i-input là chỉ số của phần tử mà chúng ta muốn lấy ra. Ta có thể sử dụng một số integer hoặc một list số nguyên integers cho i-input phụ thuộc vào việc chúng ta cần lấy ra bao nhiêu phần tử từ list. L-input là List gốc, giá trị các phần tử được trả ra từ list này.
3. REVERSE LIST Chúng ta có thể thực hiện đảo ngược thứ tự của danh sách bằng cách sử dụng một Reverse List component (tìm tại Sets / List / Reverse). Nếu chúng ta nhập một danh sách tăng dần các số từ 0,0 đến 50,0 vào component Reverse List; kết quả trả về một danh sách giảm dần từ 50,0 đến 0,0.
4. SHIFT LIST Shift List component (tìm tại Sets/Sequence/Shift List) sẽ di chuyển danh sách lên hoặc xuống một số gia tùy thuộc vào giá trị của Shift Offset. Số gia mang dấu âm “-“ sẽ di chuyển xuống hoặc lùi, số gia mang dấu dương sexdi chuyển lêm
hoặc tới.
CozyBim
Trang 45
CỘNG ĐỒNG BIM LONG AN -2018
5. INSERT ITEMS Component Insert Items component (tìm thấy tại Sets/Lists/Insert Items) cho phép chúng ta chèn thêm 1 phần tử vào mảng list tại một ví trí nhất định.
Nếu chỉ số vị trí cung cấp lớn hơn số phần tử hiện tại của list, thì phần tử được chèn vào vị trí tương ứng khi thực hiện trừ lấy phép dư liên tục của chỉ số cung cấp cho tổng số phần tử của list. Như trong ví dụ ở hình trên, nếu vị trí chèn là 6, phần tử được thêm vào cuối của list. Nếu vị trí chèn được cung cấp là 7 thì phần tử được thêm tại ví trí 0, tương tự nếu chỉ số là 8 thì thêm tại vị trí 1. 6. WEAVE Component Weave (tìm tại Sets/Lists/Weave) trộn 2 hoặc nhiều hơn các list lại cùng nhau dựa trên quy cách được quy định tại tham số pattern (P input). Khi pattern và lượng dữ liệu của các list đầu vào không có sự trùng khớp, component này có thể chèn thêm các đối tượng rỗng Null hoặc bỏ qua khi list có số lượng ít hơn kết thúc. Xem kết quả khác nhau qua ví dụ sau đây.
CozyBim
Trang 46
CỘNG ĐỒNG BIM LONG AN -2018
6. CULL PATTERN Cull component (tìm thấy tại Sets/Sequence/Cull Pattern) bỏ đi các phần tử trong list lặp lại theo mẫu gọi là bit mask. Bit masklaf một list kiểu boolean, ứng với true thì component này sẽ dữ lại phẩn tử và ứng với false phần tử sẽ bị loại bỏ. Bit mask được lặp đi lặp lại cho đến phần tử cuối cùng của list đàu vào.
CozyBim
Trang 47
CỘNG ĐỒNG BIM LONG AN -2018
CÁC LOẠI MODULE TRONG GRASSHOPPER Grasshopper sử dựng một hệ thống các mô-đun vô cùng đa dạng mà có thể kết nối với nhau để tạo ra một “Lịch sử rõ ràng” cho mô hình. Có 3 loại mô-đun chính: Các Parameter chứa dữ liệu (giá trị). Các khối cấu trúc Component. Các tiện ích utility và công cụ đặc biệt khác, gọi là special. Khi bạn thiết kế với Grasshopper, bạn sẽ dùng đến các mô-đun này để tạo ra các đối tượng hình học. Các mô-đun có phạm vị tương tác rất rộng, chúng có thể liên kết với nhau theo nhiều cách. Trong thư viện các mô-đun, người dùng có thể lựa chọn và sử dụng mô-đun mà cho phép họ định nghĩa được các dữ liệu đầu vào mà mình cần. Điều này cho phép bạn có thể điều khiển được kết quả cuối cùng cho định nghĩa của mình để tạo ra các đối tượng hình học như mong muốn.
XVIII.
Để xây dựng một hệ thống các đối tượng hình học phức tạp, bạn cần thực hiện từng bước một. Nghĩa là, khi bạn bắt đầu một dự án với Grasshopper, điều đầu tiên là cần phải phân tích làm cách nào để tạo dựng nên các đối tượng hình học đó. Cần thực hiện những bước gì. Trong Rhino, để vẽ một đường cong, bạn dùng chuột. Hoặc các thiết lập cho đường cong đó có thể được thay đổi ở dòng command line. Trong Grasshopper, bạn không làm vậy. Bạn sẽ định nghĩa từng bước cho quá trình tạo dựng đường cong đó với sự trợ giúp của chuột. Nhưng, đường cong này thay vì bạn phải click công cụ vẽ đường cong và thực hiện vẽ bằng cách truyền thống, thì với Grasshopper, bạn sẽ định nghĩa các điểm point và đường cong sẽ được tạo ra thông qua các điểm point này. Từ đó về sau, bạn sẽ dễ dàng thay đổi hình dạng đường cong theo mong muốn bằng cách thay đổi các điểm point này. Ở ví dụ dưới, việc này được hỗ trợ bởi các thanh trượt slider.
CozyBim
Trang 48
CỘNG ĐỒNG BIM LONG AN -2018
Parameter Các tab của Parameter được bố trí theo từng nhóm với chức năng tương đồng. Đứng đầu là thẻ Params. Ở đây, bạn có thể định nghĩa các thuộc tính hình học và thông số đầu vào cơ bản như kiểu dữ liệu cho các trị số, các text cho tên đối tượng,...Đặc biệt, nó chứa slider và panel. Đây là 2 công cụ vô cùng hữu dụng để hỗ trợ cho mọi tiến trình của dự án. Định nghĩa một Parameter Khi một parameter được đặt vào nền canvas thì lúc này chỉ là một parameter trống, hiện màu cam. Bây giờ, ta có thể định nghĩa một hoặc nhiều thuộc tính hình học cũng như các thông số cơ bản cho nó. Để hiểu rõ hơn về cách định nghĩa một hoặc nhiều đối tượng hình học, ta chuột phải vào parameter và sử dụng các tùy chọn mong muốn.
CozyBim
Trang 49
CỘNG ĐỒNG BIM LONG AN -2018
Để định nghĩa cho parameter, ta chọn Select one hoặc Multiple phụ thuộc vào số lượng đối tượng mà bạn muốn định nghĩa. Sau đó, qua Rhino để chọn vào đối tượng. Như ví dụ trên là “ Set one Circle” hoặc ”Set Mutiple Circle”.
CozyBim
Trang 50
CỘNG ĐỒNG BIM LONG AN -2018
Parameter được định nghĩa trong Rhino hay Grasshopper Các thuộc tính hình học có thể được định nghĩa cả trong Grasshopper lẫn Rhino. Một đường tròn đôi lúc cần được định nghĩa trong Grasshopper vì khi định nghĩa nó ở Rhino và Grasshopper có sự khác biệt. Sự sai khác này phụ thuộc vào tham số Parameter nào cần định nghĩa. Ví dụ, một điểm point có thể được định nghĩa cả trong Rhino và Grasshopper. Sự khác biệt này sẽ chỉ ra khả năng thay đổi hình học trong Rhino và Grasshopper sau này. Mặc dù điều này có vẻ tầm thường, nhưng nó có ảnh hưởng rất lớn đến quá trình thiết kế và khả năng thay đổi hình dạng thiết kế của bạn một cách hiệu quả. Nếu nội dung của tham số Parameter được định nghĩa trong Grasshopper, các tùy chỉnh hình học trong Rhino sẽ không còn. Ngược lại, nếu nội dung của tham số Parameter dựa trên thuộc tính hình học trong Rhino, thì mọi thay đổi trong Rhino sẽ dẫn đến việc thay đổi toàn bộ thuộc tính hình học trong Grasshopper. Ví dụ, một đường cong được tạo ra trong Rhino, thuộc tính vuốt cầu được định nghĩa trong Grasshopper (ở đây, đường cong và thuộc tính vuốt cầu đều là 2 tham số), thì khi thay đổi đường cong trong Rhino thì hình dạng vuốt cầu mà đã được định nghĩa trong Grasshopper cũng thay đổi theo. CozyBim
Trang 51
CỘNG ĐỒNG BIM LONG AN -2018
Component Mỗi component thực hiện một chức năng nhất định. Hầu hết các component đều bao gồm dữ liệu đầu vào và đầu ra. Ví dụ : component Loft có chức năng tạo ra bề mặt giữa hai hoặc nhiều đường cong. Do vậy nó gồm dữ liệu đầu vào là các đường cong được chỉ định. Dữ liệu đầu ra là một bề mặt (hoặc nhiều bề mặt) mà được tạo bởi tính năng của component. Dữ liệu đầu ra của component có thể được kết nối với các component khác, khi đó nó có nhiệm vụ là cung cấp dữ liệu đầu vào. Trong ví dụ component Loft, dữ liệu đầu ra (bề mặt) có thể được cung cấp cho component Divide Surface. Lúc này bề mặt sẽ được chia nhỏ ra.
Đó thực chất chính là cách thiết kế các định nghĩa Grasshopper của bạn. Bạn sử dụng các component (đóng vai trò là dữ liệu đầu vào và thực thi các hành động), đồng thời kết nối chúng với các component khác để tạo mới hoặc tiếp tục taọ ra CozyBim
Trang 52
CỘNG ĐỒNG BIM LONG AN -2018
các dữ liệu đầu vào cho các hành động khác. Bạn thấy đó, một định nghĩa trong Grasshopper như một cuốn sách nấu ăn tượng trưng cho các ý tưởng thiết kế của
bạn. Để hiển thị thuộc tính của các dữ liệu đầu vào (input) và đầu ra (output), ta đặt con trỏ chuột vào chúng. Click chuột phải vào input và output để thay đổi thuộc tính của chúng. Ngoài ra, ta còn có thể tùy chỉnh các thuộc tính của nó như tên, bật, tắt,… bằng cách chuột phải vào component.
Để kết nối component (1) với component (2), ta click chuột trái vào output của (1) đồng thời kéo thả vào input của (2). Để ngắt kết nối, dùng Ctrl + chuột trái đồng thời kéo thả về hướng ngược lại. Hoặc, chuột phải vào output (1) và chọn Disconnect.
CozyBim
Trang 53
CỘNG ĐỒNG BIM LONG AN -2018
Kết quả là một mạng thiết kế với các liên kết và các tham số phục vụ cho việc định nghĩa các thuộc tính hình học. Mạng lưới này có thể hiệu chỉnh hoặc mở rộng trong suốt quá trình thiết kế. Khi đó, các thuộc tính hình học cũng sẽ được thay đổi theo. Specials Các tiện ích
đặc biệt gồm nhiều chức năng hỗ trợ cho việc truy cập và thực thi mạng thiết kế một cách dễ dàng. Thông dụng nhất là : Number Slider và Panel.
Thanh trượt Number Slider cho phép người dùng thiết lập các trị số với kiểu và phạm vi nhất định. Giả dụ, nếu bạn muốn di chuyển một đường cong, bạn có thể thêm một component dịch chuyển, và khoảng cách dịch chuyển sẽ được hỗ trở bởi thanh trượt Number Slider. Panel sẽ cho người dùng xem trước kết quả đầu ra của component. Nếu có gì đó đang hoạt động ngoài mong muốn, người dùng có thể dùng nó để kết nối với dữ liệu output của các component ở nhiều vị trí khác nhau và kiểm tra xem điều gì đang xảy ra. Tiện ích này rất hữu ích để tìm và giải quyết các lỗi trọng mạng định nghĩa của người dùng.
CozyBim
Trang 54
CỘNG ĐỒNG BIM LONG AN -2018
LÀM VIỆC VỚI DATA TREE Grasshopper (GH) chứa các công cụ để thay đổi cấu trúc của Data Tree (tạm gọi là cây dữ liệu). Các công cụ này có thể giúp bạn truy cập tới bất kỳ một dữ liệu cụ thể nào trong cây và thay đổi cách mà chúng được lưu trữ, sắp đặt cũng như để xác định vị trí của các thành phần dữ liệu trong cây. Giờ ta hãy tìm hiểu một số thao tác khi làm việc với Data Tree và hình dung chúng có tác động đến cây dữ liệu của chúng ta như thế nào.
XIX.
1. Flatten Tree Công cụ này xóa bỏ tất các cấp bậc của cây dữ liệu (tức triệt tiêu tất các nhánh của cây), đưa dữ liệu về một danh sách duy nhất. Component này được tìm ở Sets/Tree/Flatten Tree. Chúng ta có thể dùng component “Param Viewer” để nhận dữ liệu, chuột phải rồi chọn “Draw Tree” và xem cấu trúc của dữ liệu mới sau khi Flatten thay đổi ra sao.
Nhìn vào chỉ số dữ liệu và sơ đồ cây, ta nhận thấy dữ liệu input có 2 nhánh lớn với các chỉ số {0;0}, {0;1}. Tương ứng với mỗi nhánh là tọa độ của 4 điểm. Như vậy tổng cộng ta có 8 điểm được phân tầng thành 2 nhánh lớn và mỗi nhánh này lại chứa 1 chi nhỏ, mỗi chi nhỏ chứa 4 điểm. * Lưu ý: Sơ đồ cây chỉ thể hiện đến cấp độ nhánh, không thể hiện số lượng phần tử thuộc một nhánh. Do vậy, ở đây ta sẽ không thấy nhánh ngoài cùng rẽ ra 4 chi nhỏ tương ứng với 4 điểm mà chỉ thể hiện số lượng chi là 2. Nhưng đối với dữ liệu output, sau khi Flatten chỉ gói gọn thành 1 nhánh với chỉ số {0} chứa toàn bộ 8 điểm kia. 2. Graft Tree Ngược với Flatten, Graft Tree lại tạo một nhánh mới cho từng mục dữ liệu trong cây.
CozyBim
Trang 55
CỘNG ĐỒNG BIM LONG AN -2018
Dữ liệu input từ 1 nhánh duy nhất chứa 8 điểm sau khi qua component “Graft Tree” (Sets/Tree/Graft Tree), cây dữ liệu được phân cấp ra thành 8 nhánh riêng biệt với mỗi nhánh lần lượt chứa 1 điểm của dữ liệu input. 3. Simplify Tree Simplify Tree giúp loại bỏ các nhánh chồng chéo nhưng không chứa dữ liệu, làm đơn giản hóa cấp độ nhánh của một cây dữ liệu.
tức
Với ví dụ trên, ta có 8 điểm được phân chia thành 8 nhánh bậc 2 riêng biệt {0;i} (i=0 đến 7). Nhánh bậc 1 chỉ có duy nhất 1 nhánh với chỉ số là 0. Do vậy, ở đây chỉ s ố bậc 1 không đóng vai trò phân biệt dữ liệu với các nhánh cùng bậc khác. Để giảm sự phức tạp, ta sử dụng “Simplify Tree” để đưa dữ liệu về cấp bậc đơn giản nhất. Ngoài ra, các công cụ Flatten, Graft và Simplify còn được áp dụng cho các thành phần input và output của một component. Chỉ cần nhấp chuột phải tại vị trí input hoặc output mong muốn thì các tùy chọn này sẽ hiện ra. Nếu bạn “Flatten” đầu vào input thì dữ liệu sẽ được triệt tiêu cấp bậc trước khi component thực thi. Ngược lại, nếu bạn “Flatten” output thì sau khi component thực thi xong thì lúc bấy giờ dữ liệu kết quả mới được triệt tiêu cấu trúc.
CozyBim
Trang 56
CỘNG ĐỒNG BIM LONG AN -2018
4. Trim Tree Đơn giản hóa
cấu trúc cây bằng cách hợp nhất các nhánh ngoài cùng thông qua việc truyền chỉ số bậc muốn hợp nhất “Depth” (tính từ ngọn vào).
5. Explode Tree Component này cho phép ta trích xuất ra toàn bộ các nhánh của cây và đồng thời giữ nguyên cấp bậc và chỉ số của chúng.
Điều này sẽ rất hữu dụng khi chúng ta cần lấy ra một thành phần nào đó của cây A và kết hợp với một hay nhiều nhánh khác của cây B để tạo nên một cây C với cấu trúc dữ liệu như mong muốn. CozyBim
Trang 57
CỘNG ĐỒNG BIM LONG AN -2018
6. Entwine
“Entwine” cho phép triệt tiêu cấp bậc của dữ liệu và đồng thời gộp các nguồn dữ liệu lại với nhau để tạo thành một cây mới. Khác với “Explode Tree”, cây này mang cấp bậc tương đồng với dữ liệu nguồn, nhưng chỉ số của các nhánh sẽ được tổ chức lại từ bậc {0;i}.
7. Flip Matrix Cấu trúc dữ liệu được tổ chức như một ma trân với số lượng nhánh được xem như số hàng và số phần tử trong nhánh là số cột. Do vậy, công cụ này có tác dụng lật ma trận cấu trúc bằng cách hoán đổi hàng và cột với nhau.
8. Merge Công cụ này cho phép hợp nhất nhiều nguồn dữ liệu input mới với cấu trúc bậc dữ liệu được giữ từ dữ liệu gốc.
CozyBim
để tạo thành một cây
Trang 58