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

Hỏi về cách viết 1 đoạn mã

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

Chào các sư huynh,

Đệ muốn nhờ mấy huynh hướng dẫn cách viết ra 1 đoạn mã để lấy ra tên của các Layout tab.

Xin cảm ơn.

Tiểu đệ.

 

Đoạn mã này lấy hết các layout tab của bản vẽ hiện hành, Kể cả layout "Model".

 

(vl-load-com)

(vlax-for lay (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))

(setq Lst (cons (vla-get-Name lay) Lst)))

  • Vote tăng 4

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
Đoạn mã này lấy hết các layout tab của bản vẽ hiện hành, Kể cả layout "Model".

 

(vl-load-com)

(vlax-for lay (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))

(setq Lst (cons (vla-get-Name lay) Lst)))

q288, cảm ơn bạn, bạn có nhiều đoạn mã VL rất hay, thiep này còn phải học mót bạn nhiều.

Từ đoạn mã này, Thiep phát triển thêm để lấy tên của layers, groups, Linetypes, blocks, thuận tiện hơn hàm tblnext nhiều. Tuy nhiên lấy tên của block thì kết quả cho thêm vài cái tên ngoài ý muốn:

(defun c:tenblock (/ lay Lst)

(vlax-for lay (vla-get-blocks

(vla-get-ActiveDocument (vlax-get-acad-object)))

(setq Lst (cons (vla-get-Name lay) Lst))

)

)

Kết quả: ("ten" "TRAM-COT" "_Dot" "at" "*Paper_Space0" "*Paper_Space" "*Model_Space")

Các tên màu đỏ là tên block ngoài ý muốn. Thiep chưa hiểu tại sao?

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
q288, cảm ơn bạn, bạn có nhiều đoạn mã VL rất hay, thiep này còn phải học mót bạn nhiều.

Từ đoạn mã này, Thiep phát triển thêm để lấy tên của layers, groups, Linetypes, blocks, thuận tiện hơn hàm tblnext nhiều. Tuy nhiên lấy tên của block thì kết quả cho thêm vài cái tên ngoài ý muốn:

(defun c:tenblock (/ lay Lst)

(vlax-for lay (vla-get-blocks

(vla-get-ActiveDocument (vlax-get-acad-object)))

(setq Lst (cons (vla-get-Name lay) Lst))

)

)

Kết quả: ("ten" "TRAM-COT" "_Dot" "at" "*Paper_Space0" "*Paper_Space" "*Model_Space")

Các tên màu đỏ là tên block ngoài ý muốn. Thiep chưa hiểu tại sao?

 

Cad coi các dim và các space (Model_Space, Paper_Space) cũng là block luôn,

chỉ khác với block thật là có dấu * đằng trước thôi.

  • 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
Đoạn mã này lấy hết các layout tab của bản vẽ hiện hành, Kể cả layout "Model".

 

(vl-load-com)

(vlax-for lay (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))

(setq Lst (cons (vla-get-Name lay) Lst)))

 

Xin cảm ơn sư huynh nhiều. Tiểu đệ còn phải học ở huynh rất nhiều.

Đệ đã load và sử dụng đoạn mã của huynh rồi. Nhưng thú thật đệ không hiểu gì hết. Huynh có thể giải thích cho đệ không?

Đệ có xem trong menu help nhưng vẫn không hiểu.

Cảm ơn huynh nhiều nha!

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
Xin cảm ơn sư huynh nhiều. Tiểu đệ còn phải học ở huynh rất nhiều.

Đệ đã load và sử dụng đoạn mã của huynh rồi. Nhưng thú thật đệ không hiểu gì hết. Huynh có thể giải thích cho đệ không?

Đệ có xem trong menu help nhưng vẫn không hiểu.

Cảm ơn huynh nhiều nha!

 

(vlax-get-acad-object) = cái acad bạn đang mở.

(vla-get-ActiveDocument (vlax-get-acad-object)) = bản vẽ hiện hành (trong số các bản vẽ đang mở)

(vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object))) = tập hợp các layout của bản vẽ hiện hành.

 

(vlax-for lay ...) = ứng với mỗi layout (tạm đặt tên là lay)

(vla-get-Name lay) = lấy tên của layout lay

(cons (vla-get-Name lay) Lst) = đưa cái tên đó vào danh sách Lst.

  • 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
(vlax-get-acad-object) = cái acad bạn đang mở.

(vla-get-ActiveDocument (vlax-get-acad-object)) = bản vẽ hiện hành (trong số các bản vẽ đang mở)

(vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object))) = tập hợp các layout của bản vẽ hiện hành.

 

(vlax-for lay ...) = ứng với mỗi layout (tạm đặt tên là lay)

(vla-get-Name lay) = lấy tên của layout lay

(cons (vla-get-Name lay) Lst) = đưa cái tên đó vào danh sách Lst.

 

Một lần nữa xin cảm ơn huynh.

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  

×