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

[Yêu cầu] Lisp nội suy lưới tam giác, ed vào text trong blog att

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

Có 1 tập hợp điểm các cao độ trên mặt bằng. và 1 số blog att trong đó có chứa text cần ghi kết quả nội suy cao độ

Nhờ các cao thủ giúp mình viết lisp, cơ bản ý tưởng là:

Từ các cao độ đó, nội suy được cao độ tại điểm cần pick, (do người dùng chọn)
Kết quả sẽ được lựa chọn thay vào số có màu xanh, bên dưới của blog. (Theo như file bản vẽ ví dụ )

File đính kèm minh họa
https://www.mediafire.com/?wsgy472mpw3tkxd

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ái này tôi nghĩ chắc đã có soft nào đó (land hoặc gì gì đó) làm rồi, nhưng vì muốn thử dùng lisp xem công thức nội suy có đúng không.

Vì tôi không làm trong lãnh vực này nên cũng không rành , tôi lấy công thức nội suy trên mạng rồi áp dụng.

Có điều trước khi chạy thì bạn phải overkill các text, vì tôi thấy cái text nào cũng có 2 text trùng nhau, nó sẽ làm ct chạy sai.

 

http://www.cadviet.com/upfiles/3/127168_tmp1_33.lsp

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ó 1 tập hợp điểm các cao độ trên mặt bằng. và 1 số blog att trong đó có chứa text cần ghi kết quả nội suy cao độ

Nhờ các cao thủ giúp mình viết lisp, cơ bản ý tưởng là:

Từ các cao độ đó, nội suy được cao độ tại điểm cần pick, (do người dùng chọn)

Kết quả sẽ được lựa chọn thay vào số có màu xanh, bên dưới của blog. (Theo như file bản vẽ ví dụ )

 

File đính kèm minh họa

https://www.mediafire.com/?wsgy472mpw3tkxd

Hề hề hề,

Trên diễm đàn đã có lisp nội suy qua 3 điểm có cao độ xác định trước bởi các text cao độ của bác nguyễn hoành. hãy chịu khó tìm kiếm và test thử coi sao.

Việc nội suy này có nhiều nguyên tắc nội suy khác nhau. Nếu muốn có lisp đúng ý định của bạn thì cần nói rõ nguyên tắc nội suy của bạn ra sao mới đượ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

Nguyên tắc của nó là lập lưới tam giác từ tập hợp tất cả các cao độ trong bản vẽ bạn ah. Đây là cao độ của cả 1 khu đất. 
Thực ra mình đang làm trên phần mềm nova, việc lập lưới tam giác và nội suy cao độ tại 1 điểm bất kỳ trên nova thì oki  rồi.
Nhưng công việc thay số thủ công lại vào các text trong blog thấy lâu quá nên muốn nhờ các cao thủ trợ giúp, để làm sao với blog có sẵn đó thì cao  độ tại điểm cần nội suy có thể ed được luôn vào text trong blog.
@tot77: lisp rất hay, nhưng blog của bạn tạo ra tại điểm pick nội suy ko có khả năng di chuyển hay xoay chiều như blog gốc bạn ah. Nếu như blog mà lisp xuất ra vẫn giữ nguyên được y như blog gốc thì hay quá (Để mình còn dịch chuyển, thay đổi vị trí cho ko đè lên các đối tượng khác). CÒn ko mình cần lisp ed kết quả vào text trong blog (mình sẽ tự chèn trước) là được rồ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

Quá tuyệt!  :D Thì ra vấn đề blog chỉ là ở cái tên của nó. 
Lisp này hay nhỉ, tự động chọn tập hợp text cao độ ko cần hỏi han gì 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

Ah, có tí trục trặc roài. Bạn tot77 có thể bổ sung để lisp có thêm lựa chọn thứ 2 là xuất kết quả ra bằng cách ed vào text màu xanh trong 1 blog có sẵn rồi ko? 

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

Sau khi nhấp chọn điểm, nó hỏi có sửa text không, nếu không thì enter.

Lisp tìm 3 cao độ gần nó nhất trong tập hợp cao độ, cho nên nó không cần hỏi gì cả, miễn đừng có text cao độ trùng nhau là được, vì khi trùng nhau thì nó chỉ có 2 trị cao độ khác nhau thay vì 3.

 

http://www.cadviet.com/upfiles/3/127168_tmp1_37.lsp

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 tot77 nhé. Nhưng lựa chọn này ko phải là ý mình diễn đạt bạn ah.
ví dụ có 1 blog có sẵn với text màu xanh đang là 0.00 chẳng hạn.
Sau khi pick điểm (thì kết quả nội suy được là 5.45), thì chỉ cần pick vào số 0.00 của blog đó là tự nhảy sang 5.45 ấy bạ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

Theo mình hiểu thì khi chọn blog có sẵn thì nó sẽ nội suy tại điểm là tâm đường tròn của blog.
Bạn có thể phát triển được lisp cao cấp hơn nữa là cho phép quét toàn bộ các blog đã có sẵn và tự ed số màu xanh thành kết quả nội suy tại tâm của đường tròn của mỗi blog ko?  :) . Được vậy thì chắc là công việc của mình từ 1 ngày xuống 1 phút. hì 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

Mình có test lại bằng nova để kiểm tra phép nội suy của lisp. Cơ bản 80% là kết quả đúng.
Và 20% còn lại, lisp tính toán có vẻ ko được đúng lắm.
Ví dụ, có 3 cao độ gần nhất đều lớn hơn 5.00. Pick vào điểm ở giữa 3 điểm đó thì cho ra kết quả nhỏ hơn 5.00.  :) 
 

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

Pro thế nhỉ. hề hề, có lúc nó ôm nhìu em blog quá cũng bị bội thực nên báo error.  :D

Vấn đề nội suy thì tất nhiên dân kỹ thuật cần kết quả chính xác rồi bạn. Nova nội suy cơ bản rất chính xác.
Bạn có cách nào khắc phục được thuật toán nội suy của lisp ko?

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

Khi chọn nhiều mà Error là sao bạn? Nó báo thế nào?

tôi biết tại sao sai rồi. Không phải là chỉ chon 3 cao độ gần nhất, mà điểm chọn còn phải nằm trong 3 cao độ đó thì kết quả mới đúng. Vậy là bây giờ phải giải thêm bài toán xác định xem 1 điểm có nằm trong 1 tam giác hay không. Để từ từ tôi coi lại cái nà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

Lỗi thì có dạng báo thế này, nhưng cũng thỉnh thoảng mới bị. 
Select objects:  ; error: bad argument type: 2D/3D point: nil
Còn về thuật nội suy, so với nova thì độ chính xác là 95% rồi bạn. Có đôi ba vị trí, độ sai khác kết quả của 2 phương pháp nova và lisp là khá lớn, 20-30cm.
Mình có file này, là cao độ đã tính thủ công từ nova, gửi bạn tham khảo để test khả năng nội suy của lisp
https://www.mediafire.com/?nd6e50t04dubj2n
Ko biết sao, load file bằng cadviet ko được, nên bạn sài tạm mediafire 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

Lỗi thì có dạng báo thế này, nhưng cũng thỉnh thoảng mới bị. 

Select objects:  ; error: bad argument type: 2D/3D point: nil

Còn về thuật nội suy, so với nova thì độ chính xác là 95% rồi bạn. Có đôi ba vị trí, độ sai khác kết quả của 2 phương pháp nova và lisp là khá lớn, 20-30cm.

Mình có file này, là cao độ đã tính thủ công từ nova, gửi bạn tham khảo để test khả năng nội suy của lisp

https://www.mediafire.com/?nd6e50t04dubj2n

Ko biết sao, load file bằng cadviet ko được, nên bạn sài tạm mediafire nhé  :)

 

Hề hề hề,

Chuyện kết quả của lisp khác với của nova là chuyện thường tình bởi Nova nội suy theo một nguyên tắc khác với cái nguyên tắc nội suy của lisp. Là một cán bộ kỹ thuật mà bản thân bạn không hiểu được Nova nội suy theo nguyên tắc nào mà chỉ cắm đầu vào xài thì coi chừng bởi không phải ở đâu cũng có thể xài được và rất có thể bạn sẽ phải lãnh đủ mọi hậu quả của nó.

Với lisp cũng vậy. Nếu không hiểu rõ thì chớ có dại dột dùng bởi nó mà trật chìa thì chỉ có nước kêu trời không thấu 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

Tôi không xài nova nên không biết trình tự ghi cao độ bằng tay như thế nào, bạn có thể trình bày để tôi biết cách làm của nova được không?

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ản thân nova cũng là vẽ ra lưới tam giác rồi nội suy những điểm ở trong lưới thôi. Nova có 1 lệnh riêng để tính cao độ tại 1 điểm bất kỳ, kết quả được thể hiện ở dòng comment. Sau đó mình điền lại thông số đó vào text màu xanh bằng cách ed thôi.
Mình nghĩ cách mà nova và lisp nội suy chắc là cơ bản tương tự nhau, vì đều là tạo lưới tam giác cả.
Tuy nhiên so 2 kết quả với những cao độ xung quanh thì nova vẫn chuẩn hơn.
Ví như ví dụ trên có nói ấy, 1 điểm nằm trong 1 tam giác 3 cao độ đều lớn hơn 5.00. Nova cho kết quả là lớn hơn 5 và nhỏ hơn cao độ 3 điểm mốc đó.
Nhưng lisp cho cao độ nhỏ hơn 5 là thấy điểm này hơi vô lý rồi.  :) 
Nếu kết quả chênh lệch nhau 1-2cm thì oki, nhưng có những kết quả chênh lớn tới 20-30cm.
Bạn nghiên cứu tiếp giúp mình được chứ tot77. hì 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

@phamthanhbinh: Tôi đã xem cái lisp mà bác đề xuất của bác Nguyen Hoanh ( http://www.cadviet.com/upfiles/3/127168_tmp2.lsp ) . Nói chung là kết quả ra giống nhau, cho nên có thể kết luận rằng đều là của cùng một công thức, bác có thể yên tâm là không có đi sai đường. Vấn đề còn lại là Nova làm việc như thế nào thôi.

 

Vì theo bạn bach1212 nói  là edit text bằng thủ công cho nên đôi khi có sai sót là chuyện dễ hiểu, thí dụ 3.38 -> 3.78 http://www.cadviet.com/upfiles/3/127168_ (sory vì tôi chưa biết chèn hình nên phải đưa link thế này).

 

Điều tôi muốn hỏi bach1212 là nova có chọn 3 text cao độ bằng tay hay chọn tự động? nếu chọn tay thì nhiều khi kết quả ra khác với lisp.

 

Còn một điều nữa là các text cao độ của bạn đều justify center, và chính xác thì cao độ đó là điểm chèn nào (có dxf 10 hay dxf 11), cái này cũng làm ảnh hưởng đến kết quả.

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

@phamthanhbinh: Tôi đã xem cái lisp mà bác đề xuất của bác Nguyen Hoanh ( http://www.cadviet.com/upfiles/3/127168_tmp2.lsp ) . Nói chung là kết quả ra giống nhau, cho nên có thể kết luận rằng đều là của cùng một công thức, bác có thể yên tâm là không có đi sai đường. Vấn đề còn lại là Nova làm việc như thế nào thôi.

 

Vì theo bạn bach1212 nói  là edit text bằng thủ công cho nên đôi khi có sai sót là chuyện dễ hiểu, thí dụ 3.38 -> 3.78 http://www.cadviet.com/upfiles/3/127168_ (sory vì tôi chưa biết chèn hình nên phải đưa link thế này).

 

Điều tôi muốn hỏi bach1212 là nova có chọn 3 text cao độ bằng tay hay chọn tự động? nếu chọn tay thì nhiều khi kết quả ra khác với lisp.

 

Còn một điều nữa là các text cao độ của bạn đều justify center, và chính xác thì cao độ đó là điểm chèn nào (có dxf 10 hay dxf 11), cái này cũng làm ảnh hưởng đến kết quả.

Hề hề hề,

Tuy mình chẳng làm trắc địa nhưng mình hiểu rằng, đã là nội suy tức là sẽ không chính xác bởi vì có các nguyên tắc nội suy khác nhau, có nội suy tuyến tính nhưng cũng có nội suy phi tuyến. Bởi vậy muốn làm lisp về nội suy thì cần biết rõ người dùng sử dụng phương pháp hay nguyên tắc nội suy nào. Dù là Nova hay là lisp nếu cùng một nguyên tắc nội suy thì ắt sẽ cho kết quả giống nhau, còn đã khác nhau về nguyên tắc nội suy này thì chớ mong kết quả giống nhau. 

Nói như chủ thớt thì chứng tỏ bản thân chủ thớt cũng chưa hiểu cái nguyên tắc nội suy của nova là gì. Lưới tam giác là chỉ nói rằng phép nội suy dựa vào ba diểm có cao độ cho trước chứ chưa nói lên việc tính toán cao độ điểm nội suy theo nguyên tắc hay công thức như thế nào.

Bác có thể cũng đã dùng chung một công thức nội suy như bác Nguyễn Hoành nên kết quả cho ra giống nhau, Còn Nova ???? Mình không biết rõ về nó nên chẳng thể phán cái gì cả. Mình chỉ biết rằng nếu kết quả có sai lệch với nova thì 99% là do nguyên tắc nội suy khác nhau mà thôi. Hy vọng rằng chủ thớt là cán bộ chuyên ngành này sẽ nói rõ cái nguyên tắc nội suy của Nova để so sánh. Song có vẻ như cái hy vọng này trở thành hão huyền rồi bởi chủ thớt cũng chẳng muốn quan tâm tới nó, chỉ biết có sẵn và xơi 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

@Tot77+Bach:

Nova tính cao độ 1 điểm dựa vào lưới tam giác Dalaunay. Khi đó, điểm được chọn phải nằm trong tam giác Dalaunay được bao bởi 3 điểm quanh nó >> kết quả khả quan.

Lisp này cũng tính tọa độ điểm dựa vào 3 điểm là 3 text, nhưng cơ sở là sort theo k/c ngắn nhất từ 3 text đến point >> rất có thể point nằm ngoài tam giác của 3 text >> kết quả không khả quan.

Điều này rất dễ kiểm chứng trên bản vẽ Bach gởi lên.

Do đó, nếu làm theo cách của Tot77 thì nên làm thủ công một tí: đó là sau khi pick point thì chọn thêm 3 text quanh nó, chứ không nên chọn "X".

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

Nova làm tự động hết bạn ah. Ban đầu nó lựa chọn toàn bộ text cao độ. Sau đó nó vẽ lưới tam giác.
Rồi có 1 lệnh để tra cao độ tại điểm bất kỳ.
Điểm chèn mình nghĩ nếu có khác nhau thì chỉ sai khác kết quả 1-2cm thôi.
Nhưng hiện tại lisp có 1 cách tính sai như mình đã miêu tả ở trên đó, là kết quả ra nhỏ hơn 5 trong khi 3 text gần nhất đều lớn hơn 5.  :) 
Hiện tượng ed text bằng thủ công ko có bị nhầm số như bạn nói đâu nhé. hì 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

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  

×