Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
5 replies to this topic

#1 nmhbg

nmhbg

    Chưa sử dụng CAD

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

Đã gửi 21 May 2009 - 04:41 PM

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
  • 0

#2 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 21 May 2009 - 07:36 PM

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)
)

  • 0

#3 nmhbg

nmhbg

    Chưa sử dụng CAD

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

Đã gửi 25 May 2009 - 04:21 PM

Cảm ơn bạn đã gửi đoạn mã này.
Tôi sẽ áp dụng nó trong công việc sau khi chỉnh sửa chút ít
  • 0

#4 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 10 January 2014 - 11:51 AM

Nhờ các Bác giúp chỉnh sửa lisp khoảng cách thẳng đứng từ 1 điểm để cho ra kết quả như ví dụ sau:http://www.cadviet.c...77310_vi_du.dwg


  • 0

#5 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 11 January 2014 - 10:31 AM

Kính nhờ Bác Bình Và Bác Hà và các bác trên Diễn Đàn giúp Em với. Trân thành cảm ơnn các Bác...


  • -1

#6 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 14 January 2014 - 04:16 PM

Nhờ Anh em trên diễn đàn giúp đỡ mình với....


  • -1