• Trang Chủ
  • Kiến Trúc
  • Nội Thất
  • Đồ Họa
  • Phần Mềm
  • Tài Liệu
  • Giải Trí
  • Khác
No Result
View All Result
  • Trang Chủ
  • Kiến Trúc
  • Nội Thất
  • Đồ Họa
  • Phần Mềm
  • Tài Liệu
  • Giải Trí
  • Khác
No Result
View All Result
Đặng Tiến Dũng
No Result
View All Result

MAXScript cơ bản cho người mới – phần 8

08/05/2024
in Phần Mềm
Reading Time: 10 mins read

Trong phần này, chúng ta sẽ học về String. Đây là kiểu dữ liệu được sử dụng để lưu xâu ký tự trong MAXScript. Thực ra, ngay từ phần 1 trong chuỗi bài viết này, chúng ta đã làm quen với String. Bạn còn nhớ câu lệnh đầu tiên mà chúng ta đã viết trong Mini Listener chứ?

messageBox "Hello world!"

Ở câu lệnh trên, “Hello world” chính là một String. Không chỉ dùng cho các thành phần giao diện và thông báo, đôi lúc String cũng có thể được sử dụng cho các thuật toán chạy ngầm trong MAXScript. Dưới đây, tôi sẽ trình bày những thuộc tính cơ bản nhất của String. Trong bài sau, chúng ta sẽ ứng dụng nó để tạo ra một script chuyên dùng để đổi tên hàng loạt các vật thể đang được chọn hoặc trong cả scene 3ds Max hiện tại. Hãy cùng bắt đầu.

MỤC LỤC

  • Lý thuyết chung
    • Properties (thuộc tính)
    • Operators (xử lý dữ liệu)
    • Methods (phương pháp)
      • Execute
      • findString
      • filterString
      • substring
      • replace
      • toUpper và toLower
  • Bài tập thực hành
    • Bài tập số 1
    • Bài tập số 2

Lý thuyết chung

Có hai cách để khai báo một String. Cách đầu tiên, như ví dụ trên, là đặt trực tiếp một chuỗi ký tự vào trong hai dấu ngoặc kép. Lưu ý, chuỗi ký tự sẽ chuyển màu khi được đặt trong dấu ngoặc kép. Nếu bạn không thấy nó chuyển màu, có thể bạn đã viết thiếu dấu ngoặc kép, hoặc thừa ký tự bên ngoài dấu ngoặc kép. Ví dụ, lệnh messageBox sẽ chỉ nhận dữ liệu nhập vào là String, ta có thể thử như sau:

messageBox "Đây là một chuỗi ký tự" --> 3ds Max hiện thông báo "Đây là một chuỗi string".
messageBox "Đây là một chuỗi" ký tự --> 3ds Max báo lỗi ở chữ "ký tự".

Cách thứ hai là dùng cú pháp <giá trị> as string để chuyển một giá trị bất kỳ thành string. Khi được viết kết hợp cùng các lệnh khác, bạn phải để cú pháp này trong dấu ngoặc đơn, để tránh việc 3ds Max chỉ đọc <giá trị> và báo lỗi. Ví dụ như sau:

a = 5 as string
b = 5

messageBox a --> 3ds Max hiện thông báo "5".
messageBox b --> 3ds Max báo lỗi vì b là một số nguyên.
messageBox 5 as string --> 3ds Max báo lỗi vì nó chỉ đọc giá trị 5.
messageBox (5 as string) --> 3ds Max hiện thông báo "5".

Properties (thuộc tính)

String chỉ có một thuộc tính duy nhất, đó là count. Nó dùng để đếm số ký tự của String. Hãy nhập các lệnh sau vào MAXScript Listener:

"Hello world".count --> 3ds Max trả về kết quả "11".
s = "Day la mot string." --> Gán giá trị cho biến s.
s.count --> 3ds Max trả về kết quả "18".

Lưu ý rằng thuộc tính count là thứ chỉ đọc (read-only). Tức là bạn sẽ không thể thay đổi trực tiếp độ dài của string thông qua thuộc tính này.

Operators (xử lý dữ liệu)

Bạn có thể gộp 2 string bằng cách dùng dấu “+”. Ví dụ:

messageBox ("Day" + "la" + "mot" + "string") --> 3ds Max hiện thông báo "Daylamotstring".

Bạn cũng có thể so sánh 2 string bằng các dấu toán học == (bằng nhau), != (khác nhau), > (lớn hơn), < (nhỏ hơn), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng). Kết quả trả về sẽ là true (đúng) hoặc false (sai). Ví dụ:

"Tien" == "Tien" --> 3ds Max trả về kết quả true (đúng).
"Tien" <= "D" --> 3ds Max trả về kết quả false (sai).
"Tien" != "Dung" --> 3ds Max trả về kết quả true (đúng).

Để đọc hoặc ghi một ký tự thứ n trong string, chúng ta dùng cú pháp <string>[n]. Ví dụ:

s = "Dang Tien Dung" --> gán string cho biến s.
messageBox s[1] --> 3ds Max hiện thông báo "D", là ký tự thứ 1 trong s.
messageBox s[3] --> 3ds Max hiện thông báo "n", là ký tự thứ 3 trong s.
messageBox s[s.count] --> 3ds Max hiện thông báo "g", là ký tự cuối cùng trong s.

s[5] = "_" --> thay ký tự thứ 5 bằng dấu gạch dưới.
s[10] = "_" --> thay ký tự thứ 10 bằng dấu gạch dưới.

messageBox s --> 3ds Max hiện thông báo "Dang_Tien_Dung"

Ở trên, chúng ta có thể chuyển bất kỳ một giá trị gì thành string bằng lệnh as string, thì chiều ngược lại cũng khả thi. Ví dụ:

s = "123.45" --> gán string cho biến s.
n = s as float --> 3ds Max trả về giá trị số 123.45.
n = s as integer --> 3ds Max trả về giá trị số nguyên 123.
n = s as array --> 3ds Max báo lỗi, vì không thể chuyển "123.45" thành array.

Methods (phương pháp)

Ở đây, tôi sẽ liệt kê các method hay được sử dụng nhất của string. Các method nâng cao hơn, bạn có thể đọc trong tài liệu dành cho nhà phát triển của 3ds Max tại đây.

Execute

Excute dùng để thực thi những nội dung trong dấu ngoặc kép của string. Ví dụ, nếu viết execute “2+2”, nó sẽ tương ứng với viết trực tiếp 2+2 không có dấu ngoặc kép, và 3ds Max sẽ trả về kết quả là 4. Ví dụ khác:

-- công thức: execute s --> thực thi string trong s.

f = "Không có việc gì khó!"
s = "messageBox f"
messageBox s --> 3ds Max hiện thông báo "messageBox f".
execute s --> 3ds Max hiện thông báo "Không có việc gì khó!".

findString

Tìm kiếm vị trí bắt đầu của một chuỗi ký tự trong string.

 -- công thức: findString s <ký_tự_đầu_vào> --> tìm vị trí bắt đầu của <ký_tự_đầu_vào> trong s.

s = "Toi hoc 3ds Max!" 
findString s "3ds" --> tìm vị trí bắt đầu của "3ds" trong s, kết quả là 9.
findString s "khac" --> tìm vị trí bắt đầu của "khac" trong, kết quả là undefined (không xác dịnh).

filterString

Tách string đầu vào thành một array chứa các string con.

-- công thức: filterString s <token_string> --> tách s bằng các ký tự trong <token_string>.

s = "Toi hoc 3ds Max!" 
filterString s " " --> tách s bằng token dấu cách (" "), kết quả trả về là array #("Toi","hoc","3ds","Max").

Với array trả về, bạn có thể dùng các kiến thức trong bài 7 để xử lý nó.

substring

Trích một chuỗi ký tự trong string đầu vào.

-- công thức: subString s x y --> trích các ký tự trong s bắt đầu từ ký tự thứ x, kéo dài y ký tự.
-- nếu y > s.count hoặc y < 0 thì trích toàn bộ các ký tự còn lại bắt đầu từ ký tự thứ x.

s ="Toi hoc 3ds Max!"
ss = substring s 1 3 --> kết quả trả về "Toi"
ss = substring s 4 -1 --> kết quả trả về "hoc 3ds Max!"
ss = substring s 5 100 --> kết quả trả về "hoc 3ds Max!"

replace

Tương tự substring, nhưng là thay thế một chuỗi ký tự trong string đầu vào.

-- công thức: replace s x y ss --> thay thế các ký tự trong s bắt đầu từ ký tự thứ x, kéo dài y ký tự bằng ss.

s ="Toi hoc 3ds Max!"
ss = replace s 1 3 "Ban" --> kết quả trả về "Ban hoc 3ds Max!"

toUpper và toLower

In hoa hoặc in thước ký tự đầu vào.

-- công thức: toUpper s --> in hoa string s.
-- công thức: toLower s --> in thuong string s.

s = "Toi hoc 3ds Max!"
s1 = toUpper s --> kết quả trả về "TOI HOC 3DS MAX!"
s2 = toLower s --> kết quả trả về "toi hoc 3ds max!"

Bài tập thực hành

Kết thúc phần này, như thường lệ, chúng ta sẽ có một số bài tập nho nhỏ để thực hành ứng dụng. Lưu ý: hãy cố gắng giải bài tập trước khi xem lời giải. Dùng chuột bôi đen phần phía dưới mỗi đề bài để thấy đáp án. Nếu có thể, hãy thử nghĩ ra một cách giải khác.

Bài tập số 1

Cho array test = #(“Box001”, “Box002”, “TestBox”, “Boxxxx”, “TheBox”, “Bo_x_Box”). Mỗi phần tử trong Array đều chứa 1 chuỗi “Box”. Hãy viết một script để tự động thay thế “Box” thành “KhoiHop”, sau đó trả hiển thị thông báo trên màn hình 3ds Max. Gợi ý: sử dụng findString, replaceString và kiến thức đã học được về vòng lặp trong phần 6 và Array trong phần 7.

test = #("Box001", "Box002", "TestBox", "Box Box Box", "TheBox", "Bo_x_Box")

for i = 1 to test.count do
(
  k = findString test[i] "Box"
  test[i] = replace test[i] k 3 "KhoiHop"
)

messageBox (test as string) 

--> #("KhoiHop001", "KhoiHop002", "TestKhoiHop", "KhoiHop Box Box", "TheKhoiHop", "Bo_x_KhoiHop")

Bài tập số 2

Cho string s = “Hoc MAXScript that la thu vi!”. Hãy viết script để thay thế tất cả dấu cách trong string này thành dấu gạch dưới. Sau đó hiện thông báo trên màn hình. Gợi ý: sử dụng filterString và kiến thức đã học được về vòng lặp trong phần 6 và Array trong phần 7.

s = "Hoc MAXScript that la thu vi !"

arr = filterString s " " --> arr sẽ có giá trị là #("Hoc","MAXScript","that","la","thu","vi","!")
new_s = arr[1] --> tạo một string có giá trị là "Hoc".
for i = 2 to arr.count do new_s += ("_" + arr[i])
messageBox new_s

---> "Hoc_MAXScript_that_la_thu_vi_!"

Trong bài sau, bằng cách sử dụng String, chúng ta sẽ thực hành viết một macroScript dùng để đổi tên hàng loạt các vật thể đang được chọn. Hẹn gặp các bạn ở phần tiếp theo!

 

Bài Viết Liên Quan

Hướng dẫn plugin Board Tools
Phần Mềm

Hướng dẫn plugin Board Tools

17/10/2025
1.5k
Thư viện SketchUp Trung Quốc
Phần Mềm

Thư viện SketchUp Trung Quốc

17/06/2025
1k
Vì sao SketchUp lại thích hợp cho concept?
Phần Mềm

Vì sao SketchUp lại thích hợp cho concept?

20/05/2025
441

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Hướng dẫn plugin Board Tools

Hướng dẫn plugin Board Tools

17/10/2025
1.5k
Phá Thiên Chùy

Phá Thiên Chùy

16/09/2025
82
Thư viện SketchUp Trung Quốc

Thư viện SketchUp Trung Quốc

17/06/2025
1k
Phác thảo và vẽ tay

Phác thảo và vẽ tay

10/06/2025
249
Khoe hợp đồng

Khoe hợp đồng

30/05/2025
242
Luyện vẽ

Luyện vẽ

29/05/2025
187

Nhiều lượt xem

Tổng hợp lisp nhỏ cho AutoCAD

Tổng hợp lisp nhỏ cho AutoCAD

17/05/2024
19.8k
Tổng hợp script nhỏ cho 3ds Max

Tổng hợp script nhỏ cho 3ds Max

27/02/2024
7.7k
Hiệu ứng phác thảo cho bản vẽ AutoCAD

Hiệu ứng phác thảo cho bản vẽ AutoCAD

19/03/2024
5k
Khắc phục lỗi AutoCAD bị treo khi sửa chữ

Khắc phục lỗi AutoCAD bị treo khi sửa chữ

15/02/2024
4.7k
7 plugin SketchUp của Curic mà tôi thường sử dụng

7 plugin SketchUp của Curic mà tôi thường sử dụng

27/11/2023
4.3k

Mới chỉnh sửa

Hướng dẫn plugin Board Tools

Hướng dẫn plugin Board Tools

17/10/2025
1.5k
Khắc phục lỗi AutoCAD bị treo khi sửa chữ

Khắc phục lỗi AutoCAD bị treo khi sửa chữ

15/02/2024
4.7k
Phá Thiên Chùy

Phá Thiên Chùy

16/09/2025
82
Thư viện SketchUp Trung Quốc

Thư viện SketchUp Trung Quốc

17/06/2025
1k
Tổng hợp thông tin về các script & plugin trên d95design.com

Tổng hợp thông tin về các script & plugin trên d95design.com

20/09/2024
3.3k

Bài ngẫu nhiên

Les cotes de niveau

Les cotes de niveau

17/04/2024
364
Các cách khắc phục lỗi 3ds Max không lưu cài đặt người dùng

Các cách khắc phục lỗi 3ds Max không lưu cài đặt người dùng

10/01/2024
471
Xử lý lỗi ‘File Open Failed’ trong 3ds Max

Xử lý lỗi ‘File Open Failed’ trong 3ds Max

03/08/2024
2.1k
MAXScript cơ bản cho người mới – phần 1

MAXScript cơ bản cho người mới – phần 13

19/09/2024
316
Phác thảo và vẽ tay

Phác thảo và vẽ tay

10/06/2025
249

Bài mới nhất

Hướng dẫn plugin Board Tools

Hướng dẫn plugin Board Tools

17/10/2025
1.5k
Phá Thiên Chùy

Phá Thiên Chùy

16/09/2025
82
Thư viện SketchUp Trung Quốc

Thư viện SketchUp Trung Quốc

17/06/2025
1k
Phác thảo và vẽ tay

Phác thảo và vẽ tay

10/06/2025
249
Khoe hợp đồng

Khoe hợp đồng

30/05/2025
242
  • Giới thiệu
  • Cửa hàng
  • Facebook
  • Youtube
  • Liên hệ

Tổng số lượt truy cập: 85588  |  Hôm nay: 53  |  Hôm qua: 95

No Result
View All Result
  • Kiến Trúc
  • Nội Thất
  • Đồ Họa
  • Phần Mềm
  • Tài Liệu
  • Khác

Tổng số lượt truy cập: 85588  |  Hôm nay: 53  |  Hôm qua: 95