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

Edit trực tiếp text Attribute trong block

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

Mình đọc diễn đàn thấy file này rất hay (theo đường dẫn) nhưng không tải được. Bạn nào có thì up lên lại để cho mình xin, rất cám ơn.

http://www.cadviet.com/upfiles/2/attribute...on_suite_v6.lsp

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
http://www.cadviet.com/sub/hupload.php?fok...n_suite_v10.lsp

đây mình mới dl và up lên cadviet cho mọi người dùng!

Cám ơn bạn rất nhiều. Nhưng vì sao hàm VLA-GET-MTEXTATTRIBUTE không có nhỉ? dù đã (vl-load-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
.........

Lisp này của tác giả Lee McDonnell gồm 3 lệnh chính :

1 . Mvatt : Move ATT có cùng Tagname

 

2 . Roatt : Rotate ATT có cùng Tagname

 

3. Edatt : Edit ATT có cùng Tagname

Cái này hay quá bác ơi ! :)

Cho mình hỏi thêm tí, có cách nào để chỉnh chiều cao chữ hàng loạt mà không ảnh hưởng đến Content ATT của các Block không ? Vì khi dùng lệnh EdATT thì nó buộc phải thay đổi tất cả Content ATT của các Block về cùng 1 giá trị !?

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

Mong các bác chỉ giáo, mình dùng lisp của bác Tue (tác giả McDonnell), có bản vẽ mình chọn attribute của block thì thấy có cái dialog "attribute modification suite" hiện lên, nhưng có bản vẽ mình cũng chọn tương tự lại không hiện cái dialog đó ???

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

 

Trong block có sử dụng nhiều text attribute thì việc gõ ed để sửa nội dung hơi vất vả một chút.

Đây là đoạn code để edit trực tiếp vào các text attribute do ta chọn bằng cách pick chuột.

(defun c:edt () (while (setq att (car(nentsel "\nChon text Attribute :")))(if (= (dxf 0 att) "ATTRIB")(progn     (setq 	TagName (dxf 2 att)	TagVal (dxf 1 att)	BlName (dxf 330 att))     (if 	(setq NewVal (getstring 5 (strcat "\nNhap gia tri moi cho " TagName " <" TagVal "> : ")) )	(putAtt BlName TagName NewVal));if);progn);if);while(princ) );end;------------------------------------------------------------------------------------------(defun dxf(id ent) (cdr (assoc id (entget ent))));------------------------------------------------------------------------------------------(defun putAtt (BlName TagName NewVal / AttName EntDxf dk)(setq AttName (entnext BlName ) dk 1)  (while (and AttName dk)    (if (equal (assoc 0 (entget AttName )) '(0 . "SEQEND"))        (setq AttName nil )        (if (= (cdr (assoc 2 (entget AttName ))) TagName ) ; <-- Your Attribute name            (progn              (setq EntDxf (entget AttName ) dk nil)              (setq EntDxf (subst (cons 1 NewVal ) (assoc 1 (entget AttName )) EntDxf ) )              (entmod EntDxf )              (entupd BlName )              (setq AttName (entnext AttName ))            );progn        (setq AttName (entnext AttName ))        );if    );if          );while      );end
Tuy nhiên lisp này phải gõ nội dung cần thay đổi ở dòng command.

Giờ em muốn thực hiện việc này thông qua một hộp thoại. hộp thoại đó có 2 nút Cancel và OK.

Xin nhờ các huynh viết hộ cái này, em không có rành khoản này lắm.

Lisp sử dụng rất đơn giản và tiện. Nhưng có một điều là nếu như ta cùng sửa text ở >1 block khác nhau thì ta lại phải chọn từng cái một. Anh có thể sửa thêm chức năng nữa là cho chọn những text (định sửa có cùng giá trị) sau đó nhập vào khô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

Lisp sử dụng rất đơn giản và tiện. Nhưng có một điều là nếu như ta cùng sửa text ở >1 block khác nhau thì ta lại phải chọn từng cái một. Anh có thể sửa thêm chức năng nữa là cho chọn những text (định sửa có cùng giá trị) sau đó nhập vào không ạ? 

 

Chào bạn minhphuonghung!

Ý bạn là : Nếu định sửa text ATT 1 lần cùng giá trị thì cũng phải pick chọn từng cái rồi nhập giá trị thì các text ATT được pick đó thay đổi pk?

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ạn minhphuonghung!

Ý bạn là : Nếu định sửa text ATT 1 lần cùng giá trị thì cũng phải pick chọn từng cái rồi nhập giá trị thì các text ATT được pick đó thay đổi pk?

Chào bác Tue_NV!

Đúng ý em là như thế đấy ạ. Trong lisp edt thì chỉ cho chọn 1 text rồi sửa trực tiếp luôn. Thật ra, nó giống như cái lệnh EdATT trong attribute_modification_suite_v6.lsp ấy ạ. Nhưng EDATT lại có nhược điểm là chọn được các text cùng một lúc để đưa về cùng một giá trị, thay vì chuột phải thì chúng ta lại phải nhấn Enter, làm như vậy thành ra em thấy đang dùng chuột để Select thì lại phải dùng tay Enter một cái.

Nói chung, nhu cầu của em không phức tạp như lệnh EDATT chỉ cần như cái lệnh edt rồi thêm chức năng là select nhiều text để chuyển về cùng một giá trị thôi ạ.

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

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  

×