Đến nội dung


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

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


  • Please log in to reply
2854 replies to this topic

#2621 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 22 July 2015 - 08:28 AM

Cám ơn ndtnv. Tôi đã like bữa trước, nghĩa là rõ rồi mà. Nói chung là do sửa code có sẵn nên thường không để ý tốc độ, chứ khi viết mới - đặc biệt khi đã lưu tâm đến tốc độ - thì thường là các hạn chế trên đều né.


  • 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.


#2622 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 22 July 2015 - 09:38 AM

Nhờ các bác chỉ giáo sửa em 1 chút để hoàn thiện việc tăng tốc độ được không ạ?

Vì không chỉ bài toán nhỏ này mà em có kế hoạch nâng cấp hết lại các chương trình em viết. Vì đa số em hay dùng Append, chương trình chạy rất chậm nên đôi khi em thất vọng. Em cảm ơn các bác nhiều.

P/s: Em vọc được cả 2 cách bác @Phamthanhbinh và bác @Doan Van Ha rồi

(vl-load-com)
(defun replace_str (str)
  (setq	rs (acet-str-replace "," " " str)
	rs (acet-str-replace "	" " " rs)
  )
  (split_space rs)
)
(defun split_space (str)
  (vl-remove-if
    '(lambda (x) (= x ""))
    (acet-str-to-list " " str)
  )
)

(defun c: (/ DATA F I L1 LINE LST LST1 LST2 LST3  LST4 TEN)
  (if (setq ten (getfiled "Select File" (getvar "dwgprefix") "txt" 8))
    (progn
      (setq f (open (findfile ten) "r"))
      (setq lst (list))
      (while
	(setq Line (read-line f))
	 (wcmatch Line
		  (strcat "*" (chr 9) "*,*" (chr 32) "*,*" (chr 44) "*")
	 )
	 (progn
	   (setq data (replace_str Line))
	   (if (/= (length data) 0)
	     (progn
	       (setq lst (cons data lst))
	     )
	   )
	 )
      )

      (setq i 0)
      (while
	(setq l1 (nth i (reverse lst)))
	 (if (not (equal (car l1) "COC"))
	   (setq lst1 (append lst1 (list l1)))
	   (progn
	     (setq lst2	(append lst2 (list lst1))
		   lst1	(list l1)
	     )
	   )
	 )
	 (setq i (1+ i))
      )

      (setq lst3 (cdr (append lst2 (list lst1))))
      (setq lst4 (mapcar '(lambda (x)
			    (cons  (cadr (car x))  (cdr x) )
			  ) lst3
		 )
      )
    )
  )
  (princ  lst4)
  (princ)
)

File Test: http://www.cadviet.c...6665_test_2.txt


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2623 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 22 July 2015 - 10:14 AM

Nhờ các bác chỉ giáo sửa em 1 chút để hoàn thiện việc tăng tốc độ được không ạ?

Vì không chỉ bài toán nhỏ này mà em có kế hoạch nâng cấp hết lại các chương trình em viết. Vì đa số em hay dùng Append, chương trình chạy rất chậm nên đôi khi em thất vọng. Em cảm ơn các bác nhiều.

P/s: Em vọc được cả 2 cách bác @Phamthanhbinh và bác @Doan Van Ha rồi

(vl-load-com)
(defun replace_str (str)
  (setq	rs (acet-str-replace "," " " str)
	rs (acet-str-replace "	" " " rs)
  )
  (split_space rs)
)
(defun split_space (str)
  (vl-remove-if
    '(lambda (x) (= x ""))
    (acet-str-to-list " " str)
  )
)

(defun c: (/ DATA F I L1 LINE LST LST1 LST2 LST3  LST4 TEN)
  (if (setq ten (getfiled "Select File" (getvar "dwgprefix") "txt" 8))
    (progn
      (setq f (open (findfile ten) "r"))
      (setq lst (list))
      (while
	(setq Line (read-line f))
	 (wcmatch Line
		  (strcat "*" (chr 9) "*,*" (chr 32) "*,*" (chr 44) "*")
	 )
	 (progn
	   (setq data (replace_str Line))
	   (if (/= (length data) 0)
	     (progn
	       (setq lst (cons data lst))
	     )
	   )
	 )
      )

      (setq i 0)
      (while
	(setq l1 (nth i (reverse lst)))
	 (if (not (equal (car l1) "COC"))
	   (setq lst1 (append lst1 (list l1)))
	   (progn
	     (setq lst2	(append lst2 (list lst1))
		   lst1	(list l1)
	     )
	   )
	 )
	 (setq i (1+ i))
      )

      (setq lst3 (cdr (append lst2 (list lst1))))
      (setq lst4 (mapcar '(lambda (x)
			    (cons  (cadr (car x))  (cdr x) )
			  ) lst3
		 )
      )
    )
  )
  (princ  lst4)
  (princ)
)

File Test: http://www.cadviet.c...6665_test_2.txt

Hề hề hề,

1/- Sorry thanhduan2407 vì mấy hôm rồi bận nên không vào diễn đàn được. Do đó chưa trả lời các thắc mắc của bạn được. Nay thấy bạn pphung183 đã trả lời trúng nên chắc thanhduan2407 sẽ xử lý được.

2/- Việc code của mình hiện tại thú thực là do hạn chế về kiến thức (học mót mà) nên chưa thể giải quyết được các vấn đề về tốc độ cũng như thuật toán tối ưu được. Hầu hết đều chỉ mới ở dạng thực hiện được nhiệm vụ cụ thể nào đó chứ chưa thể tổng quát hóa nó lên. Vì vậy nó luôn chỉ có thể là một cách để tham khảo và người dùng có thể dựa vào đó để giải quyết cái khó khăn trước mắt của mình cho phù hợp với yêu cầu của công việc mà thôi. Còn về lâu dài và cơ bản thì đều yêu cầu người dùng phải có các kiến thức tối thiểu về lisp để hiệu chỉnh và hoàn thiện nó nhằm phục vụ tốt nhất cho yêu cầu của họ.

3/- Quá trình code lisp theo yêu cầu của mình thực chất là một quá trình tự học hỏi để có thể hiểu biết nhiều hơn về các thuật toán cũng như các khả năng sử dụng lisp để phục vụ cho mục đích công việc của mình. Do vậy không thể tránh được các khiếm khuyết thường gặp của những người đi học mà chưa có nhiều kinh nghiệm thực tiễn. Rất mong mọi người thể tất cho những khiếm khuyết đó và giúp đỡ mình nhiều hơn để có thể hoàn thiện kiến thức của bản thân.

4/- Vô cùng cám ơn mọi góp ý của các bác, các anh chị em trên diễn đàn đã góp ý cũng như giúp đỡ mình trong quá trình học hỏi của mình trên diễn đàn.

 

@Bác DoanVanHa: không hiểu sao mà lisp của bác khi mình down về và sử dụng thì bị báo lỗi là ; error: syntax error (Mình đã check tỷ mỉ các dấu ngoặc đóng mở thì đều thấy đủ và OK cả ).

Vì thế mình chưa test được để hiểu cách sử dụng hàm (mapcar .....) của bác. Có lẽ là lỗ do mình vẫn dùng Cad2004 chăng. Bác có thể giúp mình cach sửa để mình có thể chạy được cái lisp của bác không????


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2624 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 22 July 2015 - 11:02 AM

Hề hề hề,

@Bác DoanVanHa: không hiểu sao mà lisp của bác khi mình down về và sử dụng thì bị báo lỗi là ; error: syntax error (Mình đã check tỷ mỉ các dấu ngoặc đóng mở thì đều thấy đủ và OK cả ).

Vì thế mình chưa test được để hiểu cách sử dụng hàm (mapcar .....) của bác. Có lẽ là lỗ do mình vẫn dùng Cad2004 chăng. Bác có thể giúp mình cach sửa để mình có thể chạy được cái lisp của bác không????

- Lỗi syntax error chắc là do lỗi down load của diễn đàn. Bác thử mở trong vlide xem sao.

- Lisp của tôi có 2 hàm vl-... cad 2004 không có >> bác có thể tự tạo 2 hàm đó để dùng cho 2004.


  • 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.


#2625 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 22 July 2015 - 08:37 PM

Sau một ngày hì hụi em đã có sản phẩm của mình. Em cảm ơn các bác nhiều đã giúp em hoàn thành sản phẩm.


  • 1



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2626 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 22 July 2015 - 09:43 PM

Chúc mừng em đã hoàn thành tác phẩm. Tặng em hàm này, viết trau chuốt hơn, và tốc độ chắc chắn sẽ nhanh hơn các hàm ở trên.

; Doc va sap xep 1 file *.txt thanh 1 list gom cac nhom khac nhau.
(defun C:HA (/ fn group)
 (setq group "COC")
 (if (setq fn (getfiled "Select File" (getvar "dwgprefix") "txt" 8))
  (HA fn group)))
(defun HA (fn group / fr line lst1 lst2) 
 (setq fr (open (findfile fn) "r"))
 (while (setq line (read-line fr))
  (if (vl-string-search group line)
   (setq lst2 (append lst2 (list lst1))
         lst1 (list (read (vl-string-trim "\t" (vl-string-trim group line)))))
   (setq lst1 (Rcons (Ptr->L line) lst1))))
 (close fr)
 (cdr (append lst2 (list lst1))))
(defun Rcons (ele lis)
 (reverse (cons ele (reverse lis))))
(defun Ptr->L(ptr)
 (read (strcat "(" ptr ")")))

  • 2

* 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.


#2627 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 22 July 2015 - 10:03 PM

 

Chúc mừng em đã hoàn thành tác phẩm. Tặng em hàm này, viết trau chuốt hơn, và tốc độ chắc chắn sẽ nhanh hơn các hàm ở trên.

; Doc va sap xep 1 file *.txt thanh 1 list gom cac nhom khac nhau.
(defun C:HA (/ fn group)
 (setq group "COC")
 (if (setq fn (getfiled "Select File" (getvar "dwgprefix") "txt" 8))
  (HA fn group)))
(defun HA (fn group / fr line lst1 lst2) 
 (setq fr (open (findfile fn) "r"))
 (while (setq line (read-line fr))
  (if (vl-string-search group line)
   (setq lst2 (append lst2 (list lst1))
         lst1 (list (read (vl-string-trim "\t" (vl-string-trim group line)))))
   (setq lst1 (Rcons (Ptr->L line) lst1))))
 (close fr)
 (cdr (append lst2 (list lst1))))
(defun Rcons (ele lis)
 (reverse (cons ele (reverse lis))))
(defun Ptr->L(ptr)
 (read (strcat "(" ptr ")")))

Thật tuyệt vời bác ạ! Em cảm ơn bác! Tốc độ rất tuyệt. Mong được học lỏm của bác nhiều hơn nữa. ^^


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2628 nhoclangbac

nhoclangbac

    biết vẽ circle

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

Đã gửi 22 July 2015 - 10:53 PM

Thật tuyệt vời bác ạ! Em cảm ơn bác! Tốc độ rất tuyệt. Mong được học lỏm của bác nhiều hơn nữa. ^^

Nhoc thấy lạ là sao dùng (setq fr (open (findfile fn) "r")) chi cho dài dòng. Sao không chơi luôn (setq fr (open fn "r"))   :P

(open filename mode)

filename : Một chuỗi chỉ định tên và phần mở rộng của các tập tin được mở. Nếu bạn không xác định tên đường dẫn đầy đủ của tập tin, hàm open coi như bạn đang đề cập đến filename tại thư mục bản vẽ AutoCAD mặc định (bản vẽ đang mở).


  • 1

#2629 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 23 July 2015 - 06:54 AM

Thanhduan nên bao cafe cho nhoclangbac đi nhé! Cái tội viết thừa dẫn đến vạ lây cho người khác. <_<


  • 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.


#2630 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 23 July 2015 - 08:53 AM

Thanhduan nên bao cafe cho nhoclangbac đi nhé! Cái tội viết thừa dẫn đến vạ lây cho người khác. <_<

Thực ra em tham khảo các hàm của bác. Em không dùng vì kết quả trả về khác với em. Em tạo ra 1 danh sách chứ không phải là 1 chuỗi string.

Cách thức mở file thì.......cái này em mặc định OK rồi nên cũng không để ý lắm. Hii. 


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2631 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 23 July 2015 - 10:29 AM

Thực ra em tham khảo các hàm của bác. Em không dùng vì kết quả trả về khác với em. Em tạo ra 1 danh sách chứ không phải là 1 chuỗi string.

Cách thức mở file thì.......cái này em mặc định OK rồi nên cũng không để ý lắm. Hii. 

Đỏ: hàm của tôi tạo ra 1 list, trong list cũng không có string nào cả. Thanhduan thử đọc kết quả trả về chưa?

 

((C1 (P 4.966 3.277) (P 11.632 7.723) (P 17.779 4.347) (T 9.231 6.644) (T 20.103 1.069)) 

(C2 (P 4.855 8.792) (P 12.383 2.158) (P 21.547 6.564) (T 15.522 8.782) (T 21.191 4.376)) 

(C3 (P 2.656 1.109) (P 13.758 9.941) (P 21.266 3.277) (T 6.088 1.03) (T 11.869 6.624) (T 21.094 3.277)...)


  • 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.


#2632 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 23 July 2015 - 12:20 PM

Hiii. Tại em đọc nhanh có cái 

 

 

(strcat "(" ptr ")")))

nên em nghĩ sai. Xin lỗi bác nhiều!


  • -1



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2633 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 24 July 2015 - 02:54 PM

Chào anh chị,

 Em có viết 1 đoạn lisp nhỏ để load các file  lisp trong 1 folder chỉ định truớc như sau:

 

(defun C:AutoLoad_TranSon (/ dd lstfile lstpath path pathlsp)

(vl-load-com)
(setvar "Modemacro" "@ Tran Cong Son _ Detail SS")
(setq lstpath (list "D:\\My Documents\\Desktop\\Scrip"
"D:\\4.AutoLisp\\2.Tran Son_AutoLisp"
);;;List cac Folder can Load
)
(foreach path lstpath
(setq lstdir (vl-directory-files path "*" -1)
lstdir (vl-remove-if '(lambda (x) (wcmatch x ".,..")) lstdir)
pathlsp (list)
)
(if lstdir
(setq pathlsp (append pathlsp (mapcar '(lambda (x) (strcat path "\\" x)) lstdir)))
(setq pathlsp (cons path pathlsp))
)
(foreach dd pathlsp
(setq lstfile (vl-directory-files dd "*.lsp")
lstfile (vl-remove "Autoload File Lisp-Tran Son.LSP" lstfile))
(mapcar '(lambda (x) (vl-load-all (strcat dd "\\" x))) lstfile)
)
)
(princ)
)
(C:AutoLoad_TranSon)

 

Hôm qua nó chạy bình thường nhưng hôm nay load nó hiện thông báo trên commmandline như thế này ạ

 
Command: AUTOLOAD_TRANSON
; error: VLISP: internal: Document application(.VLX) not found

 

Anh chị check giúp em COde có sai chỗ nào không với...

Em cảm ơn,


  • 0

#2634 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 24 July 2015 - 11:56 PM

@Tr.CongSon

Bạn tham khảo bài #21 http://www.cadviet.c...cua-minh/page-2


  • 1

#2635 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 25 July 2015 - 01:54 PM

Chào anh chị,

 Em có viết 1 đoạn lisp nhỏ để load các file  lisp trong 1 folder chỉ định truớc như sau:

 

(defun C:AutoLoad_TranSon (/ dd lstfile lstpath path pathlsp)

(vl-load-com)
(setvar "Modemacro" "@ Tran Cong Son _ Detail SS")
(setq lstpath (list "D:\\My Documents\\Desktop\\Scrip"
"D:\\4.AutoLisp\\2.Tran Son_AutoLisp"
);;;List cac Folder can Load
)
(foreach path lstpath
(setq lstdir (vl-directory-files path "*" -1)
lstdir (vl-remove-if '(lambda (x) (wcmatch x ".,..")) lstdir)
pathlsp (list)
)
(if lstdir
(setq pathlsp (append pathlsp (mapcar '(lambda (x) (strcat path "\\" x)) lstdir)))
(setq pathlsp (cons path pathlsp))
)
(foreach dd pathlsp
(setq lstfile (vl-directory-files dd "*.lsp")
lstfile (vl-remove "Autoload File Lisp-Tran Son.LSP" lstfile))
(mapcar '(lambda (x) (vl-load-all (strcat dd "\\" x))) lstfile)
)
)
(princ)
)
(C:AutoLoad_TranSon)

 

Hôm qua nó chạy bình thường nhưng hôm nay load nó hiện thông báo trên commmandline như thế này ạ

 
Command: AUTOLOAD_TRANSON
; error: VLISP: internal: Document application(.VLX) not found

 

Anh chị check giúp em COde có sai chỗ nào không với...

Em cảm ơn,

1/ Code của bạn không có vấn đề gì. Nhưng bất tiện ở chỗ : khi tìm đường dẫn tới thư mục giả sử là A thì :

a) Nếu trong A có các file *.lsp và các thư mục C, D thì nó không load các file trong A mà chỉ load các file trong C, D

B) Nếu trong A chí có các file *.lsp thì nó mới load các file này :)

2/ Bạn nói báo lỗi :

 
Command: AUTOLOAD_TRANSON
; error: VLISP: internal: Document application(.VLX) not found
Tôi cũng không hiểu sao có lỗi này vì bạn load có chọn lọc là các file *,lsp :wub: .
3/ Chú ý đặc biệt : Các thư mục và file tuyệt đối không gõ dấu Vietnamese khi load các file ứng dụng của Autocad.

  • 1

#2636 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 25 July 2015 - 01:58 PM

Chú ý dành cho tất cả các member là khi Post câu hỏi và trả lời thì 4room dấu mất tiêu 1 số đoạn khiến người đọc chẳng hiểu gì :D


  • 0

#2637 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 26 July 2015 - 07:38 AM

 

1/ Code của bạn không có vấn đề gì. Nhưng bất tiện ở chỗ : khi tìm đường dẫn tới thư mục giả sử là A thì :

a) Nếu trong A có các file *.lsp và các thư mục C, D thì nó không load các file trong A mà chỉ load các file trong C, D

B) Nếu trong A chí có các file *.lsp thì nó mới load các file này :)

2/ Bạn nói báo lỗi :

 
Command: AUTOLOAD_TRANSON
; error: VLISP: internal: Document application(.VLX) not found
Tôi cũng không hiểu sao có lỗi này vì bạn load có chọn lọc là các file *,lsp :wub: .
3/ Chú ý đặc biệt : Các thư mục và file tuyệt đối không gõ dấu Vietnamese khi load các file ứng dụng của Autocad.

 

 

Cảm ơn @pphung183

  1. Em thiếu trường hợp này ^^hi.Để em nghiên cứu Code thêm ^^.Cho em hỏi thêm tí: Có cách nào ,khi mình load lần đầu tiên ,nó sẽ lưu luôn đường dẫn zô cái biến lstpath nứ không a??
  2. Hì hục 1 ngày thứ 7 ,ruốt cuộc cũng tìm ra lỗi rồi anh ^^ Nguyên nhân do em dùng lisp này của chị ThuyLinh313: http://www.cadviet.c...viet-trong-cad/
  3. Không chỉ cho Autocad mà các phần mêm khác cũng nên làm như vậy ạ ^^

P/s: Dạo này em gõ comment ,cái con trỏ chuột hay chuyển về đầu dòng và copy past 1 số thông tin vào bài gửi thì nó lại bị che mờ hoặc ẩn đi -->gây khó chịu cho người đọc lắm ạ.Hix.Các a Mod xem lại giúp.Thanks!


  • 0

#2638 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 July 2015 - 12:36 PM

Cảm ơn @pphung183

  1. Có cách nào ,khi mình load lần đầu tiên ,nó sẽ lưu luôn đường dẫn zô cái biến lstpath nứ không a??

http://www.cadviet.c...p-vua-moi-load/


  • 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.


#2639 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 03 August 2015 - 09:06 AM

Các bác cho em hỏi chút về thuật toán.

Em có 1 list

 

(setq L1 (list '(2 3) '(4 7) '(12 4) '(1 34) '(56 9) '(0 23)))

Ngoài thuật toán sort ra, em muốn lấy ra danh sách nào mà có phần tử đầu tiên nhỏ nhất trong danh sách ấy được không ạ? (Ví dụ trên thì kết quả trả về (0 23) )

Nếu dùng hàm apply 'min.....thì áp dụng được không ạ?


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#2640 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 03 August 2015 - 10:10 AM

Các bác cho em hỏi chút về thuật toán.

Em có 1 list

Ngoài thuật toán sort ra, em muốn lấy ra danh sách nào mà có phần tử đầu tiên nhỏ nhất trong danh sách ấy được không ạ? (Ví dụ trên thì kết quả trả về (0 23) )

Nếu dùng hàm apply 'min.....thì áp dụng được không ạ?

 

 Em nghĩ dùng Vl-sort nhanh hơn chứ.^^

 Nếu apply'min thì như vây đuợc ko ạ

(setq l2 (apply 'min (mapcar 'car l1))
lst (list l2 (cadr (assoc l2 l1))))


  • 0