Đến nội dung


Hình ảnh
- - - - -

Chọn đối tượng sau lệnh Copy


  • Please log in to reply
24 replies to this topic

#1 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 06 April 2009 - 10:06 AM

Các bác ơi giúp em cái Lisp chọn đối tượng với. Em muốn sau khi đã copy một nhóm đối tượng đến một vị chí nào đó, sau đó thì tiếp tục lại chọn chính nhóm đối tượng này(nhóm đối tượng ta vừa copy tới không phải nhóm đối tượng nguồn) cho lệnh sau.
  • 1

#2 haanh

haanh

    biết lệnh adcenter

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

Đã gửi 06 April 2009 - 11:48 AM

Các bác ơi giúp em cái Lisp chọn đối tượng với. Em muốn sau khi đã copy một nhóm đối tượng đến một vị chí nào đó, sau đó thì tiếp tục lại chọn chính nhóm đối tượng này(nhóm đối tượng ta vừa copy tới không phải nhóm đối tượng nguồn) cho lệnh sau.

Bác thử đọc các bài viết trong đây:
Cách chọn nhiều đối tượng khi không có [Multiples]
http://www.cadviet.c...?showtopic=9124

Chọn nhanh đối tượng trong AutoCAD.
http://www.cadviet.c...?showtopic=1679

kich chọn đối tượng
http://www.cadviet.c...?showtopic=8821

lỗi khi chọn trước đối tượng
http://www.cadviet.c...?showtopic=8577

chọn đối tượng sau thì đối tượng đầu mất
http://www.cadviet.c...?showtopic=6748

Mình hỏi về cách chọn lại các đối tượng vừa chọn trước đó và cách chọn đối tượng bị chồng lên nhau.
http://www.cadviet.c...?showtopic=9036

em không bao được đối tượng
http://www.cadviet.c...?showtopic=5377

Select đối tượng nằm dưới đối tượng khác, Làm thế nào?
http://www.cadviet.c...?showtopic=4246

Chọn đối tượng trong cad
http://www.cadviet.c...?showtopic=3206

Cách chọn đối tượng ( Mới )
http://www.cadviet.c...?showtopic=8313

chon nhieu doi tuong ko dc, help me!!!
http://www.cadviet.c...?showtopic=4617

Hỏi về chọn đối tượng, kô select đc nhìu đối tượng
http://www.cadviet.c...?showtopic=3588

không chọn dc nhiều đối tượng
http://www.cadviet.c...?showtopic=2370

Chọn đối tượng một lần, hủy bỏ các lần chọn trước đó&#
http://www.cadviet.c...?showtopic=1683

Đối tượng k hiện lên sau khi chọn
http://www.cadviet.c...p?showtopic=470
  • 5

“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...”


#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 06 April 2009 - 04:22 PM

Các bác ơi giúp em cái Lisp chọn đối tượng với. Em muốn sau khi đã copy một nhóm đối tượng đến một vị chí nào đó, sau đó thì tiếp tục lại chọn chính nhóm đối tượng này(nhóm đối tượng ta vừa copy tới không phải nhóm đối tượng nguồn) cho lệnh sau.

Dù đã bấm tick Thanks nhưng Tue_NV vẫn gửi đến haanh lời cảm ơn chân thành nhất vì bạn thật nhiệt tình haanh ạ
Ý của CUONG20051982 là khi copy ra thì chọn lại đối tượng được copy ra đó (không phải đối tượng nguồn.
Trước khi viết đoạn Lisp này cho phép Tue_NV gửi lời cảm ơn chân thành nhất tới bác Nguyễn Hoành đã trả lời cho bài viết Làm thế nào để tìm số đối tượng sinh ra bởi lệnh Boundary.
Nay Tue_NV lại ứng dụng đoạn Lisp đó của bác để làm ra đoạn Lisp này. Hy vọng có ích cho mọi người
(defun c:cpp( / ss frome toe cur)
(setq frome (entlast));; chon doi tuong cuoi cung truoc khi Copy

(Prompt "\nChon doi tuong :")
(setq obj (ssget))


(setq po1 (getpoint "\n Base point : "))
(setq po2 (getpoint po1 "\n Specify second point of displacement : "))
(Command "Copy" "p" "" po1 po2)


(setq toe (entlast));; chon doi tuong cuoi cung sau khi Copy

(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe));; chon cac doi tuong tu frome den toe
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)

(sssetfirst ss ss);; highlight ket qua

(princ)
)
Tên lệnh là cpp.
Nếu bạn muốn dùng Multiple thì hãy sử dụng thêm lệnh Multiple của CAD kết hợp với lệnh cpp của Lisp

Command: multiple

Enter command name to repeat: cpp
........
Nếu có gì chưa được bạn CUONG20051982 post lên đây, Tue_NV sẽ chỉnh lại
Một lần nữa xin cảm ơn bác Hoành cùng mọi người trên diễn đàn.
Chúc mọi người sức khỏe. Chúc bạn haanh mẹ tròn con vuông.
Chúc mọi người thành công :cry:
  • 5

#4 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 06 April 2009 - 05:04 PM

Đây là file CAD chỉ là ví dụ cho ý mình cần giải quyết Tue_NV có thể xem xem có gì giúp mình:http://www.cadviet.com/upfiles/chon_doi_tuong.dwg
  • 0

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 06 April 2009 - 06:02 PM

Đây là file CAD chỉ là ví dụ cho ý mình cần giải quyết Tue_NV có thể xem xem có gì giúp mình:http://www.cadviet.com/upfiles/chon_doi_tuong.dwg

Bạn phải chạy thử Lisp của mình chứ. Khi bấm lệnh cpp thì số đối tượng sinh ra do lệnh copy được Highlight lên cả. Bạn sẽ thấy.
Lúc này bạn chỉ cần nhập lại lệnh cpp thì tự động các đối tượng được sinh ra do lệnh copy trước đó được thực hiện.
Hãy chạy lệnh các bạn sẽ thấy.

Còn muốn dùng Multiple thì hãy sử dụng thêm lệnh Multiple của CAD kết hợp với lệnh cpp của Lisp

Command: multiple

Enter command name to repeat: cpp
........

Hãy chạy Lisp bạn sẽ thấy cái hay của nó.
Chúc thành công :cry:
  • 2

#6 haanh

haanh

    biết lệnh adcenter

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

Đã gửi 06 April 2009 - 06:13 PM

Một lần nữa xin cảm ơn bác Hoành cùng mọi người trên diễn đàn.
Chúc mọi người sức khỏe. Chúc bạn haanh mẹ tròn con vuông.
Chúc mọi người thành công :cry:

Chưa có hôm nào đẹp như hôm nay... Em đang hát đấy bác Tue_NV à! Vâng hôm nay em là người vui và cảm động nhất quả đất khi nhận được lời chúc của bác.
Nhưng em vẫn có thắc mắc ko hiểu bác CUONG20051982 chọn đối tượng kiểu như thế có tác dụng gì??? Và dùng trong trường hợp nào??? Và dùng lisp có nhanh hơn không???
Thói quen vẽ của em là chọn đối tượng trước sau mới đến gõ lệnh... Ko biết cách cách làm của em có giống cách làm của các bác không. Thực sự em ko hiểu mong các bác giải đáp.
  • 1

“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...”


#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 06 April 2009 - 06:36 PM

Chưa có hôm nào đẹp như hôm nay... Em đang hát đấy bác Tue_NV à! Vâng hôm nay em là người vui và cảm động nhất quả đất khi nhận được lời chúc của bác.
Nhưng em vẫn có thắc mắc ko hiểu bác CUONG20051982 chọn đối tượng kiểu như thế có tác dụng gì??? Và dùng trong trường hợp nào??? Và dùng lisp có nhanh hơn không???
Thói quen vẽ của em là chọn đối tượng trước sau mới đến gõ lệnh... Ko biết cách cách làm của em có giống cách làm của các bác không. Thực sự em ko hiểu mong các bác giải đáp.

Khi sử dụng lệnh Copy -> thì sinh ra một số đối tượng mới. Làm sao ta có thể chọn lại đối tượng mới đó?
Trong CAD nếu ở dòng select object : nếu nhấn chữ P (previous) thì chọn đối tượng trước đó (tức là đối tượng gốc copy) và nó không chọn đối tượng sinh ra.
Còn nếu ta nhấn chữ L (Last) thì đối tượng sinh ra cuối cùng được chọn. (chỉ 1 đối tượng sinh ra cuối cùng được chọn). Điều này chỉ đúng cho 1 đối tượng chứ một nhóm đối tượng thì không còn đúng nữa. Bạn cứ thử xem
Do đó phải nhờ sự trợ giúp của Lisp ta mới có thể chọn được đối tượng sinh ra bởi lệnh copy (đó là một nhóm đối tượng do lệnh Copy sinh ra.
Dùng CAD thì không thể chọn được một nhóm đối tượng do lệnh Copy sinh ra, chỉ có thể dùng Lisp.
Còn việc chọn đối tượng trước sau khi gõ lệnh thì đối với CAD thì ra sao cũng được tuỳ thói quen mỗi người
Còn đối với Lisp thì không nên vì có thể bị Lisp hiểu nhầm.

Bạn hát thật là hay. Tuy không nghe được nhưng có thể cảm nhận được.
Chúc bạn thành công.
  • 2

#8 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 06 April 2009 - 07:22 PM

Cảm ơn Tue_NV vì cuối buổi chiều nay làm về vội quá nên mình chưa thử được giờ ra mạng không có CAD nên phải để mai thử vậy. Mình cũng xin nói thêm cho haanh hiểu ý mình là đôi khi ta phải làm việc với những bản vẽ rất rối như những bản vẽ về xây dựng chẳng hạn khi ta COPY hay MOVE để chèn đến một vị chí nào đó rất xa trên bản vẽ mà khi nhỡ thoát lệnh mà lại muốn tiếp tục lấy ngay đối tượng đó để xử dụng thì rất khó ,ta cũng không thể quay lại để chọn đối tượng nguồn vì bản vẽ rất nặng ZOOM rất khó khăn mất nhiều thời gian, đôi khi có thể ta còn chèn nhầm điểm chèn nữa chứ, lúc này ta lại phải MOVE chính đối tượng đó đi chèn lại vào điểm khác mà ta không thể quét chọn nhóm đối tượng đó được vì ta đã chèn lẫn vào rất nhiều đối tượng khác.
  • 1

#9 haanh

haanh

    biết lệnh adcenter

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

Đã gửi 06 April 2009 - 07:45 PM

Vâng em đã hiểu ý của hai bác rồi lỗi tại em không đọc kỹ. Các bác tha lỗi cho em nhá. Em cũng cảm ơn bác CUONG20051982 đã đưa ra câu hỏi để em có dịp tìm kiếm và hiểu thêm được nhiều cái mới mẻ.

Đây là file CAD chỉ là ví dụ cho ý mình cần giải quyết Tue_NV có thể xem xem có gì giúp mình:http://www.cadviet.com/upfiles/chon_doi_tuong.dwg

Đường link của bác bị lỗi rồi. Phiền bác gửi lại được ko! Cám ơn bác nhiều nhiều em muốn xem trường hợp nhóm đối tượng mà bác đã chọn lại.
  • 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...”


#10 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 06 April 2009 - 07:52 PM

Có phải bạn muốn lấy lại file mình đã Up,File đó đơn giản lắm bạn Ah, chỉ là ví dụ thôi. Mai lên cty mình Up lại sau giờ ở đây không có CAD.
  • 1

#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 April 2009 - 05:38 AM

Đây là file CAD chỉ là ví dụ cho ý mình cần giải quyết Tue_NV có thể xem xem có gì giúp mình:http://www.cadviet.com/upfiles/chon_doi_tuong.dwg

Tue_NV thật sự không vui khi bạn chưa hề chạy thử Code trên của Tue_NV mà lại đưa ra ý kiến là cần sự giúp đỡ đấy bạn CUONG20051982 ạ.
Bạn phải chạy thử Code trên mới thấy được vấn đề của bạn giải quyết ra sao? Có gì vướng mắc thì mới hỏi lại chứ? Thật sự không vui tí nào? :cry:

To haanh : Bạn thử chạy Code trên của mình : đánh lệnh cpp -> Chọn một nhóm đối tượng Copy là A -> Sinh ra đối tượng là A'.
Đánh lệnh cpp tiếp theo lập tức Lisp sẽ chọn đối tượng A' sinh ra đó.

Còn muốn dùng Multiple thì hãy sử dụng thêm lệnh Multiple của CAD kết hợp với lệnh cpp của Lisp

Command: multiple

Enter command name to repeat: cpp
........
  • 2

#12 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 07 April 2009 - 08:01 AM

Các bác ơi giúp em cái Lisp chọn đối tượng với. Em muốn sau khi đã copy một nhóm đối tượng đến một vị chí nào đó, sau đó thì tiếp tục lại chọn chính nhóm đối tượng này(nhóm đối tượng ta vừa copy tới không phải nhóm đối tượng nguồn) cho lệnh sau.

Sao không dùng copy link
  • 0

#13 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 07 April 2009 - 10:44 AM

Thực ra vấn đề này đã được giải quyết trên dd này rồi các bạn chịu khó tìm sẻ thấy. (vấn đề do bác Hoành và bác nào đó bàn qua bàn lại và hình như đưa ra 2 cách rồi).
  • 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


#14 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 07 April 2009 - 12:29 PM

Tue_NV thông cảm nhé vì cuối buổi chiều hôm qua hết giờ làm nên mình chưa thử được,hôm nay thử rồi thì thấy Code đó của bạn đã giải quyết được vấn đề,nhưng nếu có thể sửa thêm một chút nữa chắc hoàn thiện hơn,vì mình đã thử nhưng sau khi copy ra thì phải nhập lệnh khác ngay còn nếu nhỡ ấn phím Esc thì không còn tác dụng nữa, và với trường hợp Multiple thì với lệnh copy bình thường có thể pick liên tục các điểm còn với code này phải pick chọn lại điểm trước đó(cần thêm 1 thao tác). Hơn nữa nếu có thể đưa cái lựa chon multiple vào trong lệnh sau khi đã chọn đối tượng(sau dòng select object) thì tốt.
  • 0

#15 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 07 April 2009 - 01:51 PM

Bác duy có nói vấn đề này đã được trình bày nhưng em tìm mà không thấy,nếu có thể bác giúp em với, khả năng tìm kiếm của em còn kém nắm.
  • 0

#16 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 10 April 2009 - 02:16 PM

Tue_NV thông cảm nhé vì cuối buổi chiều hôm qua hết giờ làm nên mình chưa thử được,hôm nay thử rồi thì thấy Code đó của bạn đã giải quyết được vấn đề,nhưng nếu có thể sửa thêm một chút nữa chắc hoàn thiện hơn,vì mình đã thử nhưng sau khi copy ra thì phải nhập lệnh khác ngay còn nếu nhỡ ấn phím Esc thì không còn tác dụng nữa, và với trường hợp Multiple thì với lệnh copy bình thường có thể pick liên tục các điểm còn với code này phải pick chọn lại điểm trước đó(cần thêm 1 thao tác). Hơn nữa nếu có thể đưa cái lựa chon multiple vào trong lệnh sau khi đã chọn đối tượng(sau dòng select object) thì tốt.

Lần sau bạn đừng làm như vậy nữa nhé. Nút tick Thanks ở dưới mỗi bài viết là lời cảm ơn đồng thời là lời thông cảm chân tình nhất đấy CUONG à.
Code sau Tue_NV mày mò mãi mới hoàn thành xong. Sướng cả người được. Cảm giác thật khó tả.
Lệnh là cpp. Hy vọng chạy Code xong bạn sẽ hài lòng.

(defun c:cpp( / ss frome toe cur obj po1 po2)
(setvar "grips" 0)
(Command "undo" "be")
(setq frome (entlast));; chon doi tuong cuoi cung truoc khi Copy

(Prompt "\nChon doi tuong :")
(setq obj (ssget))
(sssetfirst obj obj)

(setq po1 (getpoint "\n Base point : "))
(setq po2 (getpoint po1 "\n Specify second point of displacement : "))
(Command "Copy" "p" "" po1 po2)


(setq toe (entlast));; chon doi tuong cuoi cung sau khi Copy

(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe));; chon cac doi tuong tu frome den toe
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)

(sssetfirst ss ss);; highlight ket qua

(setq po1 po2)

(while

(setq po2 (getpoint po1 "\n Specify second point of displacement : "))
(setq frome (entlast))
(Command "Copy" ss "" po1 po2)
(setq toe (entlast))

(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe));; chon cac doi tuong tu frome den toe
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(setq po1 po2)
(sssetfirst ss ss);; highlight ket qua
)

(setvar "grips" 1)
(Command "undo" "end")
(princ)
)

Chúc thành công nhé. :cheers:
  • 4

#17 CUONG20051982

CUONG20051982

    biết lệnh extend

  • Members
  • PipPipPip
  • 196 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 11 April 2009 - 12:28 PM

Không thể chỉ với dấu thanks mà mình còn muốn gửi lời cảm ơn chân thành của mình đến bạn Tue_NV ạ. Mình cũng tham gia diễn đàn chưa lâu nên có gì sai sót mong Tue_NV cùng các bác trên diễn đàn và mọi thành viên thông cảm!!!
  • 0

#18 hai_1401

hai_1401

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 30 (tàm tạm)

Đã gửi 28 April 2009 - 05:26 PM

Em thử rồi nhưng ko thấy được bác ạ. Em dùng lệnh CPP để copy 1 Object, sau đó dùng CPP thì nó lại bắt chọn 1 Object tiếp chứ chẳng thấy Hightlight j cả :(. Với cả em muốn thế này cơ bác ạ: Mình vẫn dụng lệnh copy của Autocad bình thường, lisp thì chỉ khi mình cần gọi Object cuối cùng khi mình vừa Copy ra thôi. Ví dụ nhé: Em Copy 1 Object, sau đó mình sẽ dùng lisp với lệnh là CPP để gọi Object vừa mới copy được lên, giống hệt như là: mình dùng lệnh Move 1 Object, sau đó mình Move tiếp bằng cách gõ Move rồi gõ P ấy. Bác cố gắng xem xét thế nào để giúp em cái nhá, thanks bác :(
  • 0

#19 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 28 April 2009 - 10:37 PM

Em thử rồi nhưng ko thấy được bác ạ. Em dùng lệnh CPP để copy 1 Object, sau đó dùng CPP thì nó lại bắt chọn 1 Object tiếp chứ chẳng thấy Hightlight j cả :(. Với cả em muốn thế này cơ bác ạ: Mình vẫn dụng lệnh copy của Autocad bình thường, lisp thì chỉ khi mình cần gọi Object cuối cùng khi mình vừa Copy ra thôi. Ví dụ nhé: Em Copy 1 Object, sau đó mình sẽ dùng lisp với lệnh là CPP để gọi Object vừa mới copy được lên, giống hệt như là: mình dùng lệnh Move 1 Object, sau đó mình Move tiếp bằng cách gõ Move rồi gõ P ấy. Bác cố gắng xem xét thế nào để giúp em cái nhá, thanks bác :(

Bạn hãy sử dụng đoạn Code ở bài viết của mình ở Topic này : bài viết đầu tiên của Topic này sẽ được
Bạn dùng lệnh Cpp để copy ra 1 object -> sau đó đánh cpp tiếp theo thì nó sẽ tự động chọn đối tượng sinh ra bởi lệnh copy.
Nhưng nhược điểm là không thực hiện được Multiple. Muốn multiple thì :

Tên lệnh là cpp.
Nếu bạn muốn dùng Multiple thì hãy sử dụng thêm lệnh Multiple của CAD kết hợp với lệnh cpp của Lisp

Command: multiple

Enter command name to repeat: cpp
........
Chúc bạn sử dụng thành công
  • 0

#20 study_forever

study_forever

    biết vẽ line

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

Đã gửi 18 October 2009 - 11:03 PM

Lần sau bạn đừng làm như vậy nữa nhé. Nút tick Thanks ở dưới mỗi bài viết là lời cảm ơn đồng thời là lời thông cảm chân tình nhất đấy CUONG à.
Code sau Tue_NV mày mò mãi mới hoàn thành xong. Sướng cả người được. Cảm giác thật khó tả.
Lệnh là cpp. Hy vọng chạy Code xong bạn sẽ hài lòng.


(defun c:cpp( / ss frome toe cur obj po1 po2)
(setvar "grips" 0)
(Command "undo" "be")
(setq frome (entlast));; chon doi tuong cuoi cung truoc khi Copy

(Prompt "\nChon doi tuong :")
(setq obj (ssget))
(sssetfirst obj obj)

(setq po1 (getpoint "\n Base point : "))
(setq po2 (getpoint po1 "\n Specify second point of displacement : "))
(Command "Copy" "p" "" po1 po2)
(setq toe (entlast));; chon doi tuong cuoi cung sau khi Copy

(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe));; chon cac doi tuong tu frome den toe
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)

(sssetfirst ss ss);; highlight ket qua

(setq po1 po2)

(while

(setq po2 (getpoint po1 "\n Specify second point of displacement : "))
(setq frome (entlast))
(Command "Copy" ss "" po1 po2)
(setq toe (entlast))

(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe));; chon cac doi tuong tu frome den toe
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(setq po1 po2)
(sssetfirst ss ss);; highlight ket qua
)

(setvar "grips" 1)
(Command "undo" "end")
(princ)
)

Chúc thành công nhé. :bigsmile:

Chào bác Tuệ!
Bác có thể sửa lại để lisp có thể hoàn thiện hơn nữa ko: lệnh CPP có thể giống hệt với lệnh COPY trong Cad, và khi muốn gọi đối tượng vừa mới COPY thì vẫn dùng tham số P như trên, và khi Move hay Copy đối tượng mới đó thì cũng giống như là dùng Move với Copy trong cad, chứ không nó lại không hiện lên hình ảnh của đối tượng khi chuẩn bị đặt, bác giúp em nhé cảm ơn bác rất nhiều :bigsmile:
  • 0