Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
tinctvn99

"góc nhờ vả" líp dồn viewport

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

Do công việc em hay phải clip một viewport ra thành nhìu view port nhỏ rồi move sát lại với nhau nên rất tốn thời gian.

Em đã tìm khắp các diễn đàn nhưng ko có bài nào đáp ứng được nhu cầu của em là dồn các viewport lại sát nhau như hình dưới

Anh chị trong diễn đàn nếu biết có thể chỉ em líp  nào có công dụng tương tự không ạ.

Hoặc nếu hiện tại không có lisp nào làm được hy vọng mọi người có thể giúp em tạo một líp như thế được không ạ.

Em xin trân trọng cám ơn anh chị nào đã xem qua bài viết!.

Em có đính kèm file cad kèm theo bên dưới luôn ạ. thanks mọi người...

Capture.JPG

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

Mì ăn liền ^^

(defun c:DON( / lst_va old view_lay ss lst_ss lst1 lst2 first_elem base_pt)
(setq lst_va '("osmode" "cmdecho"))
(setq old (mapcar 'getvar lst_va))
(mapcar 'setvar lst_va '(0 0))
(setq view_lay (entsel "\n Pick chon viewport mau: "))
(prompt "\n Chon viewports !")
;(setq ss (ssget (list (cons 0 "VIEWPORT"))))
(setq ss (ssget (list (cons 0 "LWPOLYLINE") (assoc 8 (entget (car view_lay))))))
(if ss
	(progn
		(setq lst_ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
			  lst1 (mapcar '(lambda (x) (cons x (H:Getboundary x))) lst_ss)
			  lst1 (vl-sort lst1 '(lambda(x y) (< (car (cadr x)) (car (cadr y)))))
			  first_elem (car lst1)
			  lst2 (cdr lst1)
			  )
			(setq base_pt (list (car (last first_elem)) (cadr (cadr first_elem))))
		(foreach elem lst2
			(command ".move" (car elem) "" (cadr elem) base_pt)
			(setq base_pt (list (+ (car base_pt) (- (car (last elem)) (car (cadr elem)))) (cadr base_pt)))
		)
	)
)
;;xong tra ve:
(mapcar 'setvar lst_va old)
(princ)
)
;------------------------------------------------------------------------
(defun H:Getboundary (ent / dt tp)
(vla-getboundingbox (vlax-ename->vla-object ent) 'dt 'tp)
(mapcar 'vlax-safearray->list (list dt tp))
)
;-------------------------------------------------------------------------------
(defun c:DDON( / lst_va old view_lay ss lst_ss lst1 lst2 first_elem base_pt)
(setq lst_va '("osmode" "cmdecho"))
(setq old (mapcar 'getvar lst_va))
(mapcar 'setvar lst_va '(0 0))
(setq view_lay (entsel "\n Pick chon viewport mau: "))
(prompt "\n Chon viewports !")
;(setq ss (ssget (list (cons 0 "VIEWPORT"))))
(setq ss (ssget (list (cons 0 "LWPOLYLINE") (assoc 8 (entget (car view_lay))))))
(if ss
	(progn
		(setq lst_ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
			  lst1 (mapcar '(lambda (x) (cons x (H:Getboundary x))) lst_ss)
			  lst1 (vl-sort lst1 '(lambda(x y) (< (cadr (cadr x)) (cadr (cadr y)))))
			  first_elem (car lst1)
			  lst2 (cdr lst1)
			  )
			(setq base_pt (last first_elem))
		(foreach elem lst2
			(command ".move" (car elem) "" (list (car (last elem)) (cadr (cadr elem))) base_pt)
			(setq base_pt (list (car base_pt) (+ (cadr base_pt) (- (cadr (last elem)) (cadr (cadr elem))))))
		)
	)
)
;;xong tra ve:
(mapcar 'setvar lst_va old)
(princ)
)

 

  • Like 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ác ơi có thể

2 hours ago, hiepttr said:

Mì ăn liền ^^


(defun c:DON( / lst_va old view_lay ss lst_ss lst1 lst2 first_elem base_pt)
(setq lst_va '("osmode" "cmdecho"))
(setq old (mapcar 'getvar lst_va))
(mapcar 'setvar lst_va '(0 0))
(setq view_lay (entsel "\n Pick chon viewport mau: "))
(prompt "\n Chon viewports !")
;(setq ss (ssget (list (cons 0 "VIEWPORT"))))
(setq ss (ssget (list (cons 0 "LWPOLYLINE") (assoc 8 (entget (car view_lay))))))
(if ss
	(progn
		(setq lst_ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
			  lst1 (mapcar '(lambda (x) (cons x (H:Getboundary x))) lst_ss)
			  lst1 (vl-sort lst1 '(lambda(x y) (< (car (cadr x)) (car (cadr y)))))
			  first_elem (car lst1)
			  lst2 (cdr lst1)
			  )
			(setq base_pt (list (car (last first_elem)) (cadr (cadr first_elem))))
		(foreach elem lst2
			(command ".move" (car elem) "" (cadr elem) base_pt)
			(setq base_pt (list (+ (car base_pt) (- (car (last elem)) (car (cadr elem)))) (cadr base_pt)))
		)
	)
)
;;xong tra ve:
(mapcar 'setvar lst_va old)
(princ)
)
;------------------------------------------------------------------------
(defun H:Getboundary (ent / dt tp)
(vla-getboundingbox (vlax-ename->vla-object ent) 'dt 'tp)
(mapcar 'vlax-safearray->list (list dt tp))
)

 

bác ơi bác có thể làm cho nó dồn theo phương đứng được ko ạ. :)

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
55 phút trước, tinctvn99 đã nói:

bác ơi có thể

bác ơi bác có thể làm cho nó dồn theo phương đứng được ko ạ. :)

Đã update ở link cũ: DON = dồn ngang; DDON = dồn đứng

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  

×