Chuyển đến nội dung
Diễn đàn CADViet
dinhtuong18

Nhờ các bác sửa lisp tạo nhanh blocks

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

em copy trên mạng đc cái lisp tạo nhanh block này,nhưng nó chỉ cho tạo từng đối tượng một và phải chọn điểm chèn cho nó
giờ em muốn quét chọn 1 lúc nhiều đối tượng và tạo block cho từng đối tượng đó,điểm chèn là góc dưới cùng bên trái ạ

(ghi chú: điểm chèn em muốn mặc định là điểm có tọa độ X nhỏ nhất và tọa độ Y là nhỏ nhất của đối tượng ạ)

em cảm ơn ạ,rất mong đc các bác giúp đỡ ạ

QB.lsp

block.PNG

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
11 giờ trước, dinhtuong18 đã nói:

em copy trên mạng đc cái lisp tạo nhanh block này,nhưng nó chỉ cho tạo từng đối tượng một và phải chọn điểm chèn cho nó
giờ em muốn quét chọn 1 lúc nhiều đối tượng và tạo block cho từng đối tượng đó,điểm chèn là góc dưới cùng bên trái ạ

(ghi chú: điểm chèn em muốn mặc định là điểm có tọa độ X nhỏ nhất và tọa độ Y là nhỏ nhất của đối tượng ạ)

em cảm ơn ạ,rất mong đc các bác giúp đỡ ạ

QB.lsp

block.PNG

quét chọn 1 lúc nhiều đối tượng và tạo block cho từng đối tượng đó--> Mình cũng muốn giúp nhưng nằm ngoài khả năng của mình, hóng kết quả của các Pro!

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

Lisp này không dễ chút nào!! Nhưng ít nhất bạn phải đưa file cad mẫu để người khac biết mấy cái đuòng đó là loại đối tượng gì mới được chứ!!

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

Mình viết giúp 2 bạn ở trên, trong lisp có 2 lệnh.

1- Lệnh QB: Mỗi lần quét chọn (tập chọn) -> tạo ra 1 block.

2- Lệnh QBS: Mỗi đối tượng trong tập chọn là 1 block.

 

 

QB-QBS.rar

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
5 giờ trước, 7o7 đã nói:

Lisp này không dễ chút nào!! Nhưng ít nhất bạn phải đưa file cad mẫu để người khac biết mấy cái đuòng đó là loại đối tượng gì mới được chứ!!

đây ạ,em gửi file,các bác xem giúp em với ạ
em cảm ơn

help.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
5 giờ trước, NTHAHT đã nói:

Mình viết giúp 2 bạn ở trên, trong lisp có 2 lệnh.

1- Lệnh QB: Mỗi lần quét chọn (tập chọn) -> tạo ra 1 block.

2- Lệnh QBS: Mỗi đối tượng trong tập chọn là 1 block.

 

 

QB-QBS.rar

image.thumb.png.64e3bcda29a2abb1136bbdc0417e5e6b.png

lệnh QB của bác điểm chèn block nó ko nằm trên góc của đối tượng ạ,bác sửa lại giúp em tí đc ko ạ

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
5 giờ trước, NTHAHT đã nói:

Mình viết giúp 2 bạn ở trên, trong lisp có 2 lệnh.

1- Lệnh QB: Mỗi lần quét chọn (tập chọn) -> tạo ra 1 block.

2- Lệnh QBS: Mỗi đối tượng trong tập chọn là 1 block.

 

 

QB-QBS.rar

còn lệnh QBS của bác thì nó cứ chạy đến 100 thì ko ra gì cả,ko tạo đc block ạ

1.png

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
29 phút trước, dinhtuong18 đã nói:

đây ạ,em gửi file,các bác xem giúp em với ạ
em cảm ơn

help.dwg

 

với ví dụ trong file bạn gửi thì không có lisp làm đâu nhé, vì quá khó để đúng ý của bạn

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
34 phút trước, dinhtuong18 đã nói:

đây ạ,em gửi file,các bác xem giúp em với ạ
em cảm ơn

help.dwg

để chạy được đường bao bên ngoài bạn tại thành 1 đối tượng polyline nhé. may ra viết được, chứ các đối tượng rời rạc vậy rất khó để biết được đâu là 1 nhóm các đối tượng cần tạo block

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

Mình đã tạo block theo lệnh QBS nhưng có vướn mắc xin các bạn có lisp nào hoặc có đường dẫn nào cho mình xin, nội dung như sau.

- Xuất số liệu block (hoặc text) ra excel - mục đích chỉnh sửa, tính toán

- Nhập số liệu excel đã chỉnh vào lại.

Mình cảm ơn.

03. San nen dauxe.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
1 giờ trước, dinhtuong18 đã nói:

đây ạ,em gửi file,các bác xem giúp em với ạ
em cảm ơn

help.dwg

Mình làm lại lisp khác cho trường hợp bản vẽ này của bạn, các bản vẽ khác có thể không được nhé!

 

QB-QBS-2.rar

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
2 giờ trước, dinhtuong18 đã nói:

image.thumb.png.e30a2b95a9d3eddd786c8d622f46c7cd.png

lệnh QB của bác điểm chèn block nó ko nằm trên góc của đối tượng ạ,bác sửa lại giúp em tí đc ko ạ

Mình đoán chỗ khoanh đó là Mtext, và vùng bao của mtext đó bị tràn ra ngoài các đường bao quanh.

Kiểu thế này:

image.png.585067cc5fbc58c4c0450cf629e51b7e.png

Để được như ý, bạn nên chỉnh lại Mtext sao cho các mũi tên màu xanh nằm trọn trong vùng bao.

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
2 giờ trước, huunhantvxdts đã nói:

để chạy được đường bao bên ngoài bạn tại thành 1 đối tượng polyline nhé. may ra viết được, chứ các đối tượng rời rạc vậy rất khó để biết được đâu là 1 nhóm các đối tượng cần tạo block

vâng,đường bao bên ngoài em có thể vẽ thành 1 đối tượng polyline kín đc đc ạ,bác xem có cách nào giúp em với ạ,em cảm ơn

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
16 phút trước, NTHAHT đã nói:

Mình đoán chỗ khoanh đó là Mtext, và vùng bao của mtext đó bị tràn ra ngoài các đường bao quanh.

Kiểu thế này:

image.png.585067cc5fbc58c4c0450cf629e51b7e.png

Để được như ý, bạn nên chỉnh lại Mtext sao cho các mũi tên màu xanh nằm trọn trong vùng bao.

vâng,em thử lại với ko có text rồi ạ,ok rồi bác ạ,em cảm ơn bác nhiều

nhưng tốc độ sử lý hơi lâu bác ạ,nó nhanh nhanh như lisp gốc của em thì tốt ạ

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
17 giờ trước, tamky đã nói:

Mình đã tạo block theo lệnh QBS nhưng có vướn mắc xin các bạn có lisp nào hoặc có đường dẫn nào cho mình xin, nội dung như sau.

- Xuất số liệu block (hoặc text) ra excel - mục đích chỉnh sửa, tính toán

- Nhập số liệu excel đã chỉnh vào lại.

Mình cảm ơn.

03. San nen dauxe.dwg

Cái này làm được với block att, chỉ cần 2 lệnh ATTOUT và ATTIN.

Còn với block thường do lệnh QBS trên tạo ra thì bất khả thi.

  • Like 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

Đã nói là không dễ rồi mà! 

Nhưng tôi nghĩ trên này có người làm được  với đk thớt phải trả chầu nhậu ra trò chứ không phải ly cà phê thôi đâu, thử xem !!

  • Like 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
22 giờ trước, dinhtuong18 đã nói:

vâng,đường bao bên ngoài em có thể vẽ thành 1 đối tượng polyline kín đc đc ạ,bác xem có cách nào giúp em với ạ,em cảm ơn

Cái này bạn xử lý Mtext như bạn @NTHAHT đã nói thì yêu cầu của bạn đở phức tạp hơn nhiều

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

Gửi tặng bạn điều kiện đường bao bên ngoài phải là đường polyline (nếu bên trong có đường Polyline nữa thì phải xét đến layer nhé)

(defun c:TNBL (/ cur_lay oldos lstpl stt o p3 p4 ss ten)
(setq cur_lay (getvar "clayer" ))
(setq oldos (getvar "OSMODE"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(command "UNDO" "Be")
(vl-load-com)
(prompt "\nChon duong bao Polyline")
(setq lstpl (CV:ss-to-list (ssget '((0 . "LWPOLYLINE"))) T))
(setq stt 1)
(foreach ent lstpl
(setq o ent)
(vlax-method-applicable-p o 'getboundingbox)
(not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
(setq p3 (vlax-safearray->list a))
(setq p4 (vlax-safearray->list b))
(setq ss (ssget "C" p3 p4))
(setq ten (menucmd "M=$(edtime, $(getvar, date),MODDYYHHMMSS)"))
(setq ten (strcat ten (rtos stt 2 0)))
(command "_.-block" ten  p3 ss "")
(command "_.insert" ten "_S" 1 p3 "")
(setq stt (+ stt 1))
)
(command "UNDO" "End")
(setvar "clayer" cur_lay)
(setvar "osmode" oldos)
(setvar "CMDECHO" 1)
(princ)
)
(defun CV:ss-to-list (ss vla / n e l)
(if ss
(progn
(setq n (sslength ss))
(while (setq e (ssname ss (setq n (1- n))))
(setq l (cons (if vla (vlax-ename->vla-object e) e) l))
)
)
)
)

 

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
4 giờ trước, huunhantvxdts đã nói:

Gửi tặng bạn điều kiện đường bao bên ngoài phải là đường polyline (nếu bên trong có đường Polyline nữa thì phải xét đến layer nhé)


(defun c:TNBL (/ cur_lay oldos lstpl stt o p3 p4 ss ten)
(setq cur_lay (getvar "clayer" ))
(setq oldos (getvar "OSMODE"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(command "UNDO" "Be")
(vl-load-com)
(prompt "\nChon duong bao Polyline")
(setq lstpl (CV:ss-to-list (ssget '((0 . "LWPOLYLINE"))) T))
(setq stt 1)
(foreach ent lstpl
(setq o ent)
(vlax-method-applicable-p o 'getboundingbox)
(not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
(setq p3 (vlax-safearray->list a))
(setq p4 (vlax-safearray->list b))
(setq ss (ssget "C" p3 p4))
(setq ten (menucmd "M=$(edtime, $(getvar, date),MODDYYHHMMSS)"))
(setq ten (strcat ten (rtos stt 2 0)))
(command "_.-block" ten  p3 ss "")
(command "_.insert" ten "_S" 1 p3 "")
(setq stt (+ stt 1))
)
(command "UNDO" "End")
(setvar "clayer" cur_lay)
(setvar "osmode" oldos)
(setvar "CMDECHO" 1)
(princ)
)
(defun CV:ss-to-list (ss vla / n e l)
(if ss
(progn
(setq n (sslength ss))
(while (setq e (ssname ss (setq n (1- n))))
(setq l (cons (if vla (vlax-ename->vla-object e) e) l))
)
)
)
)

 

em cảm ơn bác nhiều ạ

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

×