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

[Yêu cầu] Lisp xuất text theo thứ tự chọn ra excel

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

Code hoàn thiện cho bạn "sanit"

TKTver2.0

Code lần này có 1 số ưu điểm sau:

1.Chỉ xuất text là số, nếu bạn có lỡ chọn Text là chữ cũng không sao

2.Chỉ thực hiện khi số Text chia hết cho 8. Nếu bạn chọn số Text không chia hết cho 8 => Thoát hàm

3.Lưu ý: Chọn 1 lần quét tất cả Text cần xuất

4.Thêm chức năng kẻ bảng trong Cad, chiều cao chữ bằng chính chiều cao chữ bạn chọn

Thân!

http://www.cadviet.c...67_tktver20.rar

 

Bạn thật nhiệt tình ^^ Thanks !

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

Mình sử dụng VBA của Bác Sơn mà không được . Tại sao không chọn xuất được text bác nhỉ Các Bác bổ sung thêm code xuất được cả text nhé. Phần code của bác sanit em không sử dụng được vì máy tính của em chỉ sử dụng cad2007 và office2003 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

Code cho bạn VBA Xuất Text cao độ KC lẻ và cao độ tự nhiên

Tải file về giải nén, Mở Cad Load (Lệnh AP) 2 file này vào

Sau đó đánh lệnh TKT, sẽ có hướng dẫn cụ thể

Thân !

http://www.cadviet.com/upfiles/3/48467_desktop.rar

  • 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

Hề hề hề,

Phiền bạn test thử cái lisp này coi đã ưng ý chưa nhé.


(defun c:xtxt ()
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq tmp (getfiled "Chon file xuat Text goc" (getvar "dwgprefix") "csv;txt" 1))
(setq fw (open tmp "w"))
(setq p1 (getpoint "\n Chon diem dat bang"))
(setq h (getreal "\n Nhap chieu cao chu: "))
(alert "\n Chon lan luot cac text can xuat trong mot nhom ")
(setq sst (ssget (list (cons 0 "*text"))))
(while sst
(setq sstl (acet-ss-to-list sst)
  			p2 (polar p1 0 (* 8 h))
  			p3 (polar p2 0 (* 8 h))
  			p4 (polar p3 0 (* 8 h))
  			p5 (polar p4 0 (* 8 h))
  			p6 (polar p5 0 (* 8 h))
  			p7 (polar p6 0 (* 8 h))
  			p8 (polar p7 0 (* 8 h))
  			p9 (polar p8 0 (* 8 h))
  			p11 (polar p1 (- (/ pi 2)) (* 4 h))
  			p12 (polar p2 (- (/ pi 2)) (* 4 h))
  			p13 (polar p3 (- (/ pi 2)) (* 4 h))
  			p14 (polar p4 (- (/ pi 2)) (* 4 h))
  			p15 (polar p5 (- (/ pi 2)) (* 4 h))
  			p16 (polar p6 (- (/ pi 2)) (* 4 h))
  			p17 (polar p7 (- (/ pi 2)) (* 4 h))
  			p18 (polar p8 (- (/ pi 2)) (* 4 h))
  			p19 (polar p9 (- (/ pi 2)) (* 4 h))
  			p21 (list (+ (car p1) (* 4 h)) (- (cadr p1) (* 2 h)))
  			k 0
  			txl ""
)
(command "pline" p1 p9 p19 p11 "c")
(command "pline" p2 p12 "" )
(command "pline" p3 p13 "" )
(command "pline" p4 p14 "" )
(command "pline" p5 p15 "" )
(command "pline" p6 p16 "" )
(command "pline" p7 p17 "" )
(command "pline" p8 p18 "" )
(foreach txt sstl
           (setq t1 (cdr (assoc 1 (entget txt)))                      
                     txl (strcat txl t1 ",")  )
           (command "text" "j" "mc" (list (+ (car p21) (* k 8 h)) (cadr p21)) h 0 t1)
           (setq  k (1+ k ) )
)
(write-line txl fw)
(alert "\n Tiep tuc chon lan luot cac text can xuat cho nhom ke tiep")
(setq sst (ssget (list (cons 0 "*text"))))
(setq p1 p11)
)
(close fw)
(setvar "osmode" oldos)
(princ)
)

Chúc bạn vui.

Cám ơn Bạn.

Lisp của bạn khi xuất ra Excel rất chuẩn, mình xin nhờ bạn giúp cho việc : vì số lượng text cần xuất ra excel rất lớn, khi tạm ngưng muốn xuất tiếp tục và ghi nối và file cũ đã xuất trước đó, cho đỡ ghép các file lại với nhau.

Không cần việc xuất ra bảng cad mà chỉ ra và ghi vào file excel thôi

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

Mình đã sửa theo hướng dẫn. Không biết sao lisp xtxt thì máy nhà chạy được, còn chép vào laptop, hiện thông báo và ngưng không chọn tiếp , kén tùy file Cad.

chắt thiếu thông số gì trên file. Mong bạn giúp.

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

Bạn hãy nói rõ lỗi xuất hiện từ lúc nào trong quá trình chạy? Sau khi lỗi, nhấn F2, copy và paste lên đây xem. Tôi đang nghi ngờ ở 1 chỗ.

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

Bạn hãy nói rõ lỗi xuất hiện từ lúc nào trong quá trình chạy? Sau khi lỗi, nhấn F2, copy và paste lên đây xem. Tôi đang nghi ngờ ở 1 chỗ.

Chon diem dat bang

Nhap chieu cao chu: 1

 

Select objects: Specify opposite corner: 6 found

 

Select objects:

; error: no function definition: ACET-SS-TO-LIST

 

Lỗi như thế này đó bạ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

Vậy là cad trong laptop chưa cài Tool Express?

Bạn sửa dòng này:

(setq sstl (acet-ss-to-list sst)

Thành:

(setq sstl (vl-remove-if 'listp (mapcar 'cadr (ssnamex sst))))

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ậy là cad trong laptop chưa cài Tool Express?

Bạn sửa dòng này:

(setq sstl (acet-ss-to-list sst)

Thành:

(setq sstl (vl-remove-if 'listp (mapcar 'cadr (ssnamex sst))))

Laptop thấy Tool Express

Vẫn lổi như cũ, mình cần cài lại Cad không bạ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

srr, bạn bỏ bớt 1 dấu ngoặc sau cùng, do tôi viết thừa. Như thế này nhé:

(setq sstl (vl-remove-if 'listp (mapcar 'cadr (ssnamex sst)))

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
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=65674&pid=217437&st=20entry217437
(defun c:xtxt ()
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq tmp (getfiled "Chon file xuat Text goc" (getvar "dwgprefix") "csv;txt" 1))
(setq fw (open tmp "a"))
(setq p1 (getpoint "\n Chon diem dat bang"))
(setq h (getreal "\n Nhap chieu cao chu: "))
(alert "\n Chon lan luot cac text can xuat trong mot nhom ")
(setq sst (ssget (list (cons 0 "*text"))))
(while sst
(setq sstl (vl-remove-if 'listp (mapcar 'cadr (ssnamex sst)))
; (setq sstl (acet-ss-to-list sst)
   p2 (polar p1 0 (* 8 h))
   p3 (polar p2 0 (* 8 h))
   p4 (polar p3 0 (* 8 h))
   p5 (polar p4 0 (* 8 h))
   p6 (polar p5 0 (* 8 h))
   p7 (polar p6 0 (* 8 h))
   p8 (polar p7 0 (* 8 h))
   p9 (polar p8 0 (* 8 h))
   p11 (polar p1 (- (/ pi 2)) (* 4 h))
   p12 (polar p2 (- (/ pi 2)) (* 4 h))
   p13 (polar p3 (- (/ pi 2)) (* 4 h))
   p14 (polar p4 (- (/ pi 2)) (* 4 h))
   p15 (polar p5 (- (/ pi 2)) (* 4 h))
   p16 (polar p6 (- (/ pi 2)) (* 4 h))
   p17 (polar p7 (- (/ pi 2)) (* 4 h))
   p18 (polar p8 (- (/ pi 2)) (* 4 h))
   p19 (polar p9 (- (/ pi 2)) (* 4 h))
   p21 (list (+ (car p1) (* 4 h)) (- (cadr p1) (* 2 h)))
   k 0
   txl ""
)
(command "pline" p1 p9 p19 p11 "c")
(command "pline" p2 p12 "" )
(command "pline" p3 p13 "" )
(command "pline" p4 p14 "" )
(command "pline" p5 p15 "" )
(command "pline" p6 p16 "" )
(command "pline" p7 p17 "" )
(command "pline" p8 p18 "" )
(foreach txt sstl
           (setq t1 (cdr (assoc 1 (entget txt)))                      
                     txl (strcat txl t1 ",")  )
           (command "text" "j" "mc" (list (+ (car p21) (* k 8 h)) (cadr p21)) h 0 t1)
           (setq  k (1+ k ) )
)
(write-line txl fw)
(alert "\n Tiep tuc chon lan luot cac text can xuat cho nhom ke tiep")
(setq sst (ssget (list (cons 0 "*text"))))
(setq p1 p11)
)
(close fw)
(setvar "osmode" oldos)
(princ)
)

  • 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

Cám ơn Bạn, file này thì được khi xuất ra Excel, nhưng trên Cad thì các só theo hàng thể hiện lại bằng 0.

Mình có thể nhờ bạn giúp cho việc xuất các sồ trên ra excel theo một qui luật, như sau :

1. Chọn theo đường bao đa giác bất kỳ.

2. Xuất nội dung theo lớp khi chọn đường bao đó

3. xuất ra excel theo từng hàng ngang theo thứ tự sau STT ô - CDTN1,2............. -Diện tích

File gởi kèm

http://www.cadviet.com/upfiles/3/114381_ycau_1_1.dwg

Rất mong được bạn giúp.

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ậy các bác có lisp nào như sau:

Trong nhiều vùng khép kín, ở mỗi vũng có “Text” và “số” , “Text” thì nằm không theo quy luật nào trong vùng khép kin đó cả, noi chung là năm bất kỳ trong vùng khép kín đó, nhưng “số” thì nằm tại tâm của vùng kín, vì đã có tâm điểm rồi,

Có lisp nào có thể đưa “Text” về “số” hay là tâm của vùng khép kin đó được không, cảm ơn các bác,

hoa

 

Công việc em ngày nào cũng phải nhặt thóc như thế này, lâu lắm

 

Hoặc gán “Text” và “số” ra file *.txt, hay *.csv cũng được. miên sao có định dạng

1 Text 10

2 Text 22

3 Text 34

4 Text 41

5 Text 57

……………….

……………….115001_toolwiz20121120152417jpgjpg_1.jpg

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ậy các bác có lisp nào như sau:

Trong nhiều vùng khép kín, ở mỗi vũng có “Text” và “số” , “Text” thì nằm không theo quy luật nào trong vùng khép kin đó cả, noi chung là năm bất kỳ trong vùng khép kín đó, nhưng “số” thì nằm tại tâm của vùng kín, vì đã có tâm điểm rồi,

Có lisp nào có thể đưa “Text” về “số” hay là tâm của vùng khép kin đó được không, cảm ơn các bác,

hoa

 

Công việc em ngày nào cũng phải nhặt thóc như thế này, lâu lắm

 

Hoặc gán “Text” và “số” ra file *.txt, hay *.csv cũng được. miên sao có định dạng

1 Text 10

2 Text 22

3 Text 34

4 Text 41

5 Text 57

……………….

……………….

Hề hề hề,

Bạn cần gửi file bản vẽ lên mới có thể biết được có làm được hay không chứ. hãy đọc kỹ nội quy post bài khi yêu cầu viết lisp.

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

Đây bác ạ, đây là ví du của emhttp://www.cadviet.c...115001_vidu.dwg

Hề hề hề,

Bạn dùng thử cái này coi sao nhé.

Lưu ý rằng:

1/- Lisp viết trên cơ sở các thông số do bản vẽ của bạn cung cấp, tỷ như các text số đều nằm trên layer TCT và text chữ nằm trên layer TT_CHU. Vì thế nếu bản vẽ của bạn dùng không đúng với sự sắp xếp này thì lisp sẽ không cho kết quả đúng.

2/- Lisp hoạt động trên nguyên tắc move text chữ về vị trí tương ứng với text số hiện có mà không thay đổi vị trí của text số. Việc chọn text chữ để move dựa trên khoảng cách từ các text chữ tới mỗi text số. Vì thế nếu như trên bản vẽ của bạn có các text chữ trong khung khác với text số nhưng lại gần text số đó hơn thì lisp sẽ move text chữ này. Do vậy trước khi chạy lisp bạn cần quan sát sơ bộ bản vẽ và điều chỉnh các text chữ này nếu thấy cần thiết.

3/- Các text hiện có trên bản vẽ bạn gửi đều có canh lề ngang là center. Vì thế nếu các bản vẽ khác mà text có canh lề không phải là center thì lisp sẽ chạy ra kết quả không như ý.

4/- Để có thể sử dụng lisp hữu hiệu, bạn nên tìm hiểu kỹ về nó trước khi dùng, Hãy cố gắng vì nếu không sẽ rất dễ bị lợn lành chữa thành lợn toi.

 

http://www.cadviet.com/upfiles/3/5194_movetext.lsp

 

Chúc bạn vui.

  • 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

Bác ơi sao không chạy được bác a,bấn điểm thứ nhất , rồi bấn đường chéo của điểm thứ 2 mà nó không chạy, em dùng cad R14, và cả cad 2004 mà vẫn không chạy được bác ạ

 

Nó hiện lên như thế này bác ạ

 

 

( Chon diem thu nhat cua cua so

Chon diem thu hai cua cua so theo duong cheo; error: no function definition:

ACET-SS-TO-LIST)

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

Bác ơi sao không chạy được bác a,bấn điểm thứ nhất , rồi bấn đường chéo của điểm thứ 2 mà nó không chạy, em dùng cad R14, và cả cad 2004 mà vẫn không chạy được bác ạ

 

Nó hiện lên như thế này bác ạ

 

 

( Chon diem thu nhat cua cua so

Chon diem thu hai cua cua so theo duong cheo; error: no function definition:

ACET-SS-TO-LIST)

hề hề hề,

Vậy là bạn chưa cài Express tool rồi.

Để mình chỉnh lại lisp vậy.

 

Của bạn đây:

http://www.cadviet.com/upfiles/3/5194_movetext_1.lsp

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


×