Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
24 replies to this topic

#1 quocaaa

quocaaa

    biết vẽ line

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

Đã gửi 26 October 2010 - 11:12 AM

xin lisp scale nhiều đối tượng,nhưng điểm gốc scale nằm ở tâm của mỗi đối tượng đó(mục đích để không thay đổi vị trí các đối tượng sau scale,có thể hiểu là các đối tượng được scale tại chỗ)các pác giúp......
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5681 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 26 October 2010 - 01:02 PM

Vấn đề này cũng đã được bàn,và âu trả lời là...khó :lol: Vì với một hình phức tạp xác định tâm đã khó,yêu cầu cuả bạn lại là chọn một nhóm các đối tượng để scale ->
1.Khó xác định đc tâm hình phức tạp
2.Khó xác định được nhóm nào trong tập các đối tượng được chọn của bạn được quy về làm "1 đối tượng (s)" để tìm tâm
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 quocaaa

quocaaa

    biết vẽ line

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

Đã gửi 26 October 2010 - 02:07 PM

Vấn đề này cũng đã được bàn,và âu trả lời là...khó :lol: Vì với một hình phức tạp xác định tâm đã khó,yêu cầu cuả bạn lại là chọn một nhóm các đối tượng để scale ->
1.Khó xác định đc tâm hình phức tạp
2.Khó xác định được nhóm nào trong tập các đối tượng được chọn của bạn được quy về làm "1 đối tượng (s)" để tìm tâm


trước đã có lisp dành cho các hình tròn.nhưng của e lại là blog...chết thật.nói đơn giản là e muốn các đối tượng được SCale tại chỗ.tại vị trí của nó.nếu vậy có cách nào ko cần xác định tim ko?thật sự khó vậy sao.....
  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 26 October 2010 - 02:21 PM

trước đã có lisp dành cho các hình tròn.nhưng của e lại là blog...chết thật.nói đơn giản là e muốn các đối tượng được SCale tại chỗ.tại vị trí của nó.nếu vậy có cách nào ko cần xác định tim ko?thật sự khó vậy sao.....

Chào bạn quocaaa,
Tình hình là chưa hiểu vì sao bạn lại muốn vậy???? Và cái mà bạn gọi là Tâm đối tượng được định nghĩa ra sao??? Và giả sử là đã làm được như vậy, bạn có hình dung ra cái bản vẽ của bạn nó như thế nào không nhỉ????
Mọi yêu cầu nếu là thực sự cần thiết, ắt sẽ có cách để làm. còn nếu như chỉ là nghĩ ra cho vui thì quả là khó làm lắm lắm bạn ạ. Hề hề hề.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#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 26 October 2010 - 02:28 PM

trước đã có lisp dành cho các hình tròn.nhưng của e lại là blog...chết thật.nói đơn giản là e muốn các đối tượng được SCale tại chỗ.tại vị trí của nó.nếu vậy có cách nào ko cần xác định tim ko?thật sự khó vậy sao.....

Bạn hãy upload file của bạn lên đây và nói rõ nhé.
Nếu tìm ra quy luật, 1 điểm tương đồng nào đó, thì mọi chuyện sẽ trở nên rất đơn giản?
Nhưng bạn phải nói rõ :
Bạn sử dụng định nghĩa : Tâm, tim, Vậy tâm là gì? Tim là gì? Có phải là trọng tâm của 1 hình không?
Bạn scale Block tại tâm, chắc là không phải tại điểm chèn Insert của Block phải không?
Bạn vui lòng nói rõ nhé
  • 0

#6 quocaaa

quocaaa

    biết vẽ line

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

Đã gửi 26 October 2010 - 03:59 PM

[quote name='Tue_NV' date='Oct 26 2010, 14:28' post='114103']
Bạn hãy upload file của bạn lên đây và nói rõ nhé.
Nếu tìm ra quy luật, 1 điểm tương đồng nào đó, thì mọi chuyện sẽ trở nên rất đơn giản?
Nhưng bạn phải nói rõ :
Bạn sử dụng định nghĩa : Tâm, tim, Vậy tâm là gì? Tim là gì? Có phải là trọng tâm của 1 hình không?
Bạn scale Block tại tâm, chắc là không phải tại điểm chèn Insert của Block phải không?
Bạn vui lòng nói rõ nhé


file cad đây các pác vô xem rồi sẽ rõ
http://www.mediafire...c9agtgqadakwxhv
  • 0

#7 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 26 October 2010 - 04:51 PM

Hề hề hề,
Xem rồi, mà chửa rõ bạn ơi.
Cái gọi là tâm được bạn xác định cực kỳ tùy tiện. Các đối tượng cũng rất linh tinh. Đa phần là các block, điều này sẽ khá thuận tiện cho mục đích của bạn. Nhưng còn những thằng độc lập như line, elip, text thì sao hử bạn.
Có nhẽ bạn nên đặt vấn đề là scale các đối tượng block thí hợp lý hơn và hiện thực hơn bạn ạ.
Về tâm đối tượng thì theo mình bạn nên chọn thống nhất là điểm đặt của đối tượng (tức là điểm mà bạn insert block vào). Với các text thì là điểm đặt của text, với vòng tròn thì là tâm, và với các đối tựng khác cũng phải có quy định tương tự.
Nếu bạn chấp nhận như vậy thì sẽ có lisp cho bạn bằng không thì hãy chịu khó nghĩ để đặt ra cái định nghĩa về cái tâm đi nhé.
Với cái kiểu lấy tâm tùy tiện như bạn thì bố lisp nó cũng chào thua bạn ạ.... hề hề hề....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 quocaaa

quocaaa

    biết vẽ line

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

Đã gửi 26 October 2010 - 05:45 PM

Hề hề hề,
Xem rồi, mà chửa rõ bạn ơi.
Cái gọi là tâm được bạn xác định cực kỳ tùy tiện. Các đối tượng cũng rất linh tinh. Đa phần là các block, điều này sẽ khá thuận tiện cho mục đích của bạn. Nhưng còn những thằng độc lập như line, elip, text thì sao hử bạn.
Có nhẽ bạn nên đặt vấn đề là scale các đối tượng block thí hợp lý hơn và hiện thực hơn bạn ạ.
Về tâm đối tượng thì theo mình bạn nên chọn thống nhất là điểm đặt của đối tượng (tức là điểm mà bạn insert block vào). Với các text thì là điểm đặt của text, với vòng tròn thì là tâm, và với các đối tựng khác cũng phải có quy định tương tự.
Nếu bạn chấp nhận như vậy thì sẽ có lisp cho bạn bằng không thì hãy chịu khó nghĩ để đặt ra cái định nghĩa về cái tâm đi nhé.
Với cái kiểu lấy tâm tùy tiện như bạn thì bố lisp nó cũng chào thua bạn ạ.... hề hề hề....
[/quote]



nếu có thể làm lisp được thì bạn làm mặc kệ tâm nó ở đâu,nằm đâu đi nữa thì cũng có mục đích riêng của nó.miễn sau kết quả không bị xê dịch nhiều là được.như bạn nói đối tượng rất linh tinh,phải rồi nếu đơn giản thì mình đã tự giải quyết đâu cần trợ giúp làm gì.hehe
  • 0

#9 ketui

ketui

    biết vẽ arc

  • Members
  • PipPip
  • 43 Bài viết
Điểm đánh giá: 12 (tàm tạm)

Đã gửi 26 October 2010 - 08:43 PM

nếu có thể làm lisp được thì bạn làm mặc kệ tâm nó ở đâu,nằm đâu đi nữa thì cũng có mục đích riêng của nó.miễn sau kết quả không bị xê dịch nhiều là được.như bạn nói đối tượng rất linh tinh,phải rồi nếu đơn giản thì mình đã tự giải quyết đâu cần trợ giúp làm gì.hehe

Dạo này cadviet nhiều người "thông minh" phết ra cái đề nào là mấy anh pro chết đứ đừ khà khà.
  • 0

#10 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 26 October 2010 - 10:45 PM

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!!!
  • 1

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#11 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 26 October 2010 - 10:58 PM

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

Dòng này của bạn thừa cái này (command "SCALE" en "" mid tile "")
Mình chạy không thấy báo lỗi của acet-ent-geomextents
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#12 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 26 October 2010 - 11:04 PM

Hì e đã sửa!!!
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#13 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 26 October 2010 - 11:09 PM

Hì e chạy toàn bị báo lỗi như thế này

Unknown command "SCT". Press F1 for help.


Không phải líp này mới bị. mà bất cứ lisp nào dùng hàm này cũng bị báo lỗi như vậy. Cái trong " " là cái tên để thực hiện líp

do bạn dùng thừa một dấu "" nên nó hiểu là một lần Enter. Khi enter nó sẽ thực hiện lệnh cuối cùng mà lênh cuối cùng ở đây là SCT. Bạn chỉ cần bỏ dấu đó đi là được. Muốn kiểm tra xem lệnh đó đã đủ số lần "" chưa bạn chỉ việc copy voà dòng command của cad để chạy thử.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#14 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 26 October 2010 - 11:17 PM

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

@ Ketui: Bữa nay bác thấy trong người không khỏe ư???? Bác quả là vui khi thấy có người chết đứ đừ ư???
@ Chủ thớt: Hãy suy nghĩ cho kỹ trước khi làm chủ thớt. Làm chủ mà không biết mình cần gì thì có ngày bán thớt sớm đó. Ý kiến của mọi người cho dù có chưa đúng cũng không phải cái cớ để chém thớt đâu ông chủ ạ....Hãy học cách tôn trọng người khác nếu còn muốn làm chủ.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#15 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 26 October 2010 - 11:23 PM

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Ì em cũng đi mót như bác thôi mà. Còn cái lỗi lúc nãy chắc là em dùng thừa " " trong lissp như bác tu nói. để em kiểm tran lại trong các lissp khác của em, hì hì.

Đây là các hàm em acet mót đc:


* (acet-ent-geomextents ename): Hàm trả về 1 list có 2 tọa độ ll và ur (bên trái dưới và bên phải trên) của 1 đối tượng có tên ename, giống như hàm (vla-GetBoundingBox obj 'MinPoint 'MaxPoint) nhưng dễ sử dụng hơn vì listpoint của acet-ent-geomextents không nằm trong safearray.
* (acet-geom-list-extents lst): Hàm trả về 1 list có 2 phần tử đầu và cuối trong list lst
* (acet-layer-locked lay): Hàm kiểm tra layer "lay" có bị khóa hay không. Nếu có bị khóa, hàm trả về tên của layer này.
* (acet-explode ss)
Hàm làm nổ các đối tượng trong tập hợp chọn ss
* (acet-ss-endel ss)
Hàm xóa các đối tượng trong tập hợp chọn ss
* (acet-ss-zoom-extents ss)
Hàm zoom-extents tập hợp chọn ss và trả về listpoint của 2 điểm LL và UR của tập hợp chọn ss
* (acet-list-to-ss (list en))
Hàm trả về tên tập hợp chọn của list ename
* (acet-geom-midpoint p1 p2)
Hàm trả về tọa độ điểm giữa của 2 điểm p1 p2
* (acet-geom-vertex-list en)
Hàm trả về listpoint tọa độ các nút của LWPOLYLINE, POLYLINE. Nếu LWPOLYLINE, POLYLINE kín listpoint sẽ có thêm 1 điểm đầu ở cuối listpoint
Nếu ename là tên của đối tượng SPLINE, hàm trả về listpoint của các controlpoint
* (acet-geom-intersestwith en1 en2 flag)
Hàm trả về listpoint tọa độ các điểm giao của 2 đối tượng en1 en2.
flag là số interger, cờ quy định các kiểu giao:
- 0: không mở rộng 2 đối tượng en1 en2
- 1: mở rộng đối tượng en1, không mở rộng đối tượng en2.
- 2: không mở rộng đối tượng en1, mở rộng đối tượng en2.
- 3: mở rộng 2 đối tượng en1 en2
  • 2

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#16 quocaaa

quocaaa

    biết vẽ line

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

Đã gửi 26 October 2010 - 11:24 PM

Hì e đã sửa!!!



uhm bạn đã sừa rồi sao không up lên cho mình chứ lisp cũ của bạn mình sử dụng không được.thanks trước
  • 0

#17 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 26 October 2010 - 11:28 PM

uhm bạn đã sừa rồi sao không up lên cho mình chứ lisp cũ của bạn mình sử dụng không được.thanks trước

Mình sửa trực tiếp vào đấy luôn mà!! Bạn kiểm tra xem đã cài EXPRESS TOOL chưa nhé. Phải có mới chạy đc
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#18 thanhtan_1990

thanhtan_1990

    Chưa sử dụng CAD

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

Đã gửi 29 October 2012 - 01:58 AM

hi, các bác giúp em với, em cũng đang cần cái lisp đó: tức là vd em có 3 đối tượng ở 3 vị trí khác nhau e muốn phóng to cùng 1 lúc 3 đối tượng tại tâm mỗi đối tượng đó, cũng như khi chỉ phóng to 1 đối tượng mình đã chọn được tâm
  • 0

#19 mr.trunghd

mr.trunghd

    biết lệnh mirror

  • Advance Member
  • PipPipPip
  • 150 Bài viết
Điểm đánh giá: 46 (tàm tạm)

Đã gửi 29 October 2012 - 02:53 PM

Đây bạn:
http://www.cadviet.c.../104560_sct.lsp
  • 1

Đừng bao giờ mất kiên nhẫn, đó chính là chiếc chìa khoá cuối cùng mở được cửa.

-Saint Exupery-


#20 thong46i

thong46i

    biết pan

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

Đã gửi 27 September 2016 - 12:01 PM

chào anh và các cao thủ trên diễn đàn

anh có thể giúp mình sửa thành lisp có chức năng scale tất cả các block được chọn, tại điểm đặt (pick point) của từng block đó không.

xin cảm ơn rất nhiều ạ


  • 0