Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
dangneo

Vẽ cao độ địa hình từ bản đồ lên mặt cắt

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

Nhờ các bạn tìm hộ mình cái lisp vẽ địa hình mặt cắt từ bản đồ địa hình nhé.

Ở đây mình lập 1 tuyến chạy của mặt cắt

Từ các toạ độ trên bản đồ địa hình chạy được ra địa hình của mặt cắt

Chú ý: Có các thông số cần được biểu diễn như Cột điện, mốc toạ độ, cây... Nhờ các bạn đưa lên bản đồ kèm theo cao độ biểu diễn bên phải của Thông số cột điện, mốc như trên bản vẽ mình đưa lên nhé.

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

nhân tiện ở đây mình cũng nhờ các bạn sửa hộ S2p.slp đã có sẵn

 

http://www.cadviet.com/upfiles/3/120138_s2p.lsp

 

- Yêu cầu: thao tác nhập số điểm chuyển từ Spl sang Pl chuyển thành khoảng cách của mỗi nút pl sau khi chuyển. ví dụ sau khi chuyển sang pl mỗi nút sẽ cách nhau 0.5m...

;; free lisp from cadviet.com
 
 
;; Spline2Pline.lsp © 2005 Lloyd Beachy
 
;; Routine to convert splines to plines
 
 
 
(Defun C:S2P (/ ss pt# cmdecho osmode clayer count ent lay lng pt-list
 
 cnt)
 
  (vl-load-com)
 
  (setq ss (ssget '((0 . "spline")))
 
pt# (getint "Enter number of segments <100>:")
 
cmdecho (getvar "cmdecho")
 
osmode (getvar "osmode")
 
clayer (getvar "clayer")
 
count 0 ;spline counter
 
  ) ;end setq
 
  (if (null pt#)
 
(setq pt# 100)
 
  )
 
  (setvar "cmdecho" 0)
 
  (command ".undo" "begin") ;begin undo group
 
  (setvar "osmode" 0)
 
  (repeat (sslength ss) ;repeat for each spline
 
(setq ent  (vlax-ename->vla-object (ssname ss count))
 
;change spline to vla-object
 
 lay  (vlax-get-property ent "layer");spline's layer
 
 lng  (vlax-curve-getDistAtPoint ent (vlax-curve-getEndPoint ent))
 
;length of spline
 
 pt-list (list (vlax-curve-getStartPoint ent))
 
;coords for start of spline
 
 cnt  1.0 ;segment counter
 
) ;end setq
 
(repeat pt# ;repeat for each segment
 
 (setq pt-list
 
(cons (vlax-curve-getPointAtDist ent (* lng (/ cnt pt#)))
 
  pt-list
 
)
 
 ) ;add segment's point to pt-list
 
 (setq cnt (1+ cnt)) ;counter to next segment
 
) ;end segment repeat
 
(setq cnt 0) ;pline counter
 
(setvar "clayer" lay) ;match spline's layer
 
(command ".pline" ;start "pline" command
 
(repeat (length pt-list);repeat for each point
 
  (command (nth cnt pt-list));enter current point
 
  (setq cnt (1+ cnt));counter to next point
 
  "" ;return value to close "pline" command
 
) ;end point repeat
 
) ;end command
 
(setq count (1+ count)) ;counter to next spline
 
  ) ;end spline repeat
 
  (command ".erase" ss "")
 
  (setvar "osmode" osmode)
 
  (setvar "clayer" clayer)
 
  (command ".undo" "end") ;end of undo group
 
  (setvar "cmdecho" cmdecho)
 
  (princ) ;exit quietly
 
) ;end C:S2P
 
;; free lisp from cadviet.com
 
 
;; Spline2Pline.lsp © 2005 Lloyd Beachy
 
;; Routine to convert splines to plines
 
 
 
(Defun C:S2P (/ ss pt# cmdecho osmode clayer count ent lay lng pt-list
 
 cnt)
 
  (vl-load-com)
 
  (setq ss (ssget '((0 . "spline")))
 
pt# (getint "Enter number of segments <100>:")
 
cmdecho (getvar "cmdecho")
 
osmode (getvar "osmode")
 
clayer (getvar "clayer")
 
count 0 ;spline counter
 
  ) ;end setq
 
  (if (null pt#)
 
(setq pt# 100)
 
  )
 
  (setvar "cmdecho" 0)
 
  (command ".undo" "begin") ;begin undo group
 
  (setvar "osmode" 0)
 
  (repeat (sslength ss) ;repeat for each spline
 
(setq ent  (vlax-ename->vla-object (ssname ss count))
 
;change spline to vla-object
 
 lay  (vlax-get-property ent "layer");spline's layer
 
 lng  (vlax-curve-getDistAtPoint ent (vlax-curve-getEndPoint ent))
 
;length of spline
 
 pt-list (list (vlax-curve-getStartPoint ent))
 
;coords for start of spline
 
 cnt  1.0 ;segment counter
 
) ;end setq
 
(repeat pt# ;repeat for each segment
 
 (setq pt-list
 
(cons (vlax-curve-getPointAtDist ent (* lng (/ cnt pt#)))
 
  pt-list
 
)
 
 ) ;add segment's point to pt-list
 
 (setq cnt (1+ cnt)) ;counter to next segment
 
) ;end segment repeat
 
(setq cnt 0) ;pline counter
 
(setvar "clayer" lay) ;match spline's layer
 
(command ".pline" ;start "pline" command
 
(repeat (length pt-list);repeat for each point
 
  (command (nth cnt pt-list));enter current point
 
  (setq cnt (1+ cnt));counter to next point
 
  "" ;return value to close "pline" command
 
) ;end point repeat
 
) ;end command
 
(setq count (1+ count)) ;counter to next spline
 
  ) ;end spline repeat
 
  (command ".erase" ss "")
 
  (setvar "osmode" osmode)
 
  (setvar "clayer" clayer)
 
  (command ".undo" "end") ;end of undo group
 
  (setvar "cmdecho" cmdecho)
 
  (princ) ;exit quietly
 
) ;end C:S2P
 
;; free lisp from cadviet.com
 
 
;; Spline2Pline.lsp © 2005 Lloyd Beachy
 
;; Routine to convert splines to plines
 
 
 
(Defun C:S2P (/ ss pt# cmdecho osmode clayer count ent lay lng pt-list
 
 cnt)
 
  (vl-load-com)
 
  (setq ss (ssget '((0 . "spline")))
 
pt# (getint "Enter number of segments <100>:")
 
cmdecho (getvar "cmdecho")
 
osmode (getvar "osmode")
 
clayer (getvar "clayer")
 
count 0 ;spline counter
 
  ) ;end setq
 
  (if (null pt#)
 
(setq pt# 100)
 
  )
 
  (setvar "cmdecho" 0)
 
  (command ".undo" "begin") ;begin undo group
 
  (setvar "osmode" 0)
 
  (repeat (sslength ss) ;repeat for each spline
 
(setq ent  (vlax-ename->vla-object (ssname ss count))
 
;change spline to vla-object
 
 lay  (vlax-get-property ent "layer");spline's layer
 
 lng  (vlax-curve-getDistAtPoint ent (vlax-curve-getEndPoint ent))
 
;length of spline
 
 pt-list (list (vlax-curve-getStartPoint ent))
 
;coords for start of spline
 
 cnt  1.0 ;segment counter
 
) ;end setq
 
(repeat pt# ;repeat for each segment
 
 (setq pt-list
 
(cons (vlax-curve-getPointAtDist ent (* lng (/ cnt pt#)))
 
  pt-list
 
)
 
 ) ;add segment's point to pt-list
 
 (setq cnt (1+ cnt)) ;counter to next segment
 
) ;end segment repeat
 
(setq cnt 0) ;pline counter
 
(setvar "clayer" lay) ;match spline's layer
 
(command ".pline" ;start "pline" command
 
(repeat (length pt-list);repeat for each point
 
  (command (nth cnt pt-list));enter current point
 
  (setq cnt (1+ cnt));counter to next point
 
  "" ;return value to close "pline" command
 
) ;end point repeat
 
) ;end command
 
(setq count (1+ count)) ;counter to next spline
 
  ) ;end spline repeat
 
  (command ".erase" ss "")
 
  (setvar "osmode" osmode)
 
  (setvar "clayer" clayer)
 
  (command ".undo" "end") ;end of undo group
 
  (setvar "cmdecho" cmdecho)
 
  (princ) ;exit quietly
 
) ;end C:S2P

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  

×