Chuyển đến nội dung
Diễn đàn CADViet
ketxu

[Share] Sắp xếp thẳng hàng

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

 

Bản thân ket nhiều khi muốn sắp xếp các nhóm đối tượng cho ngay ngắn theo hàng lối, thường toàn kẻ Xline để gióng (hoặc kết hợp F11) rồi move. Thật kỳ lạ >"<

Trong khi đoạn code ngắn như thế này giúp tăng tốc bao nhiêu. Ý tưởng của ReachAndre trên Augi

 

P/s : Tự gióng theo khoảng cách gần nhất giữa Delta X và Delta Y nhé ^^

(defun c:xx (/ p pt d xd yd s)
(command "undo" "Mark")
(while (not (setq p (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n :: "))))
(while
	(setq s (ssget))
		(while(not(setq pt (getpoint "\n\U+0110i\U+1EC3m gi\U+00F3ng :" p))))
		(setq 	xd (abs (- (car pt) (car p)))
				yd (abs (- (cadr pt) (cadr p)))
				d	(cond 	((> xd yd)(list (car pt) (cadr p) (caddr pt)))
							((< xd yd)(list (car p) (cadr pt) (caddr pt)))
					)
		)
		(command "_move" s "" "non" pt "non" d)
)
(command "undo" "end")
(princ)
) 

  • Like 1
  • Vote tăng 16

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

 

APPLOAD xx SapXep doituong.lsp successfully loaded.
Command: ; error: malformed list on input

Bị lỗi này đó ketxu

Thêm 1 dấu ngoặc ) vào cuối lisp nữa.

  • 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

Bạn Conghoa ăn ở bất công! Người thêm 1 dấu ngoặc thì được like còn người viết lisp thì không, khiến tôi phải like bù. <_<

  • Vote tăng 4

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

- nhoc thắc mắc ngoài lề xíu ^^, mún dòng nhắc ở các hàm getxxx hiện tiếng Việt phải gõ kiểu mã đó, làm sao mình nhớ hết đc nhỉ ^^, hay mỗi lần làm mình phải tra bảng các anh nhỉ :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

 

Bản thân ket nhiều khi muốn sắp xếp các nhóm đối tượng cho ngay ngắn theo hàng lối, thường toàn kẻ Xline để gióng (hoặc kết hợp F11) rồi move. Thật kỳ lạ >"<

Trong khi đoạn code ngắn như thế này giúp tăng tốc bao nhiêu. Ý tưởng của ReachAndre trên Augi

 

P/s : Tự gióng theo khoảng cách gần nhất giữa Delta X và Delta Y nhé ^^

(defun c:xx (/ p pt d xd yd s)
(command "undo" "Mark")
(while (not (setq p (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n :: "))))
(while
	(setq s (ssget))
		(while(not(setq pt (getpoint "\n\U+0110i\U+1EC3m gi\U+00F3ng :" p))))
		(setq 	xd (abs (- (car pt) (car p)))
				yd (abs (- (cadr pt) (cadr p)))
				d	(cond 	((> xd yd)(list (car pt) (cadr p) (caddr pt)))
							((< xd yd)(list (car p) (cadr pt) (caddr pt)))
					)
		)
		(command "_move" s "" "non" pt "non" d)
)
(command "undo" "end")
(princ)
) 

 

 

li sp này quá hay, giảm được bao nhiêu thời gian mà lại thẳng hàng,trước toàn phải chọn f8 rồi from. like mạnh :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

Bản thân ket nhiều khi muốn sắp xếp các nhóm đối tượng cho ngay ngắn theo hàng lối, thường toàn kẻ Xline để gióng (hoặc kết hợp F11) rồi move. Thật kỳ lạ >"<

Trong khi đoạn code ngắn như thế này giúp tăng tốc bao nhiêu. Ý tưởng của ReachAndre trên Augi

 

P/s : Tự gióng theo khoảng cách gần nhất giữa Delta X và Delta Y nhé ^^

(defun c:xx (/ p pt d xd yd s)
(command "undo" "Mark")
(while (not (setq p (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n :: "))))
(while
	(setq s (ssget))
		(while(not(setq pt (getpoint "\n\U+0110i\U+1EC3m gi\U+00F3ng :" p))))
		(setq 	xd (abs (- (car pt) (car p)))
				yd (abs (- (cadr pt) (cadr p)))
				d	(cond 	((> xd yd)(list (car pt) (cadr p) (caddr pt)))
							((< xd yd)(list (car p) (cadr pt) (caddr pt)))
					)
		)
		(command "_move" s "" "non" pt "non" d)
)
(command "undo" "end")
(princ)
) 

 

 

Bản thân ket nhiều khi muốn sắp xếp các nhóm đối tượng cho ngay ngắn theo hàng lối, thường toàn kẻ Xline để gióng (hoặc kết hợp F11) rồi move. Thật kỳ lạ >"<

Trong khi đoạn code ngắn như thế này giúp tăng tốc bao nhiêu. Ý tưởng của ReachAndre trên Augi

 

P/s : Tự gióng theo khoảng cách gần nhất giữa Delta X và Delta Y nhé ^^

(defun c:xx (/ p pt d xd yd s)
(command "undo" "Mark")
(while (not (setq p (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n :: "))))
(while
	(setq s (ssget))
		(while(not(setq pt (getpoint "\n\U+0110i\U+1EC3m gi\U+00F3ng :" p))))
		(setq 	xd (abs (- (car pt) (car p)))
				yd (abs (- (cadr pt) (cadr p)))
				d	(cond 	((> xd yd)(list (car pt) (cadr p) (caddr pt)))
							((< xd yd)(list (car p) (cadr pt) (caddr pt)))
					)
		)
		(command "_move" s "" "non" pt "non" d)
)
(command "undo" "end")
(princ)
) 

 

 

Bản thân ket nhiều khi muốn sắp xếp các nhóm đối tượng cho ngay ngắn theo hàng lối, thường toàn kẻ Xline để gióng (hoặc kết hợp F11) rồi move. Thật kỳ lạ >"<

Trong khi đoạn code ngắn như thế này giúp tăng tốc bao nhiêu. Ý tưởng của ReachAndre trên Augi

 

P/s : Tự gióng theo khoảng cách gần nhất giữa Delta X và Delta Y nhé ^^

(defun c:xx (/ p pt d xd yd s)
(command "undo" "Mark")
(while (not (setq p (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n :: "))))
(while
	(setq s (ssget))
		(while(not(setq pt (getpoint "\n\U+0110i\U+1EC3m gi\U+00F3ng :" p))))
		(setq 	xd (abs (- (car pt) (car p)))
				yd (abs (- (cadr pt) (cadr p)))
				d	(cond 	((> xd yd)(list (car pt) (cadr p) (caddr pt)))
							((< xd yd)(list (car p) (cadr pt) (caddr pt)))
					)
		)
		(command "_move" s "" "non" pt "non" d)
)
(command "undo" "end")
(princ)
) 

 

Cảm ơn lisp của bạn, bạn có thể thêm phần chọn khoảng cách sắp xếp (X, Y) giữa điểm làm chuẩn và đối tượng cần dóng được không. Ý mình là sau khi chọn điểm chuẩn; chọn đối tượng (nhóm đối tượng) cần dóng; nhập khoảng cách trục X (nếu không cần thì Enter), trục Y (nếu không cần thì Enter) so với điểm chuẩn. Mong bạn hiểu ý mình nó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

làm gì rối thế, có thể làm như sau:

Khi y/cầu nhập điểm chuẩn Bạn chọn chế độ osnap là FROM, sau đó nhập @X,Y là xong

"Điểm chuẩn :: _from Base point: <Offset>: @X,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

Bản thân ket nhiều khi muốn sắp xếp các nhóm đối tượng cho ngay ngắn theo hàng lối, thường toàn kẻ Xline để gióng (hoặc kết hợp F11) rồi move. Thật kỳ lạ >"<

Trong khi đoạn code ngắn như thế này giúp tăng tốc bao nhiêu. Ý tưởng của ReachAndre trên Augi

 

P/s : Tự gióng theo khoảng cách gần nhất giữa Delta X và Delta Y nhé ^^

(defun c:xx (/ p pt d xd yd s)
(command "undo" "Mark")
(while (not (setq p (getpoint "\n\U+0110i\U+1EC3m chu\U+1EA9n :: "))))
(while
	(setq s (ssget))
		(while(not(setq pt (getpoint "\n\U+0110i\U+1EC3m gi\U+00F3ng :" p))))
		(setq 	xd (abs (- (car pt) (car p)))
				yd (abs (- (cadr pt) (cadr p)))
				d	(cond 	((> xd yd)(list (car pt) (cadr p) (caddr pt)))
							((< xd yd)(list (car p) (cadr pt) (caddr pt)))
					)
		)
		(command "_move" s "" "non" pt "non" d)
)
(command "undo" "end")
(princ)
) 

 

anh ketxu ơi lisp hay rồi nhưng em muốn ví dụ sắp xếp nhiều đối tượng một lần được không ? ở video của anh là mỗi lần click anh mới sắp xếp được 1 đối tượng giờ em muốn sắp xếp liền lúc 3 đối tượng theo hàng ngang chẳng hạn . thanks anh 

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

×