Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
14 replies to this topic

#1 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 15 July 2013 - 07:37 PM

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.


  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 15 July 2013 - 09:18 PM

Quá lạm dụng lisp!


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 16 July 2013 - 06:23 AM

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.


  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 16 July 2013 - 10:22 AM

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


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 16 July 2013 - 10:26 AM

Tiêu đề thì MOVE đối tượng. Còn nội dung thì OFFSET.

Bác này chưa thấy khác biệt giữa Move và Offset


  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#6 lyky

lyky

    biết vẽ polygon

  • Members
  • PipPip
  • 70 Bài viết
Điểm đánh giá: 126 (tàm tạm)

Đã gửi 16 July 2013 - 11:05 AM

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é!


  • 2

22665_13x13progress.gif   22665_lyky.gif   22665_13x13progress.gif


#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 16 July 2013 - 12:45 PM

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

  • 1

#8 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 16 July 2013 - 01:35 PM

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


  • 0

#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 16 July 2013 - 03:49 PM

Đọ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?


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#10 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 16 July 2013 - 04:51 PM

Đọ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.


  • 0

#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 16 July 2013 - 06:29 PM

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?


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#12 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 16 July 2013 - 06:35 PM

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?


  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 16 July 2013 - 07:09 PM

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.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 16 July 2013 - 07:16 PM

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.


  • 0

#15 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 17 July 2013 - 01:38 AM

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!


  • 2