Grasshopper Cozybim

Page 1

© by Cozybim.com Edit by Duytrung MỤC LỤC BÀI 1. GRASSHOPPER LÀ GÌ ?..........................................................................................6 BÀI 2. THÀNH PHẦN GIAO DIỆN CHÍNH CỦA GRASSHOPER. ĐIỀU HƯỚNG, SỬ DỤNG CHUỘT TRONG GRASSHOPER VÀ RHINO...........................9 2.1. Thành phần giao diện chính của Grasshopper 9 2.2. Điều hướng, sử dụng chuột trong Grasshopper.......................................................10 2.3. Điều hướng, sử dụng chuột trong Rhino..................................................................10 BÀI 3. SƠ LƯỢC VỀ CÁC TRÌNH ĐƠN MENU TRONG GRASSHOPPER...............11 3.1. File 11 3.2. Edit...........................................................................................................................11 3.3. View.........................................................................................................................12 3.4. Display 13 3.5. Solution 14 3.6. Thẻ Tabs...................................................................................................................15 BÀI 4. CÁC LOẠI MODULE TRONG GRASSHOPPER ...............................................16 4.1. Parameter 17 4.2. Component 20 4.3. Specials....................................................................................................................22 BÀI 5. TẠO KẾT NỐI GIỮA CÁC ĐỐI TƯỢNG ............................................................23 BÀI 6. DỮ LIỆU TRONG PARAMETER..........................................................................25 BÀI 7. TƯƠNG XỨNG DỮ LIỆU.......................................................................................29 BÀI 8. TƯƠNG TÁC GIỮA GRASSHOPPER RHINO ................................................33 8.1. Các phản hồi từ rhino viewport...............................................................................34 8.2. Liên kết sống............................................................................................................35 8.3. Bake 36 8.4. Đơn vị và dung sai 37 8.5. Quản lý tập tin..........................................................................................................38 BÀI 9. ĐIỂM CHIỀU DÀI THEO ĐƯỜNG CONG.......................................................39 9.1. Tìm phương vuông góc với đường cong qua một điểm cho trước 39
© by Cozybim.com Edit by Duytrung 9.2. Tìm điểm theo chiều dài cho trước..........................................................................41 9.3. Tìm chiều dài tại điểm cho trước 42 BÀI 10. CÁC MODULE THƯỜNG DÙNG........................................................................43 10.1. Các parameter cho các loại dữ liệu cơ bản thường dùng.........................................44 10.2. Các module đặc biệt để lấy dữ liệu input.................................................................44 BÀI 11. ĐỊNH NGHĨA GRASSHOPPER...........................................................................47 BÀI 12. LIST TRONG GRASSHOPPER...........................................................................49 BÀI 13. TẠO MẢNG LIST................................................................................................50 13.1. Nhập dữ liệu dạng mảng thủ công 50 13.2. Range 51 13.3. Series........................................................................................................................53 13.4. Random....................................................................................................................53 BÀI 14. THAO TÁC VỚI LIST...........................................................................................54 14.1. List length 54 14.2. List item...................................................................................................................54 14.3. Reverse list...............................................................................................................55 14.4. Shift list 55 14.5. Insert items 55 14.6. Weave.......................................................................................................................56 14.7. Cull pattern...............................................................................................................56 BÀI 15. DATA TREE TRONG GRASSHOPPER.............................................................57 15.1. The param viewer 58 15.2. Tree statistics ...........................................................................................................59 BÀI 16. CÁC XỬ LÝ TOÁN HỌC CƠ BẢN......................................................................60 16.1. Tổng quang về Tab toán học Maths 60 16.2. Các phép tính toán học 61 16.3. Các toán tử điều kiện ...............................................................................................61 16.4. Các hàm lượng giác .................................................................................................63 16.5. Các biểu thức 63 BÀI 17. LÀM VIỆC VỚI DATA TREE..............................................................................65 17.1. Flatten Tree..............................................................................................................65
© by Cozybim.com Edit by Duytrung 17.2. Graft Tree.................................................................................................................66 17.3. Simplify Tree 66 17.4. Trim Tree 67 17.5. Explode Tree............................................................................................................68 17.6. Entwine....................................................................................................................68 17.7. Flip Matrix 69 17.8. Merge 69 17.9. Construct Pathh Deconstruct Path.........................................................................70 17.10. Tree Item..................................................................................................................70 BÀI 18. TÌM MIN MAX CỦA DÃY SỐ...........................................................................71 BÀI 19. TREE BRANCH LẤY RA DỮ LIỆU CỦA MỘT NHÁNH.............................72 BÀI 20. SPLIT TREE CHIA CÂY DỮ LIỆU..................................................................72 BÀI 21. REPLACE PATHS THAY ĐỔI ĐƯỜNG DẪN CÂY DỮ LIỆU....................74 BÀI 22. PRUNE TREE .........................................................................................................75 BÀI 23. CLEAN TREE.........................................................................................................76 BÀI 24. UNFLATTEN TREE ..............................................................................................77 BÀI 25. SHIFT PATHS.........................................................................................................78 BÀI 26. CHUYỂN ĐỔI MẶT PHẲNG VUÔNG GÓC VỚI TIM TUYẾN.....................79 BÀI 27. CULL PATTERN....................................................................................................80 BÀI 28. STREAM FILTER..................................................................................................80 BÀI 29. SPIRAL CURVE.....................................................................................................81 BÀI 30. SỐ VÀ TẬP DỮ LIỆU SỐ......................................................................................82 30.1. Giá trị số đơn............................................................................................................82 30.2. Sê ri số 82 30.3. Phạm vi hay khoảng giá trị 83 30.4. Miền số Domain.......................................................................................................83 BÀI 31. ĐIỂM VÀ LƯỚI ĐIỂM..........................................................................................85 BÀI 32. ĐIỂM THUỘC ĐƯỜNG TRÒN CHO TRƯỚC..................................................87 BÀI 33. CULL LIST..............................................................................................................88 BÀI 34. LẤY TIM ĐƯỜNG TRÒN.....................................................................................91

Cozybim.com

© by
Edit by Duytrung BÀI 35. SỬ DỤNG SPLIT LIST..........................................................................................92 BÀI 36. SẮP XẾP ĐIỂM THEO TỌA ĐỘ .........................................................................92 BÀI 37. SỬ DỤNG CLUSTER HIỆU QUẢ........................................................................93 BÀI 38. TÌM MẶT TRONG NGOÀI CỦA PIPE...............................................................93

by Cozybim.com

by Duytrung

©
Edit
6 BÀI 1. GRASSHOPPER LÀ GÌ ? Để nói về Grasshopper nên bắt đầu từ Rhino. Có thể bạn ít nghe đến phần mềm Rhinoceros là tên đầy đủ của hãng McNeel, nhưng phần mềm này có năng lực dựng hình 3D mà nhiều giải pháp khác khó sánh bằng. Bên cạnh đó Rhino còn hỗ trợ các công cụ Render, xử lý hình ảnh giúp tạo ra các sản phẩm hoàn thiện và sống động. Phần mềm Rhino được khá nhiều công ty lớn sử dụng trong thiết kế mẫu mã công nghiệp, thường thấy nhất là thiết kế hoa văn, phù điêu, thiết kế giày dép, các ngành nữ trang, và cũng có mảng cơ khí như tàu thuyền, ô tô… Và McNeel đang tiếp tục phát triển bộ giải pháp RhinoBIM. Hy vọng chúng ta sẽ sớm được tiếp xúc trong thời gian tới. Rhino cũng như các giải pháp lớn khác, đi kèm hệ sinh thái các chức năng phát triển thêm, được gọi là các Add on và Grasshopper là một trong số các Add on của Rhino. Với mục tiêu là cung cấp một “lịch sử rõ ràng” của mô hình, thì bên cạnh đó lại giúp tăng hiệu quả trong việc dựng hình. Các phần mềm thiết kế khác như 3DMax, Maya,… cũng cung cấp cho ta khái niệm về lịch sử tạo dựng nên một mô hình. Tuy nhiên, nó thường chỉ cho phép người dùng quay lại các bước trước đó của quá trình dựng hình, thay đổi chúng và chỉ cho ta kết quả cuối cùng mà ta không biết chúng được tạo nên bằng cách nào. Để giải quyết vấn đề này, Rhino xây dựng khái niệm “Lịch sử rõ ràng” và Grasshopper được ra đời để làm rõ khái niệm này. Một đối tượng được tạo ra thay vì là kết quả của một tập hợp các câu lệnh, thì với Grasshopper đó là mô hình đã được tạo dựng từ những thành phần gì và chúng tương tác với nhau như thế nào để đạt kết quả cuối cùng.

© by Cozybim.com

Edit by Duytrung

Có thể hiện tại Rhino chưa là một giải pháp BIM hoàn chỉnh. Nhưng Rhino và Grasshopper lại giúp ích rất lớn trong công tác dựng hình với các giải pháp BIM, mà cụ thể là kết nối được với Revit hoặc Tekla để tạo dựng trực tiếp thực thể của các phần mềm này. Grasshopper là một thành phần Add on của Rhino, nhưng bản thân Grasshopper lại cho phép tiếp tục phát triển như xây dựng thêm các plugin cho Grasshopper. Và một vài trong số các plugin này cho phép kết nối với Tekla và Revit. Phương thức làm việc này như thể dự án Dynamo với Revit. Để có kết quả cuối cùng trên Revit hoặc Tekla, ta chỉ cần nghiên cứu cách sử dụng Grasshopper mà không đặt trọng tâm tìm hiểu cách sử dụng Rhino. Rhino chỉ thực hiện chức năng như là cầu nối.

Grasshopper sử dụng phương thức Visual Programming Language là một hình thái lập trình trực quan để người dùng xây dựng các tài của mình. Đặc điểm quan trọng là VPL không dùng mã mà dùng các đối tượng đồ họa và mối liên kết giữa các đối tượng đồ họa. Mô hình "boxes and arrows" (hình hộp và mũi tên) thường được ưa thích sử dụng. Các thuật ngữ sử dụng :

Component: là một khối cấu trúc nhằm thực hiện các thao tác mà người dùng định nghĩa.

Parameter: là một dạng thành phần đặc biệt chứa dữ liệu (các giá trị).

Slider: là một tiện ích cho phép người dùng sử dụng và thay đổi các giá trị thông qua thanh trượt.

Panel: một tiện ích cho phép người dùng xác định và hiển thị các giá trị số, văn bản hoặc xem trước kết quả của mô hình.

Definitions: là mạng lưới bao hàm các thành phần của Grasshopper liên kết với nhau và nó được gọi là một mô hình hay tài liệu Grasshopper.

7

© by Cozybim.com

Edit by Duytrung

8

© by Cozybim.com

Edit by Duytrung

9 BÀI 2. THÀNH PHẦN GIAO DIỆN CHÍNH CỦA GRASSHOPER. ĐIỀU HƯỚNG, SỬ DỤNG CHUỘT TRONG GRASSHOPER VÀ RHINO 2.1. Thành phần giao diện chính của Grasshopper Để bắt đầu làm việc với Grasshopper, ban đầu cần khởi động Rhino và tại dòng nhắc lệnh nhập “grasshopper” để gọi thực thi Grasshopper. Giao diện Grasshopper bao gồm các thành phần chính sau: Hàng các menu Các Tab chứa các thành phần Component Thanh công cụ Không gian làm việc hay còn gọi là nền Canvas. Nền Canvas được sử dụng để xây dựng các định nghĩa, từ đó tạo lập mô hình cho người dùng. Có một điều rằng đối tượng được tạo ra bằng Grasshopper không thể được chọn và thay đổi trên Rhino mà chúng sẽ được tùy chỉnh trên nền làm việc Canvas của Grasshopper. Dưới đây là giao diện nền làm việc Canvas của Grasshopper:

2.2. Đ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.

2.3. Đ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.

©
10

tiên ta cần quan tâm đó là trình đơn File.

by Cozybim.com

by

3.1. File

Trình đơn File bao gồm các tùy chọn quen thuộc như mở và lưu các tập tin. Có một điều lưu ý rằng, các tập tin Rhino và Grasshopper luôn độc lập với nhau. Do vậy, ngoài việc cần lưu các định nghĩa trong cửa sổ làm việc Grasshopper, đồng thời trong Rhino còn phải lưu

©
Edit
Duytrung 11 BÀI 3. SƠ LƯỢC VỀ CÁC TRÌNH ĐƠN MENU TRONG GRASSHOPPER Cũng như các phần mềm khác, Grasshopper thiết lập bố cục thanh trình đơn menu rất quen thuộc bằng cách đặt chúng ở phía trên cùng của giao diện làm việc. Bạn sẽ nhìn thấy một cấu trúc menu phổ biến có ở hầu hết các phần mềm, như File, Edit, View, Window. Các menu này cung cấp cho người dùng các chức năng để mở, lưu files, đồng thời kiểm soát việc hiển thị các định nghĩa và nhiều chức năng khác. Chúng ta sẽ tiếp cận các chức năng đó sau. Bây giờ, điều đầu
file chứa các đối tượng hình học mà bạn dùng để làm cơ sở tham chiếu cho các định nghĩa trong Grasshopper. 3.2. Edit Ở thanh Edit, ta có thể copy, paste các đối tượng riêng lẻ hoặc chọn các đối tượng chỉ định cũng như các tùy chọn cho một nhóm đối tượng, gọi là Group. Group rất cần thiết khi mà mạng định nghĩa trở nên phức tạp.
©
Edit
12 Group chứa các parameters, components,… và nó được thiết lập để định nghĩa một chức năng cụ thể. Tạo Group bằng cách nhấn tổ hợp Ctrl + G. Khi các đối tượng được gọp lại thành một nhóm thì bên dưới chúng sẽ xuất hiện màu nền (như hình trên). Ta chuột phải vào Group để tùy chỉnh các hiển thị mong muốn. 3.3. View

View cho phép thiết lập hiển thị cho giao diện. Hơn nữa nó còn cho ta tùy chỉnh giao diện. Ngoài ra, phóng to thu nhỏ Zoom cũng nằm trong View.

3.4. Display

Display chứa cài đặt hiển thị cho không gian làm việc. Bên cạnh đó, nó còn cho phép người dùng tùy biến việc thể hiện các đối tượng hình học bên Rhino.

©
13

by Cozybim.com

by Duytrung

©
Edit
14 3.5. Solution Trình đơn Solution chứa các thiết lập cho việc tính toán các đối tượng hình học đã được tạo ra bới Grasshopper và hiển thị chúng trong Rhino. Có một liên kết trực tiếp giữa Grasshopper và Rhino mà các kết quả sẽ được cập nhật ngay trong Rhino, cho phép người dùng có thể xem trước kết quả của các định nghĩa trong Grasshopper. Tuy nhiên, khi thực hiện các phép tính với khối lượng lớn, các đối tượng hình học trở nên phức tạp thì không nên lạm dụng chế độ này.

by Cozybim.com

by Duytrung

©
Edit
15 3.6. Thẻ Tabs Các components được sắp xếp trong các thẻ Tabs như : Params Math Sets Vector, Curve, Surface và Mesh Intersect Transform

© by Cozybim.com

Edit by

BÀI 4. CÁC LOẠI MODULE TRONG GRASSHOPPER

Grasshopper s

ự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

Duytrung 16 Ở mỗi thẻ Tab được chia thành nhiều cụm section để nhóm các component có chức năng tương đồng lại với nhau. Mỗi cụm section thể hiện các component hay dùng. Để thấy toàn bộ các component, ta click vào mũi tên ngay góc dưới bên phải thuộc thanh tiêu đề của Tab. Chúng ta sẽ tìm hiểu chi tiết hơn nội dung bên trong các Tabs này về sau. Grasshopper đang được đẩy mạnh phát triển, tên gọi cũng như cấu trúc có thể sẽ được thay đổi qua các phiên bản sắp tới cho ngày một tiện dụng hơn với người dùng.
ử d
học như mong muốn. Để 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

by Cozybim.com

by Duytrung

Parameter

học và thông số đầu vào cơ bản như kiểu d

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ộ

li

©
Edit
17 nghĩa từngbước cho quátrìnhtạodựngđườngcong đó với sựtrợ giúpcủ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. 4.1.
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
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.

by Cozybim.com

Edit by Duytrung

©
18 Để đị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”.

© by Cozybim.com

Edit by Duytrung

Parameter được định nghĩa trong Rhino hay Grasshopper Các

định nghĩa cả trong Grasshopper lẫn Rhino. Một đường tròn

định nghĩa trong Grasshopper vì khi định nghĩa nó ở Rhino và Grasshopper có

khác này ph

thu

c vào tham số Parameter nào cần định nghĩa.

định nghĩa cả trong Rhino và Grasshopper. Sự khác bi

thay

nhưng nó có

hình h

c trong Rhino và Grasshopper sau này. Mặc dù điều này có

hưởng

19
thuộc tính hình học có thể được
đôi lúc cần được
sự khác biệt. Sự sai
Ví dụ, một điểm point có thể được
ệt này sẽ chỉ ra khả năng
đổi
vẻ tầm thường,
ảnh
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.

© by Cozybim.com

Edit by Duytrung

20 4.2. 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 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

by Cozybim.com

by Duytrung

©
Edit
21 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.

© by Cozybim.com

Edit by Duytrung

22 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. 4.3. 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.

by Cozybim.com

by Duytrung

là kiểu số nguyên của một đối khác. Việc chuyển đổi kiểu dữ liệu sẽ tự động được thực hiện. Nếu việc chuyển đổi không thành công sẽ có thông báo lỗi. Kết nối các đối tượng. Một input có thể kết nối được với một hoặc nhiều output khác. Thao tác để kết nối giữa các đối tượng được thực hiện thông qua việc kéo thả từ output của đối tượng này sang input của đối tượng khác, hoặc ngược lại.

©
Edit
23 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. BÀI 5. TẠO KẾT NỐI GIỮA CÁC ĐỐI TƯỢNG Dữ liệu được chứa trong các parameter và được sử dụng trong các component. Các parameter nếu không được lưu trữ dữ liệu trong nó thì phải kế thừa từ các đối tượng khác. Dữ liệu trong các parameter cũng không mang tính đặc thù, ví dụ ta có thể trả giá trị kiểu số thực cho đầu vào
Để hiểu rõ các phương thức kết nối khác nhau, ta thực hiện một ví dụ đơn giản như sau. Tạo mới một file Grasshopper và kéo thả vào dự án 2 parameter là Point và 3 component bao gồm: Line segment (Line từ 2 điểm) Construct Point Range Vào lúc này các đối tượng chưa có bất kỳ kết nối nào. Ta thử tạo kết nối đầu tiên theo thứ tự từ trái qua phải. Tạo liên kết mới từ Range vào Construct Point. Kích và chuột

Cozybim.com

by

© by
Edit
Duytrung 24 kéo thả từ các nửa đường tròn tại các đối tượng (được gọi là grip). Một đường cong thể hiện kết nối sẽ xuất hiện và đi theo tọa độ chuột. Khi grip tiếp theo ở vị trí gần tọa độ chuột nhất sẽ được chọn, đường kết nối chuyển sang dạng liên tục, cho đến khi thả chuột sẽ tạo ra một liên kết mới. Thực hiện tiếp tục tương tự cho tọa độ Y của Construct Point và Range. Chuột phải trên 2 Point và chọn cho các parameter này một vài điểm bằng cách chọn Set Multiple Points. Tạo kết nối của Point out put từ Constrcut Point với End Point của Line component. Thực hiện tiếp tục tương tự cho tọa độ Y của Construct Point và Range. Chuột phải trên 2 Point và chọn cho các parameter này mộThực hiện kết nối 1 Point với Start Point của Line Component và sau đó với giữa Point còn lại với StartPoint của Line. Ta thấy

by Cozybim.com

by Duytrung

©
Edit
25 rằng việc thực hiện tạo kết nối mới như trên chi cho phép Start Point input của Line chỉ kết nối với 1 output duy nhất. Nếu muốn kết nối thêm 1 output nữa ta phải sử dụng giữ phím Shift khi tạo kết nối. Lưu ý khi giữ Shift, tại con trỏ chuột sẽ xuất hiện icon màu xanh lá nhỏ, lúc này ta có được.t vài điểm bằng cách chọn Set Multiple Points. Trường hợp muốn bỏ kết nối, có 2 cách để thực hiện. Cách 1: Giữ phím Ctrl và thực hiện chỉ 2 grip đầu cuối như tạo kết nối mới để bo đi liên kết đó. Cách 2: Để chuột tại vị trí của input hoặc output cần bỏ liên kết, chuột phải và chọn Disconnect, sau đó chọn đối tượng cần bỏ kết nối. BÀI 6. 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

© by Cozybim.com

Edit by Duytrung

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.

26 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

by Cozybim.com

by Duytrung

©
Edit
27 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.

Cozybim.com

© by
Edit by Duytrung 28 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. 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. Video thao tác: https://youtu.be/rHFFcP5pFDI
©
Edit
29 BÀI 7. 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 thuậ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":
©
Edit
30 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 trường hợp tùy chọn của thuật toán Shortest List component:
©
Edit
31 Ở đâ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
© by Cozybim.com Edit by Duytrung 32 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ê. Đô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 chọn khác: Video thao tác: https://youtu.be/CUKxKi4QrwQ

by Cozybim.com

by Duytrung

©
Edit
33 BÀI 8. TƯƠNG TÁC GIỮA GRASSHOPPER RHINO Không giống như một tài liệu Rhino, một file Grasshopper là một định nghĩa không chứa bất kỳ đối tượng hay thực thể hình học nào. Thay vào đó, một định nghĩa Grasshopper đại diện cho một tập hợp các quy tắc và hướng dẫn cho Rhino có thể tự động hóa các tác vụ.

© by Cozybim.com

Edit by Duytrung

34 1. Các yếu tố hình học do Grasshopper tạo ra chỉ mang tính tạm thời. 2. Viewport của Rhino. 3. Cửa sổ của Grasshopper. 8.1. Các phản hồi từ rhino viewport Tất cả các yếu tố hình học được tạo ra bằng cách sử dụng các component của Grasshopper sẽ hiển thị trong viewport của Rhino. Đây chỉ là các thực thể xem trước do đó bạn sẽ không thể chọn các yếu tố hình học này trong viewport của Rhino. Ta có thể bật / tắt xem trước yếu tố hình học bằng cách nhấp chuột phải vào một component và chọn nút Preview. Các yếu tố hình học do Grasshopper tạo ra trong viewportcuar Rhino được thể hiện bằng màu sắc đặc trưng để cung cấp phản hồi trực quan. Hình dưới đây phác thảo sơ đồ màu mặc định.
©
Edit
35 1. Thực thể hình học màu lục trong viewport do component đang được chọn ở Grasshopper tạo ra. 2. Các thực thể màu đỏ đậm trong viewport do các component từ Grasshopper tạo ra. Các component này không được chọn. 3. Các điểm hình học do Grasshopper tạo ra được đánh dấu bằng 2 gạch chéo cắt nhau để khác với thể hiện điểm của Rhino. 4. Màu xanh dương là thể hiện cho sự chọn đối tượng cho Grasshopper trên Rhino. 8.2. Liên kết sống Grasshopper là một môi trường động. Các thay đổi được thực hiện ngay tức thời và màn hình xem trước của các đối tượng do Grasshopper tạo ra được cập nhật trong các viewport của Rhino.

8.3. Bake

Các yếu tố hình học được Grasshopper tạo ra trong môi trường Rhino, bạn chỉ có thẻ chọn được chúng bằng cách chọn các component của Grasshopper đã tạo ra chúng. Không thể chọn nó trong môi trường của Rhino. Và khi tắt Grasshopper thì các yếu tố hình học liên quan nó cũng sẽ mất trong các viewport của Rhino. Muốn cụ thể hóa các đối tượng và có thể tương tác được trong Rhino, ta cần thực hiện Bake trên các component liên quan. Baking khởi tạo mô hình mới vào tài liệu Rhino dựa trên trạng thái hiện tại của biểu đồ Grasshopper. Các mô hình trong Rhino này sẽ không còn đáp ứng được những thay đổi trong định nghĩa của Grasshopper nữa.

36
©
Edit
37 1. Bake bằng cách nhấp chuột phải trên component và chọn Bake. 2. Hộp thoại sẽ xuất hiện cho phép bạn chọn layer tương ứng trong Rhino sử dụng cho đối tượng hình học do Bake tạo ra. 3. Nhóm các đối tượng do việc thực hiện Bake từ component tạo ra. 8.4. Đơn vị và dung sai Grasshopper kế thừa đơn vị và dung sai từ Rhino. Để thay đổi đơn vị, nhập Document Properties trong dòng lệnh Rhino để truy cập vào Document Properties. Chọn Units để thay đổi đơn vị sử dụng và dung sai.
©
Edit
38 8.5. Quản lý tập tin Nếu trong tập tin Grasshopper có sử dụng đến các đối tượng hình học của Rhino, ta cần mở tập tin Rhino có liên quan thì các định nghĩa trong Grasshopper mới có thể làm việc được. Cách tốt nhất nên đặt 2 tập tin Rhino và Grasshopper trong cùng một thư mục và sử dụng tên giống nhau.

by Cozybim.com

©
Edit
39 1. Thư mục của dự án. 2. Tập tin Rhin. 3. Tập tin Grasshopper. BÀI 9. Đ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. 9.1. 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 Analysis.
©
40 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.

© by Cozybim.com

Edit by Duytrung

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

9.2. 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

41
ệ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.

9.3. 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:

Video thao tác: https://youtu.be/ChxtleseOIM

©
Edit
42

by Cozybim.com

by Duytrung

10. CÁC MODULE THƯỜNG DÙNG

©
Edit
43 BÀI
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.
© by Cozybim.com Edit by Duytrung 44 Thông thường, tắt 2 chế độ này để các thành phần ngắn gọn và thể hiện rõ ràng mối quan hệ giữa các thành phần khác nhau. 10.1. Các parameter cho các loại dữ liệu cơ bản thường dùng 10.2. 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 đổi kết quả trả 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á trị số trả ra và có khả năng thay đổi khi người dùng kéo vị trí trên thanh trượt.

by Cozybim.com

by Duytrung

©
Edit
45 Đú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 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ữ

by Cozybim.com

by Duytrung

©
Edit
46 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.com

by Duytrung

© by
Edit
47 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. BÀI 11. ĐỊ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:
©
48 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ý.
©
Edit
49 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. BÀI 12. 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ảnnhất để xemdữliệuđược lưu trữtrongListlà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

© by Cozybim.com

Edit by Duytrung

50 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ụ. 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. BÀI 13. TẠO MẢNG LIST 13.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.

© by Cozybim.com

Edit by Duytrung

51 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ị 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”. 13.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.

© by Cozybim.com

Edit by Duytrung

t list các giá tr

Range component sẽ chia miền số Domain thành các phân đoạn và trả về m

các đầ

c

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

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à

52
u
ủa
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ộ
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ị.
© by
Edit
53 Với trường hợp sử dụng Construction Domain ta có thể có khai báo tham khảo như sau: 13.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. Series có 3 input bao gồm Start là giá trị bắt đầu, Step là bước nhảy và Count là số lượng phần tử tạo ra. 13.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
© by Cozybim.com Edit by Duytrung 54 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. BÀI 14. 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. 14.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ị. 14.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.
© by Cozybim.com Edit by Duytrung 55 14.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. 14.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. 14.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

by Cozybim.com

Edit by Duytrung

Weave

©
56 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. 14.6.
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. 14.7. 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.

by Cozybim.com

by Duytrung

©
Edit
57 BÀI 15. DATA TREE TRONG GRASSHOPPER Data Tree, tạm dịch cây dữ liệu, là cấu trúc có thứ bậc để lưu trữ dữ liệu trong các danh sách lồng nhau. Dữ liệu dạng Tree được tạo ra khi một component của grasshopper có chức năng tạo ra nhiều tập dữ liệu List. Grasshopper xử lý dữ liệu này bằng cách tổ chức dưới dạng List phụ. Các List con lồng nhau này hoạt động giống như các cấu trúc thư mục trên máy tính của bạn. DataTree về bản chất là một List các List, hoặc có thể là một List chứa các List chứa các Listvà cứ tiếp tục lồng nhau không giới hạn mức độ Trong hình trên, có một nhánh chính (có thể gọi nó là một thân cây, nhưng vì có thể có nhiều nhánh chính nên dễ nảy sinh nhầm lẫn) tại đường dẫn {0}. Đường dẫn này không chứa dữ liệu, nhưng có 6 nhánh phụ. Các nhánh phụ kế thừa chỉ mục vị trí của nhánh gốc {0} và thêm chỉ mục con của riêng mình (0, 1, 2, 3, 4, và 5 tương ứng). Ở mỗi phân nhánh này, chúng ta có một số dữ liệu. Mỗi mục dữ liệu là một phần của một nhánh trong cây, và mỗi mục có một chỉ mục xác định vị trí của nó bên trong nhánh. Như vậy, mỗi nhánh có một đường dẫn xác định vị trí của nó bên trong cây. Hình ảnh dưới đây minh hoạ sự khác nhau giữa List và một DataTree. Ở bên trái, một mảng dữ liệu gồm 4 cột với 6 điểm được chứa trong một List. Cột đầu tiên được đánh số từ 0 đến 5, cột thứ hai từ 6 đến 11 và vân vân. Bên phải là cùng một mảng dữ liệu các điểm như trên
©
Edit
58 chứa trong một Data Tree. Data Tree là một danh sách của bốn cột, và mỗi cột là một danh sách sáu điểm. Chỉ số của mỗi điểm là (số cột, số hàng). Đây là một cách hữu ích hơn để tổ chức dữ liệu bởi vì bạn có thể dễ dàng truy cập và sử dụng tất cả các điểm. Do tính chất phức tạp của Data Tree nên có thể rất khó hiểu. Tuy nhiên, Grasshopper cung cấp một vài công cụ để trợ giúp thể hiện trực quan và dễ hiểu luồng dữ liệu được chứa trong Data Trees. Các công cụ thường dùng như sau: 15.1. The param viewer Tìm tại Params/Util/Param Viewer. Parameter này cho phép thể hiện trực quan dữ liệu của một Data Tree ở dạng text hoặc dạng hình vẽ của một cây. Để thể hiện 1 cây, Chuột phải trên Param Viewer và chọn “draw tree.” Ở ví dụ như hình, Param Viewer được kết nối với output Points (P) của một component chia đường cong thành các phần nhỏ Divide Curve component. Ở đây có 10 đường cong và mỗi đường cong được chia thành 10 phần. 10 nhánh chỉ ra cho 10 đường cong, mỗi nhánh là một List chưa 11 điểm chia. Param Viewer ở dạn text thể hiện đường dẫn vị trí cho các nhánh trong cây.
©
Edit
59 Số lượng phần tử có trong nhánh Chọn "Draw Tree" để thể hiện cây Nếu chúng ta kết nối dữ liệu trên cho một Panel. Nó sẽ hiển thị 10 List gồm 11 mục. Ta có thể thấy rằng mỗi mục là một điểm được xác định bởi ba tọa độ. Đường dẫn được hiển thị ở đầu mỗi. Đường dẫn List bao gồm 11 phần tử 15.2. Tree statistics Component Tree Statistics có thể tìm thấy tại Sets/Tree/Tree Statistics. Component này trả ra các yếu tố thống kê của một Data Tree bao gồm: P Tất cả các đường dẫn có trong Data Tree L Độ dài của từng nhánh trong Tree C Số lượng đường dẫn và nhánh cây trong Nếu chúng ta kết nối ouput Points của cùng component Divide Curve như tren, chúng ta có thể xem và lấy ra được các thông tin về đường dẫn, độ dài từng nhánh và số lượng đường dẫn như trên… Component này rất hữu dụng vì chia dữ liệu thống kê ra thành 3 putput cho phép chúng ta dễ dàng đọc được các giá trị này.

Cozybim.com

© by
Edit by Duytrung 60 BÀI 16. 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. 16.1. Tổng quang 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à khoả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ố,…
© by Cozybim.com Edit by Duytrung 61 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,… 16.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. 16.3. Các toán tử điều kiện

© by Cozybim.com

Edit by Duytrung

62 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): 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.
©
Edit
63 16.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,… 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) 16.5. Các biểu thức
© by Cozybim.com Edit
Duytrung 64 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. Video thực hiện: https://youtu.be/DMQ ai8h1Bk Chia curve theo list chiều dài: https://youtu.be/7I53jxAwfMQ

C

by Cozybim.com

by Duytrung

TREE

©
Edit
65 BÀI 17. LÀM VIỆ
VỚI DATA
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. 17.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),đưadữliệuvề một danh sách duynhấ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.
©
66 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. 17.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. 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. 17.3. Simplify Tree

by Cozybim.com

by Duytrung

Ngoài

công

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”

©
Edit
67 Simplify Tree giúp loại bỏ các nhánh chồng chéo nhưng không chứa dữ liệu, tức làm đơn giản hóa cấp độ nhánh của một cây dữ liệu. 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.
ra, các
cụ
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. 17.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).
©
68 17.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. 17.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}.
©
Edit
69 17.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. 17.8. Merge Công cụ này cho phép hợp nhất nhiều nguồn dữ liệu input để tạo thành một cây mới với cấu trúc bậc dữ liệu được giữ từ dữ liệu gốc.

© by Cozybim.com

Edit by Duytrung

70 17.9. Construct Pathh Deconstruct Path Construct Path có chức năng chính là tạo ra 1 đường dẫn Path của nhánh nào đó trong cây bằng việc truyền vào một list các chỉ số. Kết quả của component này sẽ phục vụ cho việc truy vấn vào đối tượng một nhánh bất kỳ trong cây. Nếu Construct Path trả ra 1 đường dẫn thì Deconstruc Path sẽ cho ta điều ngược lại là các chỉ số từ việc truyền vào một đường dẫn. 17.10. Tree Item Đây là một công cụ cho phép can thiệp sâu đến từng phần từ của cây. Bằng việc chỉ ra đường dẫn “Path” và chỉ số “Index” của phần tử thuộc đường dẫn đó thì “Tree Item” sẽ cho ta lấy ra được bất cứ phần tử nào của cây dữ liệu.

by Duytrung

©
Edit
71 Video thực hiện: https://youtu.be/dbewsR103jM BÀI 18. TÌM MIN MAX CỦA DÃY SỐ
©
Edit
72 BÀI 19. TREE BRANCH LẤY RA DỮ LIỆU CỦA MỘT NHÁNH Truyền vào một đường dẫn mong muốn tại “Path”, Tree Branch sẽ trả ra dữ liệu của tất cả các phần tử thuộc nhánh đó. BÀI 20. SPLIT TREE CHIA CÂY DỮ LIỆU Chia cây dữ liệu thành 2 phần bằng điều kiện “Mask”. “Mask” này là một dạng đường dẫn Path. Nhưng bạn có thể thiết lập nó như một Path ẩn danh.
©
Edit
73 Ví dụ : “Mask” là {0;?} thì output “Positive” là toàn bộ các nhánh có dạng như {0;0}, {0;1},…và output “Negative” là các nhánh còn lại. Video thực hiện: https://youtu.be/ycquuP7vZRU
© by Cozybim.com Edit by Duytrung 74 BÀI 21. REPLACE PATHS THAY ĐỔI ĐƯỜNG DẪN CÂY DỮ LIỆU Nguyên lý làm việc: Bằng việc cung cấp đường dẫn gốc tại “Search” và đường dẫn mới tại “Replace”, component này sẽ trả ra cây dữ liệu với cấu trúc tương ứng với đường dẫn mới được truyền vào. Áp dụng trong các trường hợp: Thay đổi đường dẫn cây dữ liệu. Thay đổi cấu trúc cây dữ liệu. Gộp dữ liệu với một cây khác nhờ vào việc tạo ra cấu trúc tương ứng. Video thực hiện: https://youtu.be/UkSBwkI0Q0g
©
Edit
75 Ví dụ sau đặt vấn đề cần truyền chiều cao cột tăng dần trừ trái sang phải. Nhưng dữ liệu hiện đang không đúng thứ tự tương ứng. [Replace Path] sẽ giúp cấu trúc lại thứ tự dữ liệu đúng như mong muốn. https://youtu.be/Gjx6mLZY5Sk BÀI 22. PRUNE TREE

23. CLEAN TREE

© by Cozybim.com Edit by Duytrung 76 Nguyên lý Bỏ đi nhánh có số phần tử nằm ngoài vùng điều kiện tối thiểu “Minimum” và tối đa “Maximum”. BÀI
Nguyên lý “Remove Nulls” : loại bỏ các phần tử null trong cây dữ liệu. “Remove Invalid” : loại bỏ các phần tử không hợp lệ trong cây dữ liệu. “Remove Empty” : loại bỏ các nhánh rỗng (không có phần tử) trong cây dữ liệu. Các input trên là điều kiện kiểu Boolean, input “Tree” là dữ liệu được truyền vào. Nếu các input kiểu Boolean trên là True thì component trả ra cây dữ liệu mới, sẽ loại bỏ các phần tử tương ứng với điều kiện được thiết lập True.

by Cozybim.com

by Duytrung

“Guide”,

Nguyên lý

BÀI 24. UNFLATTEN TREE

Video

https://youtu.be/If5vpfK3PA0

©
Edit
77
Từ cây dữ liệu input “Tree” với một nhánh duy nhất, truyền vào input “Guide” một cây dữ liệu mang cấu trúc nhánh bất kỳ. Số lượng phần tử của 2 cây này phải bằng nhau. Component này sẽ cấu trúc lại các phần tử của cây “Tree” theo đúng như cấu trúc của cây
đồng thời mang chỉ số nhánh của cây “Guide”.
thực hiện:

© by Cozybim.com

Edit by Duytrung

BÀI 25. SHIFT PATHS

78
Nguyên lý Chức năng tương tự như “Trim Tree” đơn giản hóa cấu trúc cây, “Shift Paths” còn cho phép truyền giá trị âm ở “Offset” tham số thể hiện thứ bậc muốn làm gọn. Khi “Offset” dương, bậc làm gọn được tính từ gốc. Ví dụ, “Offset” bằng 1, {0;0;0};{0;0;1};{0;1;0};{0;1;1} sẽ thành {0;0};{0;1};{1;0};{1;1}. Ngược lại, “Offset” bằng 1, bậc làm gọn được tính từ ngọn vào, bấy giờ sẽ thành {0;0};{0;0};{0;1}{0;1}, khi đó các phần tử mang path giống nhau cũng hiển nhiên được gọp lại thành một nhánh là {0;0} và {0;1}, mỗi nhánh chứa 2 phần tử Điều kiện Giá trị đại số của “Offset” phải nhỏ hơn số bậc của nhánh. Video thực hiện: https://youtu.be/UannGTQ kt4
©
Edit
79 BÀI 26. CHUYỂN ĐỔI MẶT PHẲNG VUÔNG GÓC VỚI TIM TUYẾN Trong thiết kế, đôi lúc cần lên phối cảnh để có cái nhìn trực quan hơn về dự án. Với mặt cắt ngang điển hình và tim tuyến, ví dụ dưới đây sẽ hỗ trợ việc lên phối cảnh cho phương án một cách nhanh chóng. Video thực hiện: https://youtu.be/qPIBicisev4
© by Cozybim.com Edit by Duytrung 80 BÀI 27. CULL PATTERN Lọc bỏ dữ liệu bằng điều kiện kiểu Boolean. Video thực hiện: https://youtu.be/C0oJo4eQhU4 BÀI 28. STREAM FILTER Lọc lấy dữ liệu của các nguồn input “stream 0”, “stream 1”,…bằng việc truyền vào điều kiện “Gate”. “Gate” có thể là kiểu Boolean hoặc số nguyên. Nếu là kiểu Boolean, khi Gate là true thì output sẽ trả ra kết quả của “stream 1”. Ngược lại, false thì trả ra kết quả của “stream 0”. Khi “Gate” là kiểu số nguyên thì output sẽ trả ra kết quả của Stream mang chỉ số được truyền vào. Video thực hiện: https://youtu.be/psCZ8WHrwHA
©
Edit
81 BÀI 29. SPIRAL CURVE Spiral Curve Ứng dụng trong các trường hợp mô hình hóa cấu kiện dạng xoắn ốc. Video thực hiện: https://youtu.be/q LB8g_oY74
© by Cozybim.com Edit by Duytrung 82 BÀI 30. SỐ VÀ TẬP DỮ LIỆU SỐ Trong toán học và các thuật toán thường bắt đầu với những con số, chúng ta có thể tạo ra các bộ dữ liệu số khác nhau trong Grasshopper và sau đó chúng ta có thể sử dụng chúng để làm công cụ thiết kế. Dữ liệu số có thể là một giá trị số hoặc một tập hợp dữ liệu số. Các component để tạo ra các dữ liệu số bao gồm. 30.1. Giá trị số đơn Commponent <Number slider> (Params > Input > Number Slider) có thể điều chỉnh bằng tay. Nó có thể là số nguyên, số thực, ngay cả với các giá trị giới hạn trên và dưới. Để thiết lập một giá trị số cố định là bạn có thể đi đến các Params> Primitive> Chọn integer/numbertừ menu đổ xuống để xác định một số nguyên hay số thực. Tập hợp số xem BÀI 13 30.2. Sê-ri số Component <Series> (Sets > Sequence > Series). Component này tạo ra một tập hợp (list) các số mà chúng ta có thể điều chỉnh các số và số lượng các giá trị thông qua giá trị bắt đầu, số lượng và bước nhảy. ví dụ như: [0, 1, 2, 3, … , 1000] [2, 4, 6, … , 100] [10, 20, 30, 40, … , 1000000].
© by
Edit
83 30.3. Phạm vi hay khoảng giá trị Component <Range> (Sets > Sequence > Range) component này tạo ra bất kỳ một khoảng số (ví dụ[1 10]) có thể được chia thành các phần vô hạn: [1, 2, 3, … , 10] [1, 2.5, 5, … , 10]. 30.4. Miền số Domain Params > Primitive > Domain/Domain2 Nó cung cấp một loạt các tất cả các số thực sự giữa một giới hạn trên và dưới, chúng ta có thể xác định một miền cố định bằng cách sử dụng component này để làm việc một cách linh hoạt. Domain là miền số 1 chiều, Domain2 là miền số 2 chiều. Tại Maths > Domain > chọn Construct Domain hoặc Construct Domain2 để tạo ra các miền số thích hợp.
Edit
84 Video thực hiện: https://youtu.be/ UT8ik7rHGg

by Cozybim.com

by Duytrung

©
Edit
85 BÀI 31. ĐIỂM VÀ LƯỚI ĐIỂM Điểm là một trong những yếu tố cơ bản cho hình học và giải thuật có thể sinh sản. Điểm đánh dấu một vị trí cụ thể trong không gian, có thể bắt đầu từ điểm của đường cong, trung tâm của vòng tròn và rất nhiều vai trò khác, chúng ta có thể tạo ra các điểm theo nhiều cách. Component <Point> (Params > Geometry > Point): những điểm này có thể được điều chỉnh và di chuyển bằng tay trong Rhino. Component <Construct Point> (Vector > Point > Construct Point): Điểm được xây dựng bằng cách cung cấp các tọa độ của điểm. Các component lưới Vector > Grid > Hexagonal; Radial; Rectangular; Square; Triangular: Tạo điểm theo các dạng lưới lục giác, lươi socng, lưới chữ nhật, lưới vuông, lưới tam giác.
© by
Edit
86 Các component Populate để xác định các điểm trọng một miền phạm vi nhất định. Vector > Grid > Populate… Chúng ta còn có thể trích xuất điểm từ các đối tượng hình học bằng nhiều cách khác nhau khác như điểm đầu, cuối, trung điểm, các điểm điều khiển vv.. Trong Clip sau sẽ giới thiệu các cách thức: 1. Tạo điểm từ việc chọn tại Rhino 2. Tạo điểm từ các slide cung cấp các tọa độ điểm 3. Tạo bộ điểm bằng component <Series>

Cozybim.com

© by
Edit by Duytrung 87 4. Tạo bộ điểm bằng component <Range> 5. Tạo bộ điểm ngẫu nhiên 6. Tạo điểm qua tập Fibonacci Fibonacci là một dãy số với hai số đầu tiên được định nghĩa (0 và 1) và các số tiếp theo là tổng của hai số trước đó. N(0)=0, N(1)=1, N(2)=1, N(3)=2, N(4)=3, N(5)=5, … , N(i)=N(i 2)+N(i 1). Dưới đây là một số các con số: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … Component <Fibonacci> series (Sets > Sequence > Fibonacci) Video thực hiện: https://youtu.be/NNMBSAhPgFw File GH: ..\Dropbox\Study\Application\Study GH\Available\point_pointgrid.gh BÀI 32. ĐIỂM THUỘC ĐƯỜNG TRÒN CHO TRƯỚC Ví dụ trong clip dưới đây sẽ thực hiện tạo ra các điểm chia đều thuộc đường tròn có tâm và bán kính xác định trước. Các xử lý toán học trong Grasshopper được tìm thấy tại thẻ Maths. Thẻ này cung cấp đa phần các phép tính toán học thông thường và nâng cao. Các biểu thức phức tạp được sử dụng với Evaluate và Expression component. Video thực hiện: https://youtu.be/bhisHlXL3h4

by Cozybim.com

by Duytrung

33. CULL LIST

©
Edit
88 BÀI
Trong Grasshopper với kiểu dữ liệu tập hợp dạng list, ta cần các xử lý để lựa chọn các phần tử cần thiết từ tập hợp. Một trong số các cách là sử dụng các component <cull>. Có 3 component dạng này tại thẻ Sets > Sequence là: Cull Index, Cull Nth và Cull Pattern. Cull Index sẽ loại bỏ các phần tử trong list theo các chỉ số được chỉ định. Cull Nth sẽ loại bỏ tất cả các phần tử tại các thứ tự N*x trong tập hợp. Lưu ý một sự khác nhau trong 2 component trên là cull index thì sử dụng chỉ số vị trí (chỉ số vị trí bắt đầu từ 0), còn với Cull Nth thì sử dụng thứ tự phần tử (thứ tự bắt đàu từ 1). Xem 1 ví dụ như sau:

by Cozybim.com

©
Edit
89 Trong ví dụ trên, chúng ta sử dụng 1 panel để tạo 1 tập hợp các số. Cull index với chỉ số vị trí là 5 sẽ loại bỏ phần tử tại vị trí này là 50. Với Cull Nth thì phần tử với thứ tự từ 1 trong list gốc, thì 40 (thứ tự 5) là giá trị bị loại bỏ Cùng ví dụ trên, Cull Nth không chỉ loại bỏ phần từ thứ tự thứ 5 mà còn sẽ loại bỏ các phần từ bội số của 5 nếu list gốc có số lượng nhiều hơn. Với tập hợp số này thì Cull Nth với frequency là 5 sẽ loại bỏ các phần tử theo thứ tự tại 5 10 và 15 là 40 75 và 100. Component <cull> cuối cùng là Cull Pattern. Component này sẽ chọn lọc trong list theo 1 list các giá trị boolean. Các vị trí của Cull Pattern list mang giá trị false sẽ bị loại bỏ

Cozybim.com

© by
Edit
90 Chỉ tại các vị trí có chỉ số 0 và 5 của pattern list có giá trị true, nên list nhận được mang 2 giá trị 10 và 60 của list gốc. Trong Grashopper không có khái niệm vòng lặp đê xử lý các tập hợp giá trị. Do đó, Cull pattern được sử dụng để thay thế cho vòng lặp trong Grasshopper. Ví dụ sau sẽ chọn ra các giá trị lớn hơn 50 từ list gốc. Clip sau sẽ thực hiện lại các ví dụ trên và 1 ví dụ về tìm các điểm có khoảng cách đến 1 điểm cố định nhỏ hơn 1 giá trị xác định. https://youtu.be/hRy2n qPvYc

by Cozybim.com

by Duytrung

©
Edit
91 BÀI 34. LẤY TIM ĐƯỜNG TRÒN Cách đơn giản để lấy ra tim đường tròn với Grasshopper. Video thực hiện: https://youtu.be/hxq7W17wMXE

Cozybim.com

by Duytrung

M THEO T

© by
Edit
92 BÀI 35. SỬ DỤNG SPLIT LIST Video thực hiện: https://youtu.be/08n56ebL_Gg BÀI 36. SẮP XẾP ĐIỂ
ỌA ĐỘ Video thực hiện: https://youtu.be/PhLTIzZ8CI8

by Cozybim.com

by Duytrung

©
Edit
93 BÀI 37. SỬ DỤNG CLUSTER HIỆU QUẢ Video thực hiện: https://youtu.be/V8g9KpFCI1o BÀI 38. TÌM MẶT TRONG NGOÀI CỦA PIPE

by Cozybim.com

by Duytrung

©
Edit
94 Phương án tìm các mặt trong và mặt ngoài của các Pipe từ Tekla Structures. Ai có phương án nào hay hơn. Vui lòng đề xuất thêm. Video thực hiện: https://youtu.be/FXa_l_lyAUw

Turn static files into dynamic content formats.

Create a flipbook

Articles inside

BÀI 32. ĐIỂM THUỘC ĐƯỜNG TRÒN CHO TRƯỚC

0
page 86

BÀI 31. ĐIỂM VÀ LƯỚI ĐIỂM

1min
pages 84-85

BÀI 26. CHUYỂN ĐỔI MẶT PHẲNG VUÔNG GÓC VỚI TIM TUYẾN

0
page 78

BÀI 24. UNFLATTEN TREE

0
page 76

BÀI 25. SHIFT PATHS

0
page 77

BÀI 29. SPIRAL CURVE

0
page 80

BÀI 23. CLEAN TREE

0
page 75

BÀI 11. ĐỊNH NGHĨA GRASSHOPPER

0
pages 46-47

BÀI 22. PRUNE TREE

0
page 74

BÀI 12. LIST TRONG GRASSHOPPER

1min
page 48

13.2. Range

2min
pages 50-51

17.4. Trim Tree

1min
page 66

9.3. Tìm chiều dài tại điểm cho trước

0
page 41

BÀI 10. CÁC MODULE THƯỜNG DÙNG

0
page 42

9.2. Tìm điểm theo chiều dài cho trước

1min
page 40

8.3. Bake

0
page 35

8.1. Các phản hồi từ rhino viewport

0
page 33

8.5. Quản lý tập tin

0
page 37

8.4. Đơn vị và dung sai

0
page 36

8.2. Liên kết sống

0
page 34

BÀI 6. DỮ LIỆU TRONG PARAMETER

3min
pages 24-27

BÀI 8. TƯƠNG TÁC GIỮA GRASSHOPPER – RHINO

0
page 32

BÀI 5. TẠO KẾT NỐI GIỮA CÁC ĐỐI TƯỢNG

2min
pages 22-23

3.5. Solution

0
page 13

3.3. View

0
page 11

BÀI 1. GRASSHOPPER LÀ GÌ ?

3min
pages 5-7

4.3. Specials

0
page 21

4.1. Parameter

2min
pages 16-18

3.4. Display

0
page 12

4.2. Component

1min
pages 19-20

BÀI 4. CÁC LOẠI MODULE TRONG GRASSHOPPER

1min
page 15
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.