Đến nội dung


Hình ảnh

Cách scale nhiều đối tượng một lúc?


  • Please log in to reply
26 replies to this topic

#21 thong_kt

thong_kt

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 June 2009 - 07:33 PM

Cái này scale theo ý của bạn nè :

(defun c:scn()

(setq hcnc (entget(car(entsel "\n Chon hinh chu nhat chuan :"))))
(setq a (cdr(nth 14 hcnc)))
(setq b (cdr(nth 18 hcnc)))
(setq m (getpoint "\n Chon diem tam scale tren hinh chu nhat chuan :"))
(setq TL (/ (distance m a) (distance m b)))

(prompt "\n Moi ban chon cac hinh chu nhat :")
(setq ssg (ssget '((0 . "LWPOLYLINE"))) n (sslength ssg) i 0)

(while (< i n)
(setq sn (ssname ssg i))
(setq ent (entget sn))
(setq c (cdr(nth 14 ent)))
(setq d (cdr(nth 18 ent)))
(setq md (/ (distance c d) (+ 1 TL)))
(setq mp (list (- (car d) md) (cadr d) 0))

(command "scale" sn "" mp tl)
(setq i (1+ i))

)
(princ)
)

Lai làm phiền bạn. Lisp sau mình đã dùng đuợc còn lisp này minh không sử dụng được . sao vậu nhỉ bạn. khi chương trình báo chọn các hình chữ nhật khác. Chọn xong thấy nó hết lệnh luôn.
  • 0

#22 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 04 June 2009 - 09:40 PM

Lai làm phiền bạn. Lisp sau mình đã dùng đuợc còn lisp này minh không sử dụng được . sao vậu nhỉ bạn. khi chương trình báo chọn các hình chữ nhật khác. Chọn xong thấy nó hết lệnh luôn.

Đoạn Code trên của Tue_NV không có lỗi . Bạn test lại xem.
Chon hinh chu nhat chuan : Pick chon hinh chu nhat (pick trúng nhé)
Chon diem tam scale tren hinh chu nhat chuan :
Moi ban chon cac hinh chu nhat :
Select objects:


Tuy nhiên, Tue_NV đồng ý với ý kiến của bạn tigertiger và đã viét ra code dưới để xác định tâm tương ứng của các hình

Nhưng theo mình hay hơn cả là chọn tập các điểm tương ứng các hình,
nếu không phải hình chữ nhật thì cách của tue_NV cũng khó thành?


Bạn thử Code này xem :

(defun c:scn()
(prompt "\n Moi ban chon cac doi tuong :")
(setq ssg (ssget))

(setq tl (getreal "\n Ti le scale :"))

(setq n (sslength ssg) i 0)

(while (< i n)
(setq sn (ssname ssg i))
(HLI sn)
(setq ent (entget sn))
(setq mp (getpoint "\n Ban chon tam cho doi tuong nay :"))

(command "scale" sn "" mp tl)
(setq i (1+ i))

)
(princ)
)
;
(defun HLI(ent)
(sssetfirst (ssadd ent (ssadd)) (ssadd ent (ssadd)))
)


  • 0

#23 thong_kt

thong_kt

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 June 2009 - 09:53 PM

Đoạn Code trên của Tue_NV không có lỗi . Bạn test lại xem.
Chon hinh chu nhat chuan : Pick chon hinh chu nhat (pick trúng nhé)
Chon diem tam scale tren hinh chu nhat chuan :
Moi ban chon cac hinh chu nhat :
Select objects:
Tuy nhiên, Tue_NV đồng ý với ý kiến của bạn tigertiger và đã viét ra code dưới để xác định tâm tương ứng của các hình

Mình không thấy dòng nhập tỉ lệ scale đâu. Muốn chỉnh sửa tỉ lệ scale thỉ sửa thế nào trong lisp vậy bạn. Hình như lisp scale theo tỉ lệ cố định rùi đúng không bạn.
  • 0

#24 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 04 June 2009 - 10:13 PM

Mình không thấy dòng nhập tỉ lệ scale đâu. Muốn chỉnh sửa tỉ lệ scale thỉ sửa thế nào trong lisp vậy bạn. Hình như lisp scale theo tỉ lệ cố định rùi đúng không bạn.

Yeuu cầu của bạn đây nè :

Với hình chữ nhật ABCD thì tâm scale là điểm M. Còn các hình chữ nhật khác A'B'C'D' thì tâm scale là điểm M'. Điểm M' sẽ đuợc lisp xác định dựa vào tỉ lệ AM / BM. Tức A'M'/B'M' = AM/BM. Không biết có thễ làm đuợc lisp như vậy không. Bạn Tue_NV xém có làm đuợc không.


Theo ý kiến của Tue_NV thì bạn nên sử dụng Code ở bài viết số 22 là hay nhất
  • 0

#25 sangtaoladiemmanhcuatoi

sangtaoladiemmanhcuatoi

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 June 2009 - 11:40 PM

Mọi người cho e hỏi lệnh cắt chân DIM với ah.E cảm ơn
  • 0

#26 tranghuyen

tranghuyen

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 12 June 2009 - 11:23 PM

Mình thấy mọi người dùng lisp rất hay, mình cũng có tải về 1 số lisp đang cần nhưng lại không biết làm cách nào để sử dụng nó (cách lưu lisp và đưa vào sử dụng).
Mọi người chỉ giúp mình nha. Thanks!!!
  • 0

#27 svba1608

svba1608

    Tưởng Thị Tú Khuyên

  • Moderator
  • PipPipPipPipPipPipPip
  • 601 Bài viết
Điểm đánh giá: 620 (tốt)

Đã gửi 12 June 2009 - 11:56 PM

Mình thấy mọi người dùng lisp rất hay, mình cũng có tải về 1 số lisp đang cần nhưng lại không biết làm cách nào để sử dụng nó (cách lưu lisp và đưa vào sử dụng).
Mọi người chỉ giúp mình nha. Thanks!!!

Bạn xem ở đây hoặc ở đây
Nói chung về cách lưu lisp và đưa vào sử dụng thì bạn cứ tạo một folder chứa lisp cho riêng biệt. Bạn mở Cad gõ ap, tìm đường dẫn tới file lisp và load nó. Nếu chọn content thì những lần sau dùng khỏi phải load lại.
Về lệnh dùng trong lisp thì bạn mở lại file lisp, tìm dòng sau chữ "defun c". Đó chính là lệnh của lisp. Ví dụ, sau chữ defun c có chữ sv thì lệnh của lisp đó là sv

Còn một gợi ý hay cho bạn là Mylisp của tnmtpc.
  • 0
http://khuyen.space