Đế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

#1 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 01 June 2009 - 09:11 PM

Ví dụ mình có nhiều hình tròn trong bản vẽ. Giờ mình muốn scale tất cả cùng một lúc nhưng có tâm scale là tâm của từng đường tròn. Liệu có cách nào không? Mong các bác chỉ giúp.
  • 0

#2 42cd79

42cd79

    Chưa sử dụng CAD

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

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

Ví dụ mình có nhiều hình tròn trong bản vẽ. Giờ mình muốn scale tất cả cùng một lúc nhưng có tâm scale là tâm của từng đường tròn. Liệu có cách nào không? Mong các bác chỉ giúp.

đặt các đối tượng của bạn thành 1 block với tâm bất kỳ, sau đó insert block đó ra với tỉ lệ Scale
  • 0

#3 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 02 June 2009 - 07:39 AM

Ví dụ mình có nhiều hình tròn trong bản vẽ. Giờ mình muốn scale tất cả cùng một lúc nhưng có tâm scale là tâm của từng đường tròn. Liệu có cách nào không? Mong các bác chỉ giúp.

Với những yêu cầu như này thì có thể viết lisp nhưng các bạn cứ ví dụ thì chẳng ai giúp bạn được pahỉ là yêu cầu cụ thể là circle, text, block thì người ta mới giúp được
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#4 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 02 June 2009 - 07:57 AM

đặt các đối tượng của bạn thành 1 block với tâm bất kỳ, sau đó insert block đó ra với tỉ lệ Scale

Ko hiểu ý của anh nhưng em nghĩ sẽ lâu hơn là scale từng hình một
  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 June 2009 - 07:58 AM

Với những yêu cầu như này thì có thể viết lisp nhưng các bạn cứ ví dụ thì chẳng ai giúp bạn được pahỉ là yêu cầu cụ thể là circle, text, block thì người ta mới giúp được

Tue_NV đồng ý với ý kiến của anh Duy782006.
Đây là lisp scale tất cả đường tròn cùng một lúc nhưng có tâm scale là tâm của từng đường tròn
(defun c:SCT(/ ci tl n i)
(prompt "\n Moi ban chon CIRCLE")
(setq ci (ssget '((0 . "CIRCLE"))))
(setq tl (getreal "\n Nhap ti le scale :") n (sslength ci) i 0)

(while (< i n)
(setq ent (ssname ci i))
(command "scale" ent "" (cdr(assoc 10 (entget ent))) tl)
(setq i (1+ i))
)
(princ)
)
:s_big:
  • 2

#6 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 02 June 2009 - 04:19 PM

Tue_NV đồng ý với ý kiến của anh Duy782006.
Đây là lisp scale tất cả đường tròn cùng một lúc nhưng có tâm scale là tâm của từng đường tròn

(defun c:SCT(/ ci tl n i)
(prompt "\n Moi ban chon CIRCLE")
(setq ci (ssget '((0 . "CIRCLE"))))
(setq tl (getreal "\n Nhap ti le scale :") n (sslength ci) i 0)

(while (< i n)
(setq ent (ssname ci i))
(command "scale" ent "" (cdr(assoc 10 (entget ent))) tl)
(setq i (1+ i))
)
(princ)
)
:s_big:

Cảm ơn anh. Với text thì em đã thấy lisp scale tại điểm chèn của text rùi. Với block thì việc scale là đơn giản. Em muôn hỏi với một hình bất kỳ. Nếu là hình scale nhiều hình chữ nhật, wipeout một lúc. Tâm scale tại điểm pick chuột trên cạnh của hình chữ nhật. Cũng giống như với hình tròn nhưng giơ tâm scale là điểm pick chuột trên cạnh hình chữ nhật hay một điểm lằm bên cạnh hình chữ nhật. Mong anh giúp đỡ.
  • 0

#7 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 02 June 2009 - 04:34 PM

Cảm ơn anh. Với text thì em đã thấy lisp scale tại điểm chèn của text rùi. Với block thì việc scale là đơn giản. Em muôn hỏi với một hình bất kỳ. Nếu là hình scale nhiều hình chữ nhật, wipeout một lúc. Tâm scale tại điểm pick chuột trên cạnh của hình chữ nhật. Cũng giống như với hình tròn nhưng giơ tâm scale là điểm pick chuột trên cạnh hình chữ nhật hay một điểm lằm bên cạnh hình chữ nhật. Mong anh giúp đỡ.

Bạn có thể chia sẽ cái đơn giản này cho mình học hỏi không mình phải dùng lisp cho nó cơ đấy!
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#8 xuantran15

xuantran15

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 295 Bài viết
Điểm đánh giá: 112 (tàm tạm)

Đã gửi 02 June 2009 - 04:48 PM

Bạn có thể chia sẽ cái đơn giản này cho mình học hỏi không mình phải dùng lisp cho nó cơ đấy!

Cái này chắc Thong_kt dùng cách scale theo hai phương x và y trong bảng properties đó bác Duy à. :s_big: em nghĩ cái này chắc bác biết rồi :s_big:
  • 0
Hình đã gửi
Thu đi cho lá vàng bay
Lá rơi cho đám cưới về......

#9 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 02 June 2009 - 04:51 PM

Cái này chắc Thong_kt dùng cách scale theo hai phương x và y trong bảng properties đó bác Duy à. :s_big: em nghĩ cái này chắc bác biết rồi :s_big:

Cách đấy làm sao tác dụng với tất cả block trong khi tỉ lệ và góc quay khác nhau được. Thế mình mới ngạc nhiên. :s_big:
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#10 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 02 June 2009 - 05:46 PM

Cách đấy làm sao tác dụng với tất cả block trong khi tỉ lệ và góc quay khác nhau được. Thế mình mới ngạc nhiên. :s_big:

Ui. Mình dùng lệnh BE rùi scale block thui. Như vậy tất cả block sẽ có tác dụng. Không biết làm vậy có vấn đề gì không.
  • 0

#11 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 03 June 2009 - 07:41 AM

Ui. Mình dùng lệnh BE rùi scale block thui. Như vậy tất cả block sẽ có tác dụng. Không biết làm vậy có vấn đề gì không.

Nó có tác dụng với mọi block cùng tên như vậy không có hay.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#12 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 03 June 2009 - 02:15 PM

Nó có tác dụng với mọi block cùng tên như vậy không có hay.

ùh. Còn nếu chỉ scale những block muốn chọn thì mình dùng lisp của bác Hoành. Thế còn trường hợp mình đưa ra đấy. Không phải là block mà chỉ là đối tường như hình rectang thui. Thi có lệnh hay lisp gì không vậy hả bạn duy 782006. Mong bạn chỉ giúp.
  • 0

#13 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 03 June 2009 - 02:30 PM

ùh. Còn nếu chỉ scale những block muốn chọn thì mình dùng lisp của bác Hoành. Thế còn trường hợp mình đưa ra đấy. Không phải là block mà chỉ là đối tường như hình rectang thui. Thi có lệnh hay lisp gì không vậy hả bạn duy 782006. Mong bạn chỉ giúp.

Với hình bấy kỳ thì khó lắm vì không xác định được điểm làm cơ sở.
Mặc dù bạn đề nghị chọ 1 điểm cơ sở bằng cách pick điểm nhưng với chỉ 1 đối tượng thôi cón các đối tượng khác nó (lisp) không biết lấy gì để làm tương quan mà suy ra cái điểm cơ sở này được.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#14 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 03 June 2009 - 03:41 PM

Với hình bấy kỳ thì khó lắm vì không xác định được điểm làm cơ sở.
Mặc dù bạn đề nghị chọ 1 điểm cơ sở bằng cách pick điểm nhưng với chỉ 1 đối tượng thôi cón các đối tượng khác nó (lisp) không biết lấy gì để làm tương quan mà suy ra cái điểm cơ sở này được.

Ùh. Mình cũng nghĩ vậy. Với đường tròn thì có điểm tẩm. Mình không biết viết lisp nhưng với hình chũ nhật ABCD. Giả sử điểm pick M lằm trên đoạn AB. Lisp sẽ tính tỉ lệ AM và BM rùi áp dụng cho với tất cả các hình chữ nhật khác. Không biết thế có đuớc không. Làm phiền bác và mọi người quá.
  • 0

#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 03 June 2009 - 03:58 PM

Ùh. Mình cũng nghĩ vậy. Với đường tròn thì có điểm tẩm. Mình không biết viết lisp nhưng với hình chũ nhật ABCD. Giả sử điểm pick M lằm trên đoạn AB. Lisp sẽ tính tỉ lệ AM và BM rùi áp dụng cho với tất cả các hình chữ nhật khác. Không biết thế có đuớc không. Làm phiền bác và mọi người quá.

Thế tâm scale của các hình chữ nhật này ở đâu hở bạn? Nói rõ ra nhé.
  • 1

#16 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 03 June 2009 - 04:12 PM

Thế tâm scale của các hình chữ nhật này ở đâu hở bạn? Nói rõ ra nhé.

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

#17 longnhi35

longnhi35

    Chưa sử dụng CAD

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

Đã gửi 03 June 2009 - 09:37 PM

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.

Vấn đề này mình rất hay gặp khi nhận bản vẽ từ nguời khác và cần chỉnh sửa lại. Mình thấy rất nhiều nguời quan tâm vào đọc topic này vậy mà không bác nào giúp ah?
  • 0

#18 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 03 June 2009 - 10:40 PM

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.

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)
)

  • 0

#19 tigertiger

tigertiger

    biết zoom

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

Đã gửi 04 June 2009 - 03:11 AM

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.


Vấn đề dđuwọc Tue_NV giải quyết
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?
  • 0

#20 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 - 05:44 AM

Vấn đề dđuwọc Tue_NV giải quyết
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