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

xin lisp scale TẠI TÂM cho nhiều đối tượng

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

Chào bạn nguyentuyen6,

Nó báo lỗi thế nào hử bạn???

Rất cám ơn bạn về cái hàm (acet-ent-midpoint... )

 

HÌ!! bạn thử cái này xem có vừa ý không nhé

(defun BatDau() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))
(defun KetThuc() (setvar "osmode" OldOs))
(defun c:sct (/ OldOs OldEcho tile en pt1 pt2 mid i Rec)
(setq i 0)
(princ "\nChon Doi tuong Scale tai tam:")
(setq ss (ssget))
(setq tile (getreal "\nChon tile Scale:"))
(while (< i (sslength ss))
(setq en (ssname ss i))
(setq Rec (acet-ent-geomextents en)
pt1 (nth 0 Rec);lay dinh
pt2 (nth 1 Rec);lay dinh
mid (acet-geom-midpoint pt1 pt2)
);setq
(BatDau)
(command "SCALE" en "" mid tile )
(KetThuc)

(setq i (1+ i))
);while
(princ "\n...Done...")
(princ)
);defun
Tại cái TÂM của bạn nó khó xác định quá nên mình dùng cách này nhé!!!

Tiện đây mình hỏi luôn: cái Hàm acet-ent-geomextents tại sao nó vẫn thực hiện mà cứ báo lỗi nhỉ

Mình dùng hàm acet-ent-geomextents để xác định tâm.

Tốt nhất bạn Block từng đối tượng muốn scale vào để đc chính xác!!!

Chào bạn, lisp của bạn dùng rất Ok, chỉ có điều khi trong bản vẽ có nhiều block, nhưng các block có cái nhỏ cái to (Scale lúc trước) nên k đều nhau, khi sử dụng lisp của bạn nó Scale tất cả các block đều thu về 1 tỷ lệ đặt trước. VD mình cho scale về 0.5 thì các block đã scale 0.5 hay 2 hay 1 thì nó sẽ lần lượt về 0.25 1 và 0.5 . Nhưng ở đây mình muốn tất cả đều về 0.5 thì sao ạ?. bạn giúp mình nhé?

email: levu.huaf@gmail.com

cảm ơn bạn rất 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


×