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ị

lâu ngày giờ mới lại được lên cadviet.com xin giúp đỡ


bác giúp em tý nữa được không


làm sao tô màu thật nhanh layer khép kín mà không ảnh hưởng đến các layer khác và không phải làm thủ công là tô từng layer 


vd: http://www.cadviet.com/upfiles/3/115001_1_1.dwg


 và sẽ được 2 như sau


http://www.cadviet.com/upfiles/3/115001_2_1.dwg


xin bác giúp cho


em cảm ơn 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

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.

 

Chào bác, e muốn cao cấp hơn chút là cho phép chọn lựa cả text, mtext, dimension và cả giá  trị trong block attribute nữa, sau đó giá trị lưu trong lưu trong clipboard để khi cần mình có thể copy ra excel luôn. Mong bác giúp e, e đang rất cần để lấy một loạt giá trị thống kê thé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
Kịp thời}}, phamthanhbinh cho biết:

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.

 

Kịp thời}}, Doan Van Ha cho biết:

;; 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)
)
 

 

Cảm ơn các bác đã cho lisp rất hay. Nếu được các bác chỉnh lại giúp tôi theo yêu cầu như bản vẽ dưới đây thì tuyệt vời. xin cảm ơn nhiều. Rất mong hồi âm của các bác

Banve.dwg

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
Kịp thời}}, Doan Van Ha cho biết:

;; 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)
)
 

 

Hi anh,

Em đã dùng lisp này thì phần xuất ra CSV rất đúng ý em muốn, nhưng em làm bên Cơ khí nên chỉ cần lấy phần text trong file CSV là đủ, dù nó không đúng bảng mã tiếng Việt cũng không sao, nhưng em không cần dùng xuất ra bảng trong cad, nghĩa là bỏ biến p1 và h trong đoạn code, mà em thì không rành lisp nên không biết cách xóa như thế nào, mong được anh 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
Kịp thời}}, Black Roses cho biết:

Hi anh,

Em đã dùng lisp này thì phần xuất ra CSV rất đúng ý em muốn, nhưng em làm bên Cơ khí nên chỉ cần lấy phần text trong file CSV là đủ, dù nó không đúng bảng mã tiếng Việt cũng không sao, nhưng em không cần dùng xuất ra bảng trong cad, nghĩa là bỏ biến p1 và h trong đoạn code, mà em thì không rành lisp nên không biết cách xóa như thế nào, mong được anh giúp đỡ ạ ^^

bạn xóa các dòng code không sử dụng đi hoặc co thêm ký tự ";" vào đầu dòng đó là cả dòng code đó thành ghi chú. mình sửa file cho bạn chạy thử xem.

 

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

×