Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
hhhhgggg

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

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

hhhhgggg    30

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 !

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

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

  • 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
hhhhgggg    30
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 ?

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

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
) 

  • 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
hhhhgggg    30
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à !

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

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

  • 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
Mũn xinh    638

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

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ũn xinh    638

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

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
lengan    32
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.com/forum/index.php?sho...amp;#entry16767

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
hoan2182    836
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.com/forum/index.php?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.

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

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

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

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

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

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
hhhhgggg    30
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 ạ ?

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    3.841
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.com/forum/index.php?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

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

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
hhhhgggg    30
Đọ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 !

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

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

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    3.841
Có thể anh hhhhgggg muốn chọn đối tượng được copy ra cuối cùng các bác ah

Theo cách hiểu trên thì nhóm đối tương A1 do nhóm đối tương A tạo ra thì A1 không phải là nhóm đối tượng tạo ra sau cùng hở bạn???

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?

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

Thì các lisp mọi người đưa lên,các link đã post cũng đều nhằm giải quyết vấn đề này mà.Chủ 2pic k chịu hiểu là các lisp này đều highlight đối tượng cuối cùng trước khi kết thúc lệnh copy.Như thế thì dùng lệnh sau đó với tham số p chính là đối tượng cuối chứ k phải đối tượng gốc.bạn chủ 2pic thử xem kỹ lại xem sao.Hay tất cả đều hiểu sai ý bạn rồi

PS : có tí nản bác 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
thanhduan2407    227
Thì các lisp mọi người đưa lên,các link đã post cũng đều nhằm giải quyết vấn đề này mà.Chủ 2pic k chịu hiểu là các lisp này đều highlight đối tượng cuối cùng trước khi kết thúc lệnh copy.Như thế thì dùng lệnh sau đó với tham số p chính là đối tượng cuối chứ k phải đối tượng gốc.bạn chủ 2pic thử xem kỹ lại xem sao.Hay tất cả đều hiểu sai ý bạn rồi

PS : có tí nản bác nhỉ ^^.

Bác Ketxu nói đúng đó. Theo ý em hiểu bác hhhhgggg thì bác ấy muốn chọn nhóm cuối cùng được copy ra. A => A1, A2.....An thì nhóm đối tượng muốn chọn là An. Hi. Đúng không các bác? :undecided:

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

Mình lật vấn đề lại giải quyết thoe kiểu củ chuối như này các bác xem có đc không nhé.

-Viết lisp thực hiện lệnh copy bằng cách: Move đối tượng nguồn đến vị trí đích xong copy ngược lại đến vị trí nguồn. Lúc này tại vị trí đích là đồi tượng nguồn

-Các lệnh sau đó thì cứ gọi p là nó mặc nhiên nhận lại đối tượng nguồn (lúc này đang ở vị trí đích). Mình nghĩ hiệu quả như nhau nếu nhu cầu ko phải là lấy tập hợp mới tạo ra để phục vụ lập trình tiếp.

-Lisp sau: Tên CPP các bác chạy xem nhé.

 

(defun c:cpp ( )

(Prompt "\nchon doi tuong")

(Setq dtgoc (Ssget))

(setq a (getpoint "\nChon diem chuan: "))

(setq b (getpoint a"\nCopy den diem: "))

(setq oldos (getvar "osmode"))

(setvar "osmode" 0)

(command ".move" dtgoc "" a b)

(command ".copy" dtgoc "" b a)

(setq a b)

(setvar "osmode" oldos)

 

(while (setq b (getpoint a"\nCopy den diem <Enter de ket thuc>: "))

(setq oldos (getvar "osmode"))

(setvar "osmode" 0)

(command ".move" dtgoc "" a b)

(command ".copy" dtgoc "" b a)

(setq a b)

(setvar "osmode" oldos)

)

(command "undo" "end")

 

(Princ)

)

  • 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
thanhduan2407    227
Mình lật vấn đề lại giải quyết thoe kiểu củ chuối như này các bác xem có đc không nhé.

-Viết lisp thực hiện lệnh copy bằng cách: Move đối tượng nguồn đến vị trí đích xong copy ngược lại đến vị trí nguồn. Lúc này tại vị trí đích là đồi tượng nguồn

-Các lệnh sau đó thì cứ gọi p là nó mặc nhiên nhận lại đối tượng nguồn (lúc này đang ở vị trí đích). Mình nghĩ hiệu quả như nhau nếu nhu cầu ko phải là lấy tập hợp mới tạo ra để phục vụ lập trình tiếp.

-Lisp sau: Tên CPP các bác chạy xem nhé.

 

(defun c:cpp ( )

(Prompt "\nchon doi tuong")

(Setq dtgoc (Ssget))

(setq a (getpoint "\nChon diem chuan: "))

(setq b (getpoint a"\nCopy den diem: "))

(setq oldos (getvar "osmode"))

(setvar "osmode" 0)

(command ".move" dtgoc "" a :undecided:

(command ".copy" dtgoc "" b a)

(setq a :wub:

(setvar "osmode" oldos)

 

(while (setq b (getpoint a"\nCopy den diem <Enter de ket thuc>: "))

(setq oldos (getvar "osmode"))

(setvar "osmode" 0)

(command ".move" dtgoc "" a :)

(command ".copy" dtgoc "" b a)

(setq a B)

(setvar "osmode" oldos)

)

(command "undo" "end")

 

(Princ)

)

Bác duy782006 Pro thật. Hì. Chính xác 100%

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

Đăng nhập để thực hiện theo  

×