Đến nội dung


Hình ảnh

cách chọn đối tượng vừa được copy ra ?


  • Please log in to reply
38 replies to this topic

#1 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 06 December 2010 - 07:50 AM

Các bác Pro cho em hỏi, có cách nào để chọn được các đối tượng mình vừa copy ra không ? Cụ thể như sau: Có đối tượng A có sẵn, Em Copy đối tượng A ra, đối tượng mới sinh ra là B giống hệt A. Như vậy có cách nào chọn nhanh đối tượng B sau lệnh copy đó không ? mong các bác Pro chỉ giáo !
  • 0
Hoàng Giang

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 06 December 2010 - 08:46 AM

Nếu chỉ là 1 đối tượng thì bạn dùng lệnh select ->L.Nếu nhiều đối tượng thì bạn cần sự hỗ trợ của lisp ^^
  • 1

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 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 06 December 2010 - 09:25 AM

Nếu chỉ là 1 đối tượng thì bạn dùng lệnh select ->L.Nếu nhiều đối tượng thì bạn cần sự hỗ trợ của lisp ^^

có rất nhiều đối tượng ? Bác pro nào có cách nào không ?
  • 0
Hoàng Giang

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 06 December 2010 - 11:19 AM

Thế thì dùng tí lisp vào vậy.
Với cách này sau khi sử dụng lệnh copy xong,sẽ selection các đối tượng vừa copy.Bạn cứ thao tác bình thường.Muốn thực hiện lệnh gì với các đối tượng này thì dùng tham số p
VÍ dụ Sau khi copy xong,bạn muốn đặt các đối tượng ra chỗ kác thì : move -> p
Tron code mình đặt mặc định c là copy,bạn có thể change nếu thấy dùng thích hợp
(defun c:c (/ ss)
(and (setq ss (AT:Copy))
(command "_.select" ss )
)
)

(defun AT:Copy (/ #SS #Pnt1 #Pnt2 #Pnts #SSAdd #Copy)
(vl-load-com)
(cond
((and (setq #SS (ssget "_:L"))
(setq #Pnt1 (getpoint "\nSpecify base point: "))
(setq #Pnt2 (acet-ss-drag-move #SS #Pnt1 "\nSpecify placement point: " T))
) ;_ and
(or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
(setq #Pnts (mapcar '(lambda (x) (vlax-3d-point (trans x 1 0)))
(list #Pnt1 #Pnt2)
) ;_ mapcar
) ;_ setq
(setq #SSAdd (ssadd))
(vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*))
(ssadd (vlax-vla-object->ename (setq #Copy (vla-copy x))) #SSAdd)
(vla-move #Copy (car #Pnts) (cadr #Pnts))
) ;_ vlax-for
(vl-catch-all-apply 'vla-delete (list #SS))
) ;_ cond
) ;_ cond
#SSAdd
)

  • 1

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


#5 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 06 December 2010 - 11:46 AM

Thế thì dùng tí lisp vào vậy.
Với cách này sau khi sử dụng lệnh copy xong,sẽ selection các đối tượng vừa copy.Bạn cứ thao tác bình thường.Muốn thực hiện lệnh gì với các đối tượng này thì dùng tham số p
VÍ dụ Sau khi copy xong,bạn muốn đặt các đối tượng ra chỗ kác thì : move -> p
Tron code mình đặt mặc định c là copy,bạn có thể change nếu thấy dùng thích hợp

(defun c:c (/ ss)
(and (setq ss (AT:Copy))
(command "_.select" ss )
)
)

(defun AT:Copy (/ #SS #Pnt1 #Pnt2 #Pnts #SSAdd #Copy)
(vl-load-com)
(cond
((and (setq #SS (ssget "_:L"))
(setq #Pnt1 (getpoint "\nSpecify base point: "))
(setq #Pnt2 (acet-ss-drag-move #SS #Pnt1 "\nSpecify placement point: " T))
) ;_ and
(or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
(setq #Pnts (mapcar '(lambda (x) (vlax-3d-point (trans x 1 0)))
(list #Pnt1 #Pnt2)
) ;_ mapcar
) ;_ setq
(setq #SSAdd (ssadd))
(vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*))
(ssadd (vlax-vla-object->ename (setq #Copy (vla-copy x))) #SSAdd)
(vla-move #Copy (car #Pnts) (cadr #Pnts))
) ;_ vlax-for
(vl-catch-all-apply 'vla-delete (list #SS))
) ;_ cond
) ;_ cond
#SSAdd
)

Bác hiểu nhầm đề bài rùi. Mong bác đọc lại. Với đối tượng mới được copy ra thì không thể dùng "P" được ? "P" chỉ dùng với các đối tượng mới được chọn thôi. Bác kiểm tra lại nhé !
Đối tượng ban đầu là A, mình copy ra thì được đối tượng A1, khi dùng tham số "P" thì mình chỉ chọn được đối tượng A thôi. ở đây e muốn chọn toàn bộ các đối tượng A1 1 cách nhanh nhất mà !
  • 0
Hoàng Giang

#6 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 06 December 2010 - 12:01 PM

Bạn lại không đọc kỹ bài của mình rồi , thậm chí chưa dùng thử :wub: Có phần hơi buồn :undecided:

Đoạn code
(defun c:c (/ ss)(and (setq ss (AT:Copy))(command "_.select" ss )) )
chính là dùng để chọn lại các đối tượng vừa sinh ra trong lệnh copy đã được mark vào tập ss.Sau khi kết thúc lệnh copy (c) thì các đối tượng vừa được sinh ra đã nằm trong tập enlasts rồi đấy,nên thực hiện 1 lệnh sau đó bằng tham số p hoàn toàn được.Nhớ ở đây là lệnh copy mình đang để là C.Nếu bạn dùng lệnh copy nguyên thủy của CAD thì chịu thôi :))
  • 1

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


#7 Mũn xinh

Mũn xinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1313 Bài viết
Điểm đánh giá: 633 (tốt)

Đã gửi 06 December 2010 - 12:37 PM

Yêu anh ketxu thế :x, thank anh cái nữa nà :* muazzzz
  • 0

...Một chiều ngồi say

Một đời thật nhẹ

Ngày qua...


#8 Mũn xinh

Mũn xinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1313 Bài viết
Điểm đánh giá: 633 (tốt)

Đã gửi 06 December 2010 - 12:43 PM

Hixxx!, em đã dow lisp của bác ketxu về dùng thử nhưng mà bị 1 vấn đề dư lày:
Trước đây em sử dụng lisp copy thì nó sẽ copy liên tục, đến lúc mình dứt lệnh mới thôi, chẳng hạn em có 1 đối tượng A, khi em đánh lệnh C thì nó sẽ copy ra các đối tượng A1, A2, A3... An trong đó n = số lần tick chuột. Khi em load lisp của bác ketxu vào thì nó chỉ copy ra 1 đối tượng A1. Điều này rất bất tiện với em. Mong bác ketxu có thể chỉnh lại lisp để em vẫn có thể sử dụng được lisp copy như cũ.
  • 0

...Một chiều ngồi say

Một đời thật nhẹ

Ngày qua...


#9 lengan

lengan

    biết vẽ ellipse

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

Đã gửi 06 December 2010 - 12:54 PM

Thế thì dùng tí lisp vào vậy.
Với cách này sau khi sử dụng lệnh copy xong,sẽ selection các đối tượng vừa copy.Bạn cứ thao tác bình thường.Muốn thực hiện lệnh gì với các đối tượng này thì dùng tham số p
VÍ dụ Sau khi copy xong,bạn muốn đặt các đối tượng ra chỗ kác thì : move -> p
Tron code mình đặt mặc định c là copy,bạn có thể change nếu thấy dùng thích hợp

(defun c:c (/ ss)
(and (setq ss (AT:Copy))
(command "_.select" ss )
)
)

(defun AT:Copy (/ #SS #Pnt1 #Pnt2 #Pnts #SSAdd #Copy)
(vl-load-com)
(cond
((and (setq #SS (ssget "_:L"))
(setq #Pnt1 (getpoint "\nSpecify base point: "))
(setq #Pnt2 (acet-ss-drag-move #SS #Pnt1 "\nSpecify placement point: " T))
) ;_ and
(or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
(setq #Pnts (mapcar '(lambda (x) (vlax-3d-point (trans x 1 0)))
(list #Pnt1 #Pnt2)
) ;_ mapcar
) ;_ setq
(setq #SSAdd (ssadd))
(vlax-for x (setq #SS (vla-get-activeselectionset *AcadDoc*))
(ssadd (vlax-vla-object->ename (setq #Copy (vla-copy x))) #SSAdd)
(vla-move #Copy (car #Pnts) (cadr #Pnts))
) ;_ vlax-for
(vl-catch-all-apply 'vla-delete (list #SS))
) ;_ cond
) ;_ cond
#SSAdd
)



Thank anh ketxu, hồi mới tham gia diễn đàn em em có hỏi câu hỏi này và cũng nhận được một số trả lời o topic nay
http://www.cadviet.c...amp;#entry16767
  • 0

#10 hoan2182

hoan2182

    biết lệnh adcenter

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

Đã gửi 06 December 2010 - 01:20 PM

Các bác Pro cho em hỏi, có cách nào để chọn được các đối tượng mình vừa copy ra không ? Cụ thể như sau: Có đối tượng A có sẵn, Em Copy đối tượng A ra, đối tượng mới sinh ra là B giống hệt A. Như vậy có cách nào chọn nhanh đối tượng B sau lệnh copy đó không ? mong các bác Pro chỉ giáo !

http://www.cadviet.c...?showtopic=9119

Trong cad có lệnh MOCORO cho phép ta Copy, move, rotate, scale. trên cùng 1 thao tác, 1 đối tượng.


  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#11 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 06 December 2010 - 01:28 PM

Hixxx!, em đã dow lisp của bác ketxu về dùng thử nhưng mà bị 1 vấn đề dư lày:
Trước đây em sử dụng lisp copy thì nó sẽ copy liên tục, đến lúc mình dứt lệnh mới thôi, chẳng hạn em có 1 đối tượng A, khi em đánh lệnh C thì nó sẽ copy ra các đối tượng A1, A2, A3... An trong đó n = số lần tick chuột. Khi em load lisp của bác ketxu vào thì nó chỉ copy ra 1 đối tượng A1. Điều này rất bất tiện với em. Mong bác ketxu có thể chỉnh lại lisp để em vẫn có thể sử dụng được lisp copy như cũ.

hic hic. Cái lisp của bác e đã dùng thử rùi. Khi e đổi thành Move thì không được.Nhưng ta phải làm sao để chọn các đối tượng mới sinh ra của copy giống kiểu "P" được thì tốt quá ! hic .
  • 0
Hoàng Giang

#12 hoan2182

hoan2182

    biết lệnh adcenter

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

Đã gửi 06 December 2010 - 01:35 PM

Có lisp của anh Tuệ trong này:
http://www.cadviet.c...showtopic=10039
  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#13 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 06 December 2010 - 01:37 PM

Xấu hổ thế,cái nayày là mình copy paste à nha ^^
Thì mình thay lệnh copy nguyên thủy bằng lệnh copy mini khác rùi à ^^.Bạn đổi tên lệnh cho khác đi là được

Với lại,nếu n lần kick chuột, đối tượng bạn muốn chọn lại là đối tượng nào trong thật nhiều đối tượng ấy vậy :|:|
  • 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


#14 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 06 December 2010 - 01:52 PM

Nếu vẫn là đối tượng cuối cungùng, thì lisp bác Tuệ dùng cho multi cũng đẹp rồi :undecided:

;; free lisp from cadviet.com

(defun c:cp( / 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)
)

CÒn nếu là chọn toàn bộ các đối tượng từ lúc bắt đầu đến lúc kết thúc copy thì thay đổi chút ^^
  • 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


#15 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 06 December 2010 - 02:53 PM

Nếu vẫn là đối tượng cuối cungùng, thì lisp bác Tuệ dùng cho multi cũng đẹp rồi :undecided:

;; free lisp from cadviet.com

(defun c:cp( / 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)
)

CÒn nếu là chọn toàn bộ các đối tượng từ lúc bắt đầu đến lúc kết thúc copy thì thay đổi chút ^^

em ko hiểu cái lisp "CP" của bác để làm gì ? Nếu khó khăn quá thì bác sửa thành Move các đối tượng sinh ra cuối cùng của lệnh copy vừa được thực hiện đi ạ ?
  • 0
Hoàng Giang

#16 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 06 December 2010 - 03:17 PM

em ko hiểu cái lisp "CP" của bác để làm gì ? Nếu khó khăn quá thì bác sửa thành Move các đối tượng sinh ra cuối cùng của lệnh copy vừa được thực hiện đi ạ ?

Bạn đọc topic mà bạn hoan post ở trên sẽ tìm thấy câu trả lời lisp "CP" để làm gì???

Có lisp của anh Tuệ trong này:
http://www.cadviet.c...showtopic=10039

Suy cho cùng, topic này đã có, sao bạn không sử dụng chức năng Tìm kiếm của diễn đàn trước khi lập 1 topic mới.
Bạn thử lấy tiêu đề của topic của bạn la cách chọn đối tượng vừa được copy ra làm từ khoá mà đánh vào ô Tìm kiếm thử xem.

Hãy sử dụng chức năng Tìm kiếm của diễn đàn trước khi lập 1 topic mới
  • 0

#17 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 06 December 2010 - 03:30 PM

Bác hiểu nhầm đề bài rùi. Mong bác đọc lại. Với đối tượng mới được copy ra thì không thể dùng "P" được ? "P" chỉ dùng với các đối tượng mới được chọn thôi. Bác kiểm tra lại nhé !
Đối tượng ban đầu là A, mình copy ra thì được đối tượng A1, khi dùng tham số "P" thì mình chỉ chọn được đối tượng A thôi. ở đây e muốn chọn toàn bộ các đối tượng A1 1 cách nhanh nhất mà !



hic hic. Cái lisp của bác e đã dùng thử rùi. Khi e đổi thành Move thì không được.Nhưng ta phải làm sao để chọn các đối tượng mới sinh ra của copy giống kiểu "P" được thì tốt quá ! hic .



em ko hiểu cái lisp "CP" của bác để làm gì ? Nếu khó khăn quá thì bác sửa thành Move các đối tượng sinh ra cuối cùng của lệnh copy vừa được thực hiện đi ạ ?


Đọc lại các bài bạn rl, xem số lượng bài bạn post ở profile, mình đang thắc mắc có phải cách giải thích của mình quá khó hiểu hay không, hay bạn ít sử dụng lisp.1 câu hỏi bạn đưa ra đã có rất nhiều phương án trong diễn đàn, và ngoài các lisp đưa lên đây,các link mọi người đưa ra đều rất bổ ích,vậy mà.... :undecided:
  • 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


#18 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 07 December 2010 - 08:40 AM

Đọc lại các bài bạn rl, xem số lượng bài bạn post ở profile, mình đang thắc mắc có phải cách giải thích của mình quá khó hiểu hay không, hay bạn ít sử dụng lisp.1 câu hỏi bạn đưa ra đã có rất nhiều phương án trong diễn đàn, và ngoài các lisp đưa lên đây,các link mọi người đưa ra đều rất bổ ích,vậy mà.... :undecided:

hic ! sao các bác Pro không chịu hiểu ý của em nhỉ ? cụ thể bi h là em muốn move toàn bộ các đối tượng được sinh ra của lần copy cuối cùng. Tức là đối tượng A1 chứ không phải đối tượng A, các lisp CP và CPP chỉ chọn và move đối tượng A ( là đối tượng gốc) . Như thế thì e chỉ cần chọn kiểu "P" là xong chứ cần gì lisp ! mong các bác quan tâm giải bài toàn giúp em với !
  • 0
Hoàng Giang

#19 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 December 2010 - 08:59 AM

hic ! sao các bác Pro không chịu hiểu ý của em nhỉ ? cụ thể bi h là em muốn move toàn bộ các đối tượng được sinh ra của lần copy cuối cùng. Tức là đối tượng A1 chứ không phải đối tượng A, các lisp CP và CPP chỉ chọn và move đối tượng A ( là đối tượng gốc) . Như thế thì e chỉ cần chọn kiểu "P" là xong chứ cần gì lisp ! mong các bác quan tâm giải bài toàn giúp em với !

1. Sử dụng Lisp cp.lsp của Tue_NV để copy đối tượng A -> A1
2. Sử dụng lệnh Move -> Ở dòng select object : gõ p sẽ chọn lại đối tượng A1
Tue_NV hiểu như thế là sai chăng?
  • 0

#20 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 993 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 07 December 2010 - 10:19 AM

1. Sử dụng Lisp cp.lsp của Tue_NV để copy đối tượng A -> A1
2. Sử dụng lệnh Move -> Ở dòng select object : gõ p sẽ chọn lại đối tượng A1
Tue_NV hiểu như thế là sai chăng?

Có thể anh hhhhgggg muốn chọn đối tượng được copy ra cuối cùng các bác ah
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn