Đến nội dung


Hình ảnh
* * * * - 4 Bình chọn

How to use Visual LISP Editor


  • Please log in to reply
55 replies to this topic

#41 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 22 May 2013 - 06:19 PM

Không cần phải save as. Muốn chuyển đổi định dạng code trong một cửa sổ soạn thảo chỉ cần vào tool, window attributes, rồi cái gì đó (dòng thứ hai thì phải), lựa chọn định dạng code muốn đổi
  • -2

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#42 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 23 May 2013 - 09:03 PM

Không cần phải save as. Muốn chuyển đổi định dạng code trong một cửa sổ soạn thảo chỉ cần vào tool, window attributes, rồi cái gì đó (dòng thứ hai thì phải), lựa chọn định dạng code muốn đổi

 

Bác Thaistreetz đang hướng dẫn anh em tiện ích gì của VLISP vậy ạ? Em có làm theo hướng dẫn trên: Vào Tools / Window Attributes / Configure Current ... (dòng thứ 2)

 

118347_songnhiiiaaa.jpg

 

Trong cửa sổ này:

1. Cho phép điều chỉnh lại màu sắc hiển thị cho code

2. Transparent foreground

3. Transparent background

4. Sets tab spacing

5. Sets the left margin

 

Em không hiểu chuyển đổi định dạng code là ntn? Bác Thaistreetz làm ơn giải thích rõ vấn đề này được không ạ?


  • 0

#43 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 26 May 2013 - 01:54 PM

Đóng gói một ứng dụng VLX bằng VLISP
 
Bạn muốn đóng gói một ứng dụng bao gồm LSP và hộp thoại DCL, Visual LISP có thể giúp bạn điều này qua các bước sau đây:
1.  Trong menu file VLISP chọn: Make Application>New Application Wizard.
2.  Trong trang đầu tiên: nếu không kèm theo DCL --> chọn: Simple, ngược lại chọn: Expert.
3.  Trong Application Location, tìm đến đường dẫn chứ file LISP. Và đặt tên ứng dụng tại Application Name.
4.  Xác định các tập tin LSP mà bạn cần tạo ứng dụng.
5.  Thêm các tập tin DCL.

Cụ thể theo hình sau:

118347_songngngngnhi.jpg

Chúc các bạn cuối tuần thật vui vẻ!
  • 1

#44 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 26 May 2013 - 03:23 PM

Bổ sung thêm 2 ý của SongNhi:

1). Ngoài LSP và DCL, còn đóng gói được một số kiểu file khác nữa.

2). Số file đóng gói là có giới hạn. 


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#45 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 26 May 2013 - 03:31 PM

Bổ sung thêm 2 ý của SongNhi:

1). Ngoài LSP và DCL, còn đóng gói được một số kiểu file khác nữa.

2). Số file đóng gói là có giới hạn. 

 

2) Giới hạn là bao nhiêu bác? Tue_NV đóng gói nhiều 30 file lsp mà chẳng thấy giới hạn??????


  • 0

#46 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 26 May 2013 - 04:08 PM

2) Giới hạn là bao nhiêu bác? Tue_NV đóng gói nhiều 30 file lsp mà chẳng thấy giới hạn??????

Có 2 lần tôi đóng gói nhiều file. Nhớ như thế này:

- 1 lần tầm 10 files (không nhớ chính xác lắm).

- 1 lần đúng 13 files. Đóng 12 thì OK, đóng 13 thì NO.

Không tìm ra quy luật. Chẳng hiểu do số file hay dung lượng file hay gì gì nữa, mà sự việc là thế.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#47 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 26 May 2013 - 04:14 PM

Có 2 lần tôi đóng gói nhiều file. Nhớ như thế này:

- 1 lần tầm 10 files (không nhớ chính xác lắm).

- 1 lần đúng 13 files. Đóng 12 thì OK, đóng 13 thì NO.

Không tìm ra quy luật. Chẳng hiểu do số file hay dung lượng file hay gì gì nữa, mà sự việc là thế.

 

Sự việc là thế, là chưa chắc chắn, bác lại đưa ra câu khẳng định thế  :lol:

Có 1 cách khử quy luật chưa biết này là gom tất cả file Lisp vào 1 file Lsp duy nhất rồi đóng gói

 

@bạn Nhacotung : Phiền bạn post bài sang topic khác nhé. Mình tạm xoá bài viết của bạn trong topic này. 

Ở topic này đang thảo luận đến việc sử dụng VL.


  • 0

#48 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 26 May 2013 - 04:24 PM

Câu đó chỉ để cảnh báo thôi, kẻo mai kia mốt nọ ai gặp thì đừng bở ngỡ ấy mà! :lol:


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#49 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 03 June 2013 - 09:43 PM

Chạy Debug code LISP bán tự động
 

Sau khi trở lại VLIDE chúng ta vào Debug » Animate và đánh dấu tùy chọn này.

 

12). Về check lỗi: VL ưu việt hơn N++ (xin xem thêm bài viết của Lyky ở trên, dù nó chưa thực sự đầy đủ).

 
Hôm nay SN xin được trình bày cách chạy Debug bán tự động, không dùng tiện ích Animate, nghĩa là khi chạy debug chúng ta không check chọn Animate trong tab Debug. Vẫn chạy trên đoạn code cũ trong #6, như sau:
(defun c:test ( / ss i sl total entity elist )
(if (setq ss (ssget '((0 . "LINE"))))
    (progn
      (setq i -1 sl (sslength ss) total 0)
      (while (<= (setq i (1+ i)) sl)
        (setq entity (ssname ss i)
              elist  (entget entity)
              total  (+ total (distance (cdr (assoc 10 elist)) (cdr (assoc 11 elist))))))
      (princ (strcat "\nTotal Length: " (rtos total)))))
(princ))
1. Trước tiên, SN liệt kê một số phím nóng cần dùng:

Step Into    : F8
Step Over  : Sh-F8
Step Out    : Ct-Sh-F8
 
Continue                 : Ct-F8
Reset to Top Level : Ct-R
Quit Current Level  : Ct-Q
 
Watch Window: Ct-Sh-W
Add Watch      : Ct-W
 
Toggle Breakpoint  : F9
Last Breakpoint      : Ct-F9
Clear All Breakpoint: Ct-Sh-F9
 
Load Selection        : Ct-Sh-E
Load Text in Editor  : Ct-Alt-E
Check Selection      : Ct-Sh-C
Check Text in Editor: Ct-Alt-C
 
2. Các bước 1; 2; 3.1 Adding Break Points và 3.2 Watching Variables thực hiện như hướng dẫn #6. Đến 3.3 chúng ta không dùng tiện ích Animate, thực hiện như sau: Cho chạy lại đoạn code đến khi gặp "điểm dừng" đầu tiên dùng F8 (Continue) để chạy dần từng bước một (hoặc Sh-F8) và theo dõi sự thay đổi giá trị của 2 biến “i” và “entity” trên cửa sổ Watch Window. Việc sửa lỗi sau khi xác định nguyên nhân lỗi - thực hiện như cũ.
 
Thật ra, không phải do tốc độ chạy Debug bằng Animate quá nhanh làm các bạn không theo dõi kịp! Bạn có thể tuỳ chỉnh tốc độ này tại:
 
118347_songnhiiiiiiiiiiii.jpg
 
Đơn vị là mili giây (10-3 giây). Tuy nhiên, với các làm bán tự động này, các bạn có thể kiểm tra giá trị của bất kỳ biến nào (mặc dù chưa được add vào Watch Window) tại mỗi vị trí dừng, bằng cách: tô chọn biến đó chọn: Load Selection (hoặc: Ct-Sh-E). Giá trị sẽ hiển thị trên Visual LISP Console.
 
Ngoài ra, SN còn muốn liệt kê thêm một số phím nóng giúp bạn kiểm tra nhanh từng cụm ()
 
Ct-[: Chuyển dấu nháy đến ( mở đầu khối hoàn chỉnh phía trước.
Ct-]: Chuyển dấu nháy đến ) kết thúc khối hoàn chỉnh phía sau.
 
Ct- Sh-[: Tô chọn khối hoàn chỉnh (...) phía trước vị trí dấu nháy hiện tại.
Ct- Sh-]: Tô chọn khối hoàn chỉnh (...) phía sau vị trí dấu nháy hiện tại.
 
Mời các Bác tiếp tục chia sẽ những kinh nghiệm sử dụng trình soạn thảo VLISP IDE!
  • 3

#50 lyky

lyky

    biết vẽ polygon

  • Members
  • PipPip
  • 70 Bài viết
Điểm đánh giá: 126 (tàm tạm)

Đã gửi 10 June 2013 - 01:29 PM

Thêm chức năng "thu gom rác" : biến toàn cục -> biến cục bộ

 

@ Song Nhi: Hảo Song Nhi! Đối với những Lisp đã check rồi và "dọn rác" theo cách anh Gia_Bach đã hướng dẫn, sau khi check lại sẽ không còn Global Var, trừ trường hợp vì ý đồ khác của người viết!

 
Trong vấn đề giải phóng bộ nhớ sau khi chạy LISP cũng còn nhiều vấn đề khác, cần được quan tâm, trước tiên bạn cần nắm các khái niệm biến cục bộ; biến toàn cục và các tính chất của nó, nếu cần thiết các bạn có thể tham khảo tại đây, hoặc tìm kiếm trên diễn đàn.

Danh sách trả về trong tiện ích kiểm tra của VLIDE sẽ liệt kê tất cả các đối tượng được xác định trong code. Danh sách này có thể bao gồm: Các ký hiệu bảo vệ (chẳng hạn như các hàm hoặc các hằng số được bảo vệ). Nếu các đối tượng đó đều vô tình cục bộ hóa, chương trình của bạn có thể không chạy như mong đợi ...
 
Vì vậy, các bạn cần lưu ý thêm, khi thanh lọc bộ nhớ bằng cách chép danh sách xuất ra của biến toàn cục vào phía sau: (defun( /, cần loại ra các đối tượng sau đây, không thanh lọc chúng, như sau:
 
1. Ký hiệu bảo vệ (được đánh dấu màu xanh), chẳng hạn như các hàm hoặc các hằng số được bảo vệ (ví dụ: Vlax-true).

2. Đối tượng trong DCL được xác định tại thời gian chạy (chẳng hạn như: $key, $reason, $value, $data).

3. Từ Pause, như có thể được sử dụng trong command expressions, vd: (command "rotate" pause ""...

4. Biến mà bạn muốn giữ lại giá trị sau khi chạy vì mục đích khác (nào đó!?), danh sách các biến trả về bởi các tiện ích kiểm tra được sắp xếp theo thứ tự abc, cho nên bằng cách đặt trước tên biến toàn cục với dấu sao (*) hoặc ... , làm cho nó xuất hiện ở đầu của danh sách để chúng ta có thể dễ dàng loại bỏ ra.
 
Không nhất nhiết check đối với một LISP đầy đủ, đối với một file tổng hợp nhiều LISP, bạn cũng có thể Check toàn bộ, bằng cách chọn Check edit window trên thanh công cụ Tools. Danh sách trả ra tổng hợp như sau:
 

22665_lyky_2.jpg

 

Đối với danh sách trả về sau khi check, các biến ở dạng chữ in hoa, về mặt hình thức nếu bạn muốn chuyển về chữ thường, hãy chạy list đó qua hàm sau:

(defun VarList (lst) (vl-princ-to-string (mapcar '(lambda ( x ) (strcase (vl-princ-to-string x) t)) lst)))
;;; Vi du:
(VarList '( C a d V i e t. c o m)) ---> "(c a d v i e t. c o m)"

Sau đó, bạn hãy lựa chọn những đối tượng mà bạn muốn cục bộ hóa, chép vào phía sau: (defun( /  để giải phóng bộ nhớ, tiết kiệm dung lượng và hạn chế tương tác giữa các LISP với nhau!
 

Nguồn bài viết: Lý Mẹc

 

Chúc các bạn thật nhiều niềm vui, hình như các bạn không thích topic này lắm?!

Có cách nào làm cho nó sinh động lên không? Các bạn vui lòng đóng gốp ý kiến!


  • 4

22665_13x13progress.gif   22665_lyky.gif   22665_13x13progress.gif


#51 duy267

duy267

    biết vẽ point

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

Đã gửi 10 June 2013 - 11:02 PM

Chúc các bạn thật nhiều niềm vui, hình như các bạn không thích topic này lắm?!

Có cách nào làm cho nó sinh động lên không? Các bạn vui lòng đóng gốp ý kiến!

 

Topic hay lắm bạn. Từ khi mình đọc qua nó mình đã học hỏi được rất nhiều về những ưu điểm tuyệt vời của VL mà trước đó chưa bao giờ biết tới. Mình vẫn âm thầm theo dõi vàh học hỏi và mình nghĩ rất nhiều người cũng giống mình. Chúc bạn sức khỏe và thành công.


  • 1

#52 duy267

duy267

    biết vẽ point

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

Đã gửi 10 June 2013 - 11:10 PM

Đối với danh sách trả về sau khi check, các biến ở dạng chữ in hoa, nếu bạn muốn chuyển về chữ thường, hãy chạy list đó qua hàm sau:

(defun VarList (lst) (vl-princ-to-string (mapcar '(lambda ( x ) (strcase (vl-princ-to-string x) t)) lst)))
;;; Vi du:
(VarList '( C a d V i e tt)) ---> "(c a d v i e tt)"

 

Có cách khác là copy danh sách biến đó qua N++, nhấn Ctrl+U để chuyển text qua chữ thường, sau đó copy và paste lại vào trong lisp.


  • 0

#53 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 11 June 2013 - 08:08 AM

.................

 

Đối với danh sách trả về sau khi check, các biến ở dạng chữ in hoa, nếu bạn muốn chuyển về chữ thường, hãy chạy list đó qua hàm sau:

(defun VarList (lst) (vl-princ-to-string (mapcar '(lambda ( x ) (strcase (vl-princ-to-string x) t)) lst)))
;;; Vi du:
(VarList '( C a d V i e tt)) ---> "(c a d v i e tt)"

........

Visual LISP Editor đã có sẳn các công cụ này : 15454_downcase.jpg


  • 2

#54 lyky

lyky

    biết vẽ polygon

  • Members
  • PipPip
  • 70 Bài viết
Điểm đánh giá: 126 (tàm tạm)

Đã gửi 17 June 2013 - 02:08 PM

Chạy Debug code LISP bán tự động


Hôm nay SN xin được trình bày cách chạy Debug bán tự động, không dùng tiện ích Animate, nghĩa là khi chạy debug chúng ta không check chọn Animate trong tab Debug.

 

Thực ra, chúng ta có thể linh động hơn một chút xíu - bằng cách, trong lúc chạy thủ công, đang ở một bước nào đó, bạn cũng có thể gọi tiện ích animate lên và Ctrl+F8 để tiếp tục chạy tự động. Tuy nhiên, điều ngược lại không thực hiện được, nghĩa là nếu đã bắt đầu chuyển qua chạy bằng animate, chúng ta chỉ có thể thoát ra: abort evaluation, thoát lệnh và trả sang màn hình acad.

 

Ngoài ra, chức năng watching variables xem như tiện dụng để theo dõi sự liên đới của các biến. Tuy nhiên, có thể là sẽ rất khó xem đầy đủ với các list dài, chẳng hạn ... Do đó, nếu chỉ xem và theo dõi sự thay đổi giá trị của một biến nào đó, chúng ta có thể sử dụng console window để xem giá trị sau mỗi thay đổi.

 

Một điều nhỏ nữa là bạn cần lưu ý, uncheck tiện ích animate sau khi chạy xong, nếu không, khi bạn trở lại acad, sử dụng một lệnh nào đó liên quan đến file LISP hiện hành, sẽ vấp phải sự "delay" vì y cứ tưởng bạn đạng chạy debug (animate chỉ dùng để chạy debug mà thôi!).


  • 2

22665_13x13progress.gif   22665_lyky.gif   22665_13x13progress.gif


#55 lyky

lyky

    biết vẽ polygon

  • Members
  • PipPip
  • 70 Bài viết
Điểm đánh giá: 126 (tàm tạm)

Đã gửi 14 August 2013 - 02:49 PM

Autoload LISP

 
Trở lại một vấn đề quen thuộc là Autoload LISP, chúng ta có rất nhiều cách như sau:

1. Dùng Startup Suite.
2. Bổ xung Autoload vào file Acad.lsp hoặc Acadxxxxdoc.lsp…

Tuy nhiên, đối với những cách này, file LISP mà bạn muốn đặt Autoload cần phải nằm trong Support (Trừ phi bạn biên đầy đủ đường dẫn của nó!), Có thể là bất tiện và khó khăn trong việc trao đổi (Share - Copy – Move…). Chúng ta có thể dùng một cách khác, cách này phù hợp với các bạn xài trình soạn Visual LISP IDE để coding và test LISP, ứng dụng Project vào việc Autoload. Khi đó, Folder chứa các file LISP bạn cần Autoload, có thể đặt ở một nơi nào tùy thích, miễn là thuận tiện cho bạn!

2.1 Trước tiên, bạn cần có sẵn một Project.
 

22665_123456.jpg

 
2.2 Sau đó, bạn vào Options > Files > Support File Search Path > Add > Nhập (hoặc Browse) đến Project mà bạn cần Autoload với tên đầy đủ của Project đó (có đuôi *.prj)

2.3 Move Up lên đầu, để được load trước (chuyện này không cần thiết lắm!)

2.4 Apply > OKei.

Từ nay, bạn muốn thêm bớt file LISP cần Autoload vào Project rất dễ dàng (tương tự như Startup Suite). Tuy nhiên, khi máy (hoặc Acad) bị sự cố đột ngột – chúng ta cũng không sợ mất LISP (vì bạn có thể tạo Project trên các ổ đĩa khác C).
 

Chúc các bạn thật nhiều niềm vui nhé!


  • 2

22665_13x13progress.gif   22665_lyky.gif   22665_13x13progress.gif


#56 hoan3666

hoan3666

    biết pan

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

Đã gửi 21 April 2016 - 09:54 PM

cho em xin link dowload visual lips editer ạ


  • 0