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

[Yêu cầu]Đặt lại vị trí thuộc tính trong block có thuộc tính

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

Chào các bạn cadviet, mình rất kém về block nên nhờ các bạn giúp! (nếu đề tài này đã có xin các bạn chỉ điểm cho, mình tìm kg thấy)

Mình có block có thuộc tính sau : http://www.cadviet.com/upfiles/3/truranh_1.dwg

Nó chính là cái trụ ranh có một chấm tròn và một thuộc tính dạng text (là số hiệu trụ ranh đó)

Khi insert vào bản vẽ, cái text nó nằm đúng vị trí như khi thiết kế, muốn dời đi chỗ khác (đôi lúc nó đè lên đối tượng khác) phải dùng lệnh editblock như các bạn đã biết. Có các nào buộc cái text thuộc tính đó nằm đúng vị trí cung cấp.

Cụ thể, nhờ các bạn viết giúp hàm, ví dụ : ib( p1 p2) : trong đó p1 là điểm insert và p2 là vị trí của cái text thuộc tính kia.

Cám ơn các 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

Chào các bạn cadviet, mình rất kém về block nên nhờ các bạn giúp! (nếu đề tài này đã có xin các bạn chỉ điểm cho, mình tìm kg thấy)

Mình có block có thuộc tính sau : http://www.cadviet.com/upfiles/3/truranh_1.dwg

Nó chính là cái trụ ranh có một chấm tròn và một thuộc tính dạng text (là số hiệu trụ ranh đó)

Khi insert vào bản vẽ, cái text nó nằm đúng vị trí như khi thiết kế, muốn dời đi chỗ khác (đôi lúc nó đè lên đối tượng khác) phải dùng lệnh editblock như các bạn đã biết. Có các nào buộc cái text thuộc tính đó nằm đúng vị trí cung cấp.

Cụ thể, nhờ các bạn viết giúp hàm, ví dụ : ib( p1 p2) : trong đó p1 là điểm insert và p2 là vị trí của cái text thuộc tính kia.

Cám ơn các bạn.

File của pác đâu phải là block đâu nè. Nhưng mình thấy yêu cầu của pác thì dùng lisp làm j. Chọn cái block rồi nhấp vào điểm chèn của text mà di chuyển thôi, vì khi thay đổi thuộc tính của block (theo mình hiểu là thay đổi cái gốc trong block) thì có nhiều vị trí khác nhau mà Text đè lên những đối tượng khác nhau thì sao? ko lẽ mỗi thằng lại phải đặt tên block khác nữa ah?

  • 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

Đúng là yêu cầu này không cần lisp bác ạ :) Chỉ cần bác chú ý bỏ LockPosition của ATT đi là OK.

Lisp thì nó tương đương với dòng này :

(vla-put-lockposition (vlax-ename->vla-object (car(entsel))) 0)

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ám ơn các bạn đã quan tâm.

Ý mình muốn làm như vậy : http://www.cadviet.com/upfiles/3/truranh.jpg

Cái file của mình khi insert vào bản vẽ mới trở thành block có thuộc tính. Đôi lúc mình làm hàng trăm hình như vậy thì việc dùng lisp để tìm ra vị trí trống và đặt cái text có thuộc tính kia vào vị trí chỉ định (chứ kg phải mặc định) mới nhanh đc (ở đây mình chưa đặt vđ tìm ra vị trí trố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

Chào các bạn cadviet, mình rất kém về block nên nhờ các bạn giúp! (nếu đề tài này đã có xin các bạn chỉ điểm cho, mình tìm kg thấy)

Mình có block có thuộc tính sau : http://www.cadviet.com/upfiles/3/truranh_1.dwg

Nó chính là cái trụ ranh có một chấm tròn và một thuộc tính dạng text (là số hiệu trụ ranh đó)

Khi insert vào bản vẽ, cái text nó nằm đúng vị trí như khi thiết kế, muốn dời đi chỗ khác (đôi lúc nó đè lên đối tượng khác) phải dùng lệnh editblock như các bạn đã biết. Có các nào buộc cái text thuộc tính đó nằm đúng vị trí cung cấp.

Cụ thể, nhờ các bạn viết giúp hàm, ví dụ : ib( p1 p2) : trong đó p1 là điểm insert và p2 là vị trí của cái text thuộc tính kia.

Cám ơn các bạn.

xin loi vi dang online bang dth nen viet ko co dau. Minh ngua ngay chan tay nen vao dong gop y kien, ko biet co vua long bac TrungNgaMy ko?

De tranh tinh trang text thuoc tinh de len cac doi tuong khac lam cho so hieu cua block thuoc tinh do kho nhin. Vay tai sao bac ko tao wp de che phu phan o duoi ve text thuoc tinh hien len tren trong block thuoc tinh do. Sau khi chen so hieu se de nhin hon va lam cho so hieu cua block thuoc tinh do kho nhin. Vay tai sao bac ko tao wp de che phu phan o duoi ve text thuoc tinh hien len tren trong block thuoc tinh do. Sau khi chen so hieu se de nhin hon

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 loi vi dang online bang dth nen viet ko co dau. Minh ngua ngay chan tay nen vao dong gop y kien, ko biet co vua long bac TrungNgaMy ko?

De tranh tinh trang text thuoc tinh de len cac doi tuong khac lam cho so hieu cua block thuoc tinh do kho nhin. Vay tai sao bac ko tao wp de che phu phan o duoi ve text thuoc tinh hien len tren trong block thuoc tinh do. Sau khi chen so hieu se de nhin hon va lam cho so hieu cua block thuoc tinh do kho nhin. Vay tai sao bac ko tao wp de che phu phan o duoi ve text thuoc tinh hien len tren trong block thuoc tinh do. Sau khi chen so hieu se de nhin hon

Cám ơn bạn, nhưng yêu cầu của bản vẽ là tất cả các đối tượng hiển thị đều phải nhìn thấy và không đè lên nhau 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

Của bác đây :

;Thay doi vi tri ATT trong Block ATT
;@ Ketxu 8-2011
;blkENt : ename cua Block ATT
;lst : dot list bao gom cac (Tag . Point)
;Vi du : (ST:Block-Change-ATTIns (car(entsel)) (list (cons "123" (getpoint))(cons "456" (getpoint))))
(defun ST:Block-Change-ATTIns (blkEnt lst / IAcadBlockReference2 BlName AttObjLst IAcadBlock3 PromptString)
 (vl-load-com)
 (setq IAcadBlockReference2 (vlax-ename->vla-object blkEnt)
	BlName (vla-get-name IAcadBlockReference2 ))
     (if (= (vla-get-hasattributes IAcadBlockReference2 ) :vlax-true )
       (setq AttObjLst (vlax-safearray->list (variant-value (vla-getattributes IAcadBlockReference2 ))))
     )
     (setq IAcadBlock3 (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object ))) BlName ) )
     (foreach AttributeReference_in AttObjLst
       (vlax-for PromptString IAcadBlock3
         (if (= (vla-get-objectname PromptString ) "AcDbAttributeDefinition" )
           (progn
             (if (and (= (setq tag (vla-get-tagstring AttributeReference_in )) (vla-get-tagstring PromptString ))
					(assoc tag lst))
               (progn                  
				(vla-put-InsertionPoint AttributeReference_in (vlax-3d-point (cdr (assoc tag lst))))
               )                
             )
           )            
         )
       )
     )    
 )

Hàm gồm 2 đối số là (Tên block (List (Tag . Vị trí ATT))) , dùng cho liệt kê nhiều TAG, Point

VD của bác sẽ là :

(ST:BLOCK-CHANGE-ATTINS (car(entsel)) (list (cons "TRU" (getpoint))))

Gluck!

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

file ATT mới

http://www.cadviet.com/upfiles/3/truranh_2.dwg

Chào bác Ketxu.

Cái lisp của bác mình đã sd tốt rồi, nhưng do file ATT của mình up lúc trước thì cái text nó đang đc định vị trái (left), khi mình chuyển cái text thành định vị giữa (middle) cho thuận tiện khi dời chỗ thì nó trơ ra kg chạy. Mình xem lại cái code của bác hòng chỉnh sủa cho phù hợp đỡ khỏi phiền bác nhưng mình chẳng thấy chỗ nào liên quan đến vụ định vị cả, đành chịu, nhờ bác vậy. Cám ơn 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

Khi căn giữa Text sẽ có thuộc tính này nữa :TextAlignmentPoint. Bác thử thêm (hoặc thay thế) dòng

(vla-put-InsertionPoint AttributeReference_in (vlax-3d-point (cdr (assoc tag lst))))

kèm theo vla-put-TextAlignmentPoint xem sao ^^

  • 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

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

×