Đến nội dung


Hình ảnh
- - - - -

Xin lisp xuất cao độ dạng text khi pick trên bình đồ


  • Please log in to reply
37 replies to this topic

#21 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 01 December 2012 - 03:39 PM

Bản vẽ bạn gởi lên thì các đường đồng mức đều có Z=0 tất cả, vậy sao lấy cao độ được?

srr vì spam, nhưng vì e thấy "ngứa mồm" quá!
Vì bình đồ dởm nên bác có thể chỉ cần cho chủ topic cái cần câu để câu đc cái khoảng cách giữa các điểm giao giữa tuyến và đường đồng mức là được rồi !
Vì cuối cùng chủ topic muốn làm trên excel nên e nghĩ cái này làm thủ công trên excel thì đở đau đầu hơn (vì cao độ đđm thì chỉ "bước đều" kạch kạch kạch ...)
  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#22 anpha3

anpha3

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 01 December 2012 - 06:54 PM

Khoảng cách được lấy như sau:
1.Điểm đầu tuyến đến giao điểm đường đồng mức.
2.Giữa các điểm giao giữa tuyến và đường đồng mức
3.Các giao điểm đường đồng mức đến góc như G1;G2.
4.Các giao điểm góc G1;G2 đến đường đồng mức.
5.Giao điểm đường đồng mức đến điểm cuối tuyến.
  • 0

#23 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 01 December 2012 - 09:08 PM

Bác ơi có thể nội suy các đường đồng mức cắt theo tỷ lệ bản đồ ( 1: 10.000; hoặc 1: 5000....) . Trên đỉnh cao có các text cao độ rồi mà. mỗi đường đồng mức có 1 cao độ chênh cao.

Hề hề hề,
Vấn đề của bạn ở đây là độ chênh cao giữa các đường đồng mức có giống nhau hay không?? Và mỗi tuyến của bạn có chắc chắn chỉ cắt các đường đồng mức này một lần hay không??? Nghĩa là mỗi tuyến của bạn chỉ đi theo một chiều lên hay xuống.
Nếu câu trả lời của bạn là khẳng định thì bài toán của bạn có thể giải được. Còn nếu là phủ định thì phải cần biết thêm các dữ kiện khác nữa bạn ạ.
Hề hề hề,...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#24 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 02 December 2012 - 08:36 AM

Hề hề hề,
Vấn đề của bạn ở đây là độ chênh cao giữa các đường đồng mức có giống nhau hay không?? Và mỗi tuyến của bạn có chắc chắn chỉ cắt các đường đồng mức này một lần hay không??? Nghĩa là mỗi tuyến của bạn chỉ đi theo một chiều lên hay xuống.
Nếu câu trả lời của bạn là khẳng định thì bài toán của bạn có thể giải được. Còn nếu là phủ định thì phải cần biết thêm các dữ kiện khác nữa bạn ạ.
Hề hề hề,...

Dễ chi mà bắt lỗi được Bác Bình ... hic...
Đã gọi là đồng mức thì phải thế bác ạh ! người ta cắt quả núi từng lát, từng lát "đều như máy" thế là đc đường đồng mức !
<< tuyến cắt 1 đường đồng mức 2 hoặc >2 lần là chuyện bình thường bác ạh !>>
  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#25 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 02 December 2012 - 10:12 PM

Dễ chi mà bắt lỗi được Bác Bình ... hic... Đã gọi là đồng mức thì phải thế bác ạh ! người ta cắt quả núi từng lát, từng lát "đều như máy" thế là đc đường đồng mức ! << tuyến cắt 1 đường đồng mức 2 hoặc >2 lần là chuyện bình thường bác ạh !>>

Hề hề hề,
Sở dĩ mình hỏi vậy vì khi xem trên bản vẽ bạn anpha3 gửi, có một số đường đồng mức có text ghi cao độ dè lên, mình thử kiểm tra thì có vẻ như các độ chênh cao giữa các đường dồng mức này không như nhau bác ạ. Nếu nó là như nhau thì có thể xác định được độ chênh cao này trên cơ sở cao độ đầu tuyến, cao độ cuối tuyến và số lượng các giao điểm của tuyến với các đường đồng mức nếu như tuyến chỉ có một chiều lên dần hoặc xuống dần.
Nếu tuyến cắt một đường đồng mức tại hai điểm có nghĩa là tuyến có leo đèo tụt dốc.Với cái bản vẽ chả có cao độ của các đường đồng mức này thì sẽ rất khó để xác định cao độ của giao điểm bác ạ.
Ấy là cách nghĩ của mình thôi vì mình vốn chả phải dân giao thông hay trắc địa gì nên cứ đoán mò vậy. Nếu bạn anpha3 đồng ý với cách hiểu của mình như vậy thì mình có thể viết giùm bạn ấy cái lisp theo yêu cầu. Còn nếu không đồng ý thì có nhẽ bạn ấy cần giải thích thêm ít nhiều thì may ra mình mới có thể giúp bạn ấy được.
Hề hề hề,...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#26 anpha3

anpha3

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 03 December 2012 - 12:19 PM

1.Độ chênh cao của các đường đồng mức là như nhau Bác Bình ạ.
2.Cao độ đầu tuyến và cuối tuyến có đoạn chênh cao lên dần và cũng có đoạn xuống dần vì là đồi mà bác.Như vậy nếu chênh cao từ điểm thấp lên điểm cao có cao độ giữa 2 điểm thấp đến điểm cuối cao và từ cao xuống thấp thì có cao độ tại điểm thấp.
Nhờ Bác Bình và các bác giúp đỡ Cám ơn Các Bác.
  • 0

#27 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 03 December 2012 - 09:14 PM

1.Độ chênh cao của các đường đồng mức là như nhau Bác Bình ạ.
2.Cao độ đầu tuyến và cuối tuyến có đoạn chênh cao lên dần và cũng có đoạn xuống dần vì là đồi mà bác.Như vậy nếu chênh cao từ điểm thấp lên điểm cao có cao độ giữa 2 điểm thấp đến điểm cuối cao và từ cao xuống thấp thì có cao độ tại điểm thấp.
Nhờ Bác Bình và các bác giúp đỡ Cám ơn Các Bác.

Hề hề hề
Không biết cái này có phải cái bạn cần hay không ??? Mình viết theo suy đoán của mình, nếu chỗ nào chưa đúng ý bạn thì hãy post lên nhé mình sẽ chỉnh sửa nếu được.



(defun c:nspt (/ pl plst enlst ptlst ptlst1 par n0 n1 a1 a2 b0 b fn f stt dis elev i i1)
(vl-load-com)
(setq pl (car (entsel "\n Chon polyline xac dinh tuyen"))
plst (acet-geom-vertex-list pl)
enlst (acet-ss-to-list (ssget "f" plst (list (cons 0 "*line") (cons 8 "-1,-2") (cons 62 8))))
ptlst (list)
plst1 (list)
)
(foreach p plst
(setq par (vlax-curve-getparamatpoint pl p)
ptlst (append ptlst (list (list par p)))
n0 (length ptlst1)
)
)
(foreach en enlst
(setq p (car (acet-geom-intersectwith pl en 0))
par (vlax-curve-getparamatpoint pl p)
ptlst (append ptlst (list (list par p)))
)
)
(setq ptlst (vl-sort ptlst '(lambda (x y) (< (car x) (car y))))
n1 (length ptlst)
a1 (getreal "\n Nhap gia tri cao do dau tuyen: ")
a2 (getreal "\n Nhap gia tri cao do cuoi tuyen: ")
b (getreal "\n Nhap gia tri chenh cao giua cac duong dong muc: ")
b0 10 i 0 i1 0
)
(if (/= b nil) (setq b0 B) (setq b b0))
(setq fn (getfiled "Select a File" "" "csv" 1)
f (open fn "w") )
(while (< i n1)
(setq STT (itoa (1+ i)))
(setq dis (rtos (if (> i 0)
(- (vlax-curve-getdistatparam pl (car (nth i ptlst))) (vlax-curve-getdistatparam pl (car (nth (1- i) ptlst)))) 0) 2 2 )
)
(setq elev (rtos (cond
((= (car (nth i ptlst)) 0) a1)
((= (car (nth i ptlst)) (car (last ptlst))) a2)
((/= (car (nth i ptlst)) (fix (car (nth i ptlst)))) ( if (> a2 a1) (* b (+ (fix (/ a1 B)) i1)) (* b (- (fix (/ a1 B)) i1))) )
((= (car (nth i ptlst)) (fix (car (nth i ptlst))))
(setq i1 (1- i1))
(if (> a2 a1) (+ (atof elev) (* b (/
(- (vlax-curve-getdistatparam pl (car (nth i ptlst))) (vlax-curve-getdistatparam pl (car (nth (1- i) ptlst))))
(- (vlax-curve-getdistatparam pl (car (nth (1+ i) ptlst))) (vlax-curve-getdistatparam pl (car (nth (1- i) ptlst)))) )))
(- (atof elev) (* b (/
(- (vlax-curve-getdistatparam pl (car (nth i ptlst))) (vlax-curve-getdistatparam pl (car (nth (1- i) ptlst))))
(- (vlax-curve-getdistatparam pl (car (nth (1+ i) ptlst))) (vlax-curve-getdistatparam pl (car (nth (1- i) ptlst)))) )))
)) ) 2 2)
)
(setq txt (strcat STT (chr 44) dis (chr 44) elev) i (1+ i) i1 (1+ i1) )
(princ (strcat "\n" txt))
(write-line txt f)
)

(close f)
(princ)


)
Bạn lưu ý khi sử dụng lisp này như sau:
1/- Lisp chỉ chạy đúng khi các đường đồng mức chỉ cắt tuyến tại một điểm. (tức là tuyến sẽ chỉ có một chiều đi lên cao dần hay đi xuống thấp dần).
2/- Chiếu của pline tuyến phải được vẽ đúng với tên gọi của điểm đầu và cuối tuyến (tức là điểm dầu tuyến phải là điểm bắt đầy vẽ pline tuyến)
3/- Để giảm thiểu việc nhầm lẫn các điểm cặt của pline tuyến và đường đồng mức, (do trên bản vẽ có nhiều loại đường pline khác mà không phải là đường đồng mức) mình đã sử dụng bộ lọc khi chọn đường đồng mức theo layer và màu của các đường đồng mức. Vì thế nếu bản vẽ bạn sử dụng không bố trí các đường đồng mức đúng trên các layer "-1" và "-2' cũng như không có màu là 8 thì lisp sẽ không lấy được các giao điểm của tuyến với đường đồng mức. Vì thế bạn cần sửa lại đôi chút trong bộ lọc này cho phù hợp. Code của bộ lọc là dòng này:
(list (cons 0 "*line") (cons 8 "-1,-2") (cons 62 8)) trong đó "-1,-2" là tên các layer chứa dường đồng mức trên bản vẽ bạn gửi và số 8 là tên màu của đường đồng mức trên bản vẽ đó.
Bạn dựa vào đó để điều chỉnh bộ lọc này cho phù hợp với bản vẽ bạn sử dụng.

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.

#28 anpha3

anpha3

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 06 December 2012 - 10:12 AM

Cảm ơn Bác Bình đã giúp em. Nhưng lisp này em sử dụng chỉ lấy được 11 điểm còn lại là không lấy được tiếp Bác Ạ Bác Xem lại giúp em nhé.http://www.cadviet.c...866_gui_bac.rar
  • 0

#29 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 06 December 2012 - 04:05 PM

Cảm ơn Bác Bình đã giúp em. Nhưng lisp này em sử dụng chỉ lấy được 11 điểm còn lại là không lấy được tiếp Bác Ạ Bác Xem lại giúp em nhé.http://www.cadviet.c...866_gui_bac.rar

Hề hề hề,
Vấn đê của bạn mình chưa rõ lắm nhưng có nhẽ do khi chạy lisp bạn không zoom màn hình để nhìn thấy hết tuyến mà bạn để màn hình chỉ thấy tuyến đến khoảng điểm cắt số 13 thì phải. Xem trên file kết quả thì thấy điểm thứ 13 có cao độ là cuối cùng (972) rồi.
Mình đã chạy trên file bản vẽ bạn gửi thì ra đủ 55 điểm như file kết quả đình kèm.
Do vậy bạn hãy thử lại và lưu ý trước khi chạy lisp, nên zoom màn hình sao cho thấy toàn tuyến và không thay đổi màn hình trong quá trình chạy lisp (nhất là khi bạn muốn xem cao độ tại đầu và cuối tuyến để nhập thông số vào lisp. Điều này nên xem trước và ghi ra giấy để khỏi nhầm)
bạn cũng co thể thử làm như sau:
Thêm dòng code (command "zoom" "e") vào đàu chương trình, phía dưới dòng (vl-load-com)
Thêm dòng code (command "zoom" "p') vào cuối chương trình, bên trên dòng code (princ)

Đây là file kết quả mình chạy ra:
http://www.cadviet.c...866_gui_bac.rar
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#30 anpha3

anpha3

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 09 December 2012 - 12:53 PM

Cám ơn Bác Bình đã giúp đỡ Em. Bác có thể giúp em xuất thêm số liệu góc như file kết quả được không Bác.
  • 0

#31 anpha3

anpha3

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 09 December 2012 - 12:55 PM

Sao em không up được file lên
  • 0

#32 anpha3

anpha3

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 09 December 2012 - 12:57 PM

http://www.cadviet.c..._guibacbinh.rar

Em cám ơn Bác
  • 0

#33 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 09 December 2012 - 09:16 PM

http://www.cadviet.c..._guibacbinh.rar

Em cám ơn Bác

Hề hề hề,
Bạn dùng thử cái này coi đã ưng ý chưa nhé.
http://www.cadviet.c...ttrenbinhdo.lsp

Chúc bạn vui và lưu ý lần sau nên suy nghĩ cẩn thận trước khi yêu cầu để tránh việc phải làm đi làm lại thế này.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#34 anpha3

anpha3

    biết vẽ arc

  • Members
  • PipPip
  • 48 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 10 December 2012 - 08:11 PM

Bác Bình ơi Góc nhỏ thì đúng còn góc lớn thì sai Bác ạhttp://www.cadviet.c...ac_sua_giup.rar
  • 0

#35 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 10 December 2012 - 09:11 PM

Bác Bình ơi Góc nhỏ thì đúng còn góc lớn thì sai Bác ạhttp://www.cadviet.c...ac_sua_giup.rar

Hề hề hề,
Chả có gì sai ở đây cả. Chỉ tại bạn không chịu định nghĩa cho rõ vấn đề một lúc mà cứ mỗi lần lại són ra một tí mà thôi. Việc mình phải đoán mò và tự định nghĩa cho mình tất nhiên không thể đúng hoàn toàn theo ý bạn được. Kể cả lần sửa này, mình cũng không hẳn tin là đã đoán đúng ý bạn. Bạn nên rút kinh nghiệm về cách trình bày vấn đề của mình sao cho người khác không phải đoán ý bạn nữa. Càng trình bày rõ ý mình càng tốt. Còn nếu bạn vẫn tiếp tục bắt người khác phải đoán mò ý bạn thì chắc chắn bạn sẽ khó có được kết quả như ý.
Đây cũng là lần cuối cùng mình sửa cái lisp này. Nếu nó vẫn chưa như ý bạn thì có hai cách:
1/- Bạn hãy nghiên cứu để có thể tự sửa cho đúng ý bạn.
2/- Hãy chờ đó, có thể sẽ có người khác giúp bạn cái lisp tốt hơn.
Mình không muốn bàn thêm về nó nữa, bởi không muốn đoán mò thêm và cũng không thích cách làm việc của bạn.
http://www.cadviet.c...renbinhdo_1.lsp
Chúc bạn vui và hy vọng không cần sửa gì thêm.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#36 kute9x

kute9x

    Chưa sử dụng CAD

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

Đã gửi 10 December 2012 - 09:51 PM

Mình sử dụng nova, sau khi xuất toạ độ = lệnh cdtep, dùng lưới tam giác và chạy ra được đường đồng mức rồi, kiểm tra cao độ = lệnh CDTN đúng rồi .

Bây giờ nhờ anh em viết cho đoạn lisp pick vào 1 điểm nào đó trên bình đồ thì xuất ra cao độ ở dạng text ngay vị trí đó
Cám ơn các bác trước nhá.

tại sao không dùng lệnh CDTN gõ T, sau đó chọn ON, pick vào binh đồ text cao độ tự nhiên sẽ hiện lên trên bản vẽ mà
  • 0

#37 vuongvjpnd

vuongvjpnd

    biết vẽ rectang

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

Đã gửi 13 August 2014 - 02:16 PM

cái này bạn nhờ bất cứ 1 (kỹ sư cầu đường đang làm đồ án tốt nghiệp) nào cũng chơi đc bằng Topo tuốt !
Nhanh, gọn, .... nhẹ.....đầu, Lisp làm gì bác ơi !
Lưu ý: nếu bạn nhờ viết lisp thì chỉ nhờ đến đoạn tính khoảng cách giữa các cọc thôi, cao độ lấy đúng chẳn cao độ đồng mức mà !

dùng TOPO thì lệnh là gì vậy bác, ý em là copy 1 điểm rồi dán vào vùng lưới tam giác ý, sao cho nó nhận cao độ!!!!!!


  • 0

#38 vuongvjpnd

vuongvjpnd

    biết vẽ rectang

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

Đã gửi 13 August 2014 - 02:19 PM

tại sao không dùng lệnh CDTN gõ T, sau đó chọn ON, pick vào binh đồ text cao độ tự nhiên sẽ hiện lên trên bản vẽ mà

cách này hay quá!!!!!


  • 0