Đến nội dung


Hình ảnh

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


  • Please log in to reply
11 replies to this topic

#1 xdd

xdd

    biết vẽ arc

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

Đã gửi 27 November 2011 - 10:12 AM

bác nao biết cách chuyển bảng thống kê thép như thế này sang excel để minh tổng hợp khối lượng không
thanks all
http://www.mediafire...ilo8qwrg2ak564n
  • 0

#2 xdd

xdd

    biết vẽ arc

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

Đã gửi 27 November 2011 - 08:55 PM

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

#3 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 27 November 2011 - 10:53 PM

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.
  • 3
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 xdd

xdd

    biết vẽ arc

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

Đã gửi 28 November 2011 - 07:46 PM

Quá tuyệt vời. cảm ơn bác nhé
  • 0

#5 xdd

xdd

    biết vẽ arc

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

Đã gửi 29 November 2011 - 08:23 AM

ket quả ra cung ấn tượng đấy bác hehhe
  • 0

#6 hoangtranlong

hoangtranlong

    biết vẽ polygon

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

Đã gửi 29 November 2011 - 03:52 PM

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

#7 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 29 November 2011 - 06:56 PM

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.c...?showtopic=1787
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 nguyenthanhchuyen

nguyenthanhchuyen

    Chưa sử dụng CAD

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

Đã gửi 07 May 2014 - 09:43 AM

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


  • 0

#9 tiendunghoang

tiendunghoang

    Chưa sử dụng CAD

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

Đã gửi 13 May 2014 - 11:28 AM

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


  • 0

#10 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 13 May 2014 - 03:03 PM

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.


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

#11 drtuananhnd92

drtuananhnd92

    Chưa sử dụng CAD

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

Đã gửi 22 March 2016 - 10:12 PM

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:


  • 0

#12 duynguyencute

duynguyencute

    Chưa sử dụng CAD

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

Đã gửi 25 March 2016 - 07:58 PM

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.c...bv_thong_ke.dwg

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


  • 0