intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Hộp thoại DCL

Chia sẻ: Nguyen Quang Hien | Ngày: | Loại File: PDF | Số trang:4

289
lượt xem
51
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Ngôn ngữ DCL dùng để tạo các hộp thoại. So với cách giao tiếp trên dòng lệnh, hộp thoại có nhiều ưu điểm như: Nhập liệu thuận tiện, Giao diện thân thiện hơn… Các hộp thoại và các biến cố được điều khiển bằng AutoLISP Các nút điều khiển trên hộp thoại gọi là các tile. Các tile này có thể được kết hợp theo nhóm subasembly, sắp xếp trong 1 dòng hoặc cột (cluster). Các tile trong nhóm assembly được gọi là children....

Chủ đề:
Lưu

Nội dung Text: Hộp thoại DCL

  1. 6. Hộp thoại DCL 6.1. Thiết kế hộp thoại DCL Ngôn ngữ DCL dùng để tạo các hộp thoại. So với Hộp thoại được tổ chức theo cấu trúc cây, với phần gốc là tile có tên 2012 © tđt dialog, định nghĩa bản thân hộp thoại, tiếp đến là các tile, các cluster, cách giao tiếp trên dòng lệnh, hộp thoại có nhiều ưu subassembly… điểm như: Nhập liệu thuận tiện, Giao diện thân thiện Hộp thoại được định nghĩa qua file văn bản ASCII, viết theo cú pháp của hơn… ngôn ngữ DCL. File chứa định nghĩa các tile, cluster, subassembly, cách sắp xếp và độ lớn của chúng được lưu trong file có phần mở rộng *.DCL. và độ chúng đượ trong file có ph .DCL. Các hộp thoại và các biến cố được điều khiển bằng Một file DCL có thể chứa nhiều hộp thoại. Lưu ý DCL phân biệt chữ hoa và chữ thường. AutoLISP Để xem trước kết quả thiết kế hộp thoại, chọn Tools / Interface tools / Các nút điều khiển trên hộp thoại gọi là các tile. Preview DCL Cú pháp chung để khai báo 1 tile có dạng: Các tile này có thể được kết hợp theo nhóm name : item1 [ : item2 …] name – tên tile mới subasembly, sắp xếp trong 1 dòng hoặc cột (cluster). { attribute1 = value1; item – tile đã định nghĩa trước Các tile trong nhóm assembly được gọi là children. attribute2 = value2; (ACAD hoặc tự đ/nghĩa) …} value – giá trị của thuộc tính 6.1. Thiết kế hộp thoại DCL (2) Các tile hoạt động có sẵn 2012 © tđt Để tham chiếu tới tile (đưa tile vào trong cluster hoặc hộp thoại) button – các nút ấn như Ok, Cancel… có thể sử dụng một trong 2 cú pháp sau: image_button – nút ấn, nhưng trên nó thể hiện ảnh(ACAD slide) name; hoặc edit_box – hộp văn bản, dùng để nhập dữ liệu : name { popup_list – danh sách thu gọn (pulldown) attribute = value; list_box – hộp danh sách (nếu danh sách chọn vượt quá giới hạn … của box này, thanh trượt – scrollbar sẽ xuất hiện) } trong đó name là tên tile đã định nghĩa radio_button – nút chọn radio (dùng chọn 1 trong số ít các lựa Với cú pháp thứ nhất, tất cả các thuộc tính của tile được giữ chọn đã định trước) nguyên theo định nghĩa. toggle – nút kiểm (check) Cấu trúc thứ 2 cho phép thêm hoặc sửa đổi các thuộc tính của slider – thanh trượt, dùng chọn giá trị nằm trong vùng cho trước tile. Lưu ý rằng cú pháp này chỉ áp dụng cho tile đơn (không áp dụng cho nhóm subassembly) Chú thích bắt đầu bằng // Các cluster Các tile trang trí 2012 © tđt dialog – gom các tile, cluster, subassembly để tạo hộp thoại image - hiển thị hình ảnh lên hộp thoại. Khác với image_button có thể nhận tác động từ người dùng như một nút ấn, image row – gom các tile thành hàng chỉ hiện hình ảnh mà không nhận một tác động nào. boxed_row – gom các tile thành hàng và vẽ đường bao quanh text - hiển thị văn bản lên hộp thoại. Khác với text_box để nhập column – gom các tile thành cột dữ liệu, text chỉ hiển thị dữ liệu mà thôi. li text ch hi th li mà thôi boxed_column – gom các tile thành cột và vẽ đường bao quanh spacer – bình thường khoảng cách giữa các tile được tự động tính radio_row – gom các nút radio thành nhóm (sắp xếp theo hàng) toán, space dùng để thay đổi lại các khoảng cách này theo ý người thiết kế hộp thoại. boxed_radio_row – như trên nhưng tạo thêm đường viền quanh radio_column – gom các nút radio thành nhóm (sắp xếp theo cột) boxed_radio_column – như trên nhưng thêm đường viền quanh 1
  2. Thuộc tính của tile Thuộc tính của tile (2) action – chuỗi ký tự thể hiện biểu thức AutoLISP (không chứa hàm is_enable – true hoặc false: cho phép tile có truy cập được hay không 2012 © tđt command) sẽ thực hiện khi người dùng chọn tile này. ngay khi khởi tạo. Có thể thay đổi thuộc tính với hàm mode_tile. alignment – cách dóng các tile theo chiều ngang hoặc dọc trong nhóm key – chuỗi ký tự thể hiện khóa tham chiếu đến tile. Phân biệt chữ cluster. Giá trị cho alignment gồm các từ khóa: left (mặc định), hoa và thường right, centered (với cột) và top, bottom, centered (với dòng) label – chuỗi ký tự thể hiện trên nút button, sau dấu kiểm, nút radio, color – màu nền của nút ảnh: có thể là số nguyên (1 = đỏ, 2 = vàng… tiêu đề nhóm, tiêu đề tiêu đề nhóm, tiêu đề hộp thoại… Thêm dấu & vào trước ký tự để tho Thêm vào tr ký để hoặc các từ khóa như dialog_foreground, dialog_background, đặt phím tắt cho tile. Ví dụ: label = “&Hỏi thêm” red (đỏ), blue (xanh dương)… list – các lựa chọn sẽ được dùng trong danh sách (list_box, popup_list) edit_width – chiều rộng của hộp nhập dữ liệu (số ký tự có thể chứa ngay khi khởi tạo. Giá trị cho dạng chuỗi ký tự, các lựa chọn cách trong hộp) nhau bởi chuỗi ký tự “\n”. Ví dụ: list = “Red\nBlue\nGreen” height – chiều cao của hộp nhập dữ liệu (số dòng ký tự có thể chứa mnemonic – phím tắt của tile (phải là ký tự thể hiện trong label). Ví dụ trong hộp) label = “Hỏi thêm”; mnemonic = “H” is_cancel – giá trị gồm true hoặc false xử lý tác động của phím Esc. value – giá trị (chuỗi ký tự) đặt cho tile khi khởi tạo hộp thoại. Có thể Khi là true, nhấn phím Esc sẽ tương ứng với việc chọn tile này. thay đổi bằng hàm set_tile. Ví dụ: value = “1” hoặc value = “0” is_default – tương tự trên nhưng với phím Enter. Các thuộc tính width – chiều rộng của tile (đo bằng số ký tự) is_cancel và is_default chỉ áp dụng với các button. Ví dụ - cấu trúc cây DCL code 2012 © tđt dialog InputData : dialog { image_button label = “ Nhập thông số “; // tiêu đề hộp thoại row : image_button { // định nghĩa hộp hình ảnh minh họa boxed_column width = 35; popup_list aspect_ration = 2.0; list_box edit_box height = 12; toggle color = 0; toggle key = “hv_image”; boxed_column allow_accept = true; radio_button } radio_button radio_button : row { // hàng thứ nhất radio_button : boxed_column { // cột thứ nhất trong hàng toggle label = “Kích thước”; // tiêu đề toggle toggle : popup_list { // các tile trong cột này row key = “kichthuoc”; image edit_width = 10; button } button button Ví dụ - DCL code Ví dụ - DCL code 2012 © tđt : list_box { : toggle { label = “Mô tả chi tiết”; label = “Góm nhóm các nét vẽ”; key = “motachitiet”; value = “1”; // mặc định chọn width = 4; key = “group”; height = 6; } } } // kết thúc cột thứ nhất : edit_box { : boxed_column { // cột thứ 2 label = “Chiều dài”; label = “Vẽ hình chiếu: “; key = “l”; : radio_button { edit_width = 10; label = “&1”; } key = “hcc”; : toggle { } label = “Ren suốt chiều dài vít”; : radio_button { value = “0”; // mặc định không chọn label = “&2”; key = “allren”; key = “hcd”; } value = “1”; // mặc định chọn } 2
  3. Ví dụ - DCL code DCL code (….) mesys11 : image { cancel1 : button { 2012 © tđt : toggle { width = 8; label = “&Không”; label = “Vẽ đệm vênh”; height = 2; width = 13; key = “demvenh”; fixed_width = true; fixed_width = true; value = “0”; // mặc định không chọn color = dialog_background; is_cancel = true; } key = “mesys11”; key = “cancel”; } // kết thúc cột 2 // } } : row { // sang dòng 2, gồm các tile đơn đã định nghĩa mesys11; ok1 : button { help1 : button { ok1; label = “&Vẽ”; label = “&Hỏi thêm”; cancel1; width = 13; width = 13; help1; fixed_width = true; fixed_width = true; } // hết row 2 is_default = true; alignment = centered; } // kết thúc hộp thoại InputData key = “accept”; key = “help”; // Các tile đơn định nghĩa gồm mesys1, ok1, cancel1, help1 xem trang tiếp theo } } 6.2. Điều khiển hộp thoại Các hàm xử lý tile 2012 © tđt Hàm (load_dialog tênfileDCL) để nạp file DCL vào bộ nhớ. Ví dụ: (action_tile key action) - gán các biểu thức cần thiết khi người dùng chọn tile có key đã khai báo trong DCL. (setq dcl_id (load_dialog “vidu110.dcl”)) (mode_tile key mode) - thay đổi các đặc tính tile. Hàm luôn trả về giá Gọi hàm (new_dialog tênhộpthoại dcl_id) để gọi hộp thoại có tên trị NIL. chỉ định đã lưu trong file DCL. Ví dụ, hộp thoại tên “InputData” (set_tile key value) - đặt lại giá trị value của tile. Trả về giá trị value (new_dialog “InputData” dcl_id) vừa đặt lại cho tile. Nếu thành công, hàm trả về T, ngược lại, hàm trả về NIL. hà hà NIL (get_tile key) - lấy giá trị value hiện thời của tile tương ứng. Hàm trả về Đặt lại các thông số cho các tile bằng các hàm xử lý tile. chuỗi ký tự thể hiện giá trị hiện thời của tile. Gọi hàm (start_dialog) để hiện hộp thoại. Hàm này hoạt động cho Các hàm thao tác với popup_list và list_box gồm: start_list – đến khi người dùng chọn tile đã được gán biểu thức AutoLISP chứa hàm thực hiện tạo mới, thêm hoặc sửa đổi danh sách, add_list – thêm hoặc done_dialog. Hàm start_dialog trả về giá trị status trong biểu thức gọi thay đổi một thành phần trong danh sách trả về bởi hàm start_list và hàm done_dialog, còn nếu bỏ qua tham số status, hàm trả về 1 khi end_list – kết thúc các thao tác với danh sách. người dùng chọn tile được gán is_default = true, 0 khi chọn tile được gán is_cancel = true. Hàm (done_dialog [status]) đóng hộp thoại này, Các hàm thao tác với tile ảnh gồm start_image – bắt đầu các chỉ được gọi trong biểu thức liên quan đến chọn tile – hàm action_tile. thao tác ảnh, vector_image – vẽ đoạn thẳng, fill_image – tô màu vùng tile, slide_image – gắn ảnh lên tile và end_image – kết thúc. Gọi hàm (unload_dialog dcl_id) để giải phóng hộp thoại. Hàm action_tile mode_tile, set_tile và get_tile 2012 © tđt Hàm (mode_tile key mode) thay đổi các đặc tính tile như cho phép Hàm (action_tile key action) gán các biểu thức cần thiết khi chọn hay không (is_enable), bật tắt hình ảnh của tile... người dùng chọn tile có key đã khai báo trong DCL. key – khóa tham chiếu (khi định nghĩa tile) key – khóa tham chiếu (khi định nghĩa tile) mode – số nguyên, thể hiện đặc tính mới của tile: action – chuỗi ký tự thể hiện các tác vụ sẽ thực hiện khi chọn tile này. 0 – cho phép chọn tile (đặt is_enable = true) Ví dụ 1: (action_tile “l” “(setq chieudai (atof (get_tile \”l\”)))”) – sẽ đọc 1 – không cho phép chọn tile (làm tile mờ đi trên hộp thoại) biểu thức do người dùng nhập trong hộp “Chiều dài” – xem hộp thoại 2 – đặt focus tới tile này (tương tự như dùng Tab để chuyển đến) 110, kết quả được chuỗi ký tự, sau đó chuyển đổi chuỗi ký tự này thành 3 – chọn nội dung văn bản trong hộp edit_box. Khi nhập giá trị, số thực và gán cho biến chieudai. phần nội dung cũ sẽ bị ghi đè lên. 4 – bật / tắt hình ảnh trên tile (image, image_button) Ví dụ 2: (action_tile “kichthuoc” (setq size $value) – sẽ trả về chuỗi ký Hàm (set_tile key value) thay đổi giá trị value của tile, trả về giá trị tự thể hiện thứ tự phần tử đã chọn trong danh sách các kích thước vít value mới. tiêu chuẩn hiện trong hộp popup_list: “0” – phần tử đầu, “1” – phần tử thứ 2… value – chuỗi ký tự, thể hiện giá trị mới của tile Hàm này thường được dùng để đưa các kết quả tính toán lên hộp thoại. Biểu thức kiểu $X được gọi là callback. Các callback hay dùng gồm Hàm (get_tile key) lấy giá trị value hiện thời của tile, kết quả của $key – trả về giá trị thuộc tính key của tile đã chọn, $value – trả về giá trị value của tile. hàm là chuỗi ký tự. 3
  4. Các hàm thao tác với Ví dụ về popup_list và list_box popup_list và list_box ; lấy các phần tử trong danh sách AutoLISP và đưa vào popup_list 2012 © tđt (setq llst (list “red” “blue” “green”)) Hàm (start_list key [ope [ind]]) tạo mới hoặc sửa đổi danh sách (start_list “popup”) ; tạo danh sách mới có key là popup ope – nhận các giá trị 1 (thay đổi nội dung danh sách), 2 (thêm thành (mapcar ‘add_list llst) ; chạy hàm add_list với các thành phần của danh sách llst phần mới vào danh sách) hoặc mặc định 3 (tạo mới danh sách). Nếu (end_list) ; kết thúc thao tác danh sách đã tồn tại và ope được gán giá trị 3 (hoặc bỏ qua), danh sách cũ sẽ bị xóa và thay mới bằng các thành phần ở hàm add_list hay ng hành àm list ; thay thê thành phần “blue” thành “xanh” thay thê thành ph blue thành xanh ind – số nguyên thể hiện thành phần cần thay đổi. Các thành phần được (start_list “popup” 1 1) ; “blue” là thành phần thứ 2 trong danh sách đánh số từ 0. (add_list “xanh”) Hàm (add_list item) thêm hoặc thay đổi thành phần trong danh (end_list) sách. Hàm này được dùng ngay sau hàm start_list. ; thêm vào cuối danh sách hai thành phần mới “cyan” và “gray” item – chuỗi ký tự thể hiện thành phần mới của danh sách (start_list “popup” 2) ; ope = 2, tức thêm vào danh sách Hàm (end_list) kết thúc các thao tác với danh sách (add_list “cyan”) (add_list “gray”) Lưu ý: Ba hàm này luôn đi cùng nhau theo thứ tự trên. (end_list) Kết quả danh sách popup mới sẽ là “red”, “xanh”, “green”, “cyan”, “gray”. Thao tác với các tile hình ảnh Hàm vector_image 2012 © tđt Hàm (start_image key) bắt đầu các thao tác với tile hình ảnh có key Hàm (vector_image x1 y1 x2 y2 color) vẽ đoạn thẳng từ 2 điểm chỉ định trong hàm. Sau đó để thực hiện các thao tác với hình ảnh sẽ có tọa độ (x1 y1) và (x2 y2) trên tile với màu có số hiệu color. phải gọi các hàm vector_image, fill_image hoặc slide_image. Ví dụ: Vẽ 2 đường chéo màu đỏ qua các đỉnh của tile có key là “img1”: Hàm (end_image) kết thúc các thao tác với hình ảnh cho tile được gọi (setq color 1 bởi hàm start_key. w (dimx_tile “img1”) h (dimy_tile “img1”)) (dimy img1 Để xác đị kích th Để xác định kích thước của tile có thể sử dụng các hàm: tile có th các hàm: (start_image “img1”) (dimx_tile key): trả về chiều rộng của tile. (vector_image 0 0 w h color) (dimy_tile key): trả về chiều cao của tile. (vector_image 0 h w 0 color) (end_image) Trong đó, key là khóa tham chiếu tới tile cần tìm kích thước Lưu ý, màu color là số nguyên, tương ứng với số hiệu màu trong Hàm slide_image chỉ gắn các ảnh slide do AutoCAD tạo ra, được lưu AutoCAD: 1 = đỏ, 2 = vàng… hoặc các giá trị sau: riêng lẻ (*.SLD) hoặc trong file thư viện ảnh (*.SLB). -2 = BGLCOLOR – màu màn hình nền AutoCAD hiện hành Ảnh *.SLB được tạo từ các hình ảnh trên bản vẽ bằng lệnh MSLIDE. Các -15 = DBGCOLOR – màu nền hộp thoại hiện hành ảnh này được đưa vào thư viện SLB thông qua chương trình -16 = DFGLCOLOR – màu văn bản trên hộp thoại hiện hành SLIDELIB.EXE filename, với filename là tên của file văn bản, chứa nội -18 = LINELCOLOR – màu đường viền hộp thoại hiện hành. dung gồm tên các file SLB. Hàm fill_image và slide_image 2012 © tđt Hàm (fill_image x1 y1 width height color) tô màu color lên vùng chữ nhật trên tile có đỉnh (x1 y1) và các cạnh có độ lớn width và height. Ví dụ: Tô màu vàng cho toàn bộ tile có key “img1”: (setq color 2 w (dimx_tile “img1”) h (dimy_tile “img1”)) img1 (start_image “img1”) (fill_image 0 0 w h color) (end_image) Hàm (slide_image x1 y1 width height sldname) gắn ảnh AutoCAD Slide lên vùng chữ nhật trên tile có đỉnh (x1 y1) và các cạnh có độ lớn width và height. Tham số sldname là tên file slide sẽ được dùng. Nếu ảnh slide này được lưu trong thư viện ảnh thì sldname sẽ phải được viết dưới dạng libname(sldname), với libname là tên file thư viện. Phần mở rộng của file slide hoặc file thư viện không cần kèm phần tên. 4
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2