Đến nội dung


Hình ảnh
- - - - -

Reactor và các ứng dụng của nó ?


  • Please log in to reply
24 replies to this topic

#21 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 09 September 2014 - 03:09 PM

 Thật ra đối số data trong command reactor không quan trong bằng cái hàm callback, khi bạn gõ một lệnh thì cad sẽ duyệt qua hết các command reactor (nếu có), cái nào có hàm callback phù hợp với lệnh đó thì nó sẽ thực thi, chứ cad ko cần biết cái reactor đó tên là gì. Chỉ có người viết là cần đặt tên để khỏi nhầm nếu có nhiều reactor làm nhiều việc khác nhau.

  Nhưng đối với Object reactor thì cái data mới thật sự quan trọng vì khi đó nên lưu các object "chủ động" và đối số owners làm object "thụ động"., 2 cái tác động qua lại thì reactor mới hoạt động tốt.

  Chủ đề này ít được nhiều người quan tâm vì vừa khó lại phải biết lsp mới hiểu được.


  • 0

#22 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 09 September 2014 - 05:33 PM

Mình thấy nó quan trọng như nhau đối với tất cả các reactor type. Sẽ có những ứng dụng chỉ sử dụng trong 1 khoảng thời gian nhất định của phiên làm việc, hoặc tại 1 thời điểm bản vẽ cùng tồn tại nhiều reactor của 1 reactor type. Khi đó nếu cần phải bật hoặc tắt 1 trong số chúng bạn sẽ cần truy cập Data của nó.

 

Có 1 cách làm khác là sử dụng Vlr-reactions để tìm ra cặp (even-callback) tương ứng của mỗi reactor, nhưng nó không tiện bằng việc kiểm tra data. Ngoài ra như mình đã nói, chúng ta có thể lợi dụng data để cung cấp thêm dữ liệu mở rộng cho từng reactor.

 

Chủ đề này mình nghĩ là không khó với những ai viết lisp bằng Vlide. Mình thấy nó đơn giản và minh bạch hơn nhiều so với các hàm VLA. 


  • 0

#23 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 10 September 2014 - 01:45 PM

(vlr-command-reactor data callbacks)

Và trong hàm callbacks:

(event-name . callback_function)

callback_function có 2 biến reactor_object list

 

Thật sự cái data và reactor_object này mình chưa biết có công dụng gì?

Bạn nào biết thì chỉ giúp, có ví dụ càng dễ hiểu hơn :D. Lâu ni code nhưng mà mơ mơ ảo ảo. Hông hiểu chi hết


  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#24 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 10 September 2014 - 03:58 PM

Ví dụ đơn giản như thế này:
(setq com-reactor (vlr-command-reactor (list 1 2 3 4) '((:vlr-commandEnded . EndCommand))))
(defun EndCommand (reactor_object lst ) 
    (if (member (nth 0 lst) '("DIMLINEAR" ))
       (princ (vlr-data reactor_object)))
)
Ý nghĩa là nếu ng dùng vẽ lệnh dimlinear xong thì sẽ hiện ra cái data của reactor là (1 2 3 4). Cái lst chứa tên lệnh. Cái (vlr-data reactor) để lấy data của reactor (là cái mà bạn thường hay để nil đó, ở đây là (list 1 2 3 4))
  • 1

#25 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 11 September 2014 - 11:51 AM

Điều hay nhất ở đây là data của một reactor cho phép đọc và ghi đè, thậm chí có thể ghi đè bởi callback của chính reactor đó. Vì thế ứng dụng của nó là rất lớn nếu biết tận dụng.
 
Ví dụ như code trên của Tot77, Nếu muốn mỗi lần người dùng sử dụng lệnh DIMLINEAR Cad phải báo cáo lần gần nhất người dùng sử dụng lệnh DIMLINEAR trong bản vẽ đó là khi nào, thì trong hàm callback trên ta có thể sử dụng 1 hàm ghi vào data thông tin đó để lấy ra cho lần sau. cái này thì chỉ có sử dụng data mới làm được.


  • 2