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  
hugo75

[Yêu cầu]Lisp move đối tượng theo giá trị cố định?

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

Nhờ các bác viết giùm đoạn lisp:

Đánh lệnh

Chọn đối tượng

Chọn hướng (Nếu đối tượng nằm xiên thì chọn hướng rồi nó sẽ move theo hướng xiên)

enter thì nó sẽ di chuyển đối tượng một khoảng là 50.

Lisp này tương tự lệnh offset nhưng nó sẽ nhanh hơn.Lisp này đã có topic nhưng do diễn đàn bị lỗi nên down về sử dụng không được nên mình tạo topic này nhờ các bác.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

Quá lạm dụng lisp!

Không lạm dụng đâu bác ah.Thí dụ nếu sử dụng offset lần 1 xong rồi ta sử dụng offset cái khác mà giá trị offset khác thì khi muốn offset giá trị lần 1 thì phải nhập lại.Nếu có lisp thì ta thoải mái sử dụng offset và lisp một cách độc lập.Bác thông cảm e cần sử dụng lisp này nhiều nên mạo muội lập topic này bác ah.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

Không lạm dụng đâu bác ah.Thí dụ nếu sử dụng offset lần 1 xong rồi ta sử dụng offset cái khác mà giá trị offset khác thì khi muốn offset giá trị lần 1 thì phải nhập lại.Nếu có lisp thì ta thoải mái sử dụng offset và lisp một cách độc lập.Bác thông cảm e cần sử dụng lisp này nhiều nên mạo muội lập topic này bác ah.Thanks.

Hề hề hề,

Lạm dụng hay không thì chưa rõ , nhưng chỉ nội cái việc bạn trình bày khá khó hiểu đã không thể giúp người viết lisp làm việc rồi.

Việc di chuyển đi một khoảng không khó nhưng theo phương nào lại là một việc không dễ bạn ạ. Cách trình bày của bạn làm cho người đọc có thể hiểu nhầm ý bạn và sẽ đưa tới kết quả chẳng ra gì.

Hy vọng bạn có thể trình bày vấn đề một cách tỷ mỉ và rỏ ràng hơn. Nếu có kèm hình ảnh minh họa thì càng tố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

Nhờ các bác viết giùm đoạn lisp:

Đánh lệnh

Chọn đối tượng

Chọn hướng (Nếu đối tượng nằm xiên thì chọn hướng rồi nó sẽ move theo hướng xiên)

enter thì nó sẽ di chuyển đối tượng một khoảng là 50.

Lisp này tương tự lệnh offset nhưng nó sẽ nhanh hơn.Lisp này đã có topic nhưng do diễn đàn bị lỗi nên down về sử dụng không được nên mình tạo topic này nhờ các bác.Thanks.

 

+ Đối với LINE (XLINE) thì Offset là phép biến hình tương đương Copy và tịnh tiến theo một phương cố định một khoảng cách cố định, trường hợp này thì Offset giống Copy (nếu có kèm thêm xóa đối tượng gốc nữa thì tương đương với Move!!?).

 

+ Đối với đường tròn; đường cung tròn; đường tam giác đều; đường vuông (đường đa giác đều nói chung!), Offset là một phép vị tự (tâm vị tự mặc định tại trọng tâm + tỉ cự (căn cứ từ cự ly nhập vào)), bởi vì Scale theo mọi phương đều như nhau → Đảm bảo sự đồng dạng của đối tượng mới so với đối tượng gốc!

 

+ Đối với các đối tượng khác (còn lại như: đường chữ nhật; đường ô van...) Offset là một phép biến hình đặc biệt, không phải là một phép vị tự, bởi vì nó không đảm bảo được yêu cầu đồng dạng của đối tượng mới so với đối tượng gốc!

 

Yêu cầu của bạn không khó, nhưng bạn nên cân nhắc là không có gì đảm bảo cho bạn: "nhưng nó sẽ nhanh hơn". Nếu thật sự cần thiết, bạn trình bày cụ thể những trường hợp (loại đối tượng mà bạn thao tác) để anh em mần giúp bạn nhé!

  • 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

Ý bạn chủ topic chắc như thế này :

 

(defun c:cpk(/ p pdich ss kcach )
(defun Tue-ss-drag-move (ss p / el lp)
;;;copyright by Tue_NV
(setq el (entlast))
(if (and ss p (vl-cmdf "copy" ss "" "non"  p pause) (null (equal (getvar "lastpoint") p)))
   (setq lp (getvar "lastpoint")) (setq lp nil)
)
            (while (setq el (entnext el)) (entdel el))
lp)
 
  (or *kc* (setq *kc* 100.0))
  (setq ss (ssget))
 
  (setq p (getpoint "\n  Enter nhap khoang cach moi \\ Diem goc : "))
  (if (= p nil) (progn
    (setq kcach (getreal (strcat "\n Nhap khoang cach <" (rtos *kc* 2 2) ">:" )))
    (if kcach (setq *kc* kcach) (setq kcach *kc*))
    (setq p (getpoint "\n Diem goc : "))
  ))
(if (setq pdich (Tue-ss-drag-move ss p   )                   )
    (command "move" ss "" "non" p "non" (polar p (angle p pdich) kcach))
)
  (princ)
  )
(defun c:cpk(/ p pdich )
(defun Tue-ss-drag-move (ss p / el lp)
;;;copyright by Tue_NV
(setq el (entlast))
(if (and ss p (vl-cmdf "copy" ss "" "non"  p pause) (null (equal (getvar "lastpoint") p)))
   (setq lp (getvar "lastpoint")) (setq lp nil)
)
(while (setq el (entnext el)) (entdel el))
lp)
 
  (or *kc* (setq *kc* 100.0))
  (setq ss (ssget))
  
  (setq p (getpoint "\n  Enter nhap khoang cach moi \\ Diem goc : "))
  (if (= p nil) (progn
    (setq kcach (getreal (strcat "\n Nhap khoang cach <" (rtos *kc* 2 2) ">:" )))
    (if kcach (setq *kc* kcach) (setq kcach *kc*))
    (setq p (getpoint "\n Diem goc : ")) 
  ))
(if (setq pdich (Tue-ss-drag-move ss p   ) )
    (command "move" ss "" "non" p "non" (polar p (angle p pdich) kcach)) 
)
;;;  (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

 

Ý bạn chủ topic chắc như thế này :

 

(defun c:cpk(/ p pdich ss kcach )
(defun Tue-ss-drag-move (ss p / el lp)
;;;copyright by Tue_NV
(setq el (entlast))
(if (and ss p (vl-cmdf "copy" ss "" "non"  p pause) (null (equal (getvar "lastpoint") p)))
   (setq lp (getvar "lastpoint")) (setq lp nil)
)
            (while (setq el (entnext el)) (entdel el))
lp)
 
  (or *kc* (setq *kc* 100.0))
  (setq ss (ssget))
 
  (setq p (getpoint "\n  Enter nhap khoang cach moi \\ Diem goc : "))
  (if (= p nil) (progn
    (setq kcach (getreal (strcat "\n Nhap khoang cach <" (rtos *kc* 2 2) ">:" )))
    (if kcach (setq *kc* kcach) (setq kcach *kc*))
    (setq p (getpoint "\n Diem goc : "))
  ))
(if (setq pdich (Tue-ss-drag-move ss p   )                   )
    (command "move" ss "" "non" p "non" (polar p (angle p pdich) kcach))
)
  (princ)
  )
(defun c:cpk(/ p pdich )
(defun Tue-ss-drag-move (ss p / el lp)
;;;copyright by Tue_NV
(setq el (entlast))
(if (and ss p (vl-cmdf "copy" ss "" "non"  p pause) (null (equal (getvar "lastpoint") p)))
   (setq lp (getvar "lastpoint")) (setq lp nil)
)
(while (setq el (entnext el)) (entdel el))
lp)
 
  (or *kc* (setq *kc* 100.0))
  (setq ss (ssget))
  
  (setq p (getpoint "\n  Enter nhap khoang cach moi \\ Diem goc : "))
  (if (= p nil) (progn
    (setq kcach (getreal (strcat "\n Nhap khoang cach <" (rtos *kc* 2 2) ">:" )))
    (if kcach (setq *kc* kcach) (setq kcach *kc*))
    (setq p (getpoint "\n Diem goc : ")) 
  ))
(if (setq pdich (Tue-ss-drag-move ss p   ) )
    (command "move" ss "" "non" p "non" (polar p (angle p pdich) kcach)) 
)
;;;  (princ)
  )

không phải vậy bác ah.khoảng cần move là 50 định sẵn.

Đánh lệnh.

Chọn đối tượng.

Pick chọn hướng (Hướng là có thể qua trái, phải,lên,xuống.Nếu đối tượng nằm xiên thì cũng có hướng là qua trái,phải,lên,xuống nhưng theo hướng xiên của đối tượng.)

Mong bác sửa giúp.

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

Đọc đề này vài lần tẩu hỏa nhập ma luôn. Không thể hiểu chủ topic muốn gì? Move? Offset?

 

Xin lỗi các bác là chưa nói rõ,ý mình move giống offset là khi chọn chức năng xoá đối tượng sau khi offset đấy.Ý mình là move giống offset ở chỗ ấy.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

Xin lỗi các bác là chưa nói rõ,ý mình move giống offset là khi chọn chức năng xoá đối tượng sau khi offset đấy.Ý mình là move giống offset ở chỗ ấy.Thanks.

Bà con có ai hiểu đề toán này không thì chỉ cho tôi 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

Bà con có ai hiểu đề toán này không thì chỉ cho tôi với?

Có 1 đối tượng bác dùng lệnh move nó đí về phía dưới 500 và cũng là đối tượng đó bác dùng lệnh offset (có dòng hỏi xoá hay không xoá đối tượng sau khi offset) nó về phía dưới 500.Vậy Move và Offset mình nói nó giống nhau được không 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

Có 1 đối tượng bác dùng lệnh move nó đí về phía dưới 500 và cũng là đối tượng đó bác dùng lệnh offset (có dòng hỏi xoá hay không xoá đối tượng sau khi offset) nó về phía dưới 500.Vậy Move và Offset mình nói nó giống nhau được không bác?

Bạn cứ move 1 Circle và offset 1 Circle (rồi xóa Circle cũ đi) thì sẽ thấy nó giống nhau đến cỡ nào, chứ tôi chịu.

  • 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

Bạn cứ move 1 Circle và offset 1 Circle (rồi xóa Circle cũ đi) thì sẽ thấy nó giống nhau đến cỡ nào, chứ tôi chịu.

Cái này thì bác đúng.Mình chưa sử dụng cho Circle nên chưa biết.Vậy move thôi không viện dẫn tới offset nữa.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

Không biết bạn Hugo này có cưỡi đà điểu không nhỉ? Người ta đã phân biệt cho bạn các trường hợp cụ thể rồi, bạn lên diễn đàn đặt câu hỏi mà chẳng cần quan tâm gì câu trả lời --> làm cho những người trả lời bạn vô tình trở thành "nạn nhân"?!

 

+ Đối với LINE (XLINE) thì Offset là phép biến hình tương đương Copy và tịnh tiến theo một phương cố định một khoảng cách cố định, trường hợp này thì Offset giống Copy (nếu có kèm thêm xóa đối tượng gốc nữa thì tương đương với Move!!?).
 
+ Đối với đường tròn; đường cung tròn; đường tam giác đều; đường vuông (đường đa giác đều nói chung!), Offset là một phép vị tự (tâm vị tự mặc định tại trọng tâm + tỉ cự (căn cứ từ cự ly nhập vào)), bởi vì Scale theo mọi phương đều như nhau → Đảm bảo sự đồng dạng của đối tượng mới so với đối tượng gốc!
 
+ Đối với các đối tượng khác (còn lại như: đường chữ nhật; đường ô van...) Offset là một phép biến hình đặc biệt, không phải là một phép vị tự, bởi vì nó không đảm bảo được yêu cầu đồng dạng của đối tượng mới so với đối tượng gốc!

  • 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

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  

×