Chuyển đến nội dung
Diễn đàn CADViet
Duong Nhat Duy

Lisp Copy nội dung Text, Att, Dynamic nhanh (áp dụng cho Text, Dim, Block, Xref, Leader, Table, ...)

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

11 giờ trước, Lê Quang Dương đã nói:

1807250318_LoilenhQ3.gif.8afaba48e05a7efd69cba9f8d6fd4497.gif

Nhờ AD kiểm tra lại giúp lúc dùng lệnh Q3 thì cho dù chọn thông số Dynamic là Chiều rộng hay Chiều cao thì kết quả trả về cũng chỉ là Chiều rộng. Thanks!

B thử bỏ dấu tiếng Việt 2 cái tên dynamic xem, nếu ko lỗi thì mình sẽ sửa lạ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
13 giờ trước, Duong Nhat Duy đã nói:

B thử bỏ dấu tiếng Việt 2 cái tên dynamic xem, nếu ko lỗi thì mình sẽ sửa lại.

Đã sửa lại 2 tên dynamic về Tiếng Việt không dấu những vẫn bị lỗi 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
22 giờ trước, Duong Nhat Duy đã nói:

Bạn gửi file cad đi

Xác nhận lại với bạn là nếu đặt tên Linear Parameter có dấu cách thì chương trình sẽ bị lỗi như đã đề cập, còn không có dấu cách thì hoạt động bình thường. Bạn xem thử.

Khong dau cach.dwg

Co dau cach.dwg

  • 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ào lúc 12/7/2024 tại 21:21, Lê Quang Dương đã nói:

Xác nhận lại với bạn là nếu đặt tên Linear Parameter có dấu cách thì chương trình sẽ bị lỗi như đã đề cập, còn không có dấu cách thì hoạt động bình thường. Bạn xem thử.

Khong dau cach.dwg

Co dau cach.dwg

Mình đã fix lại rồi nhé !

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
33 phút trước, Duong Nhat Duy đã nói:

Mình đã fix lại rồi nhé !

Anh ơi, anh cho lisp hỗ trợ cả đối tượng là tolerance và table nữa đi ạ, em muốn gộp cả lisp Danh STT Text, Att, Dim nhưng em cop bị lỗi hàm con thì sửa sao ạ

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, Xuân Lộc đã nói:

Anh ơi, anh cho lisp hỗ trợ cả đối tượng là tolerance và table nữa đi ạ, em muốn gộp cả lisp Danh STT Text, Att, Dim nhưng em cop bị lỗi hàm con thì sửa sao ạ

Bạn hỏi cụ thể hơn được không ?

1. Tolerance là gì ?

2. Text trong Table thì ok mình sẽ nghiên cứu bổ sung

3. Gộp lisp là như thế nào ?

4. Lỗi hàm con là như thế nào ?

Bạn hỏi như 1 coder chuyên nghiệp vậy, mình chỉ là thằng code dạo nghiệp dư nên không thể hiểu đượ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
5 giờ trước, Duong Nhat Duy đã nói:

Mình đã fix lại rồi nhé !

Cảm ơn bạn rất nhiều. Lisp bạn viết dùng rất thích, nhất là lệnh Q1 mình dùng rất nhiều. Một lần nữa cảm ơn bạn đã chia sẽ.

4 giờ trước, Xuân Lộc đã nói:

Anh ơi, anh cho lisp hỗ trợ cả đối tượng là tolerance và table nữa đi ạ, em muốn gộp cả lisp Danh STT Text, Att, Dim nhưng em cop bị lỗi hàm con thì sửa sao ạ

Lisp này nếu bổ sung thêm table thì trên cả tuyệt vời luô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
Vào lúc 15/7/2024 tại 16:46, Duong Nhat Duy đã nói:

Bạn hỏi cụ thể hơn được không ?

1. Tolerance là gì ?

2. Text trong Table thì ok mình sẽ nghiên cứu bổ sung

3. Gộp lisp là như thế nào ?

4. Lỗi hàm con là như thế nào ?

Bạn hỏi như 1 coder chuyên nghiệp vậy, mình chỉ là thằng code dạo nghiệp dư nên không thể hiểu được !

1. Tolerance là cái được tạo bằng lệnh TOL (TOLERANCE)

2. Bảng Table

3. Em dán 2 lisp vào 1 file .txt rồi đổi đuôi .lsp

4. Khi thực hiện 1 lệnh của lisp đã gộp nó báo lỗi, em nghĩ do trùng hàm con của 2 lisp trên

image.png.780a8432d726d4afa484ef1b6feb64e0.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
Vào lúc 15/7/2024 tại 15:03, Duong Nhat Duy đã nói:

Mình đã fix lại rồi nhé !

Bản mới này sau khi fix thì không dùng được đối tượng MULTILEADER nữa. Nhờ bạn kiểm tra lại nhé

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

Xin phép tác giả, mình bổ sung thêm Multileader vào lệnh Q1 (Không dùng được cho trường hợp Multileader type là block có ATT).

(defun C:q1  (/ ENT1 ENT2 ENT2A ENX2 LST1 LST2 STR1 mld)
  (setvar "CMDECHO" 0)
  (setvar "DIMZIN" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq ent1 nil)
  (setq ent2 nil)
  (while (not ent1)
    (while (not (setq ent1 (car (nentsel "\nSelect source object: ")))))
    (if (not (or (assoc 1 (setq lst1 (entget ent1)))
                 (and (setq mld (cdr (assoc 304 lst1))) (eq (type mld) 'STR))))
      (setq ent1 nil)))
  (if mld
    (progn (setq str1 (ND:unformat mld nil)) (setq mld nil))
    (setq str1 (ND:unformat (cdr (assoc 1 lst1)) nil)))
  (setvar "ERRNO" 0)
  (while (/= (getvar "ERRNO") 52)
    (if (and (setq ent2 (car (setq enx2 (nentsel "\nSelect destination object: "))))
             (or (assoc 1 (setq lst2 (entget ent2)))
                 (and (setq mld (cdr (assoc 304 lst2))) (eq (type mld) 'STR))))
      (progn (setq ent2a (last (last enx2)))
             (if (= (type ent2a) 'ENAME)
               (if (wcmatch (cdr (assoc 0 (entget ent2a))) "*DIMENSION")
                 (setq lst2 (entget ent2a))))
             (entmod (setq lst2 (subst (cons 1 str1) (assoc 1 lst2) lst2)))
             (cond ((wcmatch (cdr (assoc 0 (entget ent2))) "MULTILEADER")
                    (vla-put-textstring (vlax-ename->vla-object ent2) str1)
                    (setq mld nil)))
             (entupd ent2)
             (if (= (type ent2a) 'ENAME)
               (if (wcmatch (cdr (assoc 0 (entget ent2a))) "INSERT")
                 (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acAllViewports))))))
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ))

  • Like 1
  • 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
1 giờ trước, NTHAHT đã nói:

Xin phép tác giả, mình bổ sung thêm Multileader vào lệnh Q1 (Không dùng được cho trường hợp Multileader type là block có ATT).

(defun C:q1  (/ ENT1 ENT2 ENT2A ENX2 LST1 LST2 STR1 mld)
  (setvar "CMDECHO" 0)
  (setvar "DIMZIN" 0)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq ent1 nil)
  (setq ent2 nil)
  (while (not ent1)
    (while (not (setq ent1 (car (nentsel "\nSelect source object: ")))))
    (if (not (or (assoc 1 (setq lst1 (entget ent1)))
                 (and (setq mld (cdr (assoc 304 lst1))) (eq (type mld) 'STR))))
      (setq ent1 nil)))
  (if mld
    (progn (setq str1 (ND:unformat mld nil)) (setq mld nil))
    (setq str1 (ND:unformat (cdr (assoc 1 lst1)) nil)))
  (setvar "ERRNO" 0)
  (while (/= (getvar "ERRNO") 52)
    (if (and (setq ent2 (car (setq enx2 (nentsel "\nSelect destination object: "))))
             (or (assoc 1 (setq lst2 (entget ent2)))
                 (and (setq mld (cdr (assoc 304 lst2))) (eq (type mld) 'STR))))
      (progn (setq ent2a (last (last enx2)))
             (if (= (type ent2a) 'ENAME)
               (if (wcmatch (cdr (assoc 0 (entget ent2a))) "*DIMENSION")
                 (setq lst2 (entget ent2a))))
             (entmod (setq lst2 (subst (cons 1 str1) (assoc 1 lst2) lst2)))
             (cond ((wcmatch (cdr (assoc 0 (entget ent2))) "MULTILEADER")
                    (vla-put-textstring (vlax-ename->vla-object ent2) str1)
                    (setq mld nil)))
             (entupd ent2)
             (if (= (type ent2a) 'ENAME)
               (if (wcmatch (cdr (assoc 0 (entget ent2a))) "INSERT")
                 (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acAllViewports))))))
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ))

Cảm ơn bạn rất nhiều nhé, tại lâu nay mình cứ tưởng hàm vla-put-textstring lỗi với unicode mà hóa ra không phải, chỉ có vla-get-textstring thì mới bị.

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

NTHAHT - Bạn có thể chỉnh lệnh Q1 khi block ATT sử dụng Multiline luôn được không.

Người ta đã bảo là không làm được rồi còn gì, mà mình chưa hiểu block att sử dụng mutileader là như thế nào, bạn gửi cad mình xem 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

Trước đây mình dùng lệnh Q1, Q2 của tác giả thì ok nhưng lỗi ở lệnh Q3, Sau khi tác giả fix lỗi Q3 thì lệnh Q1 không sử dụng được đối tượng Mutileader. Bạn NTHAHT bổ sung Mutileader vào lệnh Q1 thì lại phát sinh lỗi không dùng được Multiline ở block att (trước đó vẫn dùng bình thường). Giải pháp hiện tại mình đang dùng là copy y nguyên code của lệnh Q1 trước đây thay thế cho bản hiện tại thì đã giải quyết được mọi vấn đề. Riêng đối tượng Table thì vẫn chờ tác giả ra bản mới thô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
Vào lúc 22/7/2024 tại 21:36, Lê Quang Dương đã nói:

Trước đây mình dùng lệnh Q1, Q2 của tác giả thì ok nhưng lỗi ở lệnh Q3, Sau khi tác giả fix lỗi Q3 thì lệnh Q1 không sử dụng được đối tượng Mutileader. Bạn NTHAHT bổ sung Mutileader vào lệnh Q1 thì lại phát sinh lỗi không dùng được Multiline ở block att (trước đó vẫn dùng bình thường). Giải pháp hiện tại mình đang dùng là copy y nguyên code của lệnh Q1 trước đây thay thế cho bản hiện tại thì đã giải quyết được mọi vấn đề. Riêng đối tượng Table thì vẫn chờ tác giả ra bản mới thôi.

- Mình bổ sung đối tượng Mutileader vào lisp từ bản hiện tại (ở trang đầu).

- Bản hiện tại đó có dùng được cho "Multiline ở block att" đâu mà phát sinh lỗi nhỉ?

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

- Mình bổ sung đối tượng Mutileader vào lisp từ bản hiện tại (ở trang đầu).

- Bản hiện tại đó có dùng được cho "Multiline ở block att" đâu mà phát sinh lỗi nhỉ?

Bản hiện tại của tác giả dùng được cho Multiline ở block att bạn nhé.

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, Lê Quang Dương đã nói:

Bản hiện tại của tác giả dùng được cho Multiline ở block att bạn nhé.

Mình nói rõ hơn chút:

- Nếu bản hiện tại dùng được thế nào thì lisp mình bổ sung cũng sử dụng được như thế!

- Vấn đề Multiline mình nói ở trên là mang tính tổng quát hơn, bạn thử dùng att Multiline nhiều dòng hoặc nhiều ký tự... và so sánh 2 lisp xem thế nào! Rồi đưa ra đánh giá!

- Mình bổ sung chứ không cắt bỏ chức năng hay đối tượng được hỗ trợ nào 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
2 giờ trước, vietduc147258 đã nói:

Cám ơn anh @Duong Nhat Duy . 

Nhờ anh viết thêm lệnh để copy nội dung text hoặc dim vào thay thế chữ có sẵn trong table với ạ?

Bản cuối cùng mình có thêm cho Multileader và Table rồi, bạn down lại 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
Vào lúc 26/8/2024 tại 13:15, Duong Nhat Duy đã nói:

Bản cuối cùng mình có thêm cho Multileader và Table rồi, bạn down lại nhé

Cảm ơn bạn đã chia sẽ một lisp rất hay. Qua dùng thử phiên bản này mình thấy có 2 vấn đề sau:

1. Dùng lệnh Q1->Enter->chọn đối tượng nguồn->Chọn đối tượng đích->Enter để thoát lệnh (như phiên bản trước đang dùng) thì lisp quay trở lại chọn đối tượng đích mà không chịu thoát lệnh. Nó chỉ thoát lệnh khi nhấn phím Esc.

2. Việc sử dụng cho đối tượng là text trong Table thì chỉ cho chọn đối tượng đích là Table, còn đối tượng nguồn là Table thì không thể chọn đượ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
9 giờ trước, Lê Quang Dương đã nói:

Cảm ơn bạn đã chia sẽ một lisp rất hay. Qua dùng thử phiên bản này mình thấy có 2 vấn đề sau:

1. Dùng lệnh Q1->Enter->chọn đối tượng nguồn->Chọn đối tượng đích->Enter để thoát lệnh (như phiên bản trước đang dùng) thì lisp quay trở lại chọn đối tượng đích mà không chịu thoát lệnh. Nó chỉ thoát lệnh khi nhấn phím Esc.

2. Việc sử dụng cho đối tượng là text trong Table thì chỉ cho chọn đối tượng đích là Table, còn đối tượng nguồn là Table thì không thể chọn được.

Lisp nó giữ lại nguồn text chỉ ấn esc nó tiện mà, ấn esc để hủy lệnh cũng lười. Lisp của leemac cũng có chức năng giữ nguồn text để gán text cho nhiều đối tượng. Đây là chức năng ko phải lỗ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

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

×