Chuyển đến nội dung
Diễn đàn CADViet
amateurday

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

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

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

Noname.jpg

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

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

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.

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

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

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

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 ?

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

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.

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

À, 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é......

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

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

  • 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ũ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é......

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

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

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

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.

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

  • Vote tăng 3

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á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:

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

  • 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

Kinh nghiệm xương máu là chỉ khi có bản vẽ mới mần lisp, vì nhiều khi, người ra đề cũng rõ mình ra cái gì bác ạ ^^. Dạo này bác Bình trở lại, lợi hại gấp đôi r :">

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

Em cứ tưởng nói thế là dễ với bác chứ, thực sự em cũng chả biết vẽ thế nào cho dễ hiểu cả. Nhưng bác đoán đúng ý em rồi đó.

Ý em là có 1 text cao độ rồi, em muốn tìm cao độ xung quanh nó khi biết độ dốc. Điểm mới này có thể là bất kỳ, hoặc theo hướng của nàng chuột đang đứng với 1 khoảng cách mình thích.

Nửa phát của em lợi hại bác nhỉ

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

Em cứ tưởng nói thế là dễ với bác chứ, thực sự em cũng chả biết vẽ thế nào cho dễ hiểu cả. Nhưng bác đoán đúng ý em rồi đó.

Ý em là có 1 text cao độ rồi, em muốn tìm cao độ xung quanh nó khi biết độ dốc. Điểm mới này có thể là bất kỳ, hoặc theo hướng của nàng chuột đang đứng với 1 khoảng cách mình thích.

Nửa phát của em lợi hại bác nhỉ

Bạn đang làm khó bác Bình đó :) Việc vẽ để miêu tả cái hình mình nói còn khó, coding thế nào đây ?

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

Em cứ tưởng nói thế là dễ với bác chứ, thực sự em cũng chả biết vẽ thế nào cho dễ hiểu cả. Nhưng bác đoán đúng ý em rồi đó.

Ý em là có 1 text cao độ rồi, em muốn tìm cao độ xung quanh nó khi biết độ dốc. Điểm mới này có thể là bất kỳ, hoặc theo hướng của nàng chuột đang đứng với 1 khoảng cách mình thích.

Nửa phát của em lợi hại bác nhỉ

Hề hề hề,

Lợi thì có lợi, nhưng mà móm hết rồi.....

Hại là cái đoán mò lại trúng. Khổ thiệt khổ thiệt.

Vậy hãy ráng đợi nghen....

Mà cái hướng của nàng chuột thì khó chơi rồi. Đỏng đảnh lắm. Phải chi là thằng chuột thì còn có thể hỉ?????

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ác bác pro còn khó hiểu cái đề này, huống hồ gì một newbie như em. Lúc sáng đọc được cái đề này mà thấy không hình dung nổi vì không rõ ràng gì cả. Có khi lần sau ai yêu cầu viết lisp có khi phải có một form chuẩn kiểu như giải toán í:

 

1. Dữ kiện bài toán (cho những cái gì...)

2. Yêu cầu (cần tạo ra những cái gì)

3. Nếu có thêm hình minh họa thì càng tốt :D

 

Em có ý kiến góp ý như vậy ạ :D

  • 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

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

×