MỤC LỤC
X Chuyển động theo hớng trục X Y Chuyển động theo hớng trục Y Z Chuyển động theo hớng trục Z G00 Chạy dao nhanh tới toạ độ lập trình G01 Nội suy đờng thẳng. G17 Chọn mặt phẳng gia công XY G18 Chọn mặt phẳng gia công XZ G19 Chọn mặt phẳng gia công YZ G33 Cắt ren có bớc không đổi G34 Cắt ren có bớc tăng dần G35 Cắt ren có bớc giảm dần. Bộ nội suy của hệ điều khiển dùng để tính toán các điểm trung gian trên quỹ đạo gia công, nó là cụm phần mềm để cộng liên tục các giá trị tọa độ của điểm xuất phát.
G01: Dụng cụ cắt dịch chuển từ điểm hiện tại của nó tới một điểm tiếp theo đã đợc lập trình trên một đờng thẳng với lợng chạy dao gia công đã đợc lập trình.
Bộ hàm hạt nhân (Có tiền tố GL) cho phép thiết kế các hình dạng khác nhau, tạo nên hiệu ứng chiếu sáng, hiệu ứng quan sát , thực hiện biến đổi ma trËn. Bộ hàm WGL có tác dụng kết nối OPenGL với WINNT cho phép ngời lập trình xây dựng và chọn lựa các ngữ cảnh biểu diễn, tạo các bitmap font các hàm này chỉ dùng trên WINNT. Mọi chơng trình trên Windows đều phải sử dụng ngữ cảnh dụng cụ (DC Device context), Đây là cấu trúc dữ liệu chứa thông tin về cách mà dữ.
Ngữ cảnh dụng cụ xác định màu sắc bút vẽ kiểu màu, nội dung bảng màu, kiểu mapping (kiểu thể hiện các phần tử của không gian tọa độ nguồn nên không gian tọa độ đích), và các thuộc tính khác mà Windows cần biết để thể hiện thông tin đồ họa. Toàn bộ lệnh OpenGL đều phải qua ngữ cảnh biểu diễn, mọi tiến trình gọi tới OpenGL đều phải có một ngữ cảnh biểu diễn hiện hành. WglGetCurrentContext () Trả handle về ngữ cảnh biểu diễn hiện hành WglGetCurrentDC () Lấy handle của ngữ cảnh dụng cụ liên kết.
Những thuộc tính đó bao gồm: bề mặt vẽ sử dụng chế độ màu RGBA hay index color, vùng đệm điểm ảnh đợc sử dụng là đơn hay kép, số lợng bít màu, số lợng bít. (2) Tạo ngữ cảnh tô vẽ bẳng thông điệp WM_CREATE, nhng chỉ cho hiện hành khi cần vẽ bằng OpenGL và bỏ hiện hành ngay sau khi vẽ xong. Ưu điểm của phơng pháp thứ nhất là chỉ cần cho ngữ cảnh tô vẽ hiện hành một lần bởi vì cho hiện hành ngữ cảnh tô vẽ phải mất khá nhiều thời gian để xử lý nó cho phép chơng trình đáp ứng thông điệp WM_PAINT nhanh hơn một chút.Nhng nhợc điểm của phơng pháp này là phải luôn giữ.
Màu sắc của các đối tợng vẽ trong môi trờng OPENGL phải đợc lựa chọn và khởi tạo trớc khi vẽ đối tợng, do OPENGL là một tập hợp các bộ lệnh đồ họa nên khi lập trình chuyên sâu chúng ta nên xây dựng các hàm trong đó chứa các tập hợp lệnh khởi tạo màu sắc ánh sáng hay vật liệu cho. Bộ đệm màu (đợc biểu thị bởi cờ GL_COLOR_BUFFER_BIT là vùng bộ nhớ chứa hình ảnh sẽ đợc hiển thị trên màn hình màn hình. Việc xây dựng đối tợng 3D từ các đa giác tơng tự nh gắn các mẫu giấy có hình dạng khác nhau (đa giác) thành các vật thể 3D.
Một khung nhìn xác định cách mà một đối tợng đợc chiếu lên màn hình và nó xác định đối tợng hay một phần đối tợng bị cắt.
Mỗi mảng này chứa các giá trị RGBA cho một kiểu phản xạ ánh sáng riêng biệt, đó là các giá trị RGBA tơng ứng với màu sắc ánh sáng dội ra từ vật liệu đối tợng. Mảng materialAmbient[] định nghĩa vật liệu phản xạ 70% màu xanh lục trong ánh sáng môi trờng khuyếch tán mà nó nhận đợc, nhng không phản xạ màu đỏ và xanh dơng. Các đối số hàm glMaterialfv() gồm một hằng xác định bề mặt đa giác mà ta muốn định nghĩa vật liệu, một hằng định nghĩa tính chất vật liệu, và con trỏ đến mảng chứa giá trị dùng thiết lập tính chất vật liệu;.
Các đối số hàm glMaterialf() gồm một hằng xác định bề mặt đa giác cần định nghĩa vật liệu, hằng GL_SHININESS (chỉ dùng trong trờng hợp này), và một giá trị trong khoảng từ 0 đến 128 định nghĩa độ bóng. Cũng nh mọi nguồn sáng Open GL khác, cùng với việc định nghĩa đèn chiếu, ta đồng thời phải tạo cho nó một góc cắt cho chùm tia, định nghĩa vị trí và hớng của nguồn. Khi một đối tợng đợc pha trộn chồng lên đối tợng khác thì có thể nhìn xuyên qua đối tợng đợc bao phủ do màu của đối tợng nguồn kết hợp với màu của pixel đợc bao phủ tạo ra màu mới.
Việc thiết lập thuộc tính chỉ đọc cho bộ đệm chiều sâu ngăn trở Open GL thay đổi nội dung bộ đệm này khi vẽ các đối tợng trong mờ, và nh vậy Open GL không thể xóa bỏ các đối tợng bị khuất mà ta muốn thấy xuyên qua các đối tợng trong mờ. Đối số thứ hai xác định lời gợi ý, có thể là GL_DONT_CARE (cho phép Open GL thực hiện tùy ý) hay GLFASTEST (Open GL thực hiện phơng thức nhanh nhất) hay GL_NICESST (OpenGL thực hiện phơng thức chính xác nhÊt). Tuy nhiên do tính không thể thay đổi tập lệnh nên đối với việc tạo ra các đối tợng RealTime thì việc dùng DisPlayList phải hết sức khéo léo thì mới tận dụng đợc tính năng mạnh của DisplayList.
Trong đồ án sử dụng DisplayList trong việc vẽ các đối tợng theo từng modul(Ví dụ: mỗi dao cắt đợc biên dịch vẽ một lần rồi lu trong bộ nhớ, khi dùng chỉ việc gọi dao tơng ứng với chỉ số ta đã đặt trớc). Display list đợc thực thi bằng glCallList (Gluint list), có thể gọi glCallList (Gluint list) ở bất cứ nơi nào trong chơng trình miễn là Open GL context truy cập display list tích cực.
Thực hiện khởi tạo môi trờng OpenGL bên trong các hàm của đối tợng ta cũng phải khởi tạo ngữ cảnh thiết bị(DC) và ngữ cảnh hiển thị (RC) nh đã trình bày ở trên. Các sự kiện này khi đợc xử lý sẽ đảm bảo cho đối tợng OpenGlInit tự bản thân đã mang đầy đủ các tính năng xử lý sự kiện tạo ra sự trong suốt đối với ngời sử dụng OpenGlInit. Đoạn mã trên thực hiện khởi tạo một cửa sổ đồ họa tại vị trí do ngời sử dụng truyền vào ở đây là CRect(10,5,650,300) chỉ với dòng lệnh ngắn này chúng ta đã xong việc khởi tạo toàn bộ môi trờng đồ họa OpenGL phục vụ cho việc hiển thị các đối tợng OpenGL vẽ trên khung cửa sổ ta vừa tạo ra.
Ngoài việc khởi tạo xong môi trờng ta cũng có ngay các thao tác xử lý sự kiện chuột, bàn phím mà ngời sử dụng không phải thao tác gì thêm ngaòi dòng lệnh trên vì tất cả các công việc khởi tạo xử lý đều đợc đóng gói trong. Xây dựng các đối t ợng hình học bằng tính toán hình học Sau khi khởi tạo xong đối tợng OpenGlInit chúng ta xây dựng các hàm tính tọa độ cung cấp cho OpenGl render lên thành đối tợng 3D. Hàm vẽ có năm tham số trong đó bốn tham số đầu quan trọng, chỉ với việc truyền các giá trị khác nhau cho các tham số ta có thể tạo ra các hình solid khác nhau vì bản thân đối tợng chung nhất là một khối quạt có bán.
Tất cả các tọa độ đỉnh glVertex3f(x,y,z); đều đợc tính trong thời gian thực(tại mỗi thời điểm chơng trình đều tính lại tọa độ để cập nhật hình chi tiết gia công theo thới gian). Dao phay đi tới đâu chơng trình sẽ kết hợp các tọa độ biên dạng của dao phay và tọa độ biên dạng của phôi(đợc tính toán từ kích thớc phôi do ngời sử dụng nhập vào cho chơng trình) để hình thành biên dạng cắt. Gắn đối t ợng OpenGlInit lên Dialog của lớp CMainDialog Lớp đối tợng CMainDialog là lớp kế thừa từ một lớp Dialog đợc ObjectARX hỗ trợ : class CMainDialog : public CAcUiDialog Lớp CAcUiDialog đảm bảo cho chúng ta thực hiện thao tác ẩn CMainDialog tạm thời chuyển focus cho AutoCAD.
Nh vậy việc xây dựng đối tợng CMainDialog kế thừa từ CAcUiDialog giúp ta dễ dàng truy nhập vào dữ liệu mở rộng của bản vẽ thiết kế cung cấp dữ liệu cho bộ phận mô phỏng. Đối tợng p_Wnd của đợc khai báo trong lớp CMainDialog sẽ thực hiện mô tả quá trình gia công trên phôi theo từng bớc gia công đã thiết kế trong quy trình công nghệ.
Đặng Anh Việt : Báo cáo nghiên cứu khao học Opengl và ứng dụng đồ họa động. Nguyễn Cao Luân : Đồ án tốt nghiệp đề tài tự động lập trình cho máy CNC.