Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
vitcum

[Nhờ viết lisp] copy nội dung từ bảng này sang bảng khác trong Cad

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

Hiện tại em có nhiều bảng như này được thống kê từ dưới lên

1.thumb.png.e3278b8a3a84e7bcd564b9c1759f77d0.png

 

Giờ e muốn tổng hợp vào một bảng như này (các vị trí đã điền sẵn chữ XX), giờ muốn nhờ các bác viết lisp để có thể quét copy bảng trên thay thế nhanh vào bảng dưới (sắp xếp ngược lại từ trên xuống dưới) 

2.png.9327ddeb5da0b60ec50cb1bb1cf6e103.png

 

Hiện tại thì e đang phải copy từng cột vào hơi mất công ạ

SO-00-00.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
37 phút trước, ngokiet đã nói:

Bác mirror lên rồi xoay text lại là được rồi mà.

Mình có nhiều bảng như hình 1, tổng hợp thành 1 bảng ở hình 2, kích thước các ô giữa 2 bảng khác nhau, 

Nên làm thủ công như b nói thì mất rất nhiều time ạ, hiện tại m có thể copy cả cột từ bảng này sang bảng khác, nhưng cũng vẫn mất time, muốn tự động copy cả hàng và cột nữa

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

Mình có nhiều bảng như hình 1, tổng hợp thành 1 bảng ở hình 2, kích thước các ô giữa 2 bảng khác nhau, 

Nên làm thủ công như b nói thì mất rất nhiều time ạ, hiện tại m có thể copy cả cột từ bảng này sang bảng khác, nhưng cũng vẫn mất time, muốn tự động copy cả hàng và cột nữa

Ít nhất bạn cũng post bản vẽ mẫu lên cho mọi người xem còn tiện tìm cách, chứ ai hơi đâu tự tạo 1 bảng mới rồi làm cho bạn

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

Export cả lũ sang Excel rồi muốn làm j thì làm có phải đỡ phải nghĩ ngợi không :)

  • Like 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ác copy hết tất cả rồi dùng lisp align text 1 lần là xong thôi mà.

Chứ làm vậy bác cũng mất công tạo mấy cái text xx cho đúng số lượng tương ứng.

  • Like 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âng e đã bổ sung bản vẽ (xin phép đã xoá thông tin vì yêu cầu bảo mật ạ) nhờ các bác ngó qua rồi cho ý tưởng ạ, chứ copy rồi move , align ... thì e thấy nó vẫn lâu hơn việc quét copy và replace vào bảng có sẵ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
1 giờ} trướ}c, vitcum đã nói:

Vâng e đã bổ sung bản vẽ (xin phép đã xoá thông tin vì yêu cầu bảo mật ạ) nhờ các bác ngó qua rồi cho ý tưởng ạ, chứ copy rồi move , align ... thì e thấy nó vẫn lâu hơn việc quét copy và replace vào bảng có sẵn

Tiếc chi bạn không đánh dấu trên bản vẽ luôn (vùng này được thay bỡi vùng này) chứ bạn đưa lên rứa thì ai biết bạn lấy cái nào thay cho cái nào???

  • Like 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
24 phút trước, huunhantvxdts đã nói:

Tiếc chi bạn không đánh dấu trên bản vẽ luôn (vùng này được thay bỡi vùng này) chứ bạn đưa lên rứa thì ai biết bạn lấy cái nào thay cho cái nào???

Mình đã giải thích rõ ở trên bài viết rồi mà ạ. mình muốn làm 1 bảng tổng hợp từ tất cả những bản vẽ phía dưới ạ 

2019-06-17_100748.thumb.png.db7c9230c2c6cff645240f2a70bdebbe.png

 

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ử lisp này xem

(defun c:test2(/ s1 s2)
  (Princ "/nChon text nguon:")
  (setq s1 (acet-ss-to-list (ssget '((0 . "TEXT")))))
  (Princ "/nChon text dich: ")
  (setq s2 (acet-ss-to-list (ssget '((0 . "TEXT")))))
  (or (and s1 s2) (exit))
  (mapcar '(lambda(a b)
	     (vla-put-textstring (cdr b) (cdr a)))
	  (vl-sort
	    (mapcar '(lambda(x / en)
		       (cons (cdr (assoc 10 (setq en (entget x))))
			     (cdr (assoc 1 en)))) s1)
	    '(lambda (x y) (if (equal (cadar x) (cadar y) 3.)
			     (> (caar x) (caar y))
			     (< (cadar x) (cadar y)))))
	  (vl-sort
	    (mapcar '(lambda(x)
		       (cons (cdr (assoc 11 (entget x)))
			     (vlax-ename->vla-object x))) s2)
	    '(lambda (x y) (if (equal (cadar x) (cadar y) 3.)
			     (> (caar x) (caar y))
			     (> (cadar x) (cadar y)))))))

 

  • Like 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
18 giờ trước, Doan Nguyen Van đã nói:

Make text theo cái bảng của bác, mà hình như bảng không đều nhau

620024541_ezgif.com-video-to-gif(2).gif.855d8e3f582a5415f2cf46dbf9a85a90.gif

Do thay vì giữ nguyên thuộc tính text hiện có, bác lại tạo text mới với thuộc tính mới nên nó không đều nhau là phả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
10 phút trước, Botot đã nói:

Do thay vì giữ nguyên thuộc tính text hiện có, bác lại tạo text mới với thuộc tính mới nên nó không đều nhau là phải rồi.

Chắc bạn chưa mở bản vẽ hoặc có lẽ bạn chưa xem kỹ, phần text nguồn và Đích của bác ấy hoàn toàn khác nhau, điển hình như: cỡ chữ, layer, kiểu căn lề...

Nếu bác ấy tạo sẵn text đích, chỉ cần thay nội dung thì dùng Lisp của bác @ngokiet bên trên là oke rồi.

Mà cái mình nói không đều ở đây là khoảng cách các hàng của bảng trong block không đều, 32-36..., có thể do cách sắp xếp của cty bác ấy như thế

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

Thử lisp này xem


(defun c:test2(/ s1 s2)
  (Princ "/nChon text nguon:")
  (setq s1 (acet-ss-to-list (ssget '((0 . "TEXT")))))
  (Princ "/nChon text dich: ")
  (setq s2 (acet-ss-to-list (ssget '((0 . "TEXT")))))
  (or (and s1 s2) (exit))
  (mapcar '(lambda(a b)
	     (vla-put-textstring (cdr b) (cdr a)))
	  (vl-sort
	    (mapcar '(lambda(x / en)
		       (cons (cdr (assoc 10 (setq en (entget x))))
			     (cdr (assoc 1 en)))) s1)
	    '(lambda (x y) (if (equal (cadar x) (cadar y) 1.)
			     (> (caar x) (caar y))
			     (< (cadar x) (cadar y)))))
	  (vl-sort
	    (mapcar '(lambda(x)
		       (cons (cdr (assoc 11 (entget x)))
			     (vlax-ename->vla-object x))) s2)
	    '(lambda (x y) (if (equal (cadar x) (cadar y) 1.)
			     (> (caar x) (caar y))
			     (> (cadar x) (cadar y)))))))

 

Thanks bác lisp chạy tương đối ổn ạ, có một số chỗ thì không hiểu sao nó bị sai thứ tự

2019-06-18_135209.thumb.png.1f9b4a0e2493f47c43593822c3dbdafb.png

 

22 giờ trước, Doan Nguyen Van đã nói:

Make text theo cái bảng của bác, mà hình như bảng không đều nhau

620024541_ezgif.com-video-to-gif(2).gif.855d8e3f582a5415f2cf46dbf9a85a90.gif

 Vâng nó khác nhau ạ vì nguồn không phải từ cad mà do từ catia mà ra, đích thì thuần cad nên nó có sự sai khá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
26 phút trước, vitcum đã nói:

Thanks bác lisp chạy tương đối ổn ạ, có một số chỗ thì không hiểu sao nó bị sai thứ tự

2019-06-18_135209.thumb.png.1f9b4a0e2493f47c43593822c3dbdafb.png

 

 Vâng nó khác nhau ạ vì nguồn không phải từ cad mà do từ catia mà ra, đích thì thuần cad nên nó có sự sai khác

Mỉnh sửa lại rồi đó. Do text lệch nhau nhiều hơn mình dự tính

  • Like 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
Đăng nhập để thực hiện theo  

×