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  
taipham

Nhờ Viết Lisp Copy Cộng Dồn Khoảng Cách

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

taipham    5

Nhờ các anh chị trong diễn đàn viết hộ em lisp hoặc có lệnh nào trong cad thì chỉ hộ em như sau:

Thao tác giống lệnh copy nhưng khi nhập khoảng cách lần sau (lần 2,3,4....) nó sẽ cộng thêm các khoảng cách lần trước.

Ví dụ cụ thể như sau: Đánh lệnh CCO -> chọn đối tượng cần copy và chọn hướng muốn copy -> nhập khoảng cách: 1254 (lần 1)->enter -> nhập khoảng cách ->6546 (lần 2) -> enter->nhập khoảng cách 1212 (lần 3)....

Kết quả là:

+ đối tượng thứ 2 cách đối tượng gốc là: 1254

+ đối tượng thứ 3 cách đối tượng gốc là: 1254+6546, cách đối tượng thứ 2 là: 6546

+ đối tượng thứ 4 cách đối tượng gốc là: 1254+6546+1212, ...

Mong các anh chị hiểu ý và giúp đỡ!

 

  • Vote giảm 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
phamthanhbinh    3.123

Nhờ các anh chị trong diễn đàn viết hộ em lisp hoặc có lệnh nào trong cad thì chỉ hộ em như sau:

Thao tác giống lệnh copy nhưng khi nhập khoảng cách lần sau (lần 2,3,4....) nó sẽ cộng thêm các khoảng cách lần trước.

Ví dụ cụ thể như sau: Đánh lệnh CCO -> chọn đối tượng cần copy và chọn hướng muốn copy -> nhập khoảng cách: 1254 (lần 1)->enter -> nhập khoảng cách ->6546 (lần 2) -> enter->nhập khoảng cách 1212 (lần 3)....

Kết quả là:

+ đối tượng thứ 2 cách đối tượng gốc là: 1254

+ đối tượng thứ 3 cách đối tượng gốc là: 1254+6546, cách đối tượng thứ 2 là: 6546

+ đối tượng thứ 4 cách đối tượng gốc là: 1254+6546+1212, ...

Mong các anh chị hiểu ý và giúp đỡ!

Hề hề hề,

Không hiểu ý bạn có phải cái này không???

http://www.cadviet.com/upfiles/5/5194_copymultidist.lsp

 

(defun c:cco (/ ss p0 p1 a d)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(alert "\n Chon doi tuong can copy")
(setq ss (ssget )
          p0 (getpoint "\n Chon diem goc")
          p1 (getpoint p0 "\n Chon diem dinh huong copy")
          a (angle p0 p1)
          e (entlast)  )
(while (setq d (getdist "\n Nhap khoang cach can copy tiep theo: "))
       (command "copy" ss "" p0 (setq p0 (polar p0 a d)))
       (setq ss (ssadd))
       (while (setq e (entnext e))
            (setq ss (ssadd e ss))
       )
       (setq e (entlast))
)
(setvar "osmode" oldos)
(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
taipham    5

 

Hề hề hề,

Không hiểu ý bạn có phải cái này không???

http://www.cadviet.com/upfiles/5/5194_copymultidist.lsp

(defun c:cco (/ ss p0 p1 a d)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(alert "\n Chon doi tuong can copy")
(setq ss (ssget )
          p0 (getpoint "\n Chon diem goc")
          p1 (getpoint p0 "\n Chon diem dinh huong copy")
          a (angle p0 p1)
          e (entlast)  )
(while (setq d (getdist "\n Nhap khoang cach can copy tiep theo: "))
       (command "copy" ss "" p0 (setq p0 (polar p0 a d)))
       (setq ss (ssadd))
       (while (setq e (entnext e))
            (setq ss (ssadd e ss))
       )
       (setq e (entlast))
)
(setvar "osmode" oldos)
(princ)
)

Cảm ơn anh Bình nhiều nhé! Lisp chạy oke, anh sửa thêm chút nữa nhé: bỏ hiển thị cái bảng OKE (chọn đối tượng cần copy) và nếu có thể anh sửa luôn giúp em ở chỗ là khi chọn đối tượng copy (ở vị trí khác), chọn điểm gốc và pick hướng thì đối tượng được copy ra nằm trên phương của điểm gốc và điểm pick hướng. Hehe, em nói quần quần không biết anh hiểu ý em không!

  • Vote giảm 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
hiepttr    523

Bạn thử cái này :D

(defun c:CCO( / cmd ss base_pt dis huong)
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon doi tuong copy !")
(setq ss (ssget))
(setq base_pt (getpoint "\nChon diem chuan: "))
(setq dis 0)
(while
    (setq huong (getpoint base_pt "\Chon diem thu hai: "))
    (command ".copy" ss "" base_pt (polar base_pt (angle base_pt huong) (setq dis (+ dis (distance base_pt huong)))))
)
(setvar "cmdecho" cmd)
(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
taipham    5

 

Bạn thử cái này :D

(defun c:CCO( / cmd ss base_pt dis huong)
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon doi tuong copy !")
(setq ss (ssget))
(setq base_pt (getpoint "\nChon diem chuan: "))
(setq dis 0)
(while
    (setq huong (getpoint base_pt "\Chon diem thu hai: "))
    (command ".copy" ss "" base_pt (polar base_pt (angle base_pt huong) (setq dis (+ dis (distance base_pt huong)))))
)
(setvar "cmdecho" cmd)
(princ)
)

Không phải anh ơi, ý em là là khi chọn đối tượng copy (ở vị trí khác trong bản vẽ),sau đó chọn điểm gốc (ở vị trí khác, không phải vị trí chọn đối tượng copy) và điểm pick hướng thì đối tượng được copy ra nằm trên phương (đường thẳng đi qua điểm gốc và điểm pick chọn hướng). Vẫn nhập khoảng cách như lisp của anh Bình 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
hiepttr    523

Không phải anh ơi, ý em là là khi chọn đối tượng copy (ở vị trí khác trong bản vẽ),sau đó chọn điểm gốc (ở vị trí khác, không phải vị trí chọn đối tượng copy) và điểm pick hướng thì đối tượng được copy ra nằm trên phương (đường thẳng đi qua điểm gốc và điểm pick chọn hướng). Vẫn nhập khoảng cách như lisp của anh Bình vậy á!

Với đoạn "dịch nghĩa" này thì đúng là bó chân .com.canh :D :D :D

 

Phải chăng ý của bạn là copy từ bản vẽ khác ??? Mà nếu thế thì đoạn "thì đối tượng được copy ra nằm trên phương (đường thẳng đi qua điểm gốc và điểm pick chọn hướng)" được hiểu làm sao đây ?! Căn cứ vào cái gì để nói nó nằm trên phương.. nếu đó là một tập chọn chẳng biết điểm chuẩn ở đâu ??? ....

Bạn có thể giải thích thêm + hình minh họa .....

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

Với đoạn "dịch nghĩa" này thì đúng là bó chân .com.canh :D :D :D

 

Phải chăng ý của bạn là copy từ bản vẽ khác ??? Mà nếu thế thì đoạn "thì đối tượng được copy ra nằm trên phương (đường thẳng đi qua điểm gốc và điểm pick chọn hướng)" được hiểu làm sao đây ?! Căn cứ vào cái gì để nói nó nằm trên phương.. nếu đó là một tập chọn chẳng biết điểm chuẩn ở đâu ??? ....

Bạn có thể giải thích thêm + hình minh họa .....

:D :D :D

Hehe, đây các anh xem file em sẽ hiểu, văn chương em viết không hay lắm, các anh thông cảm! http://www.cadviet.com/upfiles/5/146422_cadviet.dwg

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

Vậy đối tượng copy của bạn chỉ là block (hoặc point ...) chứ ?

>>> để biết nó đang "nằm trên phương..." nếu bạn không gán điểm chuản cho tập chọ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
taipham    5

Vậy đối tượng copy của bạn chỉ là block (hoặc point ...) chứ ?

>>> để biết nó đang "nằm trên phương..." nếu bạn không gán điểm chuản cho tập chọn

Hehe, cảm ơn anh nhé! anh nói em mói biết là thiếu sót, vậy chắc phải thêm 1 thao tác nữa là chọn điểm chuẩn cho đối tượng nữa á anh, thao tác sẽ là thế này: Lệnh CCO -> chọn tập đối tượng -> pick chọn điểm chuẩn -> pick chọn điểm gốc -> pick chọn hướng -> nhập các khoảng cách.

Vậy chắc oke rồi anh hen, giúp em 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
pphung183    425

Hehe, cảm ơn anh nhé! anh nói em mói biết là thiếu sót, vậy chắc phải thêm 1 thao tác nữa là chọn điểm chuẩn cho đối tượng nữa á anh, thao tác sẽ là thế này: Lệnh CCO -> chọn tập đối tượng -> pick chọn điểm chuẩn -> pick chọn điểm gốc -> pick chọn hướng -> nhập các khoảng cách.

Vậy chắc oke rồi anh hen, giúp em nhé!

Ý tưởng của bạn tuy đơn giản nhưng có vẽ khác người đó :blink:

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

Lâu lâu vận động trí óc để tránh Bệnh Alzheimer’s :D :

(defun c:cco (/ oldos css ss p0 p1 p2 a e d)
(defun css (ss p0 p1 a)
((lambda (i / e obj o1 i) (while (setq e (ssname ss (setq i (1+ i))))
(setq obj (vlax-ename->vla-object e)) (setq o1 (vla-copy obj)) 
(if p0 (vla-move o1 (vlax-3d-point p0) (vlax-3d-point p1)))
(vla-move o1 (vlax-3d-point p1) (vlax-3d-point (polar p1 a d))) )) -1) )
(princ "\n Chon doi tuong can copy") (setq ss (ssget) 
p0 (getpoint "\n Chon diem chuan")
p1 (getpoint p0 "\n Chon diem goc") 
p2 (getpoint p1 "\n Chon diem dinh huong copy") 
a (angle p1 p2) e (entlast))
(while (setq d (getdist "\n Nhap khoang cach can copy tiep theo: "))
(css ss p0 p1 a) (setq ss (ssadd))
(while (setq e (entnext e)) (setq ss (ssadd e ss))) 
(setq p0 nil e (entlast)) )
(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
taipham    5

 

Lâu lâu vận động trí óc để tránh Bệnh Alzheimer’s :D :

(defun c:cco (/ oldos css ss p0 p1 p2 a e d)
(defun css (ss p0 p1 a)
((lambda (i / e obj o1 i) (while (setq e (ssname ss (setq i (1+ i))))
(setq obj (vlax-ename->vla-object e)) (setq o1 (vla-copy obj)) 
(if p0 (vla-move o1 (vlax-3d-point p0) (vlax-3d-point p1)))
(vla-move o1 (vlax-3d-point p1) (vlax-3d-point (polar p1 a d))) )) -1) )
(princ "\n Chon doi tuong can copy") (setq ss (ssget) 
p0 (getpoint "\n Chon diem chuan")
p1 (getpoint p0 "\n Chon diem goc") 
p2 (getpoint p1 "\n Chon diem dinh huong copy") 
a (angle p1 p2) e (entlast))
(while (setq d (getdist "\n Nhap khoang cach can copy tiep theo: "))
(css ss p0 p1 a) (setq ss (ssadd))
(while (setq e (entnext e)) (setq ss (ssadd e ss))) 
(setq p0 nil e (entlast)) )
(princ))

Yeah, đúng ý rồi, cảm ơn anh,các anh và Cadviet

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  

×