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

(Yêu cầu) xin lisp copy, move đối tượng rồi xoay

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

sang29    0

Mình tìm trên diễn đàn nhưng không thấy list nào sau khi copy hoặc move xong thì xoay được đối tượng cả (không muốn dùng lệnh mocoro vì nó loằng ngoằng, tương đối lâu)

 

Bác nào có lisp này share cho mình với

 

Thanks

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

Bạn dùng tạm lisp này nhé 

;;Ham luu cac gia tri vao bien tam
(defun start ()
(setq tamcmdecho (getvar "cmdecho"))
(setq tamosmode (getvar "osmode"))
(setq tamangbase (getvar "angbase"))
(setq tamangdir (getvar "angdir"))
)
;;ham dat lai cac gia tri nay
(defun end ()
(setvar "cmdecho" tamcmdecho)
(setvar "osmode" tamosmode)
(setvar "angbase" tamangbase)
(setvar "angdir" tamangdir)
)
;;Ham dat cac gia tri bien bang 0
(defun tccd ()
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "angbase" 0)
(setvar "angdir" 0)
)
;;;copy va xoay doi tuong
(defun c:cr (/ doituong goc dmoi gocxoay)
(prompt "\nChon doi tuong muon copy")
(setq doituong (ssget))
(setq dgoc (getpoint "\nChon diem goc:"))
(start)
(tccd)
(setq dmoi (getpoint "\nChon diem den moi:")
gocxoay (/ (* (getangle "\nNhap goc xoay:") 180) pi))
(command "copy" "P" "" dgoc dmoi "")
(command "rotate" "Last" "" dmoi gocxoay "")
(end)
)
  • 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
sang29    0

Bạn dùng tạm lisp này nhé 

;;Ham luu cac gia tri vao bien tam

(defun start ()

(setq tamcmdecho (getvar "cmdecho"))

(setq tamosmode (getvar "osmode"))

(setq tamangbase (getvar "angbase"))

(setq tamangdir (getvar "angdir"))

)

;;ham dat lai cac gia tri nay

(defun end ()

(setvar "cmdecho" tamcmdecho)

(setvar "osmode" tamosmode)

(setvar "angbase" tamangbase)

(setvar "angdir" tamangdir)

)

;;Ham dat cac gia tri bien bang 0

(defun tccd ()

(setvar "cmdecho" 0)

(setvar "osmode" 0)

(setvar "angbase" 0)

(setvar "angdir" 0)

)

;;;copy va xoay doi tuong

(defun c:cr (/ doituong goc dmoi gocxoay)

(prompt "\nChon doi tuong muon copy")

(setq doituong (ssget))

(setq dgoc (getpoint "\nChon diem goc:"))

(start)

(tccd)

(setq dmoi (getpoint "\nChon diem den moi:")

gocxoay (/ (* (getangle "\nNhap goc xoay:") 180) pi))

(command "copy" "P" "" dgoc dmoi "")

(command "rotate" "Last" "" dmoi gocxoay "")

(end)

)

cám ơn bác cho list này nhưng mình muốn khi copy hoặc move xong đối tượng hiện ra và rồi mới đánh goc độ xoay, chứ như bjo là bắt buộc fai đánh xong góc độ quay

và list hiện tại chưa bắt điểm được, ấn bắt điểm lại fai f3 1 fat rồi mới xong

 

Rất cám ơn 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
phamthanhbinh    3.123

 

Mình tìm trên diễn đàn nhưng không thấy list nào sau khi copy hoặc move xong thì xoay được đối tượng cả (không muốn dùng lệnh mocoro vì nó loằng ngoằng, tương đối lâu)

 

Bác nào có lisp này share cho mình với

 

Thanks

Hề hề hề,

Bạn cần phải mô tả rõ cái việc xoay mới được. Bởi lệnh xoay là cần phải có tâm xoay và góc xoay mới được. Cùng góc xoay nhưng tâm xoay khác nhau là cái hình nó xoay ra sẽ tít mù khác nhau.

Đó cũng là cái lý do để cái lisp của bác CK244 chưa phù hợp với yêu cầu của bạn......

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

Ý mình là như bthuong trong cad sau khi mình copy hoặc move đối rượng xong thì gõ tiếp lệnh rotate mới xoay được đối tượng. Nhưng bây giờ mình muốn góp vào trong 1 lệnh vì nếu ấn co rồi lại ro thì tương đối lâu. Còn mocoro thì rất lâu

 

Thanks các 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
Chiron    91

sang29 thử cái này xem:

(defun c:mnr ()
  (setq ss (ssget))
  (command "move" ss "" "0" "0")
  (command "move" ss "" pause pause)
  (command "rotate" ss "" "@" pause)
)
  • 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
cd2k44    121

Gửi lại bạn

;;;copy va xoay doi tuong
(defun c:cr (/ goc dmoi gocxoay)
(prompt "\nChon doi tuong muon copy")
(ssget)
(setq dgoc (getpoint "\nChon diem goc:"))
(setq dmoi (getpoint "\nChon diem den moi:"))
(command "copy" "P" "" dgoc dgoc "")
(command "move" "p" "" dgoc dmoi "")
(setq gocxoay (/ (* (getangle "\nNhap goc xoay:") 180) pi))
(command "rotate" "P" "" dmoi gocxoay "")
)

Mình bở chế độ bắt điểm đi vì tránh lỗi bắt điểm.Khôi phục lại cho đúng ý 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
cd2k44    121

Bổ sung thêm cái tâm xoay cho bạn chọn lại tâm xoay

(defun c:cr (/ goc dmoi gocxoay txoay)
(prompt "\nChon doi tuong muon copy")
(ssget)
(setq dgoc (getpoint "\nChon diem goc:"))
(setq dmoi (getpoint "\nChon diem den moi:"))
(command "copy" "P" "" dgoc dgoc "")
(command "move" "p" "" dgoc dmoi "")
(setq txoay (getpoint "\nChon tam xoay:"))
(if (= txoay nil) (setq txoay dmoi))
(setq gocxoay (/ (* (getangle "\nNhap goc xoay:") 180) pi))
(command "rotate" "P" "" txoay gocxoay "")
)

Khi tâm xoay trùng với điểm gốc bạn muốn di chuyển tới thì bạn chỉ cần enter và nhập góc xoay

  • 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
Hoan1111    694

 

Mình tìm trên diễn đàn nhưng không thấy list nào sau khi copy hoặc move xong thì xoay được đối tượng cả (không muốn dùng lệnh mocoro vì nó loằng ngoằng, tương đối lâu)

 

Bác nào có lisp này share cho mình với

 

Thanks

 

Theo Hoằn thì đã có MOCORO trong AutoCAD rồi , thì cứ MOCORO mà... phang cho nó là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
hiepttr    523

Cho mình chung vui với :D

Thể theo nguyện vọng của Hoằn mình edit sang "thể loại" MOCORO:

(defun c:cr( / oldcm doituong goc dmoi)
(setq oldcm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon doi tuong muon copy")
(setq doituong (ssget))
(setq dgoc (getpoint "\nChon diem goc:"))
(setq dmoi (getpoint dgoc "\nChon diem den moi:"))
(prompt "\nChon goc quay: ")
(command ".mocoro" doituong "" dgoc "c" dmoi "" "r" pause "")
(setvar "cmdecho" oldcm)
(princ)
)
  • 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
Hoan1111    694

 

Cho mình chung vui với :D

Thể theo nguyện vọng của Hoằn mình edit sang "thể loại" MOCORO:

(defun c:cr( / oldcm doituong goc dmoi)
(setq oldcm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon doi tuong muon copy")
(setq doituong (ssget))
(setq dgoc (getpoint "\nChon diem goc:"))
(setq dmoi (getpoint dgoc "\nChon diem den moi:"))
(prompt "\nChon goc quay: ")
(command ".mocoro" doituong "" dgoc "c" dmoi "" "r" pause "")
(setvar "cmdecho" oldcm)
(princ)
)

 

:) :) chỉ có lợi cho anh Hiệp tập viết lisp thôi!

Command: Ap APPLOAD Hiepcr.lsp successfully loaded.

Command:

Command:

Command: CR

Chon doi tuong muon copy

Select objects: Specify opposite corner: 2 found

Select objects:

Chon diem goc:

Chon diem den moi:

Chon goc quay: 30

 

 

Tính chi ly thì dùng lisp chậm hơn, hao tổn nhiều nơtron hơn là dùng mocoro, nhớ tên người người yêu sướng hơn là phải nhớ cái tên CR lạ hoắc là cái chắc rồi!

 

Command: MOCORO  (AutoCAD2013 chỉ cần gõ 3 ký tự: MOC)

Select objects: Specify opposite corner: 2 found

Select objects:

Base point:

[Move/Copy/Rotate/Scale/Base/Undo]<eXit>: c

Second point of displacement/Undo/<eXit>:

Second point of displacement/Undo/<eXit>:

[Move/Copy/Rotate/Scale/Base/Undo]<eXit>: r

Second Point or Rotation angle: 30

[Move/Copy/Rotate/Scale/Base/Undo]<eXit>:

 

 

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

Hoằn lại "bảo thủ" rồi ! :D :D :D

Đúng là có cái này thi luyện viết Lisp mới vui, nhưng nói lâu hơn thì hơi buồn:

1. CR (Copy - Ro) có 2 chữ cái, ngắn hơn MOC _ 3 chữ cái

2. Đã chọn C; R mặc định, khỏi phải bấm lại

3. Edit lisp ko lâu & nếu dùng lặp lại nhiều thì mới nghĩ tới lisp --> thời gian "vô ích" chiếm tỷ trọng ko lớn.

:D :D :D

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

 

Cho mình chung vui với :D

Thể theo nguyện vọng của Hoằn mình edit sang "thể loại" MOCORO:

(defun c:cr( / oldcm doituong goc dmoi)
(setq oldcm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon doi tuong muon copy")
(setq doituong (ssget))
(setq dgoc (getpoint "\nChon diem goc:"))
(setq dmoi (getpoint dgoc "\nChon diem den moi:"))
(prompt "\nChon goc quay: ")
(command ".mocoro" doituong "" dgoc "c" dmoi "" "r" pause "")
(setvar "cmdecho" oldcm)
(princ)
)

Chào bạn hiepttr!

Bạn viết dựa trên (command ".mocoro".....)

Tuy nhiên, với mocoro thì khi copy đối tượng có thể hiện được "hình ảnh động" của đối tượng mới sinh. Còn bạn viết lại như thế thì vô tình bỏ mất "hình ảnh động" khi copy rồi.

 

@Chiron: Lisp bạn viết ở bài #6 ok, có điều không có dòng nhắc chi hết trơn.......

 

@cd2k44: Bạn đã sử dụng hàm (ssget) để chọn đối tượng rồi thì không nên sử dụng tuỳ chọn "P"  của select object để chọn đối tượng. Vì lỡ nếu khi không chọn được đối tượng nào thì Lisp hiểu "p" là đối tượng trước đó thì không đúng nữa. Bên cạnh đó, chú ý thêm góp ý của Ketxu "Copy xong, move "p" thì không phải tập mới sinh"

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

Hề hề hề... (ăn cắp bản quyền  bác Bình tí) :D

Cái sự học của mình nó chỉ mới bắt đầu, có thể nói đối với các bác thì chỉ như cái phôi thai - mới chỉ biết ngọ nguậy !

Tò mò đc cái gì dùng được là mừng hết lớn luôn...

Cơ mà cái lisp của mình nó chỉ không thể copy liên tục chứ nó vẫn cho "hình ảnh động" đó chứ :D

Cảm ơn vì đã góp ý & rất mong nhận được sự "khai ngộ" từ các bác để mình ngày một hoàn thiện hơn !!!

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

Chiron thấy lệnh mocoro của express tool sử dụng tâm xoay là điểm base point khi move / copy nên nghĩ yêu cầu của sang29 đơn giản hơn trường hợp các bác đã viết.

@Chiron: Lisp bạn viết ở bài #6 ok, có điều không có dòng nhắc chi hết trơn.......

Không có dòng nhắc là sao bác? Đây là lệnh của CAD mà? Hơn nữa, không thấy chủ topic phản hồi gì nên không viết tiếp cho lệnh copy; sau đó ở bài #9 sang29 bảo đã ok rồi và không thấy xuất hiện nữa nên không lăn tăn gì thê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
Hoan1111    694

Anh Hiệp cố tình không hiểu ý của anh Tuệ :"Tuy nhiên, với mocoro thì khi copy đối tượng có thể hiện được "hình ảnh động" của đối tượng mới sinh. Còn bạn viết lại như thế thì vô tình bỏ mất "hình ảnh động" khi copy rồi."

" Hình chữ nhật thẳng" sau khi mocoro được "hình chữ nhật thẳng" + " hình chữ nhật nghiêng" >>> được tiếp một hình chữ nhật nghiêng nữa + hình chữ nhật nghiêng phóng to lên rất "sinh ...động"!

Command: MOCORO
Select objects: 1 found
Select objects:
Base point:
[Move/Copy/Rotate/Scale/Base/Undo]<eXit>: >>>MOCOROSO! :) :) :)

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

Chiron thấy lệnh mocoro của express tool sử dụng tâm xoay là điểm base point khi move / copy nên nghĩ yêu cầu của sang29 đơn giản hơn trường hợp các bác đã viết.

Không có dòng nhắc là sao bác? Đây là lệnh của CAD mà? Hơn nữa, không thấy chủ topic phản hồi gì nên không viết tiếp cho lệnh copy; sau đó ở bài #9 sang29 bảo đã ok rồi và không thấy xuất hiện nữa nên không lăn tăn gì thêm. ^ ^

 

À, do là máy đang đặt biến "cmdecho" = 0 nên Lisp bạn viết chỉ có mỗi dòng select object mà thôi. :lol:

Nên set  biến "cmdecho" = 1 khi chạy Lisp để thấy được dòng nhắc của CAD

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

Hề hề hề... (ăn cắp bản quyền  bác Bình tí) :D

Cái sự học của mình nó chỉ mới bắt đầu, có thể nói đối với các bác thì chỉ như cái phôi thai - mới chỉ biết ngọ nguậy !

Tò mò đc cái gì dùng được là mừng hết lớn luôn...

Cơ mà cái lisp của mình nó chỉ không thể copy liên tục chứ nó vẫn cho "hình ảnh động" đó chứ :D

Cảm ơn vì đã góp ý & rất mong nhận được sự "khai ngộ" từ các bác để mình ngày một hoàn thiện hơn !!!

 

Hình ảnh động chỉ xuất hiện khi "RO" thôi, còn khi "COPY" không có "ảnh động"

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

Cảm ơn vì đã góp ý & rất mong nhận được sự "khai ngộ" từ các bác để mình ngày một hoàn thiện hơn !!!

.............

Đã hiểu, nh­ưng với mình bây giờ thì vẫn chưa làm được !

 

Bạn xem đoạn code mình sửa lại cho bạn, mình đã ghi chú kèm theo trong code.

Bạn đọc và ngộ ra nhé!

 

(defun c:cr( / oldcm doituong goc dmoi)
(setq oldcm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon doi tuong muon copy")
(setq doituong (ssget))
(setq dgoc (getpoint "\nChon diem goc:"))
 
(prompt "\nChon diem den moi:");; dong nhac chon diem den moi
(command ".mocoro" doituong "" dgoc "c" pause); tam dung tra lai quyen dieu khien cho CAD de ban thay anh dong khi COPY va ban chon diem den moi
(prompt "\nChon goc quay :"); dong nhac chon goc quay
(Command  "" "r" pause ""); tiep tuc lenh mocoro con dang do, tam dung tra lai quyen dieu khien cho CAD de ban thay anh dong khi ROTATE
(setvar "cmdecho" oldcm)
(princ)
)
(defun c:cr( / oldcm doituong goc dmoi)
(setq oldcm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon doi tuong muon copy")
(setq doituong (ssget))
(setq dgoc (getpoint "\nChon diem goc:"))
 
(prompt "\nChon diem den moi:");; dong nhac chon diem den moi
(command ".mocoro" doituong "" dgoc "c" pause); tam dung tra lai quyen dieu khien cho CAD de ban thay anh dong va ban chon diem den moi
(prompt "\nChon goc quay :")
(Command  "" "r" pause ""); tiep tuc lenh mocoro con dang do
(setvar "cmdecho" oldcm)
(princ)
)
  • Vote tăng 3

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

Em vừa thử lisp của bác Tuệ, theo em thì lệnh MOCORO...SO vẫn là món ăn cổ truyền NGON BỔ $ RẺ hơn BR! :) :) :)

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


×