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

[Yêu cầu] lisp nội suy cao độ từ tam giác

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

Mình có nhu cầu này, xin các bạn giúp cho.

-Trên diễn đàn có mấy cái lisp nội suy cao độ. Thử mãi mà không hợp cái nào.

-Mình có một cái bình đồ, trên đó cần tính đào đắp cho mấy cái móng nhà nho nhỏ. Vấn đề là so với mấy cái móng nho nhỏ ấy thì lưới các điểm cao độ thưa quá. Tính đào đắp theo lưới ô vuông (thủ công thôi vì phạm vi bé)thì lưới thưa vậy không ổn.

-Mình muốn từ 3 điểm cao độ nội suy ra cao độ một điểm nằm trong phạm vi 3 điểm đã biết ấy. Việc này mình nghĩ là thực tế và có thể chấp nhận được. Giúp mình nhanh nhé!

(Lưu ý là mình chả biết HS hay Inroad gì ráo mà chỉ muốn thủ công mỹ nghệ thôi, việc gấp mà)

  • Vote giảm 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ó nhu cầu này, xin các bạn giúp cho.

-Trên diễn đàn có mấy cái lisp nội suy cao độ. Thử mãi mà không hợp cái nào.

-Mình có một cái bình đồ, trên đó cần tính đào đắp cho mấy cái móng nhà nho nhỏ. Vấn đề là so với mấy cái móng nho nhỏ ấy thì lưới các điểm cao độ thưa quá. Tính đào đắp theo lưới ô vuông (thủ công thôi vì phạm vi bé)thì lưới thưa vậy không ổn.

-Mình muốn từ 3 điểm cao độ nội suy ra cao độ một điểm nằm trong phạm vi 3 điểm đã biết ấy. Việc này mình nghĩ là thực tế và có thể chấp nhận được. Giúp mình nhanh nhé!

(Lưu ý là mình chả biết HS hay Inroad gì ráo mà chỉ muốn thủ công mỹ nghệ thôi, việc gấp mà)

nếu bạn không muốn dùng các chương trình quá phức tạp để tính san lấp.Bạn có thể dùng chương trình sau.Đây là chương trình của anh Phạm Hồng Hải, công ty cồ phần TVTK GT Thừa Thiên Huế.nick nam redsea_tp trên cadviet mình.

http://www.mediafire.com/download.php?brp412fmqwqhgll

Các bạn dow về rồi giải nén trực tiếp ra ổ c:

Đây là hướng dẫn sử dụng

http://www.mediafire.com/download.php?geb251nbna4or5r

Để tiện cho theo dõi, cũng như thắc mắc bạn theo dõi trực tiếp tại trang này.My link

  • Vote tăng 1
  • Vote giảm 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

nếu bạn không muốn dùng các chương trình quá phức tạp để tính san lấp.Bạn có thể dùng chương trình sau.Đây là chương trình của anh Phạm Hồng Hải, công ty cồ phần TVTK GT Thừa Thiên Huế.nick nam redsea_tp trên cadviet mình.

http://www.mediafire.com/download.php?brp412fmqwqhgll

Các bạn dow về rồi giải nén trực tiếp ra ổ c:

Đây là hướng dẫn sử dụng

http://www.mediafire.com/download.php?geb251nbna4or5r

Để tiện cho theo dõi, cũng như thắc mắc bạn theo dõi trực tiếp tại trang này.My link

Cám ơn bạn, mình đã download về, giải nén ổ C và đã "chọn bình đồ điểm tự nhiên" tuy nhiên chương trình báo lỗi "Loi: Method '~' of object '~' fail" và đương nhiên không làm được. Bạn hướng dẫn mình với nhé!

  • Vote giảm 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ó nhu cầu này, xin các bạn giúp cho.

-Trên diễn đàn có mấy cái lisp nội suy cao độ. Thử mãi mà không hợp cái nào.

-Mình có một cái bình đồ, trên đó cần tính đào đắp cho mấy cái móng nhà nho nhỏ. Vấn đề là so với mấy cái móng nho nhỏ ấy thì lưới các điểm cao độ thưa quá. Tính đào đắp theo lưới ô vuông (thủ công thôi vì phạm vi bé)thì lưới thưa vậy không ổn.

-Mình muốn từ 3 điểm cao độ nội suy ra cao độ một điểm nằm trong phạm vi 3 điểm đã biết ấy. Việc này mình nghĩ là thực tế và có thể chấp nhận được. Giúp mình nhanh nhé!

(Lưu ý là mình chả biết HS hay Inroad gì ráo mà chỉ muốn thủ công mỹ nghệ thôi, việc gấp mà)

Hi.

1.Lưới thưa thì chỉ có vài điểm.tốt nhất là bạn nên chèn thủ công bạn ah.Chắc cũng không tốn công sức mấy?.

2.Nếu có lisp như bạn nói nếu mà mình làm bên trắc địa thì mình có thể biến bình đồ TL:1/1000 thành bình đồ TL:1/500,1/200....thật là ngon ăn.Chỉ ngồi chơi xơi nước đi đo vài điểm rồi về chêm.hi.=> địa hình sẽ không sát thực tế.=>Mấy người làm bên trắc địa nếu lỡ có chắc cũng không dám cho vì lương tâm nghề nghiệp.

3.Mình làm bên thiết kế,có cũng không dám cho bạn được.Chỉ sợ công trình được duyệt rồi mà suốt ngày còn phải đi xử lí lại vì thiết kế không sát thực tế.=>.được người thiệt mình.

4.Ai ai bên trắc địa cũng có lisp như vậy thì chắc xây dựng VN sẽ loạn mất 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ám ơn bạn, mình đã download về, giải nén ổ C và đã "chọn bình đồ điểm tự nhiên" tuy nhiên chương trình báo lỗi "Loi: Method '~' of object '~' fail" và đương nhiên không làm được. Bạn hướng dẫn mình với nhé!

Bạn có thể post file lên, mình kiểm tra xem thử 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

Mình có nhu cầu này, xin các bạn giúp cho.

-Trên diễn đàn có mấy cái lisp nội suy cao độ. Thử mãi mà không hợp cái nào.

-Mình có một cái bình đồ, trên đó cần tính đào đắp cho mấy cái móng nhà nho nhỏ. Vấn đề là so với mấy cái móng nho nhỏ ấy thì lưới các điểm cao độ thưa quá. Tính đào đắp theo lưới ô vuông (thủ công thôi vì phạm vi bé)thì lưới thưa vậy không ổn.

-Mình muốn từ 3 điểm cao độ nội suy ra cao độ một điểm nằm trong phạm vi 3 điểm đã biết ấy. Việc này mình nghĩ là thực tế và có thể chấp nhận được. Giúp mình nhanh nhé!

(Lưu ý là mình chả biết HS hay Inroad gì ráo mà chỉ muốn thủ công mỹ nghệ thôi, việc gấp mà)

Thực ra bạn chỉ cần yêu cầu rằng muốn nội suy độ cao một điểm nằm trong tam giác (từ 3 điểm) thì mọi người sẽ giúp. Với lương tâm nghề nghiệp thì sẽ có người trì trích bạn đó.Thuật toán nội suy độ cao từ 3 điểm cũng đơn giản, mình gửi cho bạn thuật toán để bạn làm nhé.

Private Sub mnuTienichNoisuydocao_Click()
   Dim Traloi%
   Dim P1 As Point_3D, P2 As Point_3D, P3 As Point_3D, P As Point_3D
   Dim d#, DXP#, DYP#, X21#, Y21#, X31#, Y31#, Z21#, Z31#, Zp#, Z1#, Z2#, Z3#
   Dim ao#, a1#, a2#
   P1.rX = DS_PolyLines(PolyLinesCount).DS_Vertexs(1).rX
   P1.rY = DS_PolyLines(PolyLinesCount).DS_Vertexs(1).rY
   P2.rX = DS_PolyLines(PolyLinesCount).DS_Vertexs(2).rX
   P2.rY = DS_PolyLines(PolyLinesCount).DS_Vertexs(2).rY
   P3.rX = DS_PolyLines(PolyLinesCount).DS_Vertexs(3).rX
   P3.rY = DS_PolyLines(PolyLinesCount).DS_Vertexs(3).rY
   P.rX = DS_Points(PointsCount).rX
   P.rY = DS_Points(PointsCount).rY
   X21 = P1.rX - P2.rX
   Y21 = P1.rY - P2.rY
   X31 = P1.rX - P3.rX
   Y31 = P1.rY - P3.rY
   d = X21 * Y31 - X31 * Y21
   If d = 0 Then
       MsgBox "Kh«ng néi suy ®­îc ®é cao, cÇn chän l¹i tam gi¸c kh¸c", vbCritical, "B¸o lçi"
       Exit Sub
   End If
   If PointinTriangule(P1, P2, P3, P) = False Then
       MsgBox "Kh«ng néi suy ®­îc ®é cao v× ®iÓm n»m ngoµi tam gi¸c, cÇn chän l¹i ®iÓm ", vbCritical, "B¸o lçi"
       Exit Sub
   End If
   If (d <> 0) And (PointinTriangule(P1, P2, P3, P) = True) Then
       Z1 = InputBox("NhËp ®é cao ®iÓm P1 ")
       Z2 = InputBox("NhËp ®é cao ®iÓm P2 ")
       Z3 = InputBox("NhËp ®é cao ®iÓm P3 ")
       Z21 = Z1 - Z2
       Z31 = Z1 - Z3
       DXP = Z21 * Y31 - Z31 * Y21
       DYP = X21 * Z31 - Z21 * X31
       a1 = DXP / d
       a2 = DYP / d
       ao = Z1 - a1 * P1.rX - a2 * P1.rY
       Zp = ao + a1 * P.rX + a2 * P.rY
       MsgBox "§é cao ®iÓm néi suy lµ : Zp = " & Format(Zp, "0.000"), vbQuestion, "KÕt qu¶"
       Traloi = MsgBox("B¹n cã muèn tiÕp tôc kh«ng ?", vbQuestion + vbYesNo, "Tho¸t")
       If Traloi = vbNo Then End
   End If

End Sub

Trên đây chỉ là trên VB nhưng ý mình thì đó là thuật toán mà bạn sẽ hiểu.

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ó nhu cầu này, xin các bạn giúp cho.

-Trên diễn đàn có mấy cái lisp nội suy cao độ. Thử mãi mà không hợp cái nào.

-Mình có một cái bình đồ, trên đó cần tính đào đắp cho mấy cái móng nhà nho nhỏ. Vấn đề là so với mấy cái móng nho nhỏ ấy thì lưới các điểm cao độ thưa quá. Tính đào đắp theo lưới ô vuông (thủ công thôi vì phạm vi bé)thì lưới thưa vậy không ổn.

-Mình muốn từ 3 điểm cao độ nội suy ra cao độ một điểm nằm trong phạm vi 3 điểm đã biết ấy. Việc này mình nghĩ là thực tế và có thể chấp nhận được. Giúp mình nhanh nhé!

(Lưu ý là mình chả biết HS hay Inroad gì ráo mà chỉ muốn thủ công mỹ nghệ thôi, việc gấp mà)

Hề hề hề,

Gửi bạn cái ni, không biết đã đúng ý bạn chưa??? Lưu ý rằng 3 text mà bạn chọn phải là 3 text có giá trị của cao độ và đặt tại điểm ghi cao độ đó.


(defun c:ns	(/ ss3 pgoc lste tt)
  (princ "\nChon 3 text dau tien: ")
  (setq ss3 (ssget '((0 . "TEXT"))))
  (if (/= (sslength ss3) 3)
  (alert (strcat "\nBan vua chon "
				 (itoa (sslength ss3))
				 " text\nban can phai chon 3 text"
		 )
  )
  (progn
	 (setq
		pgoc (trans (getpoint "\nVao diem noi suy: ") 1 0)
		lste (mapcar 'ssname (list ss3 ss3 ss3) '(0 1 2))
		tt	 (entget (car lste))
		lste (mapcar '(lambda (e)
						 (setq tt (entget e)
							   p  (cdr (assoc 10 tt))
							   gt (atof (cdr (assoc 1 tt)))
						 )
						 (reverse (cons gt (cdr (reverse p))))
					  )
					 lste
			 )
	 )
	 (mapcar 'set '(p0 p1 p2) lste)
	 (setq tt (subst (cons 10 pgoc) (assoc 10 tt) tt)
		   tt (subst (cons 1 (rtos (getz p0 p1 p2 pgoc))) (assoc 1 tt) tt)
	 )
	 (entmake tt)
	 (command ".change" "L" "" "p" "c" "6" "")
  )
  )
)

; CHHUONG TRINH CON
(defun getZ	(p0 p1 p2 p / vta vtb x0 y0 z0 x1 y1 z1 x2 y2 z2 x y A B C)
  (setq
  p	  (list (car p) (cadr p))
  vta (mapcar '- p1 p0)
  vtb (mapcar '- p2 p0)
  )
  (mapcar 'set
	   '(x0 y0 z0 x1 y1 z1 x2 y2 z2 x y)
	   (append p0 vta vtb p)
  )
  (setq
  A	(- (* y1 z2) (* y2 z1))
  B	(- (* z1 x2) (* z2 x1))
  C	(- (* x1 y2) (* x2 y1))
  )
  (/ (- (+ (* A x0) (* B y0) (* C z0)) (+ (* A x) (* B y))) C)
)

 

Lisp này mình mót được từ trên diễn đàn Cadviet, hình như của bác Nguyễn Hoành thì phải. Hãy cám ơn bác ấy.

  • 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

Hề hề hề,

Gửi bạn cái ni, không biết đã đúng ý bạn chưa??? Lưu ý rằng 3 text mà bạn chọn phải là 3 text có giá trị của cao độ và đặt tại điểm ghi cao độ đó.


(defun c:ns	(/ ss3 pgoc lste tt)
  (princ "\nChon 3 text dau tien: ")
  (setq ss3 (ssget '((0 . "TEXT"))))
  (if (/= (sslength ss3) 3)
  (alert (strcat "\nBan vua chon "
				 (itoa (sslength ss3))
				 " text\nban can phai chon 3 text"
		 )
  )
  (progn
	 (setq
		pgoc (trans (getpoint "\nVao diem noi suy: ") 1 0)
		lste (mapcar 'ssname (list ss3 ss3 ss3) '(0 1 2))
		tt	 (entget (car lste))
		lste (mapcar '(lambda (e)
						 (setq tt (entget e)
							   p  (cdr (assoc 10 tt))
							   gt (atof (cdr (assoc 1 tt)))
						 )
						 (reverse (cons gt (cdr (reverse p))))
					  )
					 lste
			 )
	 )
	 (mapcar 'set '(p0 p1 p2) lste)
	 (setq tt (subst (cons 10 pgoc) (assoc 10 tt) tt)
		   tt (subst (cons 1 (rtos (getz p0 p1 p2 pgoc))) (assoc 1 tt) tt)
	 )
	 (entmake tt)
	 (command ".change" "L" "" "p" "c" "6" "")
  )
  )
)

; CHHUONG TRINH CON
(defun getZ	(p0 p1 p2 p / vta vtb x0 y0 z0 x1 y1 z1 x2 y2 z2 x y A B C)
  (setq
  p	  (list (car p) (cadr p))
  vta (mapcar '- p1 p0)
  vtb (mapcar '- p2 p0)
  )
  (mapcar 'set
	   '(x0 y0 z0 x1 y1 z1 x2 y2 z2 x y)
	   (append p0 vta vtb p)
  )
  (setq
  A	(- (* y1 z2) (* y2 z1))
  B	(- (* z1 x2) (* z2 x1))
  C	(- (* x1 y2) (* x2 y1))
  )
  (/ (- (+ (* A x0) (* B y0) (* C z0)) (+ (* A x) (* B y))) C)
)

 

Lisp này mình mót được từ trên diễn đàn Cadviet, hình như của bác Nguyễn Hoành thì phải. Hãy cám ơn bác ấy.

Như thế này là ổn rồi. Cám ơn 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

Hi.

1.Lưới thưa thì chỉ có vài điểm.tốt nhất là bạn nên chèn thủ công bạn ah.Chắc cũng không tốn công sức mấy?.

2.Nếu có lisp như bạn nói nếu mà mình làm bên trắc địa thì mình có thể biến bình đồ TL:1/1000 thành bình đồ TL:1/500,1/200....thật là ngon ăn.Chỉ ngồi chơi xơi nước đi đo vài điểm rồi về chêm.hi.=> địa hình sẽ không sát thực tế.=>Mấy người làm bên trắc địa nếu lỡ có chắc cũng không dám cho vì lương tâm nghề nghiệp.

3.Mình làm bên thiết kế,có cũng không dám cho bạn được.Chỉ sợ công trình được duyệt rồi mà suốt ngày còn phải đi xử lí lại vì thiết kế không sát thực tế.=>.được người thiệt mình.

4.Ai ai bên trắc địa cũng có lisp như vậy thì chắc xây dựng VN sẽ loạn mất thôi.

Thành thật cảm ơn bạn đã lưu tâm! Tuy nhiên theo như mình hiểu thì sự việc không đến nỗi bi đát như thế. Trong thiết kế ở Việt Nam, làm gì có khái niệm tuyệt đối? Công ty tớ trước kia có đội khảo sát,tớ biết họ làm việc thế nào mà!

Một lần nữa cám ơn bạ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

- Các bác cho em hỏi: lisp ns.lsp trên có thể cải tiến để mình chọn toàn bộ tập hợp điểm, lisp sẽ tự chọn 3 điểm để nội suy cao độ hợp lý. Kết qủa sẽ được thể hiện trên bản vẽ cad luôn, và lisp chỉ thoát lệnh khi mình cần. Mời các bác dòm ngó thử tí nhé

- Nếu không được thì cho em hỏi có lisp nào lấy được cao độ tự nhiên của nova thông qua lệnh CDTN, và thể hiện cao độ lên trên bản vẽ cad đượ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

- Các bác cho em hỏi: lisp ns.lsp trên có thể cải tiến để mình chọn toàn bộ tập hợp điểm, lisp sẽ tự chọn 3 điểm để nội suy cao độ hợp lý. Kết qủa sẽ được thể hiện trên bản vẽ cad luôn, và lisp chỉ thoát lệnh khi mình cần. Mời các bác dòm ngó thử tí nhé

- Nếu không được thì cho em hỏi có lisp nào lấy được cao độ tự nhiên của nova thông qua lệnh CDTN, và thể hiện cao độ lên trên bản vẽ cad được không???

 

Xài Topo đi bạn : nội suy cao độ tại bất kỳ vị trí nào cho khoẻ

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

cho vào excel mà mà số đi 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

 

Hề hề hề,

Gửi bạn cái ni, không biết đã đúng ý bạn chưa??? Lưu ý rằng 3 text mà bạn chọn phải là 3 text có giá trị của cao độ và đặt tại điểm ghi cao độ đó.

(defun c:ns	(/ ss3 pgoc lste tt)   (princ "\nChon 3 text dau tien: ")   (setq ss3 (ssget '((0 . "TEXT"))))   (if (/= (sslength ss3) 3)	  (alert (strcat "\nBan vua chon "					 (itoa (sslength ss3))					 " text\nban can phai chon 3 text"			 )	  )	  (progn		 (setq			pgoc (trans (getpoint "\nVao diem noi suy: ") 1 0)			lste (mapcar 'ssname (list ss3 ss3 ss3) '(0 1 2))			tt	 (entget (car lste))			lste (mapcar '(lambda (e)							 (setq tt (entget e)								   p  (cdr (assoc 10 tt))								   gt (atof (cdr (assoc 1 tt)))							 )							 (reverse (cons gt (cdr (reverse p))))						  )						 lste				 )		 )		 (mapcar 'set '(p0 p1 p2) lste)		 (setq tt (subst (cons 10 pgoc) (assoc 10 tt) tt)			   tt (subst (cons 1 (rtos (getz p0 p1 p2 pgoc))) (assoc 1 tt) tt)		 )		 (entmake tt)		 (command ".change" "L" "" "p" "c" "6" "")	  )   )); CHHUONG TRINH CON(defun getZ	(p0 p1 p2 p / vta vtb x0 y0 z0 x1 y1 z1 x2 y2 z2 x y A B C)   (setq	  p	  (list (car p) (cadr p))	  vta (mapcar '- p1 p0)	  vtb (mapcar '- p2 p0)   )   (mapcar 'set		   '(x0 y0 z0 x1 y1 z1 x2 y2 z2 x y)		   (append p0 vta vtb p)   )   (setq	  A	(- (* y1 z2) (* y2 z1))	  B	(- (* z1 x2) (* z2 x1))	  C	(- (* x1 y2) (* x2 y1))   )   (/ (- (+ (* A x0) (* B y0) (* C z0)) (+ (* A x) (* B y))) C))

Lisp này mình mót được từ trên diễn đàn Cadviet, hình như của bác Nguyễn Hoành thì phải. Hãy cám ơn bác ấy.                                                                                                                                         

 

 

Nhờ các bạn sửa giúp lisp trên sao cho text nội suy điền vào đúng vị trí nội suy. 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

Mọi người cho mình hỏi chút lisp nội suy cao độ cách dùng như thế nào mọi người?????????

Mình đang cần các bạn chỉ dùm mình với.thanks mọi ngườ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

Mọi người cho mình hỏi chút lisp nội suy cao độ cách dùng như thế nào mọi người?????????

Mình đang cần các bạn chỉ dùm mình với.thanks mọi người

Hề hề hề,

Cách dùng lisp bạn hãy tìm và đọc topic hướng dẫn sử dụng mã lisp trên diễn đàn này nhé.

@ limfx: Lisp này đã điền text vào đúng vị trí điểm nội suy rồi đó. Tuy nhiên text được điền vào có cấu trúc căn chỉnh y chang các text mẫu được chọn chứ chưa hẳn là đã theo yêu cầu của bạn. Bạn cần nói rõ việc căn chỉnh text mà bạn muốn thì may ra mới có thể sửa lisp đượ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ác bác cho mình hỏi, một bình đồ nhiều cao độ, nhưng có một vùng bên ngoài bị thiếu cao độ do số liệu khảo sát ko đầy đủ. Các bác cho mình hỏi có cách nào để ngoại suy điền cao độ ko? chứ chia mặt cắt rồi điền cao độ thì lâu quá, mà vùng đó chạy dài. Mong cả nhà giúp vớ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ạ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

×