Rated 5/5 based on 240179 internet user reviews

Đến nội dung


Hình ảnh
* - - - - 2 Bình chọn

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


  • Please log in to reply
34 replies to this topic

#1 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 28 April 2010 - 10:22 PM

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.
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#2 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 30 April 2010 - 11:35 PM

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
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#3 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4355 (đỉnh cao)

Đã gửi 01 May 2010 - 07:58 AM

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))

  • 2

#4 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 01 May 2010 - 04:10 PM

thanks bác Hoành nhé, 1 chút chỉnh sửa mà có thể giúp em được rất nhiiều trong công việc. Thanks
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#5 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 04 May 2010 - 11:13 PM

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.
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#6 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 07 May 2010 - 08:31 PM

bác Hoanh không định mở rộng lisp này nữa à.
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#7 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4355 (đỉnh cao)

Đã gửi 07 May 2010 - 09:15 PM

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

#8 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 07 May 2010 - 10:04 PM

đây là file vd của e bác xem: http://www.cadviet.c.../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.
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#9 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4355 (đỉnh cao)

Đã gửi 07 May 2010 - 10:32 PM

đây là file vd của e bác xem: http://www.cadviet.c.../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 ô.
  • 1

#10 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 07 May 2010 - 10:56 PM

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
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#11 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 3841 Bài viết
Điểm đánh giá: 4355 (đỉnh cao)

Đã gửi 07 May 2010 - 11:45 PM

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)(< (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)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 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))

  • 2

#12 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 08 May 2010 - 11:33 AM

hi hi đúng là với bác thì dễ văn ợt, cám ơn bác nhiều,
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#13 avietdung

avietdung

    biết pan

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

Đã gửi 24 January 2013 - 08:56 AM

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

#14 avietdung

avietdung

    biết pan

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

Đã gửi 24 January 2013 - 08:56 AM

http://www.cadviet.c...6591_mong_1.dwg
  • 0

#15 avietdung

avietdung

    biết pan

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

Đã gửi 24 January 2013 - 09:01 AM

cụ thể dòng 14 cọc C2 nhận,từ dòng 15 trở đi không nhận nữa.thi thoảng lại gặp trường hợp này,các bác giúp em với
  • 0

#16 huunhantvxdts

huunhantvxdts

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 301 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 24 January 2013 - 02:08 PM

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

#17 avietdung

avietdung

    biết pan

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

Đã gửi 24 January 2013 - 06:36 PM

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

#18 huunhantvxdts

huunhantvxdts

    biết dimlinear

  • Members
  • PipPipPipPipPip
  • 301 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 25 January 2013 - 07:44 AM

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 đó????
  • 0

#19 avietdung

avietdung

    biết pan

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

Đã gửi 25 January 2013 - 09:30 AM

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

#20 namtrantt206xd

namtrantt206xd

    biết vẽ line

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

Đã gửi 17 June 2013 - 09:45 AM

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ả.


  • 0