Macro Trong Catia

V
Bình luận: 0Lượt xem: 6,538

vinamech

Tài xế O-H
Các bạn nghịch Catia chắc có nghe nhắc đến khái niệm Automation Design (Thiết kế tự động). Theo cách đơn giản thì các bạn có thể hiểu là mình dùng các code (của các ngôn ngữ lập trình) để vẽ sản phẩm (Hặc là làm một công việc gì đó khác như mô phỏng hay lắp ghép…). Code ở đây có thể:

- Tự tay bạn viết.
- Tạo ra nhờ chức năng ghi Macro của Catia

Với khái niệm Automation Design, bạn đang đến với cái gọi là API.

Thực ra, phần mềm cung cấp khá đầy đủ các công cụ để bạn có thể xây dựng mô hình (hay làm một việc gì đó), vậy thì tại sao lại phải dùng các Code để vẽ làm gì. Vi dụ đơn giản thế này. Bạn đang làm việc cho một công ty thiết kế đồ gá và hàng ngày bạn phải vẽ rất nhiều các chốt tì khác nhau. Nếu trong thư viện của Catia có các chốt tì thì tốt nhưng thực tế là không có. Vậy là bạn phải vẽ từng cái với kích thước khác nhau. Như thế cũng được nhưng sẽ mất rất nhiều thời gian. Bây giờ bạn viết chương trình để tạo ra cái chốt tì, mỗi khi bạn thực hiện công việc thì bạn chỉ cần nhập một số kích thước cơ bản thế là phần mềm tự cho bạn 1 cái chốt tì như ý. Sẽ nhanh hơn rất nhiều công việc nhàm chán là cứ phải vẽ di vẽ lại.
Thực tế thì còn vô cùng nhiều những ứng dụng khác nữa.

Bài viết này mình xin giới thiệu những gì gọi là sơ khai của API trên Catia (Catia Automation) với mục đích duy nhất là giới thiệu cho các bạn, những người qua tâm biết thêm một mảng ứng dụng nữa và biết đâu, sau này nó sẽ là tiền đề để các bạn dấn thân và tạo ra những cái vĩ đại hơn (có thể lắm).

Để làm được như những gì mình sẽ làm dưới đây thì ngoài biết sử dụng cơ bản phần mềm Catia thì bạn phải biết thêm một chút về Visual Basic (VB) hay Visual Script (VBS). Mình sẽ làm trên VBS. Tuy nhiên nếu bạn chưa biết gì về VB hay VBS thì cũng không sao, cứ làm theo hướng dẫn phía dưới thì chăc chắn sẽ chạy ngon.

Trước khi vào nội dung chính, mình nói qua thế này. Chương trình của mình xây dựng một khối trụ tròn (có bán kính và chiều dài được nhập vào từ người vẽ). Sau đó mình sẽ chỉnh sủa chương trình để tạo thêm 1 cái lỗ. Chương trình này cũng được viết để bạn có thể chọn mặt phẳng vẽ phác khi thực hiện.

Mình thường thích mọi thứ cụ thể nên mình nói tóm tắt các công việc chính:

Phần 1: Ghi chương trình bằng Macro để tạo ra code khung.


Phần 2: Chỉnh sửa để thêm các tính năng khác như: Nhập số liệu từ bên ngoài, chọn mặt phẳng vẽ phác.


Phần 3: Tạo 1 thanh công cụ mới và công cụ mới để chạy chương trình. Có nghĩa là chúng ta sẽ tạo thêm 1 công cụ mới trên phần mềm Catia.

Chúng ta bắt đầu. Để không mắc phải lỗi khi chạy, các bạn làm đúng những hướng dẫn sau:

Phần 1: Ghi chương trình bằng Macro Recorder

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_002.jpg

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_005.jpg

Trong Macro Libraries bạn để nguyên như mặc định nhé. Tiếp tục

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_006.jpg
Chúng ta bắt đầu ghi Macro
Tạo một Part mới
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_007.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_008.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_009.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_010.jpg
Vậy là những gì chúng ta vừa làm đã được ghi lại rồi

Bây giờ chúng ta sẽ chạy lại. Catia sẽ chạy code và tự vẽ cho ta một chi tiết giống hệt ta vừa vẽ
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_011.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_012.jpg

http://hauionline.com/fcvn1/buttons/quote.gif
Phần 2: Sửa Code

Vậy là thao tác ghi Code đã xong. Giờ ta sẽ chế lại code một chút cho vui.

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_013.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_014.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_015.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_016.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_017.jpg

Bây giờ ta bắt đầu chế nhé


http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_018.jpg

Nếu làm vậy thì khi chạy, sẽ hiện ra cái này

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_019.jpg

Tiếp tục chỉnh sủa

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_020.jpg

Nều bạn chạy, nó hiện ra cái hộp để ta nhập kích thước

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_021.jpg

Tiếp tục chỉnh sủa nào

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_022.jpg

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_024.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_027.jpg

Toàn bộ vệc sủa đã xong, bây giờ bạn lưu lại, thoát rồi chạy chương trình để ngắm thành quả

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_028.jpg

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_029.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_030.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_031.jpg
http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_032.jpg

Bây giờ ta tiếp tục chỉnh sủa để thêm các chức năng mới. Ở đây là thêm cái lỗ cho khối trụ này

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_033.jpg

http://i552.photobucket.com/albums/jj340/vivalove911/Tuan_034.jpg

Và lưu lại rồi thử chạy xem nào

theo hauonline


---------- Post added at 09:08 AM ---------- Previous post was at 09:03 AM ----------










Bây giờ lại tiếp tục thêm chức nằng mới: Chọn mặt vẽ phác. Như lúc vẽ, ta chọn mặt XY để vẽ. Nhưng bây giờ ta sửa code để có thể chọn những mặt khác (Như ZX hay YZ chẳng hạn).



Kết quả đây










Phần 3: Tạo thanh công cụ mới và công cụ mới


Mối khi bạn chạy chương trình để tạo ra 1 chi tiết mới bạn phải vào Run để chạy. Bây giờ mình hướng dẫn bạn tạo ra nút công cụ để mỗi khi bạn Click vào nút này, chương trình sẽ chạy. Như vậy có nghĩa là ta đã tạo ra 1 công cụ mới.

Bạn click chuột phải vào 1 thanh công cụ để hiện ra cái menu và chọn như hình







Chúng ta thử lại nào:

---------- Post added at 09:10 AM ---------- Previous post was at 09:08 AM ----------








Đây chỉ là những gì cơ bản nhất. Nếu bạn thích và thấy có ích thì hoàn toàn có thể tự tìm hiểu. Mình nghĩ nếu bạn chăm chỉ thì chẳng mấy mà bạn sẽ làm được những thứ thật khó có thể tưởng tượng ra.

Đây là toàn bộ Code

Language="VBSCRIPT"

Sub CATMain()

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Msgbox "Chào mừng các bạn đến với 4CHaUI"

Dim partDocument1 As Document
Set partDocument1 = documents1.Add("Part")

Dim part1 As Part
Set part1 = partDocument1.Part

Dim BK as single 'BK có nghĩa là Bán kính
Dim CD as single 'CD có nghĩa là Chiều dài

BK = Inputbox ("Bạn hãy nhập bán kính")
CD = Inputbox ( "Bạn hãy nhập chiều dài")

Dim kieuchitiet as single
Dim BK2 as single
kieuchitiet = Inputbox ("Bạn có muốn tạo lỗ không? Nếu muốn hãy nhập 1, nếu không hãy nhập 0")
If kieuchitiet = 1 then
BK2 = Inputbox ("Hãy nhập bán kính lỗ")
Elseif kieuchitiet = 0 then
BK2 = 0
end if


Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("PartBody")

Dim sketches1 As Sketches
Set sketches1 = body1.Sketches

Dim originElements1 As OriginElements
Set originElements1 = part1.OriginElements

Dim reference1 As AnyObject

Select case inputbox ("Bạn hãy chọn mặt phẳng vẽ phác. Nhập XY hoặc YZ hặc ZX bằng chữ hoa")

Case "XY"

Set reference1 = originElements1.PlaneXY

Case "YZ"

Set reference1 = originElements1.PlaneYZ

Case "ZX"

Set reference1 = originElements1.PlaneZX

End select

Dim sketch1 As Sketch
Set sketch1 = sketches1.Add(reference1)

part1.InWorkObject = sketch1

Dim factory2D1 As Factory2D
Set factory2D1 = sketch1.OpenEdition()

Dim geometricElements1 As GeometricElements
Set geometricElements1 = sketch1.GeometricElements

Dim axis2D1 As GeometricElement
Set axis2D1 = geometricElements1.Item("AbsoluteAxis")

Dim line2D1 As CATBaseDispatch
Set line2D1 = axis2D1.GetItem("HDirection")

line2D1.ReportName = 1

Dim line2D2 As CATBaseDispatch
Set line2D2 = axis2D1.GetItem("VDirection")

line2D2.ReportName = 2

Dim circle2D1 As Circle2D

Set circle2D1 = factory2D1.CreateClosedCircle(0.000000, 0.000000, BK)

Set circle2D2 = factory2D1.CreateClosedCircle(0.000000, 0.000000, BK2)

Dim point2D1 As CATBaseDispatch
Set point2D1 = axis2D1.GetItem("Origin")

circle2D1.CenterPoint = point2D1

circle2D1.ReportName = 3

sketch1.CloseEdition

part1.InWorkObject = body1

part1.Update

part1.InWorkObject = body1

Dim shapeFactory1 As Factory
Set shapeFactory1 = part1.ShapeFactory

Dim pad1 As Pad
Set pad1 = shapeFactory1.AddNewPad(sketch1, CD)

part1.Update

End Sub

toàn bộ nguồn bài viết theo bùi quy tan diễn đàn hauionline
 

Bạn hãy đăng nhập hoặc đăng ký để phản hồi tại đây nhé.

Bên trên