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

#21 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 December 2010 - 10:42 AM

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?


  • 0

#22 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 December 2010 - 11:22 AM

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


#23 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 07 December 2010 - 11:30 AM

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







#24 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 December 2010 - 01:55 PM

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

  • 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


#25 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 07 December 2010 - 02:52 PM

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







#26 NguyenNdait

NguyenNdait

    biết vẽ line

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

Đã gửi 07 December 2010 - 04:52 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 !

Một câu hỏi lớn không lời đáp . . .
TB: Không dùng block cũng chẳng cần lsp phải không HG
  • 0

Mầm non phường ba - Đây ta mầm cụ
Lãnh tụ non sông - Ngộ không.


#27 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 December 2010 - 10:25 PM

Một câu hỏi lớn không lời đáp . . .
TB: Không dùng block cũng chẳng cần lsp phải không HG

:undecided: :wub:
Nếu đúng ra phải dùng emotion cười sặc sụa nhưng ở đây k có :)
  • 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


#28 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 09 December 2010 - 01:08 PM

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?

mình copy bình thường, Nhóm đối tượng A => A1. Bây giờ nhiệm vụ là move các đối tượng thuộc nhóm A1 đi chỗ khác. Thì ko thể dùng "M" rùi "P" được ? Vì khi ta dùng như vậy thì đối tượng bị Move đi là đối tượng A chứ không phải A1. Mục đích muốn move A1 đi chỗ khác vì khi copy đặt nhầm vị trí của A1 ??? Như vậy thì ta không phải Select object nữa !
  • 0
Hoàng Giang

#29 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 December 2010 - 01:29 PM

Hự.Bạn thực sự đã thử chưa :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


#30 NguyenNdait

NguyenNdait

    biết vẽ line

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

Đã gửi 09 December 2010 - 03:56 PM

mình copy bình thường, Nhóm đối tượng A => A1. Bây giờ nhiệm vụ là move các đối tượng thuộc nhóm A1 đi chỗ khác. Thì ko thể dùng "M" rùi "P" được ? Vì khi ta dùng như vậy thì đối tượng bị Move đi là đối tượng A chứ không phải A1. Mục đích muốn move A1 đi chỗ khác vì khi copy đặt nhầm vị trí của A1 ??? Như vậy thì ta không phải Select object nữa !

Ok. được thôi. Hôm nào rảnh mình làm cho cái lsp thỏa mãn yêu cầu của bạn.
  • 0

Mầm non phường ba - Đây ta mầm cụ
Lãnh tụ non sông - Ngộ không.


#31 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 09 December 2010 - 04:48 PM

Ok. được thôi. Hôm nào rảnh mình làm cho cái lsp thỏa mãn yêu cầu của bạn.

Eo chứ mô phật ông NguyenNdait và ông hhhhgggg không đọc bài của con ạ??
  • 0

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


#32 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 December 2010 - 05:02 PM

:undecided:) BÁc Duy cũng k chịu được rồi kìa :wub:) .Rõ ràng là những bài reply của 2 pác NguyenNdaiit và hhhhgggg chẳng ăn nhập j với bao phương án anh em post lên cả ^^.Bác nào mod check IP xem nào ^^
  • 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


#33 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 10 December 2010 - 08:57 AM

:undecided:) BÁc Duy cũng k chịu được rồi kìa :wub:) .Rõ ràng là những bài reply của 2 pác NguyenNdaiit và hhhhgggg chẳng ăn nhập j với bao phương án anh em post lên cả ^^.Bác nào mod check IP xem nào ^^

Huhu. Cái bác Duy này. Em đã dùng cái CPP của bác ngay từ khi bác post lên. Nhưng mà nó chỉ có tác dụng copy như bình thường . Em chẳng thấy nó khác lệnh copy chỗ nào. Hay là e chưa bit dùng. huhuhuhu
  • 0
Hoàng Giang

#34 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 10 December 2010 - 09:14 AM

Huhu. Cái bác Duy này. Em đã dùng cái CPP của bác ngay từ khi bác post lên. Nhưng mà nó chỉ có tác dụng copy như bình thường . Em chẳng thấy nó khác lệnh copy chỗ nào. Hay là e chưa bit dùng. huhuhuhu

Nó không khác lệnh copy chổ nào cả chỉ khác là sau khi dùng nó thì dùng lệnh MOVE hay lệnh gì gì đi nửa muốn chọn đối tượng tạo ra sau cùng thì gỏ P như cái yêu cầu của ông ấy ạ.
  • 0

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


#35 NguyenNdait

NguyenNdait

    biết vẽ line

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

Đã gửi 10 December 2010 - 01:14 PM

Huhu. Cái bác Duy này. Em đã dùng cái CPP của bác ngay từ khi bác post lên. Nhưng mà nó chỉ có tác dụng copy như bình thường . Em chẳng thấy nó khác lệnh copy chỗ nào. Hay là e chưa bit dùng. huhuhuhu

Đây, xong rồi nè. Không phải chít liền
(defun c:Pss (/ n l h ss k h1 Rh1 Rh2) ;Preview selection set
(initget 7)
(setq n (getint "\nSo lan copy : "))
(setq l (sslength (ssget "P")) h (cdr (assoc 5 (entget (entlast)))) ss (ssadd))
(repeat (* n l)
(setq k 0 h1 h Rh2 "" ss (ssadd (handent h) ss))
(while (= (setq Rh (substr h (strlen h) 1)) "0")
(setq k (1+ k) h (substr h 1 (1- (strlen h)))))
(if (= k 0)
(progn
(setq Rh1 (substr h1 (strlen h1) 1))
(mapcar '(lambda (a b) (if (= Rh1 a) (setq Rh1 b)))
'("1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F")
'("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E"))
(setq h (strcat (substr h1 1 (1- (strlen h1))) Rh1)))
(progn
(repeat k (setq Rh2 (strcat Rh2 "F")))
(mapcar '(lambda (a b) (if (= Rh a) (setq Rh b)))
'("1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F")
'("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E"))
(setq h (strcat (substr h 1 (1- (strlen h))) Rh Rh2)))))
(sssetfirst nil ss))

TB : Cẩn thận khi sử dụng
  • 0

#36 NguyenNdait

NguyenNdait

    biết vẽ line

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

Đã gửi 10 December 2010 - 01:18 PM

Xin lỗi, không hiểu sao chữ b lại ra thành bộ mặt cười
  • 0

Mầm non phường ba - Đây ta mầm cụ
Lãnh tụ non sông - Ngộ không.


#37 hhhhgggg

hhhhgggg

    biết dimedit

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

Đã gửi 10 December 2010 - 01:32 PM

Xin lỗi, không hiểu sao chữ b lại ra thành bộ mặt cười

ok ! hehe ! chuẩn không cần chỉnh ! thanks bác nhìu nhé. Em trân trọng kính tặng bác 1 con gà quay... hiiii
http://www.google.co...ved=0CB8Q9QEwAQ
  • 0
Hoàng Giang

#38 then_dien

then_dien

    Chưa sử dụng CAD

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

Đã gửi 10 December 2010 - 02:32 PM

Cha chỉ cần hỏi là cha có A xong cha copy nó ra B, C,D bây giờ cha muốn chọn B,C,D thì người ta viết cái phẹt ra cho cha từ lâu rồi. Chả hiểu là ngu lâu hay dốt bền nửa.
  • 0

#39 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 10 December 2010 - 02:50 PM

Khá sáng tạo,n giải quyết theo hướng này copy đến lần nào đếm lần đó mất :">

@hhhhgggg : ..............Mình chẳng hiểu là bạn có hiểu bạn cần gì k.Và liệu bạn có biết cách dùng thứ mà bạn yêu cầu người ta viết không
Tóm lại là đã có 3 cách
1 Chọn lại 1 tập đối tượng cuối cùng ( mọi người đã post,điển hình là cpp.Lệnh này thay thế cho lệnh copy.Sau khi kết thúc lệnh này,nhóm đối tượng cuối cùng đã được chọn,dùng lệnh j sau đó với tham số P là được)
2.Chọn lại số tập đối tượng thứ n trở về trước sau khi kết thúc lệnh copy (pss mà bạn j đó vừa post)
3.Chọn lại toàn bộ các đối tượng từ lúc bắt đầu copy ( khỏi đếm số lần,đã sưu tầm,mình post bên dưới,cách dùng cũng là dùng c1 thay cho lệnh copy.Sau đó sử dụng lại các đối tượngvừa copy ra với tham số P)
(defun C:c1 ( / ss )
(setvar "CMDECHO" 1)
;;;Creat Marker
(mip:mark)
;;;Preform commands
(princ "\nSelect objects for copying... ")
(setq ss (ssget "_:L"))
(command "_COPY" ss "" "_M")
(while (> (getvar "CMDACTIVE") 0)(command pause))
;;; Select all entities created after copy
(setq ss (mip:get-last-ss))
;;; Change color new objects to red
(if ss
(command "_select" ss "" )
)
(setq ss nil)
(princ)
)

(defun mip:mark ( )
;;;* Mark data base to allow KB:catch.
;;;* [url="http://www.theswamp.org/index.php?topic=15863.0"]http://www.theswamp.org/index.php?topic=15863.0[/url]
(if (setq *mip:mark (entlast)) nil
(progn (entmake '((0 . "point") (10 0.0 0.0 0.0)))
(setq *mip:mark (entlast))(entdel *mip:mark)))(princ))
;;;* returns selection set of entities since last mip:mark.
(defun mip:get-last-ss (/ ss tmp val)
(setq val (getvar "cmdecho"))(setvar "cmdecho" 0)
(if *mip:mark (progn (setq ss (ssadd))
(while (setq *mip:mark (entnext *mip:mark))(ssadd *mip:mark ss))
(command "._select" ss "")(setq tmp ss ss nil));_progn
(alert "*mip:mark not set. \n run (mip:mark) before mip:get-last-ss."));_if
(setvar "cmdecho" val) tmp)


p/s : ....
  • 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