Đến nội dung


Hình ảnh
- - - - -

Lisp đưa đối tượng về vị trí cũ sau khi move?


  • Please log in to reply
41 replies to this topic

#41 study_forever

study_forever

    biết vẽ line

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

Đã gửi 02 November 2009 - 08:09 PM

Nếu có thể anh Tuệ có thể giúp em viết cái lisp để copy những đối tượng mà copy sót (như với move sót ấy ạ), em xin cảm ơn anh :D

Bác Tuệ đã giúp thì giúp cho trót trét, giúp cả cái lisp "để copy những đối tượng mà copy sót" và giúp luôn cái lisp "để stretch những đối tượng mà stretch sót" nữa. Xin vô cùng cảm ơn bác :tongue2:
  • 0

#42 huaductiep

huaductiep

    biết vẽ rectang

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

Đã gửi 20 October 2013 - 08:14 AM

Bài viết của các bác rất hay, nhưng lisp của bác em làm theo mãi mà ko làm dc?
Em load lisp rồi ấn lệnh M thì move dc, nhưng khi UM hay MSOT đều ko Unknown Command. Các bác có thể chỉ kĩ hơn giúp em được ko ah?

 

Chào 'study_forever'
Đây là Lisp MSOT -> Move các đối tượng còn sót lại (chưa MOVE cùng với đối tượng trước đó)
Tue_NV bổ sung vào Lisp nhé :
1. Lệnh M : move các đối tượng của bản vẽ : giống lệnh M (Move) của CAD như 2 giọt nước
2. Lệnh UM (Unmove) : đưa các đối tượng Move nhầm về vị trí cũ
3 . Lệnh MSOT : Move các đối tượng còn sót lại (chưa MOVE cùng với đối tượng trước đó)
Các bạn hãy sử dụng thử và cho mình biết ý kiến nhé :


(defun c:m()(setq ss (ssget))(command "line" '(0 0 0) '(1 1 1) "")(setq ss (ssadd (entlast) ss))(command "move" ss "")(while (< 0 (getvar "CMDACTIVE")) (command pause))(setq dc (cdr(assoc 10 (entget (entlast)))))(setq ss (ssdel (entlast) ss))(entdel (entlast))(setq kc (distance '(0 0 0) dc))(setq ang (angle dc '(0 0 0) ))(princ));(defun c:um(/ ssg po lis)(prompt "\n Chon doi tuong Move nham :")(setq ssg (ssget) i 0 j 0)(while (< i (sslength ss))(setq lis (append lis (list (ssname ss i))))(setq i (1+ i)))(while (< j (sslength ssg))(if (/= (member (ssname ssg j) lis) nil) (progn   (setq ss (ssdel (ssname ssg j) ss))   (setq po (polar '(0 0 0) ang kc))   (setq ssg (ssadd (ssname ssg j) ssg)))(princ "\n Doi tuong chon khong phai Move nham"))(setq j (1+ j)))(command "move" ssg "" '(0 0 0) po)(princ));(defun c:msot(/ ssg po lis)(prompt "\n Chon doi tuong Move sot :")(setq ssg (ssget) i 0 j 0)(while (< i (sslength ss))(setq lis (append lis (list (ssname ss i))))(setq i (1+ i)))(while (< j (sslength ssg))(if (= (member (ssname ssg j) lis) nil) (progn   (setq po (polar '(0 0 0) (+ pi ang) kc))   (setq ssg (ssadd (ssname ssg j) ssg)))(princ "\n Doi tuong chon da Move roi"))(setq j (1+ j)))(command "move" ssg "" '(0 0 0) po)(princ))

@study : Với yêu cầu 2 thì Tue_NV yêu cầu bạn post bài đúng chổ. Đây là bài viết về Move chứ không phải bài viết về copy. Mong bạn hiểu. Bạn post đoạn code trên ở chổ nào thì trả về đúng chổ cũ của nó. Mình sẽ trả lời bạn nếu bạn post bài đúng chổ. Bạn đồng ý chứ?
Hãy edit lại bài viết trên của bạn và trả về vị trí của nó


  • 0