Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
10 replies to this topic

#1 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 14 October 2016 - 11:06 AM

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.dropboxus...ynamicBlock.dwg


  • 0

#2 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 315 (khá)

Đã gửi 14 October 2016 - 11:24 AM

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.


  • 1

#3 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 14 October 2016 - 03:24 PM

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.


  • 1

#4 conghoa

conghoa

    biết lệnh attdef

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

Đã gửi 14 October 2016 - 04:21 PM

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

http://www.mediafire...ynamicBlock.dwg

 

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


  • 0

#5 lohado

lohado

    biết lệnh erase

  • Members
  • PipPipPip
  • 101 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 14 October 2016 - 04:34 PM

Nếu không nhầm thì là do hướng của Parameter.b thử đổi lại hướng xem được không nhé


  • 0

    146106_untitled444_2.png


#6 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 14 October 2016 - 04:38 PM

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

http://www.mediafire...ynamicBlock.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.


  • 0

#7 conghoa

conghoa

    biết lệnh attdef

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

Đã gửi 14 October 2016 - 05:08 PM

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?


  • 0

#8 Bee

Bee

    biết lệnh extend

  • Members
  • PipPipPip
  • 198 Bài viết
Điểm đánh giá: 68 (tàm tạm)

Đã gửi 14 October 2016 - 07:35 PM

Vấn đề do tạo block ban đầu. conghoa sửa block xong dùng lisp của giabach là ngon. ^_^


  • 0

#9 jangboko

jangboko

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 15 October 2016 - 10:45 PM

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.dropboxus...ynamicBlock.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...jVjUWp5dzg/view


  • 0

#10 ptd1987

ptd1987

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: -5 (bình thường)

Đã gửi 16 October 2016 - 05:39 PM

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


  • 0

#11 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 17 October 2016 - 10:43 AM

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! 


  • 0