Lập trình trong ProE

ME

Active Member
Author
Mới đây một cậu học trò của tôi, cũng là thành viên của diễn đàn này, có hỏi tôi rằng trong các phần mềm CAD/CAM có phần lập trình đại loại như Autolisp hay không. Lập trình Autolisp thì chắc nhiều người đã biết (nưng tôi thì chưa dùng nó bao giờ, bởi vì tôi chưa bao giờ cần đến nó cả). Nhiều phần mềm CAD/CAM quá mà tôi thì biết ít quá nhưng tôi vẫn tả lời câu hỏi đó được rằng ProE nó có phần lập trình (programming). Còn giống Autolisp hay không thì tôi chịu chết. Phần lập trình trong ProE đó chính là modul Pro/Program. Tôi có thó qua phần này vài lần cách đây cũng 3-4 năm gì rồi. Lâu quá nên không nhớ gì nữa. Tuy nhiên tiện đây tôi cũng tìm lại vài tài liệu từ internet để giới thiệu cho các bạn. Coi như là món quà Giáng sinh nhé.
 

ME

Active Member
Author
1. Giới thiệu
Pro/ENGINEER cung cấp lập trình đồ họa tương tác ở 2 mức khác nhau. Ở mức cao thì đó là lập trình C++ trong phần Pro/ENGINEER API Toolkit. Ở mức độ thấp hơn là môi trường lập tình micro trong Pro/E PROGRAM Tool. Các môi trường này đáp ứng cho các nhu cầu khác nhau. Lập trình trong Pro/E Program Tool thì dễ hơn nhiều so với lập trình trong Pro/E API Toolkit.
1.1 Pro/ENGINEER API Toolkit
Pro/ENGINEER API Toolkit cho phép người sử dụng mở rộng, tự động hóa, và tùy biến trong một phạm vi rộng của chức năng từ thiết kế đến chế tạo trong ProE.
Pro/ENGINEER API Toolkit bao gồm thư viện các hàm sau:
- Giao diện lập trình ứng dụng API -application-programming interface. Phần này được viết bằng ngôn ngữ lập trình C. Các hàm này được sử dụng tiêu biểu trong tổ chức MIS để tạo các ứng dụng chạy song song với Pro/ENGINEER và để tích hợp thông tin sản phẩm với hệ thống MRP/ERP tập thể của khác hàng.
- Các ứng dụng được sử dụng mở rộng bởi các công ty tham gia trong chương trình CSP của hãng PTC (PTC's Cooperative Software Partner) để to giao kết các sản phẩm quản trị thông tin thương mại của họ với modul Pro/INTRALINK.
Pro/ENGINEER API Toolkit cung cấp truy cập lập trình cho việc tạo, tích hợp và thao túng hầu hết các phương diện của mô hình kỹ thuật và quản trị dữ liệu của nó.
Bộ toolkit điển hình bao gồm:
- Tự động tạo các đối tượng phức tạp.
- Tự động sản sinh một số ứng dụng trong ProE như BOM, bản vẽ 2D, và các nguyên công chế tạo.
- Nâng cao chất lượng sản phẩm bằng cách thực hiện việc xác minh luật thiết kế dựa vào các thông số đầu vào từ hệ thống kiến thức bên ngoài.
Đặc biệt hơn, Pro/ENGINEER API Toolkit cho phép:
- Tùy biến hệ thống menu của Pro/ENGINEER-Foundation
- Tạo đối tượng chuẩn, đối tượng solid và đối tượng chế tạo (manufacturing feature).
- Lắp ráp.
- Tư động tạo bản vẽ 2D.
- Truy cập đến hình dáng của mô hình.
1.2 Pro/E Program Tool
Môi trường Pro/E Program hỗ trợ lập trình đồ họa tương tác một csacsh đơn giản và nhanh chóng cho người sử dụng. Môi trường lập trình là dạng ProE,NotePad hoặc word rất đơn giản.
Từ chế độ vẽ vật thể Pro/E PART hoặc chế độ lắp ráp ASSEMBLY, ta chỉ cần nhấp chuột vào Tools > Program… là vào phần lập trình PROGRAM. Sau đó có thể chọn Show Design hoặc Edit Design.
Thông thường Pro/E PROGRAM chứa:
- Biến đầu vào - Input variables.
- Các quan hệ -Relations.
- Mệnh đề IF-
IF-ELSE clauses.
- Danh sách các đối tượng và các vật thể.
- Các phát biểu INTERACT .
- Các phát biểu MASSPROP.
Sau khi chỉnh sửa chương trình, ProE sẽ hỏi rằng có hợp nhất các thay đổi hay không (ở cửa sổ bên dưới bàn hình của ProE). Khi đó nếu trả lời Y thì ProE sẽ thực hiện sự thay đổi (mà ta đã edit program) hoặc N thì ProE không thay đổi gì cả,mọi thay đổi sẽ bị mất.
 

ME

Active Member
Author
Một ví dụ về chương trình:
VERSION 3.0
REVNUM 161
LISTING FOR PART VIDU

INPUT
END INPUT

RELATIONS
END RELATIONS


ADD FEATURE 1
INTERNAL FEATURE ID 1


DATUM PLANE

NO. ELEMENT NAME INFO
--- ------------- -------------
1 Feature Name Defined
2 Constraints Defined
2.1 Constraint #1 Defined
2.1.1 Constr Type X Axis
3 Flip Datum Dir Defined
4 Fit Defined
4.1 Fit Type Default

NAME = RIGHT

FEATURE IS IN LAYER(S) :
01___PRT_ALL_DTM_PLN - OPERATION = SHOWN
01___PRT_DEF_DTM_PLN - OPERATION = SHOWN

END ADD


ADD FEATURE 2
INTERNAL FEATURE ID 3


DATUM PLANE

NO. ELEMENT NAME INFO
--- ------------- -------------
1 Feature Name Defined
2 Constraints Defined
2.1 Constraint #1 Defined
2.1.1 Constr Type Y Axis
3 Flip Datum Dir Defined
4 Fit Defined
4.1 Fit Type Default

NAME = TOP

FEATURE IS IN LAYER(S) :
01___PRT_ALL_DTM_PLN - OPERATION = SHOWN
01___PRT_DEF_DTM_PLN - OPERATION = SHOWN

END ADD


ADD FEATURE 3
INTERNAL FEATURE ID 5


DATUM PLANE

NO. ELEMENT NAME INFO
--- ------------- -------------
1 Feature Name Defined
2 Constraints Defined
2.1 Constraint #1 Defined
2.1.1 Constr Type Z Axis
3 Flip Datum Dir Defined
4 Fit Defined
4.1 Fit Type Default

NAME = FRONT

FEATURE IS IN LAYER(S) :
01___PRT_ALL_DTM_PLN - OPERATION = SHOWN
01___PRT_DEF_DTM_PLN - OPERATION = SHOWN

END ADD


ADD FEATURE 4
INTERNAL FEATURE ID 7
TYPE = COORDINATE SYSTEM
NAME = PRT_CSYS_DEF


FEATURE IS IN LAYER(S) :
05___PRT_ALL_DTM_CSYS - OPERATION = SHOWN
05___PRT_DEF_DTM_CSYS - OPERATION = SHOWN

END ADD


ADD FEATURE 5
INTERNAL FEATURE ID 39
PARENTS = 1(#1) 3(#2) 5(#3)


PROTRUSION: Extrude

NO. ELEMENT NAME INFO
--- ------------- -------------
1 Feature Name Defined
2 Extrude Feat type Solid
3 Material Add
4 Section Defined
4.1 Setup Plane Defined
4.1.1 Sketching Plane FRONT:F3(DATUM PLANE)
4.1.2 View Direction Side 1
4.1.3 Orientation Right
4.1.4 Reference RIGHT:F1(DATUM PLANE)
4.2 Sketch Defined
5 Feature Form Solid
6 Direction Side 2
7 Depth Defined
7.1 Side One Defined
7.1.1 Side One Depth None
7.2 Side Two Defined
7.2.1 Side Two Depth Variable
7.2.2 Value 3.00

SECTION NAME = S2D0001


FEATURE'S DIMENSIONS:
d0 = 3
d1 = 20
d2 = 10
d3 = 12
d4 = 6
END ADD


ADD FEATURE 6
INTERNAL FEATURE ID 74
PARENTS = 39(#5)


HOLE

NO. ELEMENT NAME INFO
--- ------------- -------------
1 Hole Defined
1.1 Hole Type Straight hole
1.2 Diameter 2.00
1.3 Depth Defined
1.3.1 Side One Defined
1.3.1.1 Side One Depth Thru All
1.3.2 Side Two Defined
1.3.2.1 Side Two Depth None
1.4 Flip Side 1
2 Placement Defined
2.1 Primary Reference Surf:F5(EXTRUDE_1)
2.2 Placement Type Linear
2.3 Linear Reference Edge:F5(EXTRUDE_1)
2.4 Align Option 1 Not Aligned
2.5 Distance 8.00
2.6 Linear Reference Edge:F5(EXTRUDE_1)
2.7 Align Option 2 Not Aligned
2.8 Distance 5.00
3 Feature Name Defined

PLACEMENT = LINEAR

FEATURE IS IN LAYER(S) :
02___PRT_ALL_AXES - OPERATION = SHOWN

FEATURE'S DIMENSIONS:
d5 = 2 Dia
d7 = 8
d8 = 5
END ADD

MASSPROP
END MASSPROP
 

ME

Active Member
Author
2. Chi tiết lập trình
Các thành phần điển hình của chương trình bao gồm:
a. Biến đầu vào
Định dạng của biến đầu vào như sau:
INPUT
Variable_Name Variable_Type
END INPUT
Phát biểu INPUT phải xác định tên và loại biến. Tên biến luôn bắt đầu với một chữ cái. Các kiểu biến sau được hỗ trợ:
-Number
-String: cho phép người dùng nhập thông số hoặc tên mô hình.
-Logical (YES_NO): nhập Y hoặc N.
Ví dụ:
INPUT
THICKNESS NUMBER
"Enter wall thickness for the cylinder"
END INPUT
b.Relations
Tất cả các quan hệ hợp lệ trong một mô hình Pro/ENGINEER có thể được nhập trong Pro/PROGRAM. Ví dụ:
d0 = d6 * 2
ở đây d0 và d6 là các tên kích thước.
c. IF-ELSE Clauses
Các mệnh đề điều kiện, ví dụ như IF _ ELSE, có thể được sử dụng để tạo ra một nhánh của chương trình. Ví dụ: ADD PROTRUSION.....
IF d1 > d2
ADD HOLE ...
END ADD
ENDIF
ADD CUT.....
END ADD
DO đó khi d1 nhỏ hơn d2, thì CUT được thêm vào thay vì một HOLE.
d. Danh sách các đối tượng và vật thể
Phần này liệt kê tất cả các đối tượng và vật thể được tạo trong mô hình, ví dụ:
ADD FEATURE (initial number 8)
INTERNAL FEATURE ID 106
PARENTS = 100(#7)
PROTRUSION: Extrude

NO. ELEMENT NAME INFO
--- ------------- -------------
1 Feature Name Defined
2 Extrude Feat type Solid
3 Material Add
4 Section Defined
4.1 Reference Sketch F7(SKETCH_2)
5 Feature Form Solid
6 Direction Side 2
7 Depth Defined
7.1 Side One Defined
7.1.1 Side One Depth None
7.2 Side Two Defined
7.2.1 Side Two Depth Variable
7.2.2 Value 70.00

SECTION NAME = Sketch 2

FEATURE'S DIMENSIONS:
d11 = 70.00
END ADD

Ngoài ra còn có INTERACT, MASSPROP, ....

..............................................
Vì không có nhiều thời gian nên tôi chỉ dịch thô nên chắc chắn có nhiều chỗ dịch chưa "thoát", gây khó hiểu. Các bạn có thể theo link sau để đọc phần nguyên bản:
http://www.me.uvic.ca/~mech410/Programming in ProE.pdf
 
H

hd_id912

Bài của anh ME hay quá, em cũng chỉ biết sơ qua về ProE/ Program Tool, còn về ProE/ API Toolkit là không biết gì, trước đấy em sang TQ thấy chúng nó cũng có nhiều sách về cái này nhưng toàn tiếng trung cả, ở Việt Nam mình không biết có chưa.
Xin bổ sung thêm mấy cái nữa trong ProE/Program:
Mệnh đề Execute:Chỉ dùng trong bản vẽ lắp, nó gần giống với mệnh ADD, nhưng ở đây các input variable là các Part hoặc các subassembly.
Cấu trúc:
EXECUTE {PART} name or variable
{ASSY }
input variable of design at next lower level = expression
input variable.....
END EXECUTE
Mệnh đề MASSPROP
cấu trúc:
MASSPROP
PART NAME
ASSEMBLY NAME
END MASSPROP
Khi lệnh này được thực hiện nó sẽ luôn cập nhận lại khối lượng sau mỗi lần hiệu chỉnh.
Mệnh đề INTERACT, cái này là Trình giữ chỗ(Placeholder) cho nhưng Part hoặc Assembly.
SUPPRESS-Để làm biến mất Part hoặc Assembly, thường đi sau ADD
ADD SUPPRESSED PROTRUSION
Tất nhiên là muôn Resume nó thì phải xóa cụm từ này đi.
 

ME

Active Member
Author
Cám ơn hd_id912 đã phụ với ME viết thêm!
Tài liệu tiếng Việt ở Vn về món này chưa có đâu. Các sách chỉ chú trọng vào các modul Modeling, Manuafacturing, Assembly, Drawing và Mold mà thôi.
Khi nào tôi rãnh sẽ viết thêm một vài ví dụ, làm nền tảng cho ai muốn tự học. hd_id912 nếu có thời gian thì nhào vô trước cũng được.
 

ME

Active Member
Author
Một ví dụ đơn giản cho Pro/pr
tool
1. Vẽ chi tiết tên VIDU như hình sau, hoặc load từ link của bài ở trên:


chú ý lỗ đường kính 2mm, cách mặt bên trái 5mm, cách đế 8mm.

2. Tool-Pr
design xuất hiện cửa sổ INFORMATION như sau:



3. Chọn Edit design, của sổ Notepad xuất hiện. Nhập vào giữa INPUT và END INPUT như sau:
INPUT
CORNER_CUT NUMBER
LENGTH NUMBER
END INPUT
Giữa RELATIONS và END RELATIONS

RELATIONS
D4=CORNER_CUT
D1=LENGTH
END RELATIONS

4. Luu file notepad rồi thoát ra
ProE hỏi:
Do you want to incorporate your changes into the model?
trả lời yes

Choose source of values for Pro/PROGRAM inputs for model VIDU.
Chọn Enter

Chọn cả 2 box trước CORNER_CUT và LENGTH rồi chọn Done Sel
Xuất hiện dòng nhắc: Enter new value for CORNER_CUT, nhập vào 10
Enter new value for LENGTH, nhập vào 25

Sẽ nhận được chi tiết như sau:
 

ME

Active Member
Author
Nếu muốn tạo ra một chi tiết khác với kích thước phần lẹm ngay góc vuông khác thì chúng ta vào:
Edit- Regenerate- chọn Enter rồi làm như trên.
 
H

hd_id912

Trong ví dụ trên của bác ME D4=6, D1=10? Em xin phép viết Program cho cái hole của bác:
Nhập vào giữa INPUT và END INPUT:
INPUT
PARAHOLE YES NO
"Do you want to insert hole:"
END INPUT
IF PARAHOLE==YES \*Đặt cái này trước đoạn code tạo ra lỗ.
ADD Feature..
....
END ADD
ELSE
" HOLE NOT HERE"
END IF.
sau đó Regenerate và save vào Part.
 

ME

Active Member
Author
Tốt lắm. Có kẻ tung người hứng như thế này thì hay quá. Tiếc là tớ chẳng có nhiều thời gian. Bởi tại cậu học trò hỏi nên mới "ra chiêu" thôi. Hay là chú hd_id912 thay mình làm tiếp mấy bài nữa đi?
 
H

hd_id912

Cám ơn anh Me, em sẽ cố gắng, tuy nhiên rất mong các bạn cùng tham gia vì mảng này em thấy ít người quá.
 

ME

Active Member
Author
Nói chính xác là cái khoản này còn it người biết (những thành viên của diễn đàn đấy). Coi như chúng ta làm cái móng rồi để họ tự xây. Biết đâu sau này, khi học giỏi rồi, thì họ mời mình đi nhậu thì sao.
 
H

hd_id912

:D :D, Lần trước em viết một bài về layout design, em đọc xong cũng chả hiểu về cái gì. hehe, dù sao cũng cám ơn anh ME.
 

ME

Active Member
Author
Có vẻ ít người quan tâm đến món này nhỉ. Chỉ có mình và hd_id912 thảo luận, kém khí thế quá.
 
T

thanhct

Cám ơn hai bác.
em đang tìm tài liệu về Pro/E TOOlKIT- API mà không tìm được.
May quá gặp các bác.
Chả là em đang chập chững học Pro/E nhưng lại phải đụng ngay vào cái món TOOLKIT này.
Các bác giúp em với nhé.
Công việc: phải thiết lập hệ thống thư viện tham số.
Và tạo ra một Interface riêng cho mình.
Các bác cứ giảng bài nhé, em chưa biết nhiều nền chỉ nghe thui.
Cám ơn các bác.
 
H

hd_id912

Nghe bạn nói mình cũng thấy việc chập chững học ProE thật hoành tráng quá. Thông thường học proE ban đầu chỉ là tạo Part và Asembly. ProE Toolkit-API đến tài liệu mình cũng chỉ được nhìn qua thôi, chưa đọc lần nào, hiện nay mình cũng đang sử dụng ứng dụng của Toolkit cho công việc thôi, chưa can thiệp được vào, cho mình hỏi thêm bạn một chút, hệ thống thư viện tham số của bạn yêu cầu là những tham số gì, và Interface riêng mà bạn đang dự định xây dựng bao gồm những mục gì? :p
 
Top