top of page

PML Cơ Bản (Phần 1)

Updated: Jan 14, 2021

1. PML là gì?

PML (Programmable Macro Language) là một loại ngôn ngữ lập trình dành riêng cho PDMS/E3D. PML là một công cụ cực kì hữu ích giúp tăng hiệu suất, giải quyết các công việc lập đi lặp lại và có thể áp dụng trong mọi module từ Admin/Design/Draft/Paragon.. trong môi trường PDMS/E3D.

PML Cơ Bản

Thời điểm hiện tại PML đã phát triển đến version 2 hay PML2. Trong phạm vi bài viết này, mình muốn tập trung vào PML1 và đây sẽ là nền tảng cơ bản cho những bạn muốn tìm hiểu về PML. Tuy nhiên các bạn cũng cần lưu ý, trong thực tế không có sự phân biệt quá rõ ràng giữa hai vesion PML kể trên, ta có thể kết hợp cả PML1 và PML2 miễn là có thể đáp ứng được nhu cầu của các bạn.

2. Cách lưu trữ file PML

Một cách đơn giản nhất ta có thể gõ từng dòng lệnh trong cửa sổ Command window của PDMS/E3D, tuy nhiên cách này có một khuyết điểm là chỉ sử dụng được các dòng lệnh đơn, không thể sử dụng các cấu trúc Do, if, và handle trong cửa sổ command.

Cách thứ hai là lưu trữ các dòng lệnh liên tiếp trong file macro (.mac). Với cách này chúng ta có thể dễ dàng gọi file macro bằng cách gõ câu lệnh $M/%PATHNAME%\xxx.mac với %PATHNAME% là folder chưa file macro, xxx.mac là tên file.

Ví dụ mình có một file macro tên Helloworld.mac lưu trong ổ D. Mình sẽ gọi file này bằng câu lệnh:

$M /D:\Hello.mac

Goi File Macro

Ngoài file .mac, còn các loại file lưu trữ khác Functions (.pmlfnc), objects (.pmlobj) and Forms(.pmlfrm) mình sẽ giới thiệu ở những bài sau nhé.

Với tất cả các file trên các bạn có thể dễ dàng chỉnh sửa, tạo mới bằng các chương trình text edit như notepad, notepad++ hoặc PML Studio…

3. Biến trong PML

Biến dùng để lưu giá trị tạm thời trên bộ nhớ ram.

Với PML1 dùng lệnh Var để khởi tạo, gán giá trị cho biến. Và biến trong PML1 chỉ chứa dạng chuỗi.

Với PML2 có nhiều loại biến như sau:

• STRING – chuỗi kí tự, trong PDMS chuỗi được giới hạn trong cập dấu ‘….’ Hoặc |…| • REAL – chứa giá trị số • ARRAY – mảng, chứa các giá trị cùng loại.(một chiều hoặc nhiều chiều)

• BOOLEAN – biến luận lý (logic) chỉ chứa hai giá trị true/false.

• ANY – biến loại này có thể chứa giá trị bất kỳ.

Trong PML tên biến không phân biệt chữ hoa hoặc chữ thường và không cần khai báo biến trước khi sử dụng. Tên biến bắt buộc bắt đầu bằng ! hoặc !! và không chứa các ký tự đặc biệt khác.

Ký tự ! hoặc !! giúp phân biệt giữa biến cục bộ (Local) và biến toàn cục (Gobal). Biến cục bộ (bắt đầu bằng !) là biến chỉ sử dụng trong phạn vi file macro của bạn, biến toàn cục (bắt đầu bằng !!) có thể truy xuất trong bất kỳ file macro nào đang chạy trong phiên làm việc hiện hành.

Ta có thể dễ dàng gán giá trị cho biến bằng lệnh var (PML1) hoặc dấu = (PML2)

Ví dụ:

1) Gán chuỗi ‘Toi la Happy’ cho biến A ta có hai cách:

Var !a ‘Toi la Happy’

Như đã nói ở trên lệnh var chỉ dùng để gán giá trị dạng chuỗi cho biến.

Hoặc:

!a = ‘Toi la Happy’

2) Gán biến !b giá trị 2

!b = 2

Ta cũng hoàn toàn có thể tạo ra một biến rỗng bằng lệnh:

!array = array()

!string = string()

4. Toán tử và biểu thức:

Toán tử là công cụ dùng để thao tác dữ liệu. Một toán tử là một ký hiệu dùng để đại diện cho một thao tác cụ thể nào đó được thực hiện trên dữ liệu. PML định nghĩa một số loại toán tử:

+ Toán tử gán: var =

Ở phần trên ta được giới thiệu dùng var hoặc = để tạo một biến mới. Thực chất là ta đang gán một giá trị cho biến đó. Phía sau toán tử gán có thể là một giá trị hoặc biểu thức hoặc hàm.

+ Toán tử số học: + - * /

PML cũng có các toán tử cơ bản : cộng trừ nhân chia. Nhưng không có toán tử chia lấy nguyên và chia lấy phần dư.

+ Toán tử luận lý(toán tử logic): NOT AND OR

Toán tử luận lý AND OR rất thường được sử dụng trong câu lệnh If. Cụ thể:

AND: Biểu thức AND có 2 toán hạng và trả về giá trị true nếu cả hai toán hạng đều chứa giá trị true.

OR: Trả về giá trị true nếu một trong hai toán hạng chứa giá trị true.

NOT: Biểu thức chỉ có một toán hạng, trả về giá trị đảo của toán hạng

+ Toán tử so sánh: GT LT EQ NEQ

Toán tử so sánh trả về một giá trị luận lý (true hoặc false) áp dụng được cho tất cả cái loại biến. Ý nghĩa của các toán tử so sánh:

GT: GreatThan_so sánh hơn

LT: LessThan_so sánh kém

EQ: Equal_so sánh bằng

NEQ: Not Equal_so sánh không bằng

Ví du:

!a = 1

!b = 2

!c = !a LT !b

Như câu lệnh trên, biến !c sẽ nhận được giá trị True vì 1 < 2.

+ Toán hàm: SIN COS TAN SQR(căn bậc hai) POW(lũy thừa) NEGATE ASIN ACOS ATAN LOG ALOG ABS INT NINT

Một sô ví dụ:

!s = 30 * sin(45)

!t = pow(20,2) (Gán !t bằng lũy thừa 2 của 20)

INT và NINT:

!a = 1.6

!b = int(!a) (Lúc này !b được gán giá trị số nguyên của biến !a nhưng không làm tròn, vậy !b sẽ nhận giá trị 1)

!c = nint(!a) (Lúc này !b được gán giá trị số nguyên của biến !a và được làm tròn, vậy !c sẽ nhận giá trị 2)

+ Dùng lệnh query <Q> để xem giá trị của biến.

Ví dụ để xem giá trị của biến !a ta dùng lệnh:

Q var !a

Để tìm hiểu rõ hơn về biến các bạn có thể tìm đọc tài liệu Software Customization Guide và Software Customization Reference Manual đi cùng với phần mềm PDMS.


Như vậy các bạn và Happy đã hoàn thành phần đầu tiên trong loạt bài PML cơ bản. Nếu có bất cứ thắc mắc thì đừng ngần ngại để lại comment để Happy có thể trợ giúp các bạn nha. Và đừng quên ghé lại web vào thứ 7 mỗi tuần để đón đọc những bài tiếp theo trong loạt bài PML cơ bản, cũng như hàng loạt bài viết hấp dẫn, hữu ích tiếp theo nhé!! Chúc các bạn cuối tuần vui vẻ.

bottom of page