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

Khoảng cách thẳng đứng từ 1 điểm đến polyline

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

Tôi đã viết được lisp tính khoảng cách thẳng đứng từ 1 điểm (bấm chọn) đến polyline để tính toán trong thiết kế độ võng cho dây dẫn điện. Thuật toán như sau:

- bấm chọn điểm

- Chọn đường cong độ võng (polyline)

- Vẽ đường thẳng tạm rất ngắn, sau đó extend đến đường cong độ võng

- Tính độ dài đoạn thẳng vừa extend sau đó lấy toạ độ điểm giao rồi xoá nó

- Ghi kích thước lên bản vẽ

Tuy nhiên chương trình chạy có nhiều khi bị lối. Đề nghị các cao thủ cho tôi mã lisp hoàn chỉnh, chuyên nghiệp để làm việc trên

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ôi đã viết được lisp tính khoảng cách thẳng đứng từ 1 điểm (bấm chọn) đến polyline để tính toán trong thiết kế độ võng cho dây dẫn điện. Thuật toán như sau:

- bấm chọn điểm

- Chọn đường cong độ võng (polyline)

- Vẽ đường thẳng tạm rất ngắn, sau đó extend đến đường cong độ võng

- Tính độ dài đoạn thẳng vừa extend sau đó lấy toạ độ điểm giao rồi xoá nó

- Ghi kích thước lên bản vẽ

Tuy nhiên chương trình chạy có nhiều khi bị lối. Đề nghị các cao thủ cho tôi mã lisp hoàn chỉnh, chuyên nghiệp để làm việc trên

 

Chưa hiểu bạn muốn ghi kích thước kiểu gì nhưng mình cũng làm lisp này.

Chú ý điểm chọn thì phải nằm trong khoảng giới hạn bởi

hai đầu pline (theo phương đứng).

 

(defun ints (o1 o2 / obj1 obj2 li a1)
  (setq obj1 (vlax-EName->vla-Object o1)
 	 obj2 (vlax-EName->vla-Object o2)
	 l (vlax-Invoke obj1 "IntersectWith" obj2 acExtendThisEntity)
 l0 nil)
 (if l
(while l
 (setq l0 (append l0 (list (list (car l) (cadr l) (caddr l)))))
 (repeat 3 (setq l (cdr l))))  
  )		 
 l0
)

(defun c:dv()
 (setq d1 (getpoint "Chon diem:")
ent1 (car (entsel "\nChon duong cong:")))
 (entmake (list '(0 . "LINE") (cons 10 d1) (cons 11 (polar d1 (* 0.5 pi) -1))))
 (setq ent2 (entlast)
os (getvar "OSMODE"))
 (setvar "OSMODE" 0)
 (if (setq l (ints ent2 ent1))			 
  (command "TEXT" (car l) "" "" (rtos (distance d1 (car l))))
 )
 (entdel ent2) 
 (setvar "OSMODE" os)
)

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  

×