Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
11 replies to this topic

#1 real29

real29

    biết pan

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

Đã gửi 10 January 2012 - 09:33 AM

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 đỡ!
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 January 2012 - 09:51 AM

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.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 10 January 2012 - 10:01 AM

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...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 real29

real29

    biết pan

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

Đã gửi 10 January 2012 - 12:09 PM

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 đỡ!
  • 0

#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 January 2012 - 12:20 PM

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

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#6 real29

real29

    biết pan

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

Đã gửi 10 January 2012 - 12:24 PM

bài toán này mình vẽ đường 3Dpoly (lệnh 3p) vì mình vẽ trên 2D. Không phải vẽ Polyline. Mình có gửi 1 file Cad minh họa, các bạn down về xem có gì giúp mình với http://www.mediafire...ll1vkmm1blyejou
  • 0

#7 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1433 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 10 January 2012 - 12:29 PM

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


  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 10 January 2012 - 12:54 PM

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

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 January 2012 - 01:42 PM

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

  • 2

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#10 real29

real29

    biết pan

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

Đã gửi 10 January 2012 - 01:59 PM

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

#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 January 2012 - 02:52 PM

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ũ).
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#12 real29

real29

    biết pan

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

Đã gửi 10 January 2012 - 03:37 PM

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