Đến nội dung


Hình ảnh
- - - - -

nội suy cao độ đường cong


  • Please log in to reply
62 replies to this topic

#1 amateurday

amateurday

    biết lệnh break

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

Đã gửi 16 May 2011 - 10:13 PM

các bác cho em nhờ viết hộ em cái lisp này được không. em đã tìm rồi, được lisp đường thẳng, nhưng em đang cần cái này. các bác giúp em nhé.
Hình đã gửi
  • 0

#2 pdle

pdle

    biết lệnh mtext

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

Đã gửi 17 May 2011 - 02:09 AM

Mình không hiểu ý bạn lắm:

1. Cho một đường cong, sau đó phải tìm tọa độ tại các điểm nằm trên đường cong đó ?
hay là
2. Cho một số bộ điểm (X và Y). Vẽ một đường cong đi qua tất cả các điểm có tọa độ như bộ điểm ?
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#3 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 05:57 AM

Sorry các bác. những số đó là cao độ các bác à. Ý em là có cao độ điểm đầu cuối. Em muốn nội suy cao độ nằm giữa chúng. đường nội suy có thể là l, pl, spl.
  • 0

#4 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 10:13 AM

các bác giúp em tí đi, em đang cần gấp lắm ạ
  • 0

#5 pdle

pdle

    biết lệnh mtext

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

Đã gửi 17 May 2011 - 11:03 AM

các bác giúp em tí đi, em đang cần gấp lắm ạ

Chỉ mỗi điều kiện điểm đầu điểm cuối thôi sao, điều kiện lỏng lẻo thế thì bài toán có quá nhiều lời giải, và đường nào sẽ là chính xác nhất đây :S
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#6 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 11:40 AM

có cao độ đầu cuối rồi, có chiều dài chính là đường polyline mình chọn, nội suy ra các điểm giữa của 2 điểm thôi. em nghĩ chắc chỉ có 1 lời giải thôi, nội suy tuyến tính chứ không phải phi tuyến
  • 0

#7 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 11:42 AM

em tìm hết google rồi cadviet mà không có, các bác giúp em tí đi
  • 0

#8 pdle

pdle

    biết lệnh mtext

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

Đã gửi 17 May 2011 - 12:20 PM

Phải chăng ý bác là:
Cho hai điểm A và B, hãy dựng một spline từ A tới B và có độ dài cho trước là L ?
  • 0
Share your knowledge. It is a way to achieve immortality !

***

PS: Nếu bài viết của mình có ích, xin hãy "Bình chọn cho bài viết này" nhé :D

#9 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 May 2011 - 12:25 PM

em tìm hết google rồi cadviet mà không có, các bác giúp em tí đi

Hề hề hề,
Trước hết phải nói thật rằng bạn ra đề đánh đố thí sinh quá đấy. Nội suy thì phải có nguyên tắc nội suy chứ. Vặn vẹo một hồi thì bạn nói là nội suy tuyến tính, nhưng tuyến tính theo kiểu gì thì vẫn cứ là chửa biết.
Có rất nhiều cách hiểu cái khái niệm tuyến tinh của bạn. Chả biết bạn chọn kiểu nào song mình cứ giả vờ là mình hiểu thì phải chăng bạn muốn nói đến việc tuyến tính theo độ dài của đường pl đó???
Nghĩa là Giả sử có điểm C nằm đâu đó trên pl trong khoảng giữa hai diểm A,B đã biết cao độ thì cao độ tại C sẽ là:
cao độ tại A + [(độ dài pl AC / đô dài pl AB) * (cao độ tại B - cao độ tại A)]

Nếu quả thật đúng như mình đoán thì mình co thể giúp bạn được. Bằng như mình đoán trật thì bạn hãy nói cái trúng của bạn cần mới có thể làm lisp được bạn ạ.

Hề hề hề, mong bạn không cười về cái sự dốt của mình.

Chúc bạn vui.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#10 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 01:12 PM

bác Bình nói trúng phóc ý của em, tuyến tính là tuyến tính theo độ cao, còn đường nối 2 điểm đó thì ngoằn nghoèo. bác giúp em nhé
  • 0

#11 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 01:25 PM

À, bác Bình chỉnh luôn cho trường hợp cao độ A>C, và A<C nhé, không biết cái này lisp có tự hiểu được không nhỉ.
  • 0

#12 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 02:46 PM

Bác Bình khiêm tốn quá, em tìm trên mạng không ra được cái này, bác mà làm được sẽ là người tiên phong đó. :lol:hihi
  • 0

#13 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 May 2011 - 03:12 PM

À, bác Bình chỉnh luôn cho trường hợp cao độ A>C, và A<C nhé, không biết cái này lisp có tự hiểu được không nhỉ.

Hề hề hề,
Bạn dùng thử cái này coi xem có ngứa con mắt bên phải, đỏ con mắt bên trái không nhé......

(defun c:nscdpl (/ pl oldos pdol obj ha ha hp pllength pl1)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setq pdol (getvar "pdmode"))
(setvar "osmode" 512)
(setvar "pdmode" 3)
(setq pl (car (entsel "\n Chon pline can noi suy"))
obj (vlax-ename->vla-object pl)
ha (getreal "\n Nhap cao do diem dau: ")
hb (getreal "\n Nhap cao do diem cuoi: ")
pllength (vlax-curve-getdistatpoint obj (vlax-curve-getendpoint obj))
pt (getpoint "\n Chon diem can noi suy thuoc pline")
pl1 (vlax-curve-getdistatpoint obj pt)
hp (+ ha (* (- hb ha) (/ pl1 pllength)))
)
(command "point" pt "")
(command "text" pt 2 0 (rtos hp 2 2))
(setvar "osmode" oldos)
;;;(setvar "pdmode" pdol)
(princ)
)


Hễ chưa đã thì post lên nhé......
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#14 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 17 May 2011 - 03:13 PM

Trich: phamthanhbinh
Hề hề hề,
Trước hết phải nói thật rằng bạn ra đề đánh đố thí sinh quá đấy. Nội suy thì phải có nguyên tắc nội suy chứ. Vặn vẹo một hồi thì bạn nói là nội suy tuyến tính, nhưng tuyến tính theo kiểu gì thì vẫn cứ là chửa biết.
Có rất nhiều cách hiểu cái khái niệm tuyến tinh của bạn. Chả biết bạn chọn kiểu nào song mình cứ giả vờ là mình hiểu thì phải chăng bạn muốn nói đến việc tuyến tính theo độ dài của đường pl đó???
Nghĩa là Giả sử có điểm C nằm đâu đó trên pl trong khoảng giữa hai diểm A,B đã biết cao độ thì cao độ tại C sẽ là:
cao độ tại A + [(độ dài pl AC / đô dài pl AB) * (cao độ tại B - cao độ tại A)]
Nếu quả thật đúng như mình đoán thì mình co thể giúp bạn được. Bằng như mình đoán trật thì bạn hãy nói cái trúng của bạn cần mới có thể làm lisp được bạn ạ.

Hề hề hề, mong bạn thông cảm. Vì nếu như spline có cao độ thì cứ trích nó ra mà ghi lên đó thôi. Hii. Bạn thử xem cái này nhé.

(defun c:tdspl()
(command "osnap" "cen,node,end,mid,ins,near")
(setq p (getpoint "\n Chon diem tren can lay toa do"))
(setq x (car p))
(setq y (cadr p))
(setq z (rtos (caddr p) 2 2))
(setq p1 (list x y))
(command "text" "j" "c" p1 1 0 z "")
)

  • 1



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#15 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 03:38 PM

Cũng hơi đỏ mắt nhưng nếu được thì thêm 4 yêu cầu nữa:
-việc chọn cao độ 2 điểm sẽ là chọn trực tiếp trên bản vẽ thì tốt cực
-em nghĩ dấu x là không cần thiết vì điểm tọa độ chính là điểm chèn rồi, nên tạm biệt nó
-cho phép chọn số số lẻ theo ham muốn
-cho phép chọn điểm liên tục (không thoát lệnh) đến khi răng long đầu bạc mới thôi

Hề hề hề,
Bạn dùng thử cái này coi xem có ngứa con mắt bên phải, đỏ con mắt bên trái không nhé......


(defun c:nscdpl (/ pl oldos pdol obj ha ha hp pllength pl1)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setq pdol (getvar "pdmode"))
(setvar "osmode" 512)
(setvar "pdmode" 3)
(setq pl (car (entsel "\n Chon pline can noi suy"))
obj (vlax-ename->vla-object pl)
ha (getreal "\n Nhap cao do diem dau: ")
hb (getreal "\n Nhap cao do diem cuoi: ")
pllength (vlax-curve-getdistatpoint obj (vlax-curve-getendpoint obj))
pt (getpoint "\n Chon diem can noi suy thuoc pline")
pl1 (vlax-curve-getdistatpoint obj pt)
hp (+ ha (* (- hb ha) (/ pl1 pllength)))
)
(command "point" pt "")
(command "text" pt 2 0 (rtos hp 2 2))
(setvar "osmode" oldos)
;;;(setvar "pdmode" pdol)
(princ)
)


Hễ chưa đã thì post lên nhé......


  • 0

#16 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 03:41 PM

Bác hiểu sai ý em rồi, nếu thế thì hình như có nhiều lisp có thể làm được điều đó. Cái em cần là hàng hiếm đó bác.

Hề hề hề, mong bạn thông cảm. Vì nếu như spline có cao độ thì cứ trích nó ra mà ghi lên đó thôi. Hii. Bạn thử xem cái này nhé.


(defun c:tdspl()
(command "osnap" "cen,node,end,mid,ins,near")
(setq p (getpoint "\n Chon diem tren can lay toa do"))
(setq x (car p))
(setq y (cadr p))
(setq z (rtos (caddr p) 2 2))
(setq p1 (list x y))
(command "text" "j" "c" p1 1 0 z "")
)


  • 0

#17 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 17 May 2011 - 03:56 PM

Bác hiểu sai ý em rồi, nếu thế thì hình như có nhiều lisp có thể làm được điều đó. Cái em cần là hàng hiếm đó bác.

Hề hề hề, mình láu táu tưởng spline có cao độ rồi nên nếu muốn lấy thì trích nó ra thôi. Nhưng trong cách bạn nói thì nó lại là nội suy tuyến tính theo cao độ. Nếu vẽ 1 Spline đi qua 2 điểm đó thì cái cao độ trên Spline đó luôn có nhưng ko phải cái bạn cần đúng ko, bạn cần là cần cái nội suy tuyến tính từ 2 điểm đầu cuối đúng ko? Lisp bác Bình làm là ngon rồi, còn chỉnh sửa như bạn nói thì với bác Bình quá dễ. Hề hề hề, chúc bạn vui nhé
P/s: Bác Bình toàn OffLine thôi.
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#18 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 May 2011 - 04:26 PM

Cũng hơi đỏ mắt nhưng nếu được thì thêm 4 yêu cầu nữa:
-việc chọn cao độ 2 điểm sẽ là chọn trực tiếp trên bản vẽ thì tốt cực
-em nghĩ dấu x là không cần thiết vì điểm tọa độ chính là điểm chèn rồi, nên tạm biệt nó
-cho phép chọn số số lẻ theo ham muốn
-cho phép chọn điểm liên tục (không thoát lệnh) đến khi răng long đầu bạc mới thôi

Hề hề hề,
Của bạn đây, hy vọng lần này thì đã con mắt bên phài, sướng con mắt bên trái hỉ.......

(defun c:nscdpl (/ pl oldos pdol obj ha ha hp pllength pl1 sole)
(vl-load-com)
(setq oldos (getvar "osmode"))
;;;;;;;;;;;(setq pdol (getvar "pdmode"))
(setvar "osmode" 512)
;;;;;;;;;;;(setvar "pdmode" 3)
(setq pl (car (entsel "\n Chon pline can noi suy"))
obj (vlax-ename->vla-object pl)
;;;;;;;;;; ha (getreal "\n Nhap cao do diem dau: ")
;;;;;;;;;; hb (getreal "\n Nhap cao do diem cuoi: ")
ha (atof (cdr (assoc 1 (entget (car (entsel "\n Chon text chi cao do diem dau"))))))
hb (atof (cdr (assoc 1 (entget (car (entsel "\n Chon text chi cao do diem cuoi"))))))
pllength (vlax-curve-getdistatpoint obj (vlax-curve-getendpoint obj))
pt (getpoint "\n Chon diem can noi suy thuoc pline")
sole (getint "\n Chon so chu so thap phan ban khoai: ")
)
(while pt
(setq pl1 (vlax-curve-getdistatpoint obj pt)
hp (+ ha (* (- hb ha) (/ pl1 pllength)))
)
;;;;;;;; (command "point" pt "")
(command "text" pt 2 0 (rtos hp 2 sole))
(setq pt (getpoint "\n Chon diem ke tiep"))
)
(setvar "osmode" oldos)
;;;;;;;;(setvar "pdmode" pdol)
(princ)
)


Chúc bạn vui.
@thanduan2407: Ọp ẹp chi đâu, còn khỏe lắm. hề hề hề....
  • 3
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#19 amateurday

amateurday

    biết lệnh break

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

Đã gửi 17 May 2011 - 07:15 PM

cám ơn bác, phải gọi là cực sướng. thanks 2 bác rất nhiều mà không thấy chỗ thanks.
Cho em hỏi thêm 1 lisp khác cũng nằm trong nội suy, nhưng là đường thẳng. Nếu không được thì em sẽ post vào topic khác.
Yêu cầu:
- gõ lệnh lisp
- chọn text cao độ sẵn có trên bản vẽ (vd: -1.23)
- ghi độ dốc (vd: 2% hoặc -0.09%)
- nhập khoảng cách hoặc click loạn xà ngầu (2 tùy chọn này mà luôn đi liền với nhau thì tuyệt kinh khủng)
Kết quả:
- ghi cao độ nội suy tại vị trí (nếu nhập khoảng cách thì theo hướng mouse, click thì theo hướng người).
Chú ý:
- số số lẻ mình phải khoái
- không thoát lệnh để mình được sướng
Em ghi thế để nếu được, bác làm nửa phát là ra ngay. :lol:
  • 0

#20 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 May 2011 - 09:07 PM

cám ơn bác, phải gọi là cực sướng. thanks 2 bác rất nhiều mà không thấy chỗ thanks.
Cho em hỏi thêm 1 lisp khác cũng nằm trong nội suy, nhưng là đường thẳng. Nếu không được thì em sẽ post vào topic khác.
Yêu cầu:
- gõ lệnh lisp
- chọn text cao độ sẵn có trên bản vẽ (vd: -1.23)
- ghi độ dốc (vd: 2% hoặc -0.09%)
- nhập khoảng cách hoặc click loạn xà ngầu (2 tùy chọn này mà luôn đi liền với nhau thì tuyệt kinh khủng)
Kết quả:
- ghi cao độ nội suy tại vị trí (nếu nhập khoảng cách thì theo hướng mouse, click thì theo hướng người).
Chú ý:
- số số lẻ mình phải khoái
- không thoát lệnh để mình được sướng
Em ghi thế để nếu được, bác làm nửa phát là ra ngay. :lol:

Hề hề hề,
Quả nhiên bạn là người cực kỳ amateur. Amateur ngay cả khi bạn ra đề .
Mở đầu thì là nội suy (cao độ) trên đường thẳng. Nhưng sau đó thì lại đánh đố bằng cách gợi ý các bước thực hiện trong lisp mà các bước này chả có chỗ nào nói đến cái đường thẳng cần nội suy cả. Ấy là chưa nói đến cái việc chọn text cao độ có sẵn là cao độ của điểm nào, nó có thuộc cái đường thẳng ấy không ??? Ghi độ dốc là ghi độ dốc của đường thẳng cần nội suy hay ghi độ dốc bốc phét nào cũng được??? v.v......
Với cái đề này thì có làm cả nghìn phát cũng chửa chắc đã được chứ nói chi tới cái hạn nửa phát mà bạn lại còn đòi ra ngay nữa.
Hề hề hề, quá khó quá khó......
Rất mong bạn chỉnh lý lại đề thi cho nó bớt cái amateur đi để mọi người còn có dịp thử sức.....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.