Chuyển đến nội dung
Diễn đàn CADViet
Jin Yong

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

Các bài được khuyến nghị

2 phút trước, cuongtk2 đã nói:

Bạn hãy làm chỉ một nút togle  cho 1 editbox để test xem có được hay không rồi hãy triển khai hàng  loạt, tôi cảm thấy bạn không kiểm soát được dcl .

Nút togle trả về giá trị string "0" hoặc "1" nên không cần atoi làm gì, nếu bạn cần tắt một tile editbox thì mới cần.

Như bạn cần khi tick  "ON" vào nút có key "tg1" để làm mờ edit_box có key "ed1" bạn sẽ làm như sau:

(action_tile "tg1" (mode_tile "ed1" (atoi $value)))

ở đây $value là giá trị hiện tại của "tg1"

còn với thực hiện action

(defun hamdulieutracdoc ()

(setq kieuve 1

           tg1 (get_tile "tg1")

           ed1 (get_tile "ed1)

           tg2 ....

.....));end hamdulieutracdoc

(action_tile "vetracdoc" "(hamdulieutracdoc)(done_dialog 1)")

(action_tile "vetracngang" "(hamdulieutracngang)(done_dialog 1)")

(action_tile "cancel" "(done_dialog 0)")

bạn bỏ nút OK đi vì nó chẳng để làm gì, và nút Cancel cũng không cần thiết vì có thể tắt bằng cách đóng cửa sổ

nếu kiểu vẽ = 1 sẽ thi hành hàm vẽ trắc dọc

(if  (= kieuve 1) (vetracdoc))

(if (= kieuve 2) (vetracngang))

 

 

 

 

Cảm ơn bác nhiều!

Em mới tập tành về DCL nên còn lộn xộn. Qua cách giải thích của bác em đã hiểu. Vừa rồi em cũng đã được bác @Doan Van Ha giúp đỡ và tìm ra chỗ sai rồi. 

Chân thành cảm ơn bác về sự góp ý quý báu.

P/s: Em đợi cả tối, mãi đến đêm mới được hỗ trợ. Hii.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các bác cho em hỏi chút:

Hàm (vl-directory-files  Dir "ext" 1)  trả về danh sách file trong folder Dir,

nhưng nếu các file chứa tiếng việt thì danh sách trả về không đúng.

Vậy cho em hỏi có hàm nào có thể lấy danh sách file mà trong tên của nó có chứa tiếng việt không ạ?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
16 phút trước, Doan Nguyen Van đã nói:

Các bác cho em hỏi chút:

Hàm (vl-directory-files  Dir "ext" 1)  trả về danh sách file trong folder Dir,

nhưng nếu các file chứa tiếng việt thì danh sách trả về không đúng.

Vậy cho em hỏi có hàm nào có thể lấy danh sách file mà trong tên của nó có chứa tiếng việt không ạ?

Mấy thằng VL/VLA/VLAX rất dốt tiếng Việt, trong khi các hàm liên quan đến file hầu hết là thuộc nhóm đó. Nên hình như không có (?)

Theo chủ quan cá nhân tôi là tôi đoạn tuyệt với tên file Vietnamese cho đỡ đau đầu, vì nó không đụng chỗ này rồi cũng đụng chỗ khác.

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
23 phút trước, Doan Van Ha đã nói:

Mấy thằng VL/VLA/VLAX rất dốt tiếng Việt, trong khi các hàm liên quan đến file hầu hết là thuộc nhóm đó. Nên hình như không có (?)

Theo chủ quan cá nhân tôi là tôi đoạn tuyệt với tên file Vietnamese cho đỡ đau đầu, vì nó không đụng chỗ này rồi cũng đụng chỗ khác.

Đau đầu thật bác ạ, cháu vừa thử 1 đống ACet-file ... mà vẫn không được, chẳng lẽ đành bó tay thật 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
3 giờ trước, Doan Nguyen Van đã nói:

Đau đầu thật bác ạ, cháu vừa thử 1 đống ACet-file ... mà vẫn không được, chẳng lẽ đành bó tay thật 

Vấn đề nữa là đọc rồi cũng không làm gì được. Vì các lệnh liên quan tới file đều không hỗ trợ path unicode. Nếu muốn chỉ có thể viết bằng .net thôi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
3 giờ trước, Doan Nguyen Van đã nói:

Đau đầu thật bác ạ, cháu vừa thử 1 đống ACet-file ... mà vẫn không được, chẳng lẽ đành bó tay thật 

Để hôm nào rảnh rỗi viết các hàm Lisp sử dụng .NET là sử dụng Unicode vô tư (không chỉ tiếng Việt ).

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
35 phút trước, ngokiet đã nói:

Vấn đề nữa là đọc rồi cũng không làm gì được. Vì các lệnh liên quan tới file đều không hỗ trợ path unicode. Nếu muốn chỉ có thể viết bằng .net thôi.

 

15 phút trước, gia_bach đã nói:

Để hôm nào rảnh rỗi viết các hàm Lisp sử dụng .NET là sử dụng Unicode vô tư (không chỉ tiếng Việt ).

Cảm ơn các bác, e có test được hàm này  (Acet-file-dir  "ext" Dir)

Có điều đúng là khó quản lý thật.....

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
37 phút trước, Doan Nguyen Van đã nói:

 

Cảm ơn các bác, e có test được hàm này  (Acet-file-dir  "ext" Dir)

Có điều đúng là khó quản lý thật.....

Bác dùng thử cái này của mình xem

 

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
11 giờ trước, ngokiet đã nói:

Bác dùng thử cái này của mình xem

 

Em trước giờ chỉ lập trình Lisp. 

Thấy ứng dụng này có vẻ hay quá,.. 

Mới bắt đầu bác cho em hỏi chút: 

- Để lập trình VB.Net thì dùng ứng dụng nào (theo e tìm hiểu thì có thể dùng: Visual Studio, MS C#) 

- Khi lập trình xong, làm sao để load cùng với file vd.lsp chính mỗi khi khởi động cad

- Có thể đóng gói lại để cho gọn (giống .VLX, .fas ..) không ạ 

Chân thành cảm ơn bác! (Em có search diễn đàn mà thông tin không nhiều, các thông tin thì chủ yếu về các hàm) 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
47 phút trước, Doan Nguyen Van đã nói:

Em trước giờ chỉ lập trình Lisp. 

Thấy ứng dụng này có vẻ hay quá,.. 

Mới bắt đầu bác cho em hỏi chút: 

- Để lập trình VB.Net thì dùng ứng dụng nào (theo e tìm hiểu thì có thể dùng: Visual Studio, MS C#) 

- Khi lập trình xong, làm sao để load cùng với file vd.lsp chính mỗi khi khởi động cad

- Có thể đóng gói lại để cho gọn (giống .VLX, .fas ..) không ạ 

Chân thành cảm ơn bác! (Em có search diễn đàn mà thông tin không nhiều, các thông tin thì chủ yếu về các hàm) 

- Lập trình .NET thì dùng Visual Studio. Nó có cả Visual Basic và C++ trong đó luôn.

- Muốn load cùng file lisp thì lisp cú sử dụng netload thôi. Còn load khi khởi động thì bác load lisp nó theo lisp. Hay tham khảo thêm https://knowledge.autodesk.com/support/autocad/learn-explore/caas/sfdcarticles/sfdcarticles/How-to-autoload-DLLs-with-AutoCAD.html

- Nó luôn đóng gói xong mới sủ dụng được. Đây là ngôn ngữ cần bien dịch chứ không chạy trực tiếp. Nó dịch ra file dll cho autocad.

 

Mình cũng biết ít thôi. Nó là ngôn ngữ lập trình chung. Có thể tạo ứng dụng riêng rất mạnh. Không có ai biết hết nó dâu. Mình chỉ tìm hiểu cơ bản và mình muốn làm gì thôi. Dọc help là chính.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Lâu ko đụng đến lisp nên h quên hết r, các bạn cho mình hỏi, mình có 1 list input như bên dưới, làm sao để có output như mình mong muốn:

INPUT:

(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
)

OUTPUT:

(list
 (list "A" (list 2 2) (list 3 3) (list 4 4))
 (list "B" (list 11 12) (list 13 14) (list 15 16))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
)

Mình xin cảm ơn !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào Dương Nhat Duy!

Bạn thử code sau: 


(defun c:test (/ a b c ptdau lst)
(setq a 
(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
))
(setq b (vl-sort a '(lambda(x y) (< (car x) (car y)))) lst '())
(while (/= (length b) 0)
  (setq c (vl-remove-if '(lambda(x) (/= (car x) (caar b))) b))
  (setq ptdau (car c))
  (if (cdr c)
    (foreach x (cdr c)
     (setq lst (append lst (list (list (car ptdau) (mapcar '(lambda(q z) (mapcar '+ q z)) (cdr ptdau) (cdr x))))))
    )
    (setq lst (append lst (list ptdau)))
  )
  (setq b (vl-remove-if '(lambda(x) (= (car x) (caar b))) b))
)
           lst)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
6 giờ trước, Duong Nhat Duy đã nói:

Lâu ko đụng đến lisp nên h quên hết r, các bạn cho mình hỏi, mình có 1 list input như bên dưới, làm sao để có output như mình mong muốn:

INPUT:

  • cadvietlisp.lsp
    lisp help
  •  

(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
)

OUTPUT:

  • cadvietlisp.lsp
    lisp help
  •  

(list
 (list "A" (list 2 2) (list 3 3) (list 4 4))
 (list "B" (list 11 12) (list 13 14) (list 15 16))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
)

Mình xin cảm ơn !

Mình cùng mới viết thử.

Bạn test hàm sau

(defun test(ss / x kq)
  (while ss
    (setq x (car ss)
	  ss (vl-remove-if '(lambda(a)
			      (if (eq (car a) (car x))
				(setq x (cons (car x) (mapcar '(lambda(b c) (mapcar '+ b c)) (cdr x) (cdr a)))))) (cdr ss))
	  kq (cons x kq)))
  (reverse kq))

 

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
39 phút trước, Tue_NV đã nói:

Chào Dương Nhat Duy!

Bạn thử code sau: 

 



(defun c:test (/ a b c ptdau lst)
(setq a 
(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
))
(setq b (vl-sort a '(lambda(x y) (< (car x) (car y)))) lst '())
(while (/= (length b) 0)
  (setq c (vl-remove-if '(lambda(x) (/= (car x) (caar b))) b))
  (setq ptdau (car c))
  (if (cdr c)
    (foreach x (cdr c)
     (setq lst (append lst (list (list (car ptdau) (mapcar '(lambda(q z) (mapcar '+ q z)) (cdr ptdau) (cdr x))))))
    )
    (setq lst (append lst (list ptdau)))
  )
  (setq b (vl-remove-if '(lambda(x) (= (car x) (caar b))) b))
)
           lst)

 

Hình như bác thừa bước sort. Nếu sort thì duyệt qua 1 lận là xong đâu cần vl-remove.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
4 phút trước, ngokiet đã nói:

Hình như bác thừa bước sort. Nếu sort thì duyệt qua 1 lận là xong đâu cần vl-remove.

 

Không thừa đâu bạn.

Vì điều kiện mình đang kiểm tra (/= (length b) 0) . Nếu không remove thì (length b) nó khác 0 hoài thôi 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, Tue_NV đã nói:

 

Không thừa đâu bạn.

Vì điều kiện mình đang kiểm tra (/= (length b) 0) . Nếu không remove thì (length b) nó khác 0 hoài thôi 

Ý mình như thế này là được

(defun test(ss / x y kq)
  (setq ss (vl-sort ss '(lambda(a b) (> (car a) (car b))))
	x  (caar ss)
	y  (cdar ss))
  (foreach z (cdr ss)
    (if (eq (car z) x)
      (setq y (mapcar '(lambda(a b) (mapcar '+ a b)) y (cdr z)))
      (setq kq (cons (cons x y) kq)
	    x  (car z)
	    y  (cdr z))))
  (cons (cons x y) kq))

Hay trong hàm của bác ở chỗ (setq b (vl-sort ....)) Thì (setq b a) nó vẫn chạy đúng.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 4/11/2019 tại 19:28, Tue_NV đã nói:

Chào Dương Nhat Duy!

Bạn thử code sau: 

 



(defun c:test (/ a b c ptdau lst)
(setq a 
(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
))
(setq b (vl-sort a '(lambda(x y) (< (car x) (car y)))) lst '())
(while (/= (length b) 0)
  (setq c (vl-remove-if '(lambda(x) (/= (car x) (caar b))) b))
  (setq ptdau (car c))
  (if (cdr c)
    (foreach x (cdr c)
     (setq lst (append lst (list (list (car ptdau) (mapcar '(lambda(q z) (mapcar '+ q z)) (cdr ptdau) (cdr x))))))
    )
    (setq lst (append lst (list ptdau)))
  )
  (setq b (vl-remove-if '(lambda(x) (= (car x) (caar b))) b))
)
           lst)

 

 

Vào lúc 4/11/2019 tại 20:37, ngokiet đã nói:

Ý mình như thế này là được

  • cadvietlisp.lsp
    lisp help
  •  

(defun test(ss / x y kq)
  (setq ss (vl-sort ss '(lambda(a b) (> (car a) (car b))))
	x  (caar ss)
	y  (cdar ss))
  (foreach z (cdr ss)
    (if (eq (car z) x)
      (setq y (mapcar '(lambda(a b) (mapcar '+ a b)) y (cdr z)))
      (setq kq (cons (cons x y) kq)
	    x  (car z)
	    y  (cdr z))))
  (cons (cons x y) kq))

Hay trong hàm của bác ở chỗ (setq b (vl-sort ....)) Thì (setq b a) nó vẫn chạy đúng.

 

Cảm ơn các bạn nhiều !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào các bác! Em loay hoay với việc xử lý hàm mà không ra nên đành nhờ các bác chỉ giáo

Em có 1 list: 

Đầu vào: (setq L2 '((1 2 1.00) (2 3 1.00) (3 4 1.00) (4 5 5.00) (5 6 3.45) (6 7 1.00) (7 8 1.00) (8 9 1.00) (9 10 3.60)))

Đầu ra thu gọn: (1 4 3.0)(4 5 5.0)(5 6 3.45)(6 9 3.0)(9 10 3.6)

Tức là phần tử thứ 3 trong phần tử con nhỏ hơn 2.0 thì giữ nguyên phần tử đầu, phần tử thứ 2 bằng phần tử thứ 2 cuối cùng mà có phần tử thứ 3 < 2.0, phần tử thứ 3 bằng tổng các phần tử thứ 3 nhỏ hơn 2.0.

Em mong được các bác chỉ giáo. Đầu óc dạo này ngu muội quá

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
17 phút trước, thanhduan2407 đã nói:

Chào các bác! Em loay hoay với việc xử lý hàm mà không ra nên đành nhờ các bác chỉ giáo

Em có 1 list: 

Đầu vào: (setq L2 '((1 2 1.00) (2 3 1.00) (3 4 1.00) (4 5 5.00) (5 6 3.45) (6 7 1.00) (7 8 1.00) (8 9 1.00) (9 10 3.60)))

Đầu ra thu gọn: (1 4 3.0)(4 5 5.0)(5 6 3.45)(6 9 3.0)(9 10 3.6)

Tức là phần tử thứ 3 trong phần tử con nhỏ hơn 2.0 thì giữ nguyên phần tử đầu, phần tử thứ 2 bằng phần tử thứ 2 cuối cùng mà có phần tử thứ 3 < 2.0, phần tử thứ 3 bằng tổng các phần tử thứ 3 nhỏ hơn 2.0.

Em mong được các bác chỉ giáo. Đầu óc dạo này ngu muội quá

Đọc đề 15' bể não, kết quả không hiểu gì hết

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
8 phút trước, Doan Van Ha đã nói:

Đọc đề 15' bể não, kết quả không hiểu gì hết

Dạ!

Trong danh sách L2 thì phần tử thứ nhất là (1 2 1.0) (gọi là pt1), vì trong pt1 có 1.0 < 2.0 nên xét tiếp phần tử tiếp theo, trong pt2 cũng có  1.0 < 2.0 nên xét tiếp đến pt3....

Đến phần tử thứ 4 có 5.0 > 2.0 nên tạo thành 1 phần tử mới (1 4 3.0), cái 3.0 = 1.0 + 1.0 + 1.0 của các phần tử trước.

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
9 giờ trước, thanhduan2407 đã nói:

Chào các bác! Em loay hoay với việc xử lý hàm mà không ra nên đành nhờ các bác chỉ giáo

Em có 1 list: 

Đầu vào: (setq L2 '((1 2 1.00) (2 3 1.00) (3 4 1.00) (4 5 5.00) (5 6 3.45) (6 7 1.00) (7 8 1.00) (8 9 1.00) (9 10 3.60)))

Đầu ra thu gọn: (1 4 3.0)(4 5 5.0)(5 6 3.45)(6 9 3.0)(9 10 3.6)

Tức là phần tử thứ 3 trong phần tử con nhỏ hơn 2.0 thì giữ nguyên phần tử đầu, phần tử thứ 2 bằng phần tử thứ 2 cuối cùng mà có phần tử thứ 3 < 2.0, phần tử thứ 3 bằng tổng các phần tử thứ 3 nhỏ hơn 2.0.

Em mong được các bác chỉ giáo. Đầu óc dạo này ngu muội quá

Bác thử cái này xem: 

(defun tachlist (lst / lst1 z x y l1)
  (setq lst1 (list) z 0 )
  (while (setq l1 (car lst))
    (setq lst (cdr lst))
    (if (< (caddr l1) 2.0) (if (= z 0) (setq x (car l1) y (cadr l1) z (caddr l1)) (setq y (cadr l1) z (+ z (caddr l1))))
		(if (= z 0) (Setq lst1 (append lst1 (list l1))) (Setq lst1 (append lst1 (list (list x y z) l1)) z 0)))
    )
  lst1
  )

 

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
29 phút trước, Doan Nguyen Van đã nói:

Bác thử cái này xem: 

  • cadvietlisp.lsp
    lisp help
  •  

(defun tachlist (lst / lst1 z x y l1)
  (setq lst1 (list) z 0 )
  (while (setq l1 (car lst))
    (setq lst (cdr lst))
    (if (< (caddr l1) 2.0) (if (= z 0) (setq x (car l1) y (cadr l1) z (caddr l1)) (setq y (cadr l1) z (+ z (caddr l1))))
		(if (= z 0) (Setq lst1 (append lst1 (list l1))) (Setq lst1 (append lst1 (list (list x y z) l1)) z 0)))
    )
  lst1
  )

 

Tuyệt vời quá! Zin luôn. Cảm ơn em nhiều nhé! Tiếc là không vote được nhiều LIKE.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
9 phút trước, thanhduan2407 đã nói:

Tuyệt vời quá! Zin luôn. Cảm ơn em nhiều nhé! Tiếc là không vote được nhiều LIKE.

Bất quá, hàm này vẫn lấy ra cả phần tử có z < 2 nếu trong list các vị trí z=1 không đứng cạnh nhau bác ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
12 phút trước, Doan Nguyen Van đã nói:

Bất quá, hàm này vẫn lấy ra cả phần tử có z < 2 nếu trong list các vị trí z=1 không đứng cạnh nhau bác ạ

Anh dùng nó OK mà.

(defun C:00 (/ I L1 L2 LOOP LTSPNT OBJTUYEN P0 P1 P2 S0 SDOAN)
  (vl-load-com)
  (setvar "CMDECHO" 0)
  (setq	ObjTuyen
	 (car
	   (LM:SelectIf
	     "\nCh\U+1ECDn Polyline:  "
	     (lambda (x)
	       (eq "LWPOLYLINE"
		   (cdr (assoc 0 (entget (car x))))
	       )
	     )
	     entsel
	     nil
	   )
	 )
  )
  (setq LtsPnt (acet-geom-vertex-list ObjTuyen))
  (setq L1 (list))
  (setq i 0)
  (while (< i (- (length LtsPnt) 1))
    (setq Sdoan	(- (vlax-curve-getDistAtParam ObjTuyen (+ i 1))
		   (vlax-curve-getDistAtParam ObjTuyen i)
		)
    )
    (setq L1 (append L1 (list (list (+ i 1) (+ i 2) Sdoan))))
    (setq i (1+ i))
  )
  (princ (tachlist L1))
  (princ)
)
(defun tachlist	(lst / lst1 z x y l1)
  (setq	lst1 (list)
	z    0
  )
  (while (setq l1 (car lst))
    (setq lst (cdr lst))
    (if	(< (caddr l1) 2.0)
      (if (= z 0)
	(setq x	(car l1)
	      y	(cadr l1)
	      z	(caddr l1)
	)
	(setq y	(cadr l1)
	      z	(+ z (caddr l1))
	)
      )
      (if (= z 0)
	(Setq lst1 (append lst1 (list l1)))
	(Setq lst1 (append lst1 (list (list x y z) l1))
	      z	   0
	)
      )
    )
  )
  lst1
)
(defun LM:GetXWithDefault (_function _prompt _symbol _default / _toString)
  ;; © Lee Mac 2010

  (setq	_toString
	 (lambda (x)
	   (cond
	     ((eq getangle _function) (angtos x))
	     ((eq 'REAL (type x)) (rtos x))
	     ((eq 'INT (type x)) (itoa x))
	     (x)
	   )
	 )
  )

  (set _symbol
       (
	(lambda	(input)
	  (if (or (not input) (eq "" input))
	    (eval _symbol)
	    input
	  )
	)
	 (_function (strcat _prompt
			    "<"
			    (_toString (set _symbol
					    (cond ((eval _symbol))
						  (_default)
					    )
				       )
			    )
			    "> : "
		    )
	 )
       )
  )
)

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
15 phút trước, Doan Nguyen Van đã nói:

Bất quá, hàm này vẫn lấy ra cả phần tử có z < 2 nếu trong list các vị trí z=1 không đứng cạnh nhau bác ạ

Chuẩn rồi em. Nếu không đứng cạnh nhau nó vẫn lấy. Anh quên mất là trường hợp đó nữa

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×