Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
xdd

chuyển thống kê thép sang excel

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

các cao thủ trên diễn đàn sao ko thấy ai giup minh thế, minh đang cần gấp lắm

bác Amin xem có sáng kiến gì hay ko

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 cao thủ trên diễn đàn sao ko thấy ai giup minh thế, minh đang cần gấp lắm

bác Amin xem có sáng kiến gì hay ko

Hề hề hề,

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

Mình viết và chỉ lấy ra các giá trị cần dùng để tinh toán mà thôi,nghĩa là chỉ lấy từ cột đường kính trở đi. Các số liệu khác mình thấy không cần thiết nên không mất công lấy làm chi. Còn nếu bạn thấy cần thì hãy tự bổ sung thêm dựa trên cái mình đã làm nhé.


(defun c:tab2exl (/ lst1 lst2 lst3 lst4 lst5 lst6)
(setq ssbl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1))))
         fn (getfiled "Chon file de save" "" "csv" 1)
         fw (open fn "w"))
(foreach bl ssbl
     (setq en (entnext bl))
     (while (/= (cdr (assoc 0 (entget en))) "SEQEND")
        	(if (= (cdr (assoc 0 (entget en))) "ATTRIB")
            	(cond
                  	((or (= (cdr (assoc 2 (entget bl))) "TK_2") (= (cdr (assoc 2 (entget bl))) "TK_4")
                             (= (cdr (assoc 2 (entget bl))) "TK_5") (= (cdr (assoc 2 (entget bl))) "TK_6"))
                           (if (= (cdr (assoc 2 (entget en))) "TL") (setq lst6 (append lst6 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "DT") (setq lst5 (append lst5 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "SLA") (setq lst4 (append lst4 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "SL1") (setq lst3 (append lst3 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "DAI") (setq lst2 (append lst2 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "DK") (setq lst1 (append lst1 (list (cdr (assoc 1 (entget en)))))))
                  	)
                  	( T nil)
               )
           )
           (setq en (entnext en))
     )
)
(setq ldata (mapcar 'list lst1 lst2 lst3 lst4 lst5 lst6))
(princ  "DK, DAI, SL1, SLA, DT, TL\n" fw)
(foreach data ldata
   (setq txt (strcat  (nth 0 data)  ","  (nth 1 data) "," (nth 2 data)  "," (nth 3 data)  "," (nth 4 data)  "," (nth 5 data) ","))
	(princ (strcat txt "\n") fw)
)
(close fw)
(princ)
)

Chúc bạn vui.

  • Vote tăng 3

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ề,

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

Mình viết và chỉ lấy ra các giá trị cần dùng để tinh toán mà thôi,nghĩa là chỉ lấy từ cột đường kính trở đi. Các số liệu khác mình thấy không cần thiết nên không mất công lấy làm chi. Còn nếu bạn thấy cần thì hãy tự bổ sung thêm dựa trên cái mình đã làm nhé.


(defun c:tab2exl (/ lst1 lst2 lst3 lst4 lst5 lst6)
(setq ssbl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1))))
         fn (getfiled "Chon file de save" "" "csv" 1)
         fw (open fn "w"))
(foreach bl ssbl
     (setq en (entnext bl))
     (while (/= (cdr (assoc 0 (entget en))) "SEQEND")
    		(if (= (cdr (assoc 0 (entget en))) "ATTRIB")
        		(cond
              		((or (= (cdr (assoc 2 (entget bl))) "TK_2") (= (cdr (assoc 2 (entget bl))) "TK_4")
                             (= (cdr (assoc 2 (entget bl))) "TK_5") (= (cdr (assoc 2 (entget bl))) "TK_6"))
                           (if (= (cdr (assoc 2 (entget en))) "TL") (setq lst6 (append lst6 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "DT") (setq lst5 (append lst5 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "SLA") (setq lst4 (append lst4 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "SL1") (setq lst3 (append lst3 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "DAI") (setq lst2 (append lst2 (list (cdr (assoc 1 (entget en)))))))
                           (if (= (cdr (assoc 2 (entget en))) "DK") (setq lst1 (append lst1 (list (cdr (assoc 1 (entget en)))))))
              		)
              		( T nil)
               )
           )
           (setq en (entnext en))
     )
)
(setq ldata (mapcar 'list lst1 lst2 lst3 lst4 lst5 lst6))
(princ  "DK, DAI, SL1, SLA, DT, TL\n" fw)
(foreach data ldata
   (setq txt (strcat  (nth 0 data)  ","  (nth 1 data) "," (nth 2 data)  "," (nth 3 data)  "," (nth 4 data)  "," (nth 5 data) ","))
(princ (strcat txt "\n") fw)
)
(close fw)
(princ)
)

Chúc bạn vui.

Mình down được nhưng không biết cách sử dụng list này. Mong bạn chỉ cho cách sử dụng vớ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

Mình down được nhưng không biết cách sử dụng list này. Mong bạn chỉ cho cách sử dụng với

Hề hề hề,

Cách dùng lisp này rất đơn giản, nhưng bạn phải có bản vẽ chứa cái bảng có cấu tạo như của bác XDD mới dùng được. Vì lisp này viết dựa trên cấu trúc bảng của bác ấy chứ không phải dùng cho tất cả các loại bảng thống kê được bạn ạ. Bảng thống kê của bác ấy được lập dựa vào các block thuộc tính mà bác ấy đã thiết kế riêng cho bác ấy xài. Vì thế để sử dụng được thì bạn nên xin bác ấy các block thuộc tính đã có và đem về dùng để tạo các bảng thống kê đã.

Sau đó apload lisp này vào bản vẽ chứa bảng thống kê và gõ lệnh là tab2exl sẽ chạy được bạn ạ.

Bạn nên tìm hiểu cách sử dụng lisp trên diễn đàn ở đây nhé:

http://www.cadviet.com/forum/index.php?showtopic=1787

  • 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

mình cũng mới đang cần như vậy nhưng không biết dùng thế nào, load lệnh rồi nhưng không dùng đc.

bản gốc của bài đăng thì bị xóa nên mình không biết dùng sao , mong mọi người trợ giúp mình ở bản vẽ này với .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

 

Hề hề hề,

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

Mình viết và chỉ lấy ra các giá trị cần dùng để tinh toán mà thôi,nghĩa là chỉ lấy từ cột đường kính trở đi. Các số liệu khác mình thấy không cần thiết nên không mất công lấy làm chi. Còn nếu bạn thấy cần thì hãy tự bổ sung thêm dựa trên cái mình đã làm nhé.

 
(defun c:tab2exl (/ lst1 lst2 lst3 lst4 lst5 lst6)
(setq ssbl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1))))
          fn (getfiled "Chon file de save" "" "csv" 1)
          fw (open fn "w"))
(foreach bl ssbl
      (setq en (entnext bl))
      (while (/= (cdr (assoc 0 (entget en))) "SEQEND")
         	(if (= (cdr (assoc 0 (entget en))) "ATTRIB")
             	(cond
                   	((or (= (cdr (assoc 2 (entget bl))) "TK_2") (= (cdr (assoc 2 (entget bl))) "TK_4")
                              (= (cdr (assoc 2 (entget bl))) "TK_5") (= (cdr (assoc 2 (entget bl))) "TK_6"))
                            (if (= (cdr (assoc 2 (entget en))) "TL") (setq lst6 (append lst6 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "DT") (setq lst5 (append lst5 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "SLA") (setq lst4 (append lst4 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "SL1") (setq lst3 (append lst3 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "DAI") (setq lst2 (append lst2 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "DK") (setq lst1 (append lst1 (list (cdr (assoc 1 (entget en)))))))
                   	)
                   	( T nil)
                )
            )
            (setq en (entnext en))
      )
)
(setq ldata (mapcar 'list lst1 lst2 lst3 lst4 lst5 lst6))
(princ  "DK, DAI, SL1, SLA, DT, TL\n" fw)
(foreach data ldata
    (setq txt (strcat  (nth 0 data)  ","  (nth 1 data) "," (nth 2 data)  "," (nth 3 data)  "," (nth 4 data)  "," (nth 5 data) ","))
 	(princ (strcat txt "\n") fw)
)
(close fw)
(princ)
)
Chúc bạn vui.

 

Quá tuyệt phamthanhbinh ạ, cám ơn bạn nhiều nhé. Nhưng giúp mình sửa lisp để khi quét 1 lần bảng thống kê trên cad thì xuất ra excel đúng thứ tự đi, hiện tại mình dùng lisp của bạn thì thứ tự bị ngược lại, 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

Quá tuyệt phamthanhbinh ạ, cám ơn bạn nhiều nhé. Nhưng giúp mình sửa lisp để khi quét 1 lần bảng thống kê trên cad thì xuất ra excel đúng thứ tự đi, hiện tại mình dùng lisp của bạn thì thứ tự bị ngược lại, Thanks

Hề hề hề,

Thứ tự được thống kê trong bảng excel chính là thứ tự của các block thuộc tinh được hình thành nên bảng thống ke trong CAD.

Việc bạn thấy nó ngược trong excel có thể do cái bảng thống kê trong CAD được tạo dựng ngược từ dưới lên trên. 

Nếu thực sự cần đổi thì bạn có thể tự làm như sau:

1/- Tìm tới dòng code: 

(setq ssbl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1))))

2/- Thay thế nó bàng dòng code sau:

(setq ssbl (reverse (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1)))))

 

Lưu ý tới những điều mình giải thích phía trên để có thể thay đổi lại trật tự của bảng thống kê trong Excel khi cần.

Chúc bạn vui và thành cô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

các bác cao thủ ơi...em vào load được rồi ấn lệnh rồi nhưng em ko biết xuất sang cel thế nào ạ??? em quét thử các đối tượng trong bảng thống kế chả thấy gì cả :(( :wacko:

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ề,

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

Mình viết và chỉ lấy ra các giá trị cần dùng để tinh toán mà thôi,nghĩa là chỉ lấy từ cột đường kính trở đi. Các số liệu khác mình thấy không cần thiết nên không mất công lấy làm chi. Còn nếu bạn thấy cần thì hãy tự bổ sung thêm dựa trên cái mình đã làm nhé.

 
(defun c:tab2exl (/ lst1 lst2 lst3 lst4 lst5 lst6)
(setq ssbl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1))))
          fn (getfiled "Chon file de save" "" "csv" 1)
          fw (open fn "w"))
(foreach bl ssbl
      (setq en (entnext bl))
      (while (/= (cdr (assoc 0 (entget en))) "SEQEND")
         	(if (= (cdr (assoc 0 (entget en))) "ATTRIB")
             	(cond
                   	((or (= (cdr (assoc 2 (entget bl))) "TK_2") (= (cdr (assoc 2 (entget bl))) "TK_4")
                              (= (cdr (assoc 2 (entget bl))) "TK_5") (= (cdr (assoc 2 (entget bl))) "TK_6"))
                            (if (= (cdr (assoc 2 (entget en))) "TL") (setq lst6 (append lst6 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "DT") (setq lst5 (append lst5 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "SLA") (setq lst4 (append lst4 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "SL1") (setq lst3 (append lst3 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "DAI") (setq lst2 (append lst2 (list (cdr (assoc 1 (entget en)))))))
                            (if (= (cdr (assoc 2 (entget en))) "DK") (setq lst1 (append lst1 (list (cdr (assoc 1 (entget en)))))))
                   	)
                   	( T nil)
                )
            )
            (setq en (entnext en))
      )
)
(setq ldata (mapcar 'list lst1 lst2 lst3 lst4 lst5 lst6))
(princ  "DK, DAI, SL1, SLA, DT, TL\n" fw)
(foreach data ldata
    (setq txt (strcat  (nth 0 data)  ","  (nth 1 data) "," (nth 2 data)  "," (nth 3 data)  "," (nth 4 data)  "," (nth 5 data) ","))
 	(princ (strcat txt "\n") fw)
)
(close fw)
(princ)
)
Chúc bạn vui.

 

như bảng thống kê của em thì sữa code sao bác http://www.cadviet.com/upfiles/5/85997_bv_thong_ke.dwg

,nhờ các bác giúp em với, em cám ơn nhiều ah

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

Đăng nhập để thực hiện theo  

×