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

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

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

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.

  • 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
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.com/forum/index.php?showtopic=9124

 

Chọn nhanh đối tượng trong AutoCAD.

http://www.cadviet.com/forum/index.php?showtopic=1679

 

kich chọn đối tượng

http://www.cadviet.com/forum/index.php?showtopic=8821

 

lỗi khi chọn trước đối tượng

http://www.cadviet.com/forum/index.php?showtopic=8577

 

chọn đối tượng sau thì đối tượng đầu mất

http://www.cadviet.com/forum/index.php?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.com/forum/index.php?showtopic=9036

 

em không bao được đối tượng

http://www.cadviet.com/forum/index.php?showtopic=5377

 

Select đối tượng nằm dưới đối tượng khác, Làm thế nào?

http://www.cadviet.com/forum/index.php?showtopic=4246

 

Chọn đối tượng trong cad

http://www.cadviet.com/forum/index.php?showtopic=3206

 

Cách chọn đối tượng ( Mới )

http://www.cadviet.com/forum/index.php?showtopic=8313

 

chon nhieu doi tuong ko dc, help me!!!

http://www.cadviet.com/forum/index.php?showtopic=4617

 

Hỏi về chọn đối tượng, kô select đc nhìu đối tượng

http://www.cadviet.com/forum/index.php?showtopic=3588

 

không chọn dc nhiều đối tượng

http://www.cadviet.com/forum/index.php?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.com/forum/index.php?showtopic=1683

 

Đối tượng k hiện lên sau khi chọn

http://www.cadviet.com/forum/index.php?showtopic=470

  • Vote tăng 5

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

  • Vote tăng 5

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
Đâ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:

  • Vote tăng 2

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

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

  • Vote tăng 2

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

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.

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

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

........

  • Vote tăng 2

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

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

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

  • 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

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.

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

  • Vote tăng 4

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

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

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

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 :(

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

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

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

Chào study_forever

Lisp trên đã được Tue_NV hoàn thiện lại :

(defun c:cpp( / ss frome toe cur obj po1 po2)
(Command "undo" "be")
(setq frome (entlast));;
(Prompt "\nChon doi tuong :")
(setq obj (ssget))
(sssetfirst obj obj)
(setq po1 (getpoint "\n Base point : "))
(command "line" '(0 0 0) '(1 1 1) "")
(setq obj (ssadd (entlast) obj))

(command "copy" obj "" po1)
(while (
(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq obj (ssdel (entlast) obj))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))

(setq toe (entlast))

(setq cur frome
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)

(setq po1 po2)

(while po2
 (setq frome (entlast))
(command "line" '(0 0 0) '(1 1 1) "")
(setq ss (ssadd (entlast) ss))
(command "copy" ss "" po1)
   	 (while (   	(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq ss (ssdel (entlast) ss))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))
(setq toe (entlast))
(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(setq po1 po2)
)
(Command "undo" "end")
(princ)
)

Chúc các bạn một buổi sáng tốt lành

Edit : Chức năng Download Lisp File của diễn đàn bị lỗi -> bạn hãy nhấn nút Reply bài viết này của Tue_NV -> copy hết code này về chạy thử nhé

:bigsmile:

  • 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
Chào study_forever

Lisp trên đã được Tue_NV hoàn thiện lại :

(defun c:cpp( / ss frome toe cur obj po1 po2)
(Command "undo" "be")
(setq frome (entlast));;
(Prompt "\nChon doi tuong :")
(setq obj (ssget))
(sssetfirst obj obj)
(setq po1 (getpoint "\n Base point : "))
(command "line" '(0 0 0) '(1 1 1) "")
(setq obj (ssadd (entlast) obj))

(command "copy" obj "" po1)
(while (< 0 (getvar "CMDACTIVE")) (command pause))

(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq obj (ssdel (entlast) obj))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))

(setq toe (entlast))

(setq cur frome
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)

(setq po1 po2)

(while po2
 (setq frome (entlast))
(command "line" '(0 0 0) '(1 1 1) "")
(setq ss (ssadd (entlast) ss))
(command "copy" ss "" po1)
   	 (while (< 0 (getvar "CMDACTIVE")) (command pause))
  	(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq ss (ssdel (entlast) ss))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))
(setq toe (entlast))
(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(setq po1 po2)
)
(Command "undo" "end")
(princ)
)

Chúc các bạn một buổi sáng tốt lành

Edit : Chức năng Download Lisp File của diễn đàn bị lỗi -> bạn hãy nhấn nút Reply bài viết này của Tue_NV -> copy hết code này về chạy thử nhé

:bigsmile:

Lạ thật đấy anh Tuệ ơi, tại sao khi copy xong nó cứ ra cái dấu chấm j ấy anh ạ (1 đường line rất nhỏ), và khi muốn kết thúc lệnh CPP bằng Enter thì không được, đồng thời khi chọn đối tượng để copy trước rồi chọn lệnh CPP thì chưa được (bắt buộc phải chọn CPP trướ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

Sử dụng lệnh chọn lai đối tượng vừa copy xong cua ban TUE_VNC thi ok...nhung ma dung lenh copy tham so m...de copy nhieu doi tuong thi lai.....ko dc..TUE oi giup minh voi....??? co cach nao thoa man ca hai ko nhi?????

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
Chào study_forever

Lisp trên đã được Tue_NV hoàn thiện lại :

(defun c:cpp( / ss frome toe cur obj po1 po2)
(Command "undo" "be")
(setq frome (entlast));;
(Prompt "\nChon doi tuong :")
(setq obj (ssget))
(sssetfirst obj obj)
(setq po1 (getpoint "\n Base point : "))
(command "line" '(0 0 0) '(1 1 1) "")
(setq obj (ssadd (entlast) obj))

(command "copy" obj "" po1)
(while (< 0 (getvar "CMDACTIVE")) (command pause))

(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq obj (ssdel (entlast) obj))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))

(setq toe (entlast))

(setq cur frome
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)

(setq po1 po2)

(while po2
 (setq frome (entlast))
(command "line" '(0 0 0) '(1 1 1) "")
(setq ss (ssadd (entlast) ss))
(command "copy" ss "" po1)
   	 (while (< 0 (getvar "CMDACTIVE")) (command pause))
  	(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq ss (ssdel (entlast) ss))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))
(setq toe (entlast))
(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(setq po1 po2)
)
(Command "undo" "end")
(princ)
)

Chúc các bạn một buổi sáng tốt lành

Edit : Chức năng Download Lisp File của diễn đàn bị lỗi -> bạn hãy nhấn nút Reply bài viết này của Tue_NV -> copy hết code này về chạy thử nhé

:undecided:

Sử dụng lệnh chọn lai đối tượng vừa copy xong cua ban TUE_VNC thi ok...nhung ma dung lenh copy tham so m...de copy nhieu doi tuong thi lai.....ko dc..TUE oi giup minh voi....??? co cach nao thoa man ca hai ko nhi?????

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
Sử dụng lệnh chọn lai đối tượng vừa copy xong cua ban TUE_VNC thi ok...nhung ma dung lenh copy tham so m...de copy nhieu doi tuong thi lai.....ko dc..TUE oi giup minh voi....??? co cach nao thoa man ca hai ko nhi?????

Xin mạn phép TUE viết cái lisp tương tự để các bạn sd cho vui.

;Ham tra ve tap hop tu name cho den last
(defun nametoSS( name addname / ss n i name1)
 (if (null name) (setq name (entnext) addname T))
 (setq ss (ssadd))
 (setq name1 name)
 (if addname (ssadd name1 ss))
 (setq i 0)
 (while (setq n (entnext name1)) 
(setq i (1+ i))
(ssadd n ss)
(setq name1 n)
 )
 (if (null addname) (ssdel name ss))
 (command "_.select" ss "")
 (if (> (sslength ss) 0) ss nil)
)

(defun c:dcpp( / ss n p p2)
 (setq n (entlast))
 (if (setq ss (ssget)) (progn
(initget 128)
(setq p (getpoint "\nSpecify base point or displacement, or [Multiple]:"))
(cond
  ((listp p) 
	(setq n (entlast))
	(command "_.copy" ss "" p "\\")
	(nametoss n nil)
  )
  ((= (strcase p) "M")
	(setq n (entlast))
	(setq p (getpoint "\nSpecify base point:"))
	(while (setq p2 (getpoint p "\nSpecify second point of displacement or :"))
	  (setq n (entlast))
	  (command "_.copy" ss "" p p2)
	  (nametoss n nil)
	)
  )
  (T)
)
 ) nil)
 (princ)
)

Lệnh là dcpp. Lệnh này gần với lệnh copy của cad kể cả với lựa chọn "m", sau khi kết thúc lệnh, nếu thực hiện một lệnh mới có chọn đối tượng với lựa chọn "p" thì sẽ chọn đc một tập mới copy sau cùng.

Lệnh này chỉ thiếu mỗi cái nhóm đối tượng chạy theo cái dây khi copy với lựa chọn "m", muốn làm đc điều này phải tốn thêm một ít công sức nhưng mình thì rất bậ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

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

×