Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
Nguyễn Cảnh Thạch

Xin Lisp đo kích thước từ các điểm đỉnh polyline vuông góc với 1 đối tượng cho trước

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

Xin các cao nhân giúp đỡ.!!

Em có 2 đối tượng ( đối tượng 1 là đường polyline , đối tượng 2 là đường tròn hoặc các đường line khác) . em muốn lisp pick vào đường polyline ( đối tượng 1 ) thì sẽ tự động đo kích thước từ các điểm đỉnh đối tượng 1 vuông góc tới đối tượng 2 . ( xem hình) 

Xin cảm ơn

picture1.png

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
1 giờ} trướ}c, Nguyễn Cảnh Thạch đã nói:

Xin các cao nhân giúp đỡ.!!

Em có 2 đối tượng ( đối tượng 1 là đường polyline , đối tượng 2 là đường tròn hoặc các đường line khác) . em muốn lisp pick vào đường polyline ( đối tượng 1 ) thì sẽ tự động đo kích thước từ các điểm đỉnh đối tượng 1 vuông góc tới đối tượng 2 . ( xem hình) 

Xin cảm ơn

picture1.png

Tham khảo cái này bạn nhé

Hoàn công hầm Thủy Điện - YouTube https://www.youtube.com/watch?v=cqF1wPnJNfw

  • 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

Quick code cho bạn, từ cái này bạn phát triển hay sửa lỗi j thì mần :)
 

(defun c:foo(/ _massoc e1 e2 p)
;Free from CADViet @ketxu
(command "undo" "be")
(defun _massoc (id eData / x l)
	(foreach x eData
		(if (eq id (car x))
			(setq l (cons (cdr x) l))
		)
	)
(reverse l)
)
(if 
	(and 
		(setq e1 (entsel "\nObject 1:"))
		(wcmatch  (cdr (assoc 0 (entget (setq e1 (car e1))))) "LINE,LWPOLYLINE")
		(setq e2 (entsel "\nObject 2:"))
		(wcmatch (cdr (assoc 0 (entget (setq e2 (car e2))))) "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE,SPLINE")
	)
	(progn 
		(setq l (_massoc 10 (entget e1)))
		(mapcar 
			'(lambda(x)
				(if (setq p (vlax-curve-getclosestpointto e2 x))
					(command "dimaligned" "non" p "non" x (polar p (- (angle p x) (* pi 0.5)) 1))
				)
			)
			l
		)
	)
)
(command "undo" "end")
(princ)
)

 

  • Like 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
1 giờ} trướ}c, ketxu đã nói:

Quick code cho bạn, từ cái này bạn phát triển hay sửa lỗi j thì mần :)
 


(defun c:foo(/ _massoc e1 e2 p)
;Free from CADViet @ketxu
(command "undo" "be")
(defun _massoc (id eData / x l)
	(foreach x eData
		(if (eq id (car x))
			(setq l (cons (cdr x) l))
		)
	)
(reverse l)
)
(if 
	(and 
		(setq e1 (entsel "\nObject 1:"))
		(wcmatch  (cdr (assoc 0 (entget (setq e1 (car e1))))) "LINE,LWPOLYLINE")
		(setq e2 (entsel "\nObject 2:"))
		(wcmatch (cdr (assoc 0 (entget (setq e2 (car e2))))) "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE,SPLINE")
	)
	(progn 
		(setq l (_massoc 10 (entget e1)))
		(mapcar 
			'(lambda(x)
				(if (setq p (vlax-curve-getclosestpointto e2 x))
					(command "dimaligned" "non" p "non" x (polar p (- (angle p x) (* pi 0.5)) 1))
				)
			)
			l
		)
	)
)
(command "undo" "end")
(princ)
)

 

Cảm ơn Mr ketxu nhiều nhé ! 

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
5 giờ trước, Nguyễn Cảnh Thạch đã nói:

Cảm ơn Mr ketxu nhiều nhé ! 

You're welcome. Nếu cần xịn hơn hãy tham khảo gợi ý của bác @huunhantvxdts nhé, vì nó còn giải quyết nhiều bài toán hơn !

  • 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

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  

×