Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
8 replies to this topic

#1 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 01 September 2011 - 11:33 AM

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

#2 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 01 September 2011 - 11:44 AM

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.c...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?
  • 2
Hình đã gửi

#3 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 September 2011 - 12:23 PM

Đú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)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#4 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 02 September 2011 - 01:55 AM

Cám ơn các bạn đã quan tâm.
Ý mình muốn làm như vậy : http://www.cadviet.c...s/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).
  • 0

#5 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 02 September 2011 - 04:53 PM

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



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#6 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 03 September 2011 - 01:37 AM

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

#7 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 03 September 2011 - 09:22 AM

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

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#8 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 13 September 2011 - 04:59 PM

file ATT mới
http://www.cadviet.c...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
  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 13 September 2011 - 10:25 PM

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 ^^
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC