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

Stretch chọn đối tượng

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

Chào các bác,

 

Tình hình là nhiều đối tượng gần nhau. Stretch xong phải loại bớt đối tượng. Vậy có code nào chọn trước khống chế đối tượng, rồi stretch chỉ nó không các bác?

 

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ương lai có thể AI phát triển, Cad sẽ hiểu mình muốn làm cái gì mà tự làm cho mính á. Lúc đó có lẽ sẽ thất nghiệp hết rồi.

Hiện tại thì chỉ có cách quản lý Block, Layer, Group kết hợp với chọn đối tượng (cách quét chuột, fi, fast slect...). Code hỗ trợ thì có code về lọc đối tượng có thể tìm trong diễn đà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

Stretch là một chức năng cao cấp.

1. Thông qua Crossing Window sẽ quét các grip point của các entity phục vụ cho stretch các đối tượng được select. Hãy loại bỏ đối tượng bằng phím Shift khi select vừa xong.

1. Thông qua các tham số khi Select Implied để lấy tham số stretch trong selectionset. Vậy bạn nên chọn cách này để Select Implied 1 hoặc nhiều lần. Dùng phím Shift trong lúc lựa chọn để loại bỏ đối tượng chọn.

Bạn sẽ thấy thú vị với nhiều lần Select Implied sẽ có thể xảy ra : trong những đoạn thẳng song song, đoạn ngắn sẽ được strecth còn đoạn dài hơn sẽ được move do các cách Select Implied khác nhau.

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

Hoặc có thể dùng kết hợp với các lệnh: hideobjects, isolateobjects, unisolateobjects (Có thể viết code).

Viết code thì có 1 PA nữa là: chuyển các đối tượng không stretch tạm thời sang layerlock, sau đó khôi phục lại.

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

Stretch là một chức năng cao cấp.

1. Thông qua Crossing Window sẽ quét các grip point của các entity phục vụ cho stretch các đối tượng được select. Hãy loại bỏ đối tượng bằng phím Shift khi select vừa xong.

1. Thông qua các tham số khi Select Implied để lấy tham số stretch trong selectionset. Vậy bạn nên chọn cách này để Select Implied 1 hoặc nhiều lần. Dùng phím Shift trong lúc lựa chọn để loại bỏ đối tượng chọn.

Bạn sẽ thấy thú vị với nhiều lần Select Implied sẽ có thể xảy ra : trong những đoạn thẳng song song, đoạn ngắn sẽ được strecth còn đoạn dài hơn sẽ được move do các cách Select Implied khác nhau.

Sao giống AI trả lời thế bác nhỉ?

 

7 giờ trước, NTHAHT đã nói:

Hoặc có thể dùng kết hợp với các lệnh: hideobjects, isolateobjects, unisolateobjects (Có thể viết code).

Viết code thì có 1 PA nữa là: chuyển các đối tượng không stretch tạm thời sang layerlock, sau đó khôi phục lại.

Chọn đối tượng kéo vẫn ổn hơn đối tượng loại bỏ chứ bạn nhỉ?

 

9 giờ trước, vietduc147258 đã nói:

Tương lai có thể AI phát triển, Cad sẽ hiểu mình muốn làm cái gì mà tự làm cho mính á. Lúc đó có lẽ sẽ thất nghiệp hết rồi.

Hiện tại thì chỉ có cách quản lý Block, Layer, Group kết hợp với chọn đối tượng (cách quét chuột, fi, fast slect...). Code hỗ trợ thì có code về lọc đối tượng có thể tìm trong diễn đàn.

Khi nào AI tạo được niềm tin tuyệt đối không phải tra cứu lại Google thì chắc ổn. Ngày đó còn rất xa, đời mình chắc sẽ không được hưởng. Hề hề.

 

 

 

Tình hình là em vẫn phải shift để bỏ, nhưng mà chọn đối tượng cần kéo mới thuận. Có cách nào không các bác?

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
Vào lúc 15/8/2025 tại 18:07, amateurday đã nói:

Chào các bác,

 

Tình hình là nhiều đối tượng gần nhau. Stretch xong phải loại bớt đối tượng. Vậy có code nào chọn trước khống chế đối tượng, rồi stretch chỉ nó không các bác?

 

Chỉ chọn đối tượng thì sao biết bạn định stretch vị trí nào, các đỉnh nào nhỉ?

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, Tap.Ve.Cad đã nói:

Chỉ chọn đối tượng thì sao biết bạn định stretch vị trí nào, các đỉnh nào nhỉ?

Thế này nè:

1 là chọn nhiều đối tượng.

2 là quét vùng stretch.

Chỉ đối tượng được chọn mới bị stretch. Những đối tượng nằm trong vùng quét nhưng không được chọn thì đứng im.

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

@amateurday làm việc với nó nhiều bị ô nhiễm phong cách diễn đạt đấy thôi.

Anh biết đến mấy thứ đó thông qua SelectionObject trong tập chọn SelectionSet trong AutocadAPI. Hoặc tra cứu bởi hàm (ssnamex ss i). Nó  thể hiện ename, cách chọn, điểm (vùng) chọn.

  • Vote tăng 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

Sao đọc đề m cứ thấy rối rối nhỉ ^^

Vẫn là ngần ấy thao tác mà :o. Vẫn là việc phải chỉ định các đối tượng muốn làm việc, r Stretch.  
Thế các đối tượng b cần stretch có phải sì trét nhiều lần không ? Nếu không thì giải quyết bài toán này khá vô nghĩa
Và hoàn toàn có thể dùng các kỹ thuật về Layer, Object Isolate để giải quyết vấn đề

Ps thêm với 1 bạn trên kia, k thể dùng kỹ thuật Select Group trong command Stretch, vì Group thì k lưu thông tin về cách chọn, còn Stretch thì lại cần thông tin đó

  • Vote tăng 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
Vào lúc 16/8/2025 tại 23:13, Tap.Ve.Cad đã nói:

Bạn dùng thử lisp này xem oki chưa:

B1. Chọn các đối tượng cần stretch

B2. Chọn vùng stretch

B3. Tự làm :)

 

Tên lệnh: sstretch

https://www.mediafire.com/file/tp7ueiocixx0d1n/SStretch.vlx/file

Chuẩn rồi bạn ạ. Có điều thỉnh thoảng sẽ báo lỗi vì lệnh command hay command-s ấy.

3 giờ trước, ketxu đã nói:

Sao đọc đề m cứ thấy rối rối nhỉ ^^

Vẫn là ngần ấy thao tác mà :o. Vẫn là việc phải chỉ định các đối tượng muốn làm việc, r Stretch.  
Thế các đối tượng b cần stretch có phải sì trét nhiều lần không ? Nếu không thì giải quyết bài toán này khá vô nghĩa
Và hoàn toàn có thể dùng các kỹ thuật về Layer, Object Isolate để giải quyết vấn đề

Ps thêm với 1 bạn trên kia, k thể dùng kỹ thuật Select Group trong command Stretch, vì Group thì k lưu thông tin về cách chọn, còn Stretch thì lại cần thông tin đó

Nó khác nhau ở chỗ nếu mà mình dùng shift để bỏ chọn đối tượng thì nhiều khi bỏ chọn không hết, như thế sẽ phải làm lại từ đầu. Đặc biệt là khi vùng chọn nó dài. 

Cách dùng ISO thì cũng được nhưng không phải lúc nào trong khu vực chọn nó cũng chuẩn layer. Nhiều khi đối tượng khác layer nhưng màu giống nhau nên mình lại cứ tưởng nó cùng layer.

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, amateurday đã nói:

Nó khác nhau ở chỗ nếu mà mình dùng shift để bỏ chọn đối tượng thì nhiều khi bỏ chọn không hết, như thế sẽ phải làm lại từ đầu. Đặc biệt là khi vùng chọn nó dài. 

Cách dùng ISO thì cũng được nhưng không phải lúc nào trong khu vực chọn nó cũng chuẩn layer. Nhiều khi đối tượng khác layer nhưng màu giống nhau nên mình lại cứ tưởng nó cùng layer.

Ý của mình và ketxu ở trên là isolate đối tượng chứ không phải layer (có thể bạn chưa biết lệnh này???).

Mình làm 1 cái quick code theo ý này (dùng 2 lệnh isolateobjects và unisolateobjects):

(defun c:ss  ()
  (command "._isolateobjects" (ssget) "")
  (while (> (getvar "CMDACTIVE") 0) (command pause))
  (command "._stretch" (ssget) "")
  (while (> (getvar "CMDACTIVE") 0) (command pause))
  (command "._unisolateobjects")
  (princ))

b1: chọn các dt cần strerch

b2: chọn vùng ...

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, cuongtk2 đã nói:

Bạn cứ Select kiểu Implied thoải mái. Lúc nào ưng ý rồi stretch 1 lần luôn.

Kiểu quét chọn thế này chỉ không lẫn đối tượng khác khi chỉ stretch điểm, nếu stretch hình thì sẽ phải dùng shift loại bỏ bác ạ. Như thế thì không được.

3 giờ trước, NTHAHT đã nói:

Ý của mình và ketxu ở trên là isolate đối tượng chứ không phải layer (có thể bạn chưa biết lệnh này???).

Mình làm 1 cái quick code theo ý này (dùng 2 lệnh isolateobjects và unisolateobjects):

(defun c:ss  ()
  (command "._isolateobjects" (ssget) "")
  (while (> (getvar "CMDACTIVE") 0) (command pause))
  (command "._stretch" (ssget) "")
  (while (> (getvar "CMDACTIVE") 0) (command pause))
  (command "._unisolateobjects")
  (princ))

b1: chọn các dt cần strerch

b2: chọn vùng ...

Mình thử rồi, nó bị delay khi nhiều đối tượng, không ổn đâu. Mấy cái iso, hide này phải chạy cả bản vẽ nên delay lắm.

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
9 giờ trước, Tap.Ve.Cad đã nói:

Bạn sài lại xem nhé, mình dùng 2025 ko thấy lỗi gì.

 

https://www.mediafire.com/file/5ofrnqcse6t97ay/SStretch_V1.VLX/file

Cảm ơn bạn nhé. Thỉnh thoảng tớ gặp lisp báo cái lệnh command-s này, search trên mạng thì họ bảo liên quan đến bẫy lỗi *error* gì đó. Tớ cũng không hiểu lắm. Tớ cad 2023.

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, amateurday đã nói:

Cảm ơn bạn nhé. Thỉnh thoảng tớ gặp lisp báo cái lệnh command-s này, search trên mạng thì họ bảo liên quan đến bẫy lỗi *error* gì đó. Tớ cũng không hiểu lắm. Tớ cad 2023.

Có thể là do vùng bạn chọn để thực hiện SStretch không có đối tượng khác ngoài các đối tượng bạn đã chọn ở bước đầu, dẫn tới bị lỗi.

  • Vote tăng 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
12 giờ trước, amateurday đã nói:

Cảm ơn bạn nhé. Thỉnh thoảng tớ gặp lisp báo cái lệnh command-s này, search trên mạng thì họ bảo liên quan đến bẫy lỗi *error* gì đó. Tớ cũng không hiểu lắm. Tớ cad 2023.

Bạn dùng thử cái này xem có bị lỗi nữa không nhé. Cập nhật thêm khi vùng chọn không có đối tượng khác vẫn chạy được.

https://www.mediafire.com/file/edxis9swadgg4rt/Sstretch_V2.VLX/file

  • Vote tăng 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
8 giờ trước, Tap.Ve.Cad đã nói:

Bạn dùng thử cái này xem có bị lỗi nữa không nhé. Cập nhật thêm khi vùng chọn không có đối tượng khác vẫn chạy được.

https://www.mediafire.com/file/edxis9swadgg4rt/Sstretch_V2.VLX/file

Dùng ngon bạn ạ. Thao tác nhanh hơn rất nhiều so với việc shift để loại bỏ đối tượng. Quá tuyệt vời. Cảm ơn bạn nhiều nhé!!!

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
19 giờ trước, Tap.Ve.Cad đã nói:

Bạn dùng thử cái này xem có bị lỗi nữa không nhé. Cập nhật thêm khi vùng chọn không có đối tượng khác vẫn chạy được.

https://www.mediafire.com/file/edxis9swadgg4rt/Sstretch_V2.VLX/file

Tớ có mong muốn thêm tí nữa. Đó là nếu V2 là phiên bản hoàn chỉnh nhất, thì có 2 ý tớ chưa ưng lắm.

1 là giữ nguyên Osnap đi, vì code đang cho Osnap = 0 khi chọn đối tượng, nên pick phải bật lại osnap, và sau khi chạy lệnh, osnap vẫn = 0

2 là bước 1 chọn xong - nhấn space. Vậy thì bước 2 khi chọn vùng xong cũng phải nhấn space. (Vì trong lúc nhấn space, mình vẫn đang zoom pan nên không ảnh hưởng tốc độ).

 

Space thuộc tay trái nên tớ nghĩ nên có để thao tác 2 tay cho chuẩ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

2 là bước 1 chọn xong - nhấn space. Vậy thì bước 2 khi chọn vùng xong cũng phải nhấn space. (Vì trong lúc nhấn space, mình vẫn đang zoom pan nên không ảnh hưởng tốc độ).

Space thuộc tay trái nên tớ nghĩ nên có để thao tác 2 tay cho chuẩn.

 

Đoạn trên đọc mình chưa hiểu lắm, hiện tại lisp vẫn dùng được cả Space, enter và phím phải chuột mà nhỉ.

  • Vote tăng 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
2 giờ trước, Tap.Ve.Cad đã nói:

2 là bước 1 chọn xong - nhấn space. Vậy thì bước 2 khi chọn vùng xong cũng phải nhấn space. (Vì trong lúc nhấn space, mình vẫn đang zoom pan nên không ảnh hưởng tốc độ).

Space thuộc tay trái nên tớ nghĩ nên có để thao tác 2 tay cho chuẩn.

 

Đoạn trên đọc mình chưa hiểu lắm, hiện tại lisp vẫn dùng được cả Space, enter và phím phải chuột mà nhỉ.

Vì lisp khi quét phạm vi stretch xong là chuyển sang bắt điểm khoảng cách luôn. Ý tớ là muốn có 1 lần ấn space trước khi pick cự ly stretch ấy.

Thực sự là rất thường xuyên ấn space ngay lúc đó nên bị thoát lệnh luôn ấy.

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

×