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

[Yêu cầu] Nhờ viết Lisp vẽ đường 3Dpoly

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

Mình có bài toán này muốn nhờ các bạn trên diễn đàn giúp đỡ viết hộ lisp, rất mong được sự giúp đỡ.

Bài toán của mình là vẽ đường 3Dpoly đi qua các điểm p1, p2, p3, ....pn. Điểm p1 biết cao độ (so với 1 điểm gốc), các điểm còn lại đều biết cao độ so với điểm gốc và khoảng cách so với điểm trước đó (khoảng cách tương đối). Nếu vẽ trên cad thì thực hiện lệnh 3dpoly sau đó chọn 1 điểm trên màn hình là điểm p1 sau đó tính toán tọa độ tương đối của điểm p2 so với p1 và tiếp. Như vậy thì phải tính toán rất nhiều và mình muốn thực hiện nó như sau: Thực hiện lệnh vẽ - chọn một điểm bất kỳ trên màn hình - nhập cao độ (cao độ tương đối của điểm đó so với điểm gốc) - nhập khoảng cách giữa điểm p2 và p1 - nhập cao độ tương đối điểm p2 - vẽ đường 3dpoly giữa 2 điểm p1 và p2 - sau đó lại nhập khoảng cách giữa điểm p3 và p2 - nhập cao độ tương đối điểm p3 - vẽ đường 3dpoly giữa 3 điểm p1, p2 và p3 ......quá trình này dừng lại khi không nhập số liệu nữa.

Rất mong được các bạn giúp đỡ!

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ình có bài toán này muốn nhờ các bạn trên diễn đàn giúp đỡ viết hộ lisp, rất mong được sự giúp đỡ.

Bài toán của mình là vẽ đường 3Dpoly đi qua các điểm p1, p2, p3, ....pn. Điểm p1 biết cao độ (so với 1 điểm gốc), các điểm còn lại đều biết cao độ so với điểm gốc và khoảng cách so với điểm trước đó (khoảng cách tương đối). Nếu vẽ trên cad thì thực hiện lệnh 3dpoly sau đó chọn 1 điểm trên màn hình là điểm p1 sau đó tính toán tọa độ tương đối của điểm p2 so với p1 và tiếp. Như vậy thì phải tính toán rất nhiều và mình muốn thực hiện nó như sau: Thực hiện lệnh vẽ - chọn một điểm bất kỳ trên màn hình - nhập cao độ (cao độ tương đối của điểm đó so với điểm gốc) - nhập khoảng cách giữa điểm p2 và p1 - nhập cao độ tương đối điểm p2 - vẽ đường 3dpoly giữa 2 điểm p1 và p2 - sau đó lại nhập khoảng cách giữa điểm p3 và p2 - nhập cao độ tương đối điểm p3 - vẽ đường 3dpoly giữa 3 điểm p1, p2 và p3 ......quá trình này dừng lại khi không nhập số liệu nữa.

Rất mong được các bạn giúp đỡ!

Câu trả lời cho bạn là làm được. Tuy nhiên, y/c của bạn chưa rõ lắm. Bạn cần nói rõ hơn:

1). Chọn điểm bất kỳ trên màn hình là điểm 2D phải không?

2). Cao độ điểm gốc?

3). Điểm P(i+1) cách P(i) một khoảng cách có phải là khoảng cách trong 2D? Hay khoảng cách trong 3D? Như vậy nó sẽ nằm trên mặt cầu hoặc trên đường tròn. Cần phải biết hướng (góc) nữa.

  • Vote tăng 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

Mình có bài toán này muốn nhờ các bạn trên diễn đàn giúp đỡ viết hộ lisp, rất mong được sự giúp đỡ.

Bài toán của mình là vẽ đường 3Dpoly đi qua các điểm p1, p2, p3, ....pn. Điểm p1 biết cao độ (so với 1 điểm gốc), các điểm còn lại đều biết cao độ so với điểm gốc và khoảng cách so với điểm trước đó (khoảng cách tương đối). Nếu vẽ trên cad thì thực hiện lệnh 3dpoly sau đó chọn 1 điểm trên màn hình là điểm p1 sau đó tính toán tọa độ tương đối của điểm p2 so với p1 và tiếp. Như vậy thì phải tính toán rất nhiều và mình muốn thực hiện nó như sau: Thực hiện lệnh vẽ - chọn một điểm bất kỳ trên màn hình - nhập cao độ (cao độ tương đối của điểm đó so với điểm gốc) - nhập khoảng cách giữa điểm p2 và p1 - nhập cao độ tương đối điểm p2 - vẽ đường 3dpoly giữa 2 điểm p1 và p2 - sau đó lại nhập khoảng cách giữa điểm p3 và p2 - nhập cao độ tương đối điểm p3 - vẽ đường 3dpoly giữa 3 điểm p1, p2 và p3 ......quá trình này dừng lại khi không nhập số liệu nữa.

Rất mong được các bạn giúp đỡ!

Hề hề hề,

Bài toán của bạn đưa ra sẽ không có lời giải thỏa đáng được bạn ạ. Bởi vì nếu bạn chỉ cho khoảng cách từ điểm p1 đến p2 và độ chênh cao độ giữa p1 và p2 thì sẽ có vô số điểm p2 thỏa mãn điều kiện này.

Nên chăng bạn hãy suy nghĩ kỹ hơn về vấn đề của bạn để có thể ra được bài toán cụ thể hơn và khả dĩ để có được đáp án bạn nhé.

Theo mình thì có nhẽ không nhất thiết phải nhập tới hai lần (một lần khoảng cách và một lần cao độ như bạn nói ) mà chỉ cần một lần để nhập tọa độ diểm 3d là được. Tuy nhiên vấn đề là cách xác định cái tọa độ diểm 3D này của bạn sao cho phù hợp với yêu cầu.

Nều có thể bạn nên upload cả cái file dữ liệu về điểm 3d của bạn lên bạn nhé.

Chúc bạn vui...

  • Vote tăng 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

hehe, xin lỗi mọi người mình chưa nói rõ ràng lắm. Bài toán này là vẽ hoàn toàn trên 2D và khoảng cách ngang là khoảng cách theo phương X (nằm ngang), cao độ là theo phương Y, còn cao độ của các điểm đều được so với 1 điểm gốc (điểm này không xác định) vì chỉ để xác định cao độ tương đối giữa các điểm thôi.

Mong các bạn giúp đỡ!

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

hehe, xin lỗi mọi người mình chưa nói rõ ràng lắm. Bài toán này là vẽ hoàn toàn trên 2D và khoảng cách ngang là khoảng cách theo phương X (nằm ngang), cao độ là theo phương Y, còn cao độ của các điểm đều được so với 1 điểm gốc (điểm này không xác định) vì chỉ để xác định cao độ tương đối giữa các điểm thôi.

Mong các bạn giúp đỡ!

Ái dà!

"Bài toán của mình là vẽ đường 3Dpoly"

"Bài toán này là vẽ hoàn toàn trên 2D"

Cuối cùng là bạn muốn vẽ 3D Polyline hay LWPolyline?

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

hehe, xin lỗi mọi người mình chưa nói rõ ràng lắm. Bài toán này là vẽ hoàn toàn trên 2D và khoảng cách ngang là khoảng cách theo phương X (nằm ngang), cao độ là theo phương Y, còn cao độ của các điểm đều được so với 1 điểm gốc (điểm này không xác định) vì chỉ để xác định cao độ tương đối giữa các điểm thôi.

Mong các bạn giúp đỡ!

Viết như thế này thì cứ ... xin lỗi hoài hoài nhưng ... chẳng đi tới đâu cả.

 

 

............

Nều có thể bạn nên upload cả cái file dữ liệu về điểm 3d của bạn lên bạn nhé.

Chúc bạn vui...

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

hehe, xin lỗi mọi người mình chưa nói rõ ràng lắm. Bài toán này là vẽ hoàn toàn trên 2D và khoảng cách ngang là khoảng cách theo phương X (nằm ngang), cao độ là theo phương Y, còn cao độ của các điểm đều được so với 1 điểm gốc (điểm này không xác định) vì chỉ để xác định cao độ tương đối giữa các điểm thôi.

Mong các bạn giúp đỡ!

Không vào được MF nhưng cũng nói leo 1 câu ^^

Nghe đề bài của bạn cứ liên tưởng đến trắc ngang trắc dọc bình đồ bình đạc ấy :|

Không hiểu sao toàn bộ thao tác trên 2D, cao độ xác định theo Y, lại phải dùng 3DPoly ?

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

Có lẽ bạn cần cái này chăng?

P/S: bổ sung grdraw lúc 20h ngày 10/01/2012

;Doan Van Ha - CADViet.com - Ngay 10/01/2012
;Muc dich: Ve duong 3DPolyline co z=0 theo diem goc va cac diem xac dinh bang khoang cach (X) + cao do (Y) so voi diem truoc no.
(defun C:HA( / p pg lst i y x)
(setq p (getpoint "\nChon diem goc: ") pg p)
(setq lst (list p))
(setq i 1)
(while
 (and
  (setq y (getreal "\nNhap chenh cao (Y) so voi diem goc: "))
  (setq x (getreal (strcat "\nNhap khoang cach (X) so voi diem thu " (itoa i) ": "))))
 (grdraw p (setq p (list (+ x (car p)) (+ y (cadr pg)))) 3 -1)
 (setq i (1+ i))
 (setq lst (cons p lst)))
(setq lst (reverse lst))
(defun Polyline (lst) (entmakex (list (cons 0 "POLYLINE") (cons 10 '(0 0 0))))
 (mapcar (function (lambda (p) (entmake (list (cons 0 "VERTEX") (cons 10 p))))) lst) (entmakex (list (cons 0 "SEQEND"))))
(redraw)
(Polyline lst)
(princ))

  • Vote tăng 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

Cảm ơn bạn đã viết lisp này, nhưng bạn có thể sửa lại để cao độ Y nhập vào của từng điểm là cao độ tương đối so 1 điểm cố định được không? bạn viết ở đây là cao điểm của điểm sau so với điểm trước.

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

Cảm ơn bạn đã viết lisp này, nhưng bạn có thể sửa lại để cao độ Y nhập vào của từng điểm là cao độ tương đối so 1 điểm cố định được không? bạn viết ở đây là cao điểm của điểm sau so với điểm trước.

Đã sửa cho bạn ở trên (vẫn Link cũ).

  • Vote tăng 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

Cảm ơn bạn Doan Van Ha rất nhiều! Bạn làm được đúng theo ý của mình. Rất chân thành cảm ơn, chúc bạn mọi điều tốt đẹp nhất. Thanks

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  

×