Đến nội dung


Hình ảnh
- - - - -

Bản chất của ACET-ERROR-INIT và ACET-ERROR-RESTORE, những lưu ý sử dụng?


  • Please log in to reply
7 replies to this topic

#1 hoaletrang

hoaletrang

    biết vẽ line

  • Members
  • PipPip
  • 22 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 21 March 2010 - 04:34 PM

Chào mọi người, mới làm quen với Lisp thấy một số chương trình mẫu có sử dụng hàm ACET-ERROR-INIT và ACET-ERROR-RESTORE để thiết lập và khôi phục biến hệ thống.
Ví dụ:
 (setq oldpo (getvar "pdmode"))
(setq oldla (getvar "clayer"))
(setq oldos (getvar "osmode"))

(setvar "pdmode" 3)
(setvar "clayer" "5")
(setvar "osmode" 0)
;..................................
;..................................
(setvar "pdmode" oldpo)
(setvar "clayer" oldla)
(setvar "osmode" oldos)
;Có thể thay thế bằng
(ACET-ERROR-INIT (LIST (LIST "pdmode" 3 "OSMODE" 0 "clayer" "5") T))
;Sau đó muốn khôi phục thì dùng
(ACET-ERROR-RESTORE)
Tuy nhiên cách thức thực hiện của hai phương pháp trên khác nhau ra sao, lợi hại thế nào thì không thấy có trong Help và cũng không rõ hai hàm đó và một số hàm dựng sẵn khác tương tự như thế nằm ở đâu, cách sử dụng ra sao.
Rất mong nhận được sự chỉ giáo.
  • 0

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 March 2010 - 05:20 PM

Chào bạn hoaletrang đã có những bài viết đầu tiên :D
 (setq oldpo (getvar "pdmode"))
(setq oldla (getvar "clayer"))
(setq oldos (getvar "osmode"))

(setvar "pdmode" 3)
(setvar "clayer" "5")
(setvar "osmode" 0)
;..................................
MAINFUNCTION
;..................................
(setvar "pdmode" oldpo)
(setvar "clayer" oldla)
(setvar "osmode" oldos)

Với cách này như code trên không thực hiện được chức năng bẫy lỗi khi User nhấn phím ESC giữa chừng khi đang thực hiện MAINFUNCTION. Tức là không trả lại thiết lập ban đầu khi USER nhấn phím ESC giữa chừng khi đang thực hiện MAINFUNCTION


 
(ACET-ERROR-INIT (LIST (LIST "pdmode" 3 "OSMODE" 0 "clayer" "5") T))
;..................................
MAINFUNCTION
;..................................
(ACET-ERROR-RESTORE)
Cách này thực hiện chức năng bẫy lỗi khi User nhấn phím ESC giữa chừng khi đang thực hiện MAINFUNCTION. Tức là trả lại thiết lập ban đầu khi USER nhấn phím ESC giữa chừng khi đang thực hiện MAINFUNCTION. -> trả lại chế độ làm việc của CAD ở dòng command
Bạn thực hiện dòng 2 đoạn code này sẽ thấy sự khác biệt. Bật chế độ OSMODE để kiểm chứng
Tại 2 dòng
Nhap diem thu nhat :
Nhap diem thu hai :
Bạn bấm ESC sẽ thấy sự khác biệt
Đoạn 1 :
(defun c:drl(/ p1 p2)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq p1 (getpoint "\n Nhap diem thu nhat :"))
(setq p2 (getpoint p1 "\n Nhap diem thu hai :"))
(command "LINE" p1 p2 "")
(setvar "osmode" oldos)
)
Đoạn 2 :
(defun c:drl(/ p1 p2)
(setq oldos (getvar "osmode"))
(ACET-ERROR-INIT (LIST (LIST "OSMODE" 0) T))
(setq p1 (getpoint "\n Nhap diem thu nhat :"))
(setq p2 (getpoint p1 "\n Nhap diem thu hai :"))
(command "LINE" p1 p2 "")
(ACET-ERROR-RESTORE)
)

  • 3

#3 hoaletrang

hoaletrang

    biết vẽ line

  • Members
  • PipPip
  • 22 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 21 March 2010 - 06:48 PM

Cảm ơn bạn đã có những giải thích bổ ích tuy nhiên vẫn còn một số thắc mắc.
Có lần sử dụng 2 hàm này, khi nhấn ESC thì toàn bộ những gì có trong bản vẽ đều bị xóa hết, đành phải quay về phương pháp thủ công. (Không nhớ rõ là trường hợp nào)
Ngoài ra, nguồn gốc của các hàm ACET-XXX này nằm ở đâu, cách thức sử dụng như thế nào, ý nghĩa của các tham số..., tìm hòa mà chẳng biết nằm ở đâu.
À, nhân tiện hỏi Tue_NV luôn xem có giúp được vụ biên dịch file vlx có chứa file dvb không?
  • 0

#4 thienvu-dn

thienvu-dn

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 19 October 2010 - 01:57 PM

Nhờ mấy cao thủ giúp mình 1 tí:
khi dùng hàm ACET-ERROR-INIT và ACET-ERROR-RESTORE, chạy trực tiếp từ file LSP thì ok, Nhưng khi đã biên dịch ra file VLX thì cad báo lỗi: "no function definition: ACET-ERROR-INIT".
  • 0

#5 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 19 October 2010 - 02:33 PM

Nhờ mấy cao thủ giúp mình 1 tí:
khi dùng hàm ACET-ERROR-INIT và ACET-ERROR-RESTORE, chạy trực tiếp từ file LSP thì ok, Nhưng khi đã biên dịch ra file VLX thì cad báo lỗi: "no function definition: ACET-ERROR-INIT".

hàm ACET-ERROR-INIT và ACET-ERROR-RESTORE thuộc bộ Express Tool.
Lỗi trên có thể do các nguyên nhân :
1. chưa cài Express Tool.
2. đã cài Express Tool, nhưng chưa Active Express Tool : To activate the AutoCAD Express Tools, use the EXPRESSTOOLS command.
3. Express Tool bị lỗi.
4. ....

..............
Ngoài ra, nguồn gốc của các hàm ACET-XXX này nằm ở đâu, cách thức sử dụng như thế nào, ý nghĩa của các tham số..., tìm hòa mà chẳng biết nằm ở đâu.
....

Bạn tham khảo :
- Các hàm thư viện trong Express
- file AcetUtil.chm
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5684 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 19 October 2010 - 03:20 PM

Nhờ mấy cao thủ giúp mình 1 tí:
khi dùng hàm ACET-ERROR-INIT và ACET-ERROR-RESTORE, chạy trực tiếp từ file LSP thì ok, Nhưng khi đã biên dịch ra file VLX thì cad báo lỗi: "no function definition: ACET-ERROR-INIT".

Tương tự với hàm (inintdia) nữa ạ ^^..Khi biên dịch vlx thì sẽ bị lỗi này,mặc dù đã active đầy đủ bộ express..Nếu đi đường vòng dịch lsp->fas->vlx thì giải quyết được..Cái nì e hỏi r mà vẫn chưa có đáp án :lol:(
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 19 October 2010 - 03:39 PM

Tương tự với hàm (inintdia) nữa ạ ^^..Khi biên dịch vlx thì sẽ bị lỗi này,mặc dù đã active đầy đủ bộ express..Nếu đi đường vòng dịch lsp->fas->vlx thì giải quyết được..Cái nì e hỏi r mà vẫn chưa có đáp án :lol:(

Thử kiểm tra lại với code của Tue_NV bài số 2
Tạo file VLX -> kết quả OK trên CAD 2010, 2007, 2008.

- bạn sử dụng CAD mấy ?
- không biết có liên quan đến hàm (vl-load-com) không ?

Bài viết đã được chỉnh sửa nội dung bởi gia_bach: 20 October 2010 - 03:24 PM

  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5684 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 19 October 2010 - 09:57 PM

E dùng cad07 và hình như hồi đấy chưa vl-load-com ..E se thử check lại xem ntn ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC