Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] Lisp chọn Text nằm rời rạc trong bản vẽ xuất sang Excel


  • Please log in to reply
4 replies to this topic

#1 vetgo

vetgo

    biết vẽ polygon

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

Đã gửi 23 August 2011 - 02:43 PM

Em tìm mãi trên diễn đàn nhưng chỉ thấy Lisp xuất Text sang excel khi mà các Text được sắp xếp có quy luật. H e gặp vấn đề này mong các bác giúp đỡ
- Có 1 loạt các ký tự không theo quy luật nào cả, ví dụ t2, 1v, nam, ... nằm rải rác trong bản vẽ;
- H e muốn chọn các text đó (lần lượt từng text 1) sau đó xuất sang file excel theo thứ tự text vừa được chọn.
Thank's các bác trước!
  • 0
Nếu nội dung post là có ích, xin tick + để thăng hàm lên lương...

#2 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 23 August 2011 - 05:29 PM

Em tìm mãi trên diễn đàn nhưng chỉ thấy Lisp xuất Text sang excel khi mà các Text được sắp xếp có quy luật. H e gặp vấn đề này mong các bác giúp đỡ
- Có 1 loạt các ký tự không theo quy luật nào cả, ví dụ t2, 1v, nam, ... nằm rải rác trong bản vẽ;
- H e muốn chọn các text đó (lần lượt từng text 1) sau đó xuất sang file excel theo thứ tự text vừa được chọn.
Thank's các bác trước!

Của bạn đây. Không biết đúng ý bạn không?
(defun c:xtrr( / ss i fn fh item Pnt TEXT)
(vl-load-com)
(setq ss (acet-ss-to-list (ssget (list (cons 0 "TEXT")))))
(setq i 1)
(setq fn (getfiled "Text Export File" "" "csv" 1))
(setq fh (open fn "w"))
(write-line (strcat "STT" "," "X" "," "Y""," "Z" "," "TEXT") fh)
(foreach item ss
(setq temp (entget item)
Pnt (cdr (assoc 10 temp))
TEXT (cdr (assoc 1 temp))
)
(write-line (strcat (rtos i 2 0) "," (rtos (car Pnt) 2 3) "," (rtos (cadr Pnt) 2 3)"," (rtos (caddr Pnt) 2 3) "," TEXT) fh)
(setq i (1+ i))
)
(close fh)
(princ)
)

  • 3



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







#3 BuiHuuNghia

BuiHuuNghia

    biết zoom

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

Đã gửi 17 January 2014 - 06:40 PM

Ai giúp mình sửa lisp xtrr.lsp này lại thành xtrr1.lsp với nội dung cần sửa nằm ở 2 hình bên dưới.
 
Hình 1: Sau khi dùng lisp xtrr.lsp, quét 1 lần hết tất cả các giá trị trong màn hình thì nhận được kết quả như hình 1 (theo như mình thấy thì xtrr.lsp nhận giá trị trong cad theo thứ tự từ phải qua trái, nhận hết giá trị hàng bên dưới rồi mới nhận giá trị từ phải qua trái của hàng trên, rồi xuất ra excel theo thứ tự từ trên xuống dưới).

  - Nhờ các cao thủ trên diễn đàn sửa thành xtrr1.lsp với 3 thay đổi sau:

     +Khi quét tất cả thì nhận giá trị trong cad theo thứ tự từ trái qua phải, nhận hết giá trị hàng bên dưới rồi mới nhận giá trị từ trái qua phải 

       của hàng trên rồi xuất ra excel theo thứ tự từ trên xuống dưới như hình 2.

     +Sau khi có file excel thì tự động mở file excel đó lên luôn.

     +Các dữ liệu số trong excel (VD: 1 hay -9690.54 là dữ liệu số, UNIT 106 là dữ liệu chữ) phải ở dạng number chứ không phải general, dữ

       liệu chữ ở dạng general (cái này mình nghĩ lisp không làm được đâu, nhưng vẫn đề xuất thử, không được thì để tất cả ở dạng general  

       cũng được).              127110_xtrr2__copy.jpg
 
 
 
Hình 2: Lisp xtrr.lsp cũng có thể làm được như hình 2 nhưng phải chọn từng giá trị, mà một lần mình làm rất nhiều giá trị nên không thể làm vậy được. Cũng có cách khá nhanh là dùng xtrr.lsp, rồi vào excel chọn 6 row 2->7 sort theo cột A giảm dần, tương tự với 6 row 8->13, xong sửa cột STT lại từ 1->12 là từ hình 1 trở thành hình 2. Tuy nhiên do làm nhiều bản vẽ nên có lsp sẽ nhanh hơn nhiều. Mong các bạn giúp.127110_xtrr2__copy__copy_4.jpg

 

Hi, tự dưng mình quên up file. File cad, excel đã dùng sort và lisp (chính là lisp xtrr.lsp ở trên, mình chỉ copy xuống thôi):

http://www.cadviet.c...127110_vdcl.dwg

http://www.cadviet.c...dùng_sort_1.rar

 

 

(

defun c:xtrr( / ss i fn fh item Pnt TEXT) (vl-load-com) (setq ss (acet-ss-to-list (ssget (list (cons 0 "TEXT"))))) (setqi 1) (setq fn (getfiled "Text Export File" "" "csv" 1)) (setq fh (open fn "w")) (write-line (strcat "STT" "," "X" ",""Y"" "" "" "") fh) (foreach item ss (setq temp (entget item) Pnt (cdr (assoc 10 temp)) TEXT (cdr (assoc 1 temp)) ) (write-line (strcat (rtos i 2 0) "" (rtos (car Pnt) 2 3) "" (rtos (cadr Pnt) 2 3)"" (rtos (caddr Pnt) 2 3) "" TEXT) fh) (setq i (1+ i)) ) (close fh) (princ) )


Bài viết đã được chỉnh sửa nội dung bởi BuiHuuNghia: 18 January 2014 - 12:44 PM

  • 0

#4 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 17 January 2014 - 09:33 PM

Ai giúp mình sửa lisp này lại thành xtrr1.lsp với nội dung cần sửa nằm ở 2 hình bên dưới.
 
Hình 1: Sau khi dùng lisp xtrr.lsp, quét 1 lần hết tất cả các giá trị trong màn hình thì nhận được kết quả như hình 1 (theo như mình thấy thì xtrr.lsp nhận giá trị trong cad theo thứ tự từ phải qua trái rồi xuất ra excel theo thứ tự từ trên xuống dưới. Nhờ các cao thủ trên diễn đàn sửa thành xtrr1.lsp, khi quét tất cả thì nhận giá trị trong cad theo thứ tự từ trái qua phải, rồi xuất ra excel theo thứ tự từ trên xuống dưới như hình 2.
 
 
 
Hình 2. Lisp xtrr.lsp cũng có thể làm được như hình 2 nhưng phải chọn từng giá trị, mà một lần mình làm rất nhiều giá trị nên không thể làm vậy được. Cũng có cách khá nhanh là dùng xtrr.lsp, rồi vào excel chọn 6 row 2->7 sort theo cột A giảm dần, tương tự với 6 row 8->13, xong sửa cột STT lại từ 1->12 là từ hình 1 trở thành hình 2. Tuy nhiên do làm nhiều bản vẽ nên có lsp sẽ nhanh hơn nhiều. Mong các bạn giúp.

Hề hề hề,

Cái "lisp này" nó ở đâu vầy cà??? Chả nhòm thấy nó thì mần răng mà sửa hè???

Muốn viết lisp mới thì phải gửi cái bản vẽ lên chớ.

Bạn không phải là ngưới lần đầu vô diễn đàn này. Bởi vậy hãy chịu khó đọc kỹ các quy định của diễn đàn và thực hiện đúng bạn nhé. Hãy tôn trọng diễn đàn và chung sức để diễn đàn ngày một tốt hơn.


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

#5 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 17 January 2014 - 10:07 PM

Ai giúp mình sửa lisp này lại thành xtrr1.lsp với nội dung cần sửa nằm ở 2 hình bên dưới.
 
Hình 1: Sau khi dùng lisp xtrr.lsp, quét 1 lần hết tất cả các giá trị trong màn hình thì nhận được kết quả như hình 1 (theo như mình thấy thì xtrr.lsp nhận giá trị trong cad theo thứ tự từ phải qua trái rồi xuất ra excel theo thứ tự từ trên xuống dưới. Nhờ các cao thủ trên diễn đàn sửa thành xtrr1.lsp, khi quét tất cả thì nhận giá trị trong cad theo thứ tự từ trái qua phải, rồi xuất ra excel theo thứ tự từ trên xuống dưới như hình 2.127110_xtrr2__copy.jpg
 
 
 
Hình 2. Lisp xtrr.lsp cũng có thể làm được như hình 2 nhưng phải chọn từng giá trị, mà một lần mình làm rất nhiều giá trị nên không thể làm vậy được. Cũng có cách khá nhanh là dùng xtrr.lsp, rồi vào excel chọn 6 row 2->7 sort theo cột A giảm dần, tương tự với 6 row 8->13, xong sửa cột STT lại từ 1->12 là từ hình 1 trở thành hình 2. Tuy nhiên do làm nhiều bản vẽ nên có lsp sẽ nhanh hơn nhiều. Mong các bạn giúp.127110_xtrr2__copy__copy_2.jpg

S­ữ dụng chức năng sort của excel đi bạn, đừng lạm quá lạm dụng lisp mà lãng phí thứ gì ta đang có !!!


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson