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

Đổi Thuộc Tính Của Dynamic Block

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

Chào anh em CadViet.

 

Tôi có 1 lisp đổi giá trị thuộc tính của Dynamic Block, nó chạy tốt với thuôc tính "Diantance3". (trong file Cad đính kèm)

Nhưng với thuộc tính "Diantance1" và "Diantance2", mặc dù nó cũng đổi được giá trị nhưng kích thước hình học tương ứng lại không thay đổi.

   Nhờ anh em tư vấn giúp.

Cám ơn cả nhà.

 

Lisp : 

(defun PutDynamicProperty(Block Property Value / oVal cVal)
  (if(= 'ENAME(type Block))
    (setq Block(vlax-ename->vla-object Block)) )
  (if(= :vlax-true(vla-get-IsDynamicBlock Block))
    (foreach p(vlax-safearray->list
		(vlax-variant-value
		  (vla-GetDynamicBlockProperties Block)))
      (if(=(strcase Property)(strcase(vla-get-PropertyName p)))
	(progn
	(setq cVal(vlax-make-variant Value vlax-vbDouble))
	(if(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-Value(list p cVal)))
	   (setq oVal nil)(setq oVal Value) ) ) ) ) )
  oVal ); end
; (PutDynamicProperty (setq bl(car(entsel))) "Distance1" 79.0) 
; (PutDynamicProperty (setq bl(car(entsel))) "Distance2" 89.0)
; (PutDynamicProperty (setq bl(car(entsel))) "Distance3" 99.0) ; OK

file Cad có dynamic block : https://dl.dropboxusercontent.com/u/101018313/DynamicBlock.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

Bác kiểm tra cái Block của bác!

Không dùng lsp: CTRL + F1 Thay đổi các distance, chỉ có dis3 thì Blk thay đổi, 2 cái còn lại không nhúc nhíc động đậy.

  • 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

Bác kiểm tra cái Block của bác!

Không dùng lsp: CTRL + F1 Thay đổi các distance, chỉ có dis3 thì Blk thay đổi, 2 cái còn lại không nhúc nhíc động đậy.

Tks QuocManh.

Tiếc là hiểu biết về dynamic block của tôi hơi bị tệ. (block này do người khác tạo ra)

 

Ngóng cao thủ nào đi ngang qua giúp 1 tay.

Xin cám ơn.

  • 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

Bác Gia_bach dùng thử cái block này xem được không

http://www.mediafire.com/file/448bnmsb6lm57pa/DynamicBlock.dwg

 

có thể lúc tạo block kia bị lỗi gì đó

Cám ơn Conghoa.

Ý của tôi là có cách nào sửa block ban đầu để khi mình thay đổi thuộc tính thì các kích thước hình học thay đổi theo.

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 Conghoa.

Ý của tôi là có cách nào sửa block ban đầu để khi mình thay đổi thuộc tính thì các kích thước hình học thay đổi theo.

Em sửa cho bác rồi đó, bác đã test chư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

Chào anh em CadViet.

 

Tôi có 1 lisp đổi giá trị thuộc tính của Dynamic Block, nó chạy tốt với thuôc tính "Diantance3". (trong file Cad đính kèm)

Nhưng với thuộc tính "Diantance1" và "Diantance2", mặc dù nó cũng đổi được giá trị nhưng kích thước hình học tương ứng lại không thay đổi.

   Nhờ anh em tư vấn giúp.

Cám ơn cả nhà.

 

Lisp : 

(defun PutDynamicProperty(Block Property Value / oVal cVal)
  (if(= 'ENAME(type Block))
    (setq Block(vlax-ename->vla-object Block)) )
  (if(= :vlax-true(vla-get-IsDynamicBlock Block))
    (foreach p(vlax-safearray->list
		(vlax-variant-value
		  (vla-GetDynamicBlockProperties Block)))
      (if(=(strcase Property)(strcase(vla-get-PropertyName p)))
	(progn
	(setq cVal(vlax-make-variant Value vlax-vbDouble))
	(if(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-Value(list p cVal)))
	   (setq oVal nil)(setq oVal Value) ) ) ) ) )
  oVal ); end
; (PutDynamicProperty (setq bl(car(entsel))) "Distance1" 79.0) 
; (PutDynamicProperty (setq bl(car(entsel))) "Distance2" 89.0)
; (PutDynamicProperty (setq bl(car(entsel))) "Distance3" 99.0) ; OK

file Cad có dynamic block : https://dl.dropboxusercontent.com/u/101018313/DynamicBlock.dwg

bạn xem video này xem có ngộ được điều gì ko, mình thấy nó cũng đễ hiểu.https://drive.google.com/file/d/0BzkbqTkSuflZYVJGRjVjUWp5dzg/view

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

block kì cục quá :D, distance nào kéo 1 hướng thì chỉnh 1  thôi, rồi stretch đầu đó, để 2 đâu gây hiểu nhầm 2 đầu đều stretch

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 conghoa, lohado, jangboko. cám ơn cả nhà.

 

Cuối cùng cũng "tự tay làm được" một dynamic block đơn giản (với các thao tác cơ bản).

Qua đó mới tỉm ra nguyên nhân tại sao Lisp chạy không đươc. (tr/hợp này nguyên nhân không phải do Lisp mà do thao tác khi tạo block không đúng).

 

Tks all! 

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  

×