Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
5 replies to this topic

#1 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 04 December 2012 - 01:41 PM

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

#2 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 04 December 2012 - 02:12 PM

bạn dùng (vla-get-effectivename block) thử xem. nhớ block ở đây là vla-object nhé.have fun :)
  • 1

#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 December 2012 - 02:12 PM

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
)

  • 2

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 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 04 December 2012 - 02:47 PM

Cám ơn soluuhuong2903ketxu, mình đã tìm được tên chính xác rồi.
Vấn đề còn lại là làm sao chọn tất cả các dynamid block xuất phát từ cùng một block name?
Mong các bác chỉ giáo!
  • 0

#5 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 December 2012 - 03:25 PM

lọc và kiểm tra thôi
  • 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


#6 LoveLisp

LoveLisp

    biết lệnh extend

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

Đã gửi 04 December 2012 - 04:45 PM

Cám ơn ketxu! Tốt rồi! :))
  • 0