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

Cần hỗ trợ: cách insert và phân loại dữ liệu từ Excel vào Autocad

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

Chào ace,

E cần tư vấn hỗ trợ nội dung liên quan tới excel và cad.

Hiện nay e có 1 file cad TMB (gồm mã căn text) và file excel thống kê các mã căn (nhưng đã được phân loại các nhóm, ví dụ đã bán hàng, chưa bán hàng).

Nhờ ace tư vấn xem có cách nào insert hay convert từ file excel đã đc phân loại dữ liệu kia để tô màu hoặc đổi layer các mã căn trên file cad hàng loạt theo file excel được ko?

2023.png

  • Vote giảm 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

Do bạn không đưa bản vẽ và file excel nên mình chỉ đoán bản vẽ và file excel để làm thử, hướng tiếp cận của mình như sau:

B1: Xuất các text mã căn ra .csv có kèm nội dung text và tọa độ

B2: Dùng hàm Vlookup xử lý để chuyển các căn từ file excel của bạn đã có về cùng với file .csv mà cad xuất ra

B3: Lọc chỉ giữ lại các căn đã bán trên file excel này (mình đang ký hiệu là DB)

B4: xuất ngược lại cad (trước khi xuất xóa hết text mã căn đang có trên cad)

B5: Đổi tên lớp thành lớp DB như hình mình đính kèm

PS: Mình đã gửi tin nhắn để xin bản vẽ và file excel khi test không phải đoán để làm mà bạn không hồi trả lời 

A26.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
40 phút trước, mdchuyen đã nói:

PS: Mình đã gửi tin nhắn để xin bản vẽ và file excel khi test không phải đoán để làm mà bạn không hồi trả lời 

Bạn này đã liên lạc với mình rồi.

Và bạn nghĩ sao về phương thức này :))

(setq ss (ssget "ALL" (list  '(0 . "TEXT") (cons 1 txt))))

(vl-cmdf "laycur" ss "")

txt là tên mã căn đã bán dạng như thế này "BX-01,BX-02,BX-03........"

Không cần thao tác nhiều, không cần xóa đối tượng trong bản vẽ.

Trực tiếp đổi layer đối tượng.

  • Vote giảm 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ã căn đã bán ký hiệu khác với căn chưa bán ngay trên bản vẽ cad rồi ạ, Nếu thế thì dùng lệnh find của cad lọc xong đổi tên lớp là xong, mình đang hiểu là chỉ mới note trên excel giờ muốn đổi tên lớp trên cad (đổi lớp của khu đất bao quanh chứ không phải lớp của text)

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
17 phút trước, mdchuyen đã nói:

Mã căn đã bán ký hiệu khác với căn chưa bán ngay trên bản vẽ cad rồi ạ, Nếu thế thì dùng lệnh find của cad lọc xong đổi tên lớp là xong, mình đang hiểu là chỉ mới note trên excel giờ muốn đổi tên lớp trên cad (đổi lớp của khu đất bao quanh chứ không phải lớp của text)

Vãi chấy, bạn không hiểu mình viết gì thật à. :) 

Biến txt kia là đọc từ file exel.

sau một hồi xử lý tính toán thì nó thành dạng "BX-01,BX-02,BX-03........"

chứ không hề khác nhau gì tại bản cad cả.

từ đó chọn được hết các đối tượng text  là tên mã căn đã bán.

bạn có danh sách đối tượng rồi thì làm gì tiếp theo đều được.

 

Còn đề bài là đổi layer hoặc màu của mã căn đó chứ đổi đường boundary làm gì đâu. bạn đọc lại đi kìa.

mục đích đánh dấu lại các căn đã bán. thuận tiện trong việc kinh doanh thôi.

 

  • Vote giảm 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

Copy căn đã bán trong excel bằng Ctrl+C, ( lấy 1 số ô trong 1 cột)

Sang cad chạy lệnh Test

Những text CAD trùng với lựa chọn copy ở   Excel sẽ đổi layer thành "hang da ban"

image.png.37667ef831771115240625a20212b269.png

image.png.e8faf3e2e6e9aa98628b05e8ae355a0c.png

(defun c:test ()
;; lay noi dung tu clipboard ( copy trong 1 colum)
(defun GetClipText(/ html result)
    (setq html (vlax-create-object "htmlfile")
        result (vlax-invoke (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData) 'GetData "Text")
    )
    (vlax-release-object html)
    result
)

  ;; tach string thanh list by "\r\n"
(defun SplitStr ( s d / p )
  (if (setq p (vl-string-search d s))
    (cons (substr s 1 p) (SplitStr (substr s (+ p 1 (strlen d))) d)) (list s)))

  ;; doi layer thanh "hang da ban"
(defun chuyenlayer (entg)
  (setq entg (subst (cons 8 "hang da ban") (assoc 8 entg) entg))
  (entmod entg)
  )

(setq ls (getcliptext)
      ls (SplitStr ls "\r\n")
      )

(setq ss (ACET-SS-TO-LIST (ssget '((0 . "TEXT")))))


(foreach ent ss
  (foreach txt ls
    (progn
      (setq entg (entget ent)
            noidung (acet-dxf 1 entg))
      (if (= (strcase noidung) (strcase txt))
        (chuyenlayer entg)
        )
      )
    )
  )
)

      

 

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
13 giờ trước, cuongtk2 đã nói:

Copy căn đã bán trong excel bằng Ctrl+C, ( lấy 1 số ô trong 1 cột)

Sang cad chạy lệnh Test

Những text CAD trùng với lựa chọn copy ở   Excel sẽ đổi layer thành "hang da ban"

image.png.37667ef831771115240625a20212b269.png

image.png.e8faf3e2e6e9aa98628b05e8ae355a0c.png


(defun c:test ()
;; lay noi dung tu clipboard ( copy trong 1 colum)
(defun GetClipText(/ html result)
    (setq html (vlax-create-object "htmlfile")
        result (vlax-invoke (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData) 'GetData "Text")
    )
    (vlax-release-object html)
    result
)

  ;; tach string thanh list by "\r\n"
(defun SplitStr ( s d / p )
  (if (setq p (vl-string-search d s))
    (cons (substr s 1 p) (SplitStr (substr s (+ p 1 (strlen d))) d)) (list s)))

  ;; doi layer thanh "hang da ban"
(defun chuyenlayer (entg)
  (setq entg (subst (cons 8 "hang da ban") (assoc 8 entg) entg))
  (entmod entg)
  )

(setq ls (getcliptext)
      ls (SplitStr ls "\r\n")
      )

(setq ss (ACET-SS-TO-LIST (ssget '((0 . "TEXT")))))


(foreach ent ss
  (foreach txt ls
    (progn
      (setq entg (entget ent)
            noidung (acet-dxf 1 entg))
      (if (= (strcase noidung) (strcase txt))
        (chuyenlayer entg)
        )
      )
    )
  )
)

      

 

Cách viết của bác gần giống vs cách viết lúc đầu của em. tuy nhiên mã căn của thớt nhiều chỗ viết tiếng việt. :)

nên em phải chuyển qua phương thức khác :)

tuy nhiên thớt đổi hết về ký tự không dấu thì vẫn dùng được lisp này bình thường. :)

  • Vote tăng 1
  • Vote giảm 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
Vào lúc 3/4/2023 tại 05:07, doandacnhat đã nói:

Có cách nào duyệt tìm nhanh và tự động ko anh? Chứ mà đi sort từng mã xong tô thì với 12000 mã căn thì chắc phải nguyên 1 ngày để tô màu 

Mình ghi là soft mà, đâu fai sort, chỉ cần click vài cái là soft sẽ làm cho mình ngay.

 

b1. chọn file excel, nếu bên bạn dùng database thì mình cũng truy vấn được luôn.

b2. mở bản vẽ hiện hành

b3. tìm và lọc hoàn toàn tự động, sau đó tô hay làm gì đó theo ý muốn.

không cần thao tác gì trên excel hay database cả, unicode/utf cũng không có khó khăn.

 

  • 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

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

×