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

[Hỏi] Truy xuất tên thật của Dynamid Block

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

DXF của block, trong trường hợp thông thường, tên block nằm ở code 2.

Tuy nhiên, đối với Dynamid Block, code 2 chỉ là bắt đầu bằng ký tự * và nó không phải là tên thật của block đó.

Nếu gọi lệnh List, ta sẽ thấy 2 dòng:

Block Name: "CrossStructure-CulvertBoxPlan"

Anonymous Name: "*U431"

Vậy đối với Dynamid Block, làm sau để truy xuất Block Name bằng AutoLisp?

Và liệu có thể chọn được tất cả các Dynamid Block xuất phát từ cùng một Block gốc hay 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

Dùng Vl bạn ạ. Lấy nguyên 2 cái của Lee bạn tham khảo nhé :

 

(defun LM:EffectiveName ( blockobject )
 (vlax-get-property blockobject
(if (vlax-property-available-p blockobject 'EffectiveName) 'EffectiveName 'Name)
 )
)

 

VL k ưng Unicode lắm, nên mới có phiên bản Autolisp :

 

(defun LM:EffectiveName ( blockentity / name repbtag )
 (if (wcmatch (setq name (cdr (assoc 2 (entget blockentity)))) "`**")
(if
 	(and
   	(setq repbtag
     	(cdadr
       	(assoc -3
         	(entget
           	(cdr
             	(assoc 330
               	(entget (tblobjname "BLOCK" name))
             	)
           	)
          	'("AcDbBlockRepBTag")
         	)
       	)
     	)
   	)
   	(setq repbtag (handent (cdr (assoc 1005 repbtag))))
 	)
 	(setq name (cdr (assoc 2 (entget repbtag))))
)
 )
 name
)

  • 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

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  

×