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

Lọc các đối tượng Text trên bản vẽ theo Color để chuyển sang Excell ?

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

Chào các bác,

Hiện em đang gặp một số khó khăn trong quá trình thống kê các đối tượng Text trong bản vẽ ví dụ như sau

 

bv.jpg

 

hiện bản vẽ của em lên tới hơn 500 thửa, quá trình thống kê các đối tượng Text này với em là quá vất vả

Em muốn nhờ các bác trên diễn đàn giúp em cái Lisp " Chuyển các đối tượng TEXT trong một vùng kín từ CAD sang Excell dựa vào màu sắc của TEXT"

 

- Các TEXT có cùng một màu được thống kê trên một cột Excell

- Không quan tâm đến việc đặt tên Layer

- Thống kê được nhiều đối tượng TEXT hơn

- Thống kê các đối tượng TEXT theo quy tắc từ TRÁI sang PHẢI, từ TRÊN xuống Dưới

 

Đây là bản vẽ của em với 5 loại màu đặc trưng của TEXT và kết quả ở dang Excell em muốn có

 

http://www.cadviet.com/upfiles/3/new_folder_6.rar

 

Em rất mong được các bác giúp đỡ

Em xin 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

Hì, cái này khó nhỉ. Sao bạn không sử dụng block với attributes để ghi chú ? Nếu ngay từ ban đầu dữ liệu bản vẽ được liên kết tốt , thì sau chỉ cần thống kê những block với attributes ấy. Bây giờ số liệu không có liên kết gì với nhau, tản mát khắp nơi, hic

  • 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ạn app file VBA này thử xem

Trong AutoCAD, bạn nhấn Alt+F8 rồi tìm macro "ThongKeTextTrongPolylines" để chạy macro. Bạn chọn toàn bộ vùng vẽ có các pline (đã có bộ lọc pline, bạn không cần phải click vào từng pline). Nhớ là để từ pline chọn được text thì bạn phải zoom sao cho text nằm trong vùng nhìn thấy của màn hình.

 

Nếu muốn nhanh, bạn tạo một lisp sau trong Notepad:

 

(defun C:TKText (/)

(vl-vbarun "ThongKeTextTrongPolylines")

(princ)

);defun

 

save thành file Lisp (có đuôi .LSP), app vào AutoCAD, rồi gõ lệnh TKTText. Bạn có thể thay đổi tên lệnh tùy ý bạn.

 

Lập trình hơn 1 tiếng đồng hồ. Hy vọng bạn có hơn 500 thửa đất để xử lý. Nếu bạn có ít hơn thì có lẽ làm bằng tay nhanh hơn lập trình, hì

Dẫu sao đây chỉ là cách chữa cháy. Bạn nên tạo block với attributes để ghi sô liệu cho lần sau dễ thống kê hơ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
Bạn app file VBA này thử xem

Trong AutoCAD, bạn nhấn Alt+F8 rồi tìm macro "ThongKeTextTrongPolylines" để chạy

Nếu muốn nhanh, bạn tạo một lisp sau trong Notepad:

 

(defun C:TKText (/)

(vl-vbarun "ThongKeTextTrongPolylines")

(princ)

);defun

 

save thành file Lisp (có đuôi .LSP), app vào AutoCAD, rồi gõ lệnh TKTText. Bạn có thể thay đổi tên lệnh tùy ý bạn.

 

Lập trình hơn 1 tiếng đồng hồ. Hy vọng bạn có hơn 500 thửa đất để xử lý. Nếu bạn có ít hơn thì có lẽ làm bằng tay nhanh hơn lập trình, hì

 

 

Cảm ơn bác nhiều, nhưng sao em thực hiện giống bác nói nhưng chẳng lên gì cả, bác chỉ dùm em với, món này em không biết gì 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ì, vừa edit xong bài trả lời ở trên thì ... Bạn chọn toàn bộ vùng vẽ có các pline (đã có bộ lọc pline, bạn không cần phải click vào từng pline). Nhớ là để từ pline chọn được text thì bạn phải zoom sao cho text nằm trong vùng nhìn thấy của màn hình.

  • 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ì, vừa edit xong bài trả lời ở trên thì ... Bạn chọn toàn bộ vùng vẽ có các pline (đã có bộ lọc pline, bạn không cần phải click vào từng pline). Nhớ là để từ pline chọn được text thì bạn phải zoom sao cho text nằm trong vùng nhìn thấy của màn hình.

 

Em làm được rồi nhưng chỉ thấy nó hiện lên bảng thống kê

untitled_41.jpg

 

Vậy kết quả chuyển sang Excell em không thấy đâu vậy 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

Thì thế mới phải xử lý trong Excell ^^ E thì vẫn cay cú nhất cái vụ select order trong VBA, chẳng hiểu sao quét kiểu j thì kiểu,nó cứ lộn thằng quét cuối cùng thành thằng quét đầu tiên :D(

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

Chào bác linhoreka,

Máy hôm trước bác co gửi cho em một chương trình lọc các đối tượng Text theo màu, em có Dowload về nhưng quên chưa lưu và trong ổ mà vẫn để ở ổ C,vừa dồi đứa em của em nó nghịch máy tính bị lỗi Wind nên em đã cài lại máy và bị mất cái chương trình của bác dồi,

Em có vào lại CADVIET để Dowload lại nhưng link đã đã khóa mất dồi

Rất mong bác có thể gửi lại cho em xin cái chương trình mà bác đã gửi cho em

Vì công việc của em hay phải làm công tác thống kê như vậy

Mong được bác giúp đỡ.

Em xin cảm ơn bác nhiều !

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ái VBA này của bạn nó không phổ thông lắm nên chắc chỉ bạn dùng được thôi người khác không dùng đến nên tớ xóa đi cho thoáng :)

Link mới đây: Command TPL

Bạn appload vào AutoCAD rồi gõ lệnh TPL

  • Vote tăng 2

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ái VBA này của bạn nó không phổ thông lắm nên chắc chỉ bạn dùng được thôi người khác không dùng đến nên tớ xóa đi cho thoáng :)

Link mới đây: Command TPL

Bạn appload vào AutoCAD rồi gõ lệnh TPL

 

Cảm ơn anh rất nhiều !

Chúc anh sức khoẻ 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ái VBA này của bạn nó không phổ thông lắm nên chắc chỉ bạn dùng được thôi người khác không dùng đến nên tớ xóa đi cho thoáng :)

Link mới đây: Command TPL

Bạn appload vào AutoCAD rồi gõ lệnh TPL

Pass là gì đấy bạn cho view code cá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

Pass là gì quên mất rồi :) không mở lại được nữa

Nhưng tớ vẫn lưu 1 bản không pass và chỉnh lại rồi post bên VBA Source Code cDynamicSS ấy, trong đó có luôn cái này

  • 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

Anh linhoreka thân !

anh ơi, sao khi em chuyển sang bản vẽ khác lại không lấy được đối tượng Text mà chỉ hiện lên

 

 

http://www.cadviet.com/upfiles/3/1_36.jpg

 

Em hỏi khí không phải có gì không phải anh bỏ qua nhé, hay là anh viết lọc Text theo Layer

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ó thể mấy ô chọn bị zoom, pan đi ra ngoài màn hình. Nếu text nằm ngoài màn hình thì không chọn được

Chương trình không có bộ lọc layer gì hết. Chỉ có lọc TEXT rồi tìm màu của TEXT.

 

Vậy nên nếu TEXT nằm trong màn hình mà vẫn không chọn được thì:

1. MTEXT ? >>> Explode ra hoặc là chỉnh lại code chọn cả MTEXT ?

2. TEXT màu không đúng ra Red, Yellow ... gì đó mà là màu nào đó đo đỏ, vàng vàng ?

3. Bạn up bản vẽ lên tớ xem kiểm tra

  • 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ó thể mấy ô chọn bị zoom, pan đi ra ngoài màn hình. Nếu text nằm ngoài màn hình thì không chọn được

Chương trình không có bộ lọc layer gì hết. Chỉ có lọc TEXT rồi tìm màu của TEXT.

 

Vậy nên nếu TEXT nằm trong màn hình mà vẫn không chọn được thì:

1. MTEXT ? >>> Explode ra hoặc là chỉnh lại code chọn cả MTEXT ?

2. TEXT màu không đúng ra Red, Yellow ... gì đó mà là màu nào đó đo đỏ, vàng vàng ?

3. Bạn up bản vẽ lên tớ xem kiểm tra

 

 

Cảm ơn anh !

em làm được dồi, code thi em không biết gì mà can thiệp cả, mà anh đặt password mà

em đã tìm ra cái lỗi của em dồi,

Nếu có gì trục trặc em sẽ nhờ 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
Có thể mấy ô chọn bị zoom, pan đi ra ngoài màn hình. Nếu text nằm ngoài màn hình thì không chọn được

.....

Nếu text nằm ngoài màn hình thì không chọn được

-> Bạn có thể tìm điểm A(Xminct, Yminct), B(Xmaxct, Ymaxct)của 1 tập chọn Polyline và zoom trong vùng cửa sổ tạo bởi hình chữ nhật với AB là đường chéo.

Cách làm như sau :

- Qua mỗi phần tử Pline vừa chọn -> lấy ra điểm Xmin, Ymin, Xmax, Ymax. (sử dụng Method Getboundingbox)

-> Ta sẽ có được 1 danh sách gồm các Xmin của toàn bộ Pline này -> Lấy min của danh sách này ta được Xminct

-> Lấy min của 1 danh sách gồm các Ymin của toàn bộ Pline ta được Yminct

-> Lấy max của 1 danh sách gồm các Xmax của toàn bộ Pline ta được Xmaxct

-> Lấy max của 1 danh sách gồm các Ymax của toàn bộ Pline ta được Ymaxct

ZoomWindow tạo bởi 2 điểm A(Xminct, Yminct), B(Xmaxct, Ymaxct) sẽ giải quyết vấn đề trên.

 

Với Lisp xây dựng code đơn giản hơn, có thể sử dụng

(ACET-GEOM-SS-EXTENTS-FAST (ssget '((0 . "*POLYLINE") (70 . 1))))

là xong

 

Nhắc nhở bạn hoangtan_vn 1 lần nữa : Bạn không được post 1 nội dung trong các chủ đề khác nhau. Vì đó là vi phạm nội quy của diễn đàn. Các bài viết trùng nhau sẽ bị xóa đấy bạn ạ. Bạn có thể post bài để hỏi lại trong cùng 1 topic đó, không được mở 1 topic mới

  • 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

Sang kỳ tới mình làm đồ án tốt nghiệp nghành xây dựng dân dụng và công nghiệp.Nhưng hiện giờ vẫn chưa tìm được đề tài(trên 7 tầng,>500m2sàn).Anh chị nào có đề tài cho mình xin.Xin cảm ơn nhiều.ĐỊa chỉ:phongleks@gmail.com

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

×