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

hỏi về lệnh c2e trong lisp chuyển cad sang excel của bác Hoành

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

bác Hoành cho e hỏi trong lisp chuyển cad sang excel của bác. khi e chuyển 1 số các text là các số bất kỳ 1,3,2,5 từ cad sang excel thì các text được xếp theo hàng dọc trong excel là 1,3,2,5. e mún bác bổ sung thêm trong lisp này chức năng chuyển sang excel mà ta có thể xếp các số đó cũng theo hàng dọc nhưng thứ tự đảo ngược lại là 5,2,3,1 được không. em cũng mò trong excel nhưng không biết cách chuyển ngược lại như vậy.

e có ý này: bác có thể bổ sung lisp mà khi ta quét chuột trong chọn đối tượng trong cad từ trái qua phải ( từ 1=>5) thì khi xuất sang excel các số sẽ xếp trên 1 cột theo thứ tự là 1,3,2,5 từ trên xuuống. khi quét chuột từ phải qua trái ( từ 5= >1) thì khi sang excel sẽ xếp thứ tự là 5,2,3,1 theo cột từ trên xuống duới.

Mong bác quan tâm.

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

không bác nào có ý kiến gì à. hay vấn đề này đa­­­ có trên diễn nhỉ các bác

- Muốn đảo theo chiều X bạn thay đổi dấu lớn hơn thành bé hơn (và ngược lại) của dòng lệnh (< (car p1) (car p2))

- Muốn đảo theo chiều Y bạn thay đổi dấu lớn hơn thành bé hơn (và ngược lại) của dòng lệnh (< (cadr p1) (cadr p2))

 

Lisp sau khi đảo chiều Y của bạn đây, lệnh là C2ER (CAD to Exel revese):

(defun c:c2er ( / hangdau)(defun sosanh (e1 e2 / p1 p2)(setq p1 (car e1)p2 (car e2))(if (equal (cadr p1) (cadr p2) fuzz)(< (car p1) (car p2))(< (cadr p1) (cadr p2))))(setqss (ssget '((0 . "TEXT")))lst (ss2ent ss)lst (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst)caotext (cdr (assoc 40 (entget (ssname ss 0))))fuzz (* caotext 1.0)lst (vl-sort lst 'sosanh)index 1oldy nilfn (getfiled "Chon file de save" "" "csv" 1)fid (open fn "w"))(foreach e lst(if (equal oldy (cadr (car e)) fuzz)(progn(princ "," fid)(setq index (1+ index)))(progn(if hangdau(progn(setq index 1)(princ "\n" fid))(setq hangdau t))))(princ (cdr e) fid)(setq oldy (cadr (car e))))(close fid))(defun ss2ent (ss / sodt index lstent)(setqsodt (if ss(sslength ss)0)index 0)(repeat sodt(setq ent (ssname ss index)index (1+ index)lstent (cons ent lstent)))(reverse lstent))
  • 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

Bác Hoành có thể bố sung chức năng khi ta chuyển text từ cad sang excel thì những text cách nhau như thế này ( các số 3,5,7)

1 2 3 4 5 6

3 5 7

khi ta chuyển sang excel thì nó cũng cách nhau 1 hoặc nhiều ô trống như vậy không ạ. lisp cũ của của bác thì khi sang excel nó vẫn xếp liền là 3,5,7 không cách nhau. Thanhs 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
bác Hoanh không định mở rộng lisp này nữa à.

đâu có, lisp cũ chưa cần cải tiến khi gặp text có giá trị 3,5,7 thì lisp tự tách nó thành 3 cell rồi mà bạ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

đây là file vd của e bác xem: http://www.cadviet.com/upfiles/2/drawing2_7.dwg

ý em hỏi là trong cad các số 22,33 cách nhau 1 ô hay nhiều ô chữ nhật thì khi mình xuất sang excel thi nó cũng cách nhau 1 hay nhiều cell tương ứng, như vậy có được không à, tức là hai số 22,33 nằm trong 2 cel và cách nhau 1 cell trống ở giữa như hình trong cad.

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
đây là file vd của e bác xem: http://www.cadviet.com/upfiles/2/drawing2_7.dwg

ý em hỏi là trong cad các số 22,33 cách nhau 1 ô hay nhiều ô chữ nhật thì khi mình xuất sang excel thi nó cũng cách nhau 1 hay nhiều cell tương ứng, như vậy có được không à, tức là hai số 22,33 nằm trong 2 cel và cách nhau 1 cell trống ở giữa như hình trong cad.

Như đã hướng dẫn sử dụng tại bài viết gốc, bạn phải tạo một text có giá trị là * vào ô trống.

 

Bạn nhớ là lệnh c2e bị 'mù', không nhìn được hình, chỉ đọc được số, chỉ phân biệt được trên dưới, trái phải. Vì vậy, kể cả bạn không kẻ bảng mà chỉ có text thì lệnh này vẫn convert sang excel được. Chính vì lệnh mù, nên mình cho thêm dấu * để nó bỏ cách ô.

  • 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

hi, lúc đầu e cũng làm thế nhưng trên excel phải xoá những dấu * bằng tay, nếu là lệnh mù thi thôi chịu khó 1 chút vậy, Thanhks 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
hi, lúc đầu e cũng làm thế nhưng trên excel phải xoá những dấu * bằng tay, nếu là lệnh mù thi thôi chịu khó 1 chút vậy, Thanhks bác

lisp mù khi đọc, nhưng không mù khi viết.

 

Để lisp không viết ra dấu hoa thị thì dễ ợt. Lisp cải tiến dưới đây sẽ giúp bạn bỏ trắng các dấu hoa thị khi xuất sang excel, lệnh vẫn là c2er:

(defun c:c2er ( /  hangdau)
(defun sosanh (e1 e2 / p1 p2)
(setq p1 (car e1)
p2 (car e2)
)
(if (equal (cadr p1) (cadr p2) fuzz)
(()
)
(setq
ss (ssget '((0 . "TEXT")))
lst (ss2ent ss)
lst (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst)
lst (mapcar '(lambda (e) (if (= (cdr e) "*") (cons (car e) "") e)) lst)
caotext (cdr (assoc 40 (entget (ssname ss 0))))
fuzz (* caotext 1.0)
lst (vl-sort lst 'sosanh)
index 1
oldy nil
fn (getfiled "Chon file de save" "" "csv" 1)
fid (open fn "w")
)

(foreach e lst
(if (equal oldy (cadr (car e)) fuzz)
(progn
(princ "," fid)
(setq index (1+ index))
)
(progn
(if hangdau
(progn
(setq index 1)
(princ "\n" fid)
)
(setq hangdau t)
)
)
)
(princ (cdr e) fid)
(setq oldy (cadr (car e)))
)
(close fid)
)

(defun ss2ent (ss / sodt index lstent)
(setq
sodt (if ss
(sslength ss)
0
)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)

  • 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

thanks bác Nguyen Hoanh,nếu bác còn qua cho em hỏi tại sao lệnh c2e lại không nhận được 1 số đối tượng,em xuất bảng thống kê thép này ra,thì dòng 14 nhận,dòng 15-18 không nhận,text đều đã phá block.

file ở đây ah.các bác đi qua xem giúp em 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

Bạn xem lại từ dòng 15 trở đi có nhiều đối tượng không phải là đối tượng text mà là đối tương attribte nên nó không nhận là phải muốn nhận được bạn phải chuyển về đối tượng 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
Bạn xem lại từ dòng 15 trở đi có nhiều đối tượng không phải là đối tượng text mà là đối tương attribte nên nó không nhận là phải muốn nhận được bạn phải chuyển về đối tượng text

thanks bác,nhưng em dùng express tool chuyển từ attribte về text rồi cũng không được.lạ thật.

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

thanks bác,nhưng em dùng express tool chuyển từ attribte về text rồi cũng không được.lạ thật.

Bạn xem lại các đối tượng đó không chuyển về text được? mình đã thử rồi tốt nhất bạn xóa các đối tượng đó rồi copy những dòng phía trên thay vào đó????

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 xem lại các đối tượng đó không chuyển về text được? mình đã thử rồi tốt nhất bạn xóa các đối tượng đó rồi copy những dòng phía trên thay vào đó????

chuyển về text rồi ,nhưng vẫn không chọn dc sau khi dùng lệnh c2e bác ah,thôi em tham khảo để ai có bị như em thì khắc phục.chứ e gõ lại rồ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

lisp này dùng chán thế nhỉ? Bác nào có lisp nào mà mình tick các số bên cad xong xuất sang excel theo đúng lần lượt thứ tự các số tick không, chứ lisp này mình tick theo thứ tự mà sang excel nó nhảy loạn hết lên, không theo thứ 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

các bác giúp e cái này với, mình có file cad bị lỗi, khi copy bảng cel vào file cad thì chỉ thấy khung của bảng cel còn dữ liệu thì không thấy gì cả, cảm ơn các bác file đây: http://www.cadviet.com/upfiles/3/57480_cong_hop_km3296002.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

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

×