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  
thao_tedi

Sửa lisp thể hiện độ dốc (grade và slope)

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

Chào cả nhà.

Em đang thiết kế đường bằng Land desktop 2005. Trong Land không thế hiện độ dốc mặt đường và taluy do đó mấy Cadder phải làm bằng tay. Em có một lisp thể hiện độ dốc taluy bằng lệnh grade cho kết quả ví dụ 3.0:1.0, 2.0/1.0.. Em muốn thêm phần cho cho độ dốc mặt đường bằng lệnh slope cho kết quả độ dốc mặt đường là 1.0%, 4.5% .v.v.

Lisp của em như sau: Em đang mày mò sửa lẹnh slope nhưng vẫn chưa được.

 

(defun c:grade ()

textsize 0.5

osmode 1

(prompt "\npick points for the grade")

(setq pnt1 (getpoint) pnt2 (getpoint pnt1))

(setq ang1 (angle pnt1 pnt2))

;(setq ang1 (getangle))

(setq tanofang (/ (sin ang1) (cos ang1)))

(if (= tanofang 0) (setq grade1 0.0)

(setq grade1 (/ 1 tanofang))

)

(setq txt1 (strcat (rtos (abs grade1) 2 1) ":1"))

;(setq pnt1 (getpoint "\nPick location for text"))

 

(setq midpt (list (/ (+ (car pnt1) (car pnt2)) 2) (/ (+ (cadr pnt1) (cadr

pnt2)) 2)))

(setq odist (getvar "textsize"))

(setq ang2 (+ ang1 (/ pi 2)))

(setq osmd (getvar "osmode"))

(setvar "osmode" 0)

(setq inspt (polar midpt ang2 odist))

(command "text" "mc" inspt "" (rtd ang1) txt1) ; middle centre justified

(setvar "osmode" osmd)

(princ)

) ; replace the "c" above with "bc" for bottom centre

 

 

(defun rtd (a)

(/ (* a 180.0) pi)

)

 

(defun c:slope ()

textsize 0.5

osmode 1

(prompt "\npick points for the slope")

(setq pnt1 (getpoint) pnt2 (getpoint pnt1))

(setq ang1 (angle pnt1 pnt2))

;(setq ang1 (getangle))

(setq tanofang (/ (sin ang1) (cos ang1)))

(if (= tanofang 0) (setq slope1 0.0%)

(setq grade1 (/ 1 tanofang))

)

(setq txt1 (strcat (rtos (abs grade1) 2 1) ":1"))

;(setq pnt1 (getpoint "\nPick location for text"))

 

(setq midpt (list (/ (+ (car pnt1) (car pnt2)) 2) (/ (+ (cadr pnt1) (cadr

pnt2)) 2)))

(setq odist (getvar "textsize"))

(setq ang2 (+ ang1 (/ pi 2)))

(setq osmd (getvar "osmode"))

(setvar "osmode" 0)

(setq inspt (polar midpt ang2 odist))

(command "text" "mc" inspt "" (rtd ang1) txt1) ; middle centre justified

(setvar "osmode" osmd)

(princ)

) ; replace the "c" above with "bc" for bottom centre

 

 

(defun rtd (a)

(/ (* a 180.0) pi)

)

 

 

Xin chân thành cảm ơn các bá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

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  

×