Đến nội dung


Hình ảnh
- - - - -

Vẽ đường thẳng vuông góc với 1 spline cho trước


  • Please log in to reply
5 replies to this topic

#1 haimed

haimed

    biết vẽ circle

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

Đã gửi 05 January 2009 - 09:12 AM

Bác nào giúp mình đoạn lisp này với: có 1 đường spline cho trc, từ các điểm cho trước nằm ngoài đường spline kẻ các đường thẳng vuông góc với đường spline đó. Thanks các bạn đã quan tâm
  • 0

#2 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 06 January 2009 - 04:13 PM

Bác nào giúp mình đoạn lisp này với: có 1 đường spline cho trc, từ các điểm cho trước nằm ngoài đường spline kẻ các đường thẳng vuông góc với đường spline đó. Thanks các bạn đã quan tâm

Là "dân lập trình", bạn nên phát biểu chính xác vấn đề. Đường spline cho trước thì OK, nhưng các điểm cho trước nó mơ hồ lắm! Nếu nói rằng "các đối tượng point cho trước" thì chuẩn hơn, nhưng không chắc là đúng ý bạn!
Trong trường hợp tổng quát, bạn thử dùng hàm LPP2C sau:

(defun LPP2C (p1 c / p2);;;Line from Point p1 Perpendicular To Curve c
(vl-load-com)
(setq p2 (vlax-curve-getClosestPointTo c p1 T))
(entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
)

Trong đó:
p1: một list biểu diễn điểm
c: curve, một "đối tượng đường cong" bất kỳ, nghĩa là bao hàm cả line, polyline, spline, circle, arc, ellipse

Nếu bạn thay:
(vlax-curve-getClosestPointTo c p1 T)
bằng:
(vlax-curve-getClosestPointTo c p1 nil)
hoặc:
(vlax-curve-getClosestPointTo c p1)
Kết quả có khác một chút.
Hãy thử và tự chiêm nghiệm kết quả!
  • 0

#3 haimed

haimed

    biết vẽ circle

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

Đã gửi 08 January 2009 - 09:20 AM

Là "dân lập trình", bạn nên phát biểu chính xác vấn đề. Đường spline cho trước thì OK, nhưng các điểm cho trước nó mơ hồ lắm! Nếu nói rằng "các đối tượng point cho trước" thì chuẩn hơn, nhưng không chắc là đúng ý bạn!
Trong trường hợp tổng quát, bạn thử dùng hàm LPP2C sau:

(defun LPP2C (p1 c / p2);;;Line from Point p1 Perpendicular To Curve c
(vl-load-com)
(setq p2 (vlax-curve-getClosestPointTo c p1 T))
(entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
)

Trong đó:
p1: một list biểu diễn điểm
c: curve, một "đối tượng đường cong" bất kỳ, nghĩa là bao hàm cả line, polyline, spline, circle, arc, ellipse

Nếu bạn thay:
(vlax-curve-getClosestPointTo c p1 T)
bằng:
(vlax-curve-getClosestPointTo c p1 nil)
hoặc:
(vlax-curve-getClosestPointTo c p1)
Kết quả có khác một chút.
Hãy thử và tự chiêm nghiệm kết quả!

Thanks ssg, mình đã làm thử nhưng hàm đó chỉ đúng cho line, arc, polyline hay cirle còn đối với spline nó toàn trả về điểm đầu tiên của spline chứ ko phải điểm nearest point, bạn xem lại thử hộ mình coi
  • 0

#4 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 08 January 2009 - 11:00 AM

Thanks ssg, mình đã làm thử nhưng hàm đó chỉ đúng cho line, arc, polyline hay cirle còn đối với spline nó toàn trả về điểm đầu tiên của spline chứ ko phải điểm nearest point, bạn xem lại thử hộ mình coi

Ssg đã dùng (vlax-curve-getClosestPointTo c p1 T) trong rất nhiều chương trình, đã được kiểm nghiệm nhiều lần qua thực tế sử dụng, chưa bao giờ gặp phải tình trạng như bạn nói. Hay là bạn chưa thiết lập (setvar "osmode" 0) khi gọi command?
  • 1

#5 haimed

haimed

    biết vẽ circle

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

Đã gửi 09 January 2009 - 09:26 AM

Ssg đã dùng (vlax-curve-getClosestPointTo c p1 T) trong rất nhiều chương trình, đã được kiểm nghiệm nhiều lần qua thực tế sử dụng, chưa bao giờ gặp phải tình trạng như bạn nói. Hay là bạn chưa thiết lập (setvar "osmode" 0) khi gọi command?

Thanks ssg, mình đã thử lại đc. Mình mới học lisp nên chưa biết nhiều về các hàm trong lisp, những thắc mắc thế này bạn có thể hướng dẫn mình sử dụng hàm nào là đc chứ ko cần viết cụ thể, như thế chắc đỡ mất thời gian của bạn hơn. Thanks nhiều
  • 0

#6 vuongsurvey

vuongsurvey

    Chưa sử dụng CAD

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

Đã gửi 21 May 2015 - 05:49 PM

Em học hoài mà vẫn dốt lisp :D , toàn đi mót của thiên hạ về phục vụ công việc bản thân chứ không có khả năng viết giúp người  khác được . Nay đi mót được của Người ngoại quốc về dùng chẳng may vẫn gặp chút trắc trở :( , đối với SPL1 màu tím (cần dùng) đã qua nhiều lisp tự động tạo ra và convert phẳng thì không chạy lisp được, còn SPL2 màu vàng vẽ thủ công thì chạy lisp phà phà....

 

http://www.cadviet.c...oc_spline_1.dwg

Lisp tự  động vẽ đường vuông với với spline tại mỗi node của spline

 Vậy em mạo muội post lên diễn đàn (có gì sai sót với nội quy diễn đàn xin bỏ qua) nhờ các Bác có hảo tâm giúp đỡ chỉnh sửa để em dùng lisp này chạy với SPL1(màu tím) và nếu có thể chỉ em cách thay độ dài Xline ...em xin cám ơn  :D và chúc diễn đàn luôn phát triển

http://www.cadviet.c...nggoc_spl_1.lsp


  • 0