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

[Yêu cầu] Lisp thống kê tọa độ địa chính

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

Đầu tiên em xin cảm ơn các bác đã vào xem ạ.

Yêu cầu của em là sẽ ra bảng thống kê tọa độ như hình vẽ sau:

 

64109c811bba29369e2985d163572e7c_52242025.20130102110128.700x0.jpg

 

Em mô tả cụ thể lisp như sau:

Bước 1:Gọi tên lisp

Bước 2:Chọn độ chính xác thập phân cho tọa độ [1]=0,1 - [2]=0,01- [3]=0,001

Bước 3:Chọn độ chính xác thập phân cho chiều dài cạnh đo [1]=0,1 - [2]=0,01- [3]=0,001

Bước 4:Lisp hỏi là: Bạn có muốn lập bảng thống kê tọa độ không [Y]?

Ấn Y sẽ ra được bảng thống kê có kích thước đúng như hình vẽ sau:

55b8a0d647bd5b680f2db72d1fc7b586_52242120.20130102110635.700x0.jpg

 

Bước 5: Lisp hỏi tiếp là : Bạn có bao nhiêu đỉnh khống chế tất cả? Giả sử có 11 đỉnh tất cả, ta gõ 11 sẽ tự động chạy ra được bảng có kích thước sau ( có 12 dòng tính cả đỉnh 1 để em còn khép cạnh)

 

bb3ba072d4e9bdcd8d07e9f2e48e291b_52242240.20130102111248.700x0.jpg

 

Bước 6:Lisp hỏi là Tọa độ đỉnh 1. Dùng chuột pick vào đỉnh 1 xong Lisp tự động điền tên đỉnh tọa độ X, Y tương ứng vào bảng.

 

ba0785286730adf45e9543e6ab8458cd_52242499.20130102112041.700x0.jpg

 

Bước 7:Lisp hỏi là Tọa độ đỉnh 2. Dùng chuột pick vào đỉnh 2 xong Lisp tự động điền tên đỉnh tọa độ X, Y tương ứng vào bảng.

Sau đó lisp hỏi là tên cạnh là gì? Điền 1-2 ấn Enter xong tự động điền khoảng cách giữa 2 đỉnh.

 

b2e86870d97e66d4fc8d6b0363f80c21_52242500.20130102112147.700x0.jpg

 

Bước 8:Lisp hỏi là Tọa độ đỉnh 3. Dùng chuột pick vào đỉnh 2 xong Lisp tự động điền tên đỉnh tọa độ X, Y tương ứng vào bảng.

Sau đó lisp hỏi là tên cạnh là gì? Điền 2-3 ấn Enter xong tự động điền khoảng cách giữa 2 đỉnh.

.....

Lặp lại như vậy cho tới khi hết số lượng khai báo đỉnh ban đầu.

 

 

Hiện tại em đang làm công tác đo vẽ tách thửa cả một phường, Thống kê thủ công rất lâu.

Mong các bác vào giúp em với ạ.

 

Em xin cảm ơ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

Lisp thì mình chịu thua, song cái này bạn kết hợp Topo + excel thì cũng làm đc tốt !

 

Thanks bác....Các bác pro lisp viết giúp em với ạ........Cần gấp 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

Lisp này tôi nhớ không nhầm thì trên 4fum này đã có khá nhiều. Bạn search thử xem nhé.

Em search rồi nhưng không có cái này đúng yêu cầu nên mới post bài này....Mong Mod giúp đỡ ạ!

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

Lisp không khó nhưng mới đầu năm, bạn nghe có vẻ số ruột hén :)

Trước mắt thì tạm thời dùng cái na ná thôi bạn, một yêu cầu riêng đâu phải sớm chiều

Gluck ^^

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

Lisp không khó nhưng mới đầu năm, bạn nghe có vẻ số ruột hén :)

Trước mắt thì tạm thời dùng cái na ná thôi bạn, một yêu cầu riêng đâu phải sớm chiều

Gluck ^^

Đương nhiên là sốt ruột rồi bác...Mình em phải làm chỗ đống này mà sắp phải nộp rồi...Trên Sở họ ép mình quá...Em xin đa tạ ạ!

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

Đương nhiên là sốt ruột rồi bác...Mình em phải làm chỗ đống này mà sắp phải nộp rồi...Trên Sở họ ép mình quá...Em xin đa tạ ạ!

Hề hề hề,

Ông chủ thớt này khó tính nhể???

Khó thế thì ai có thể giúp được đây. Chơi kiểu gì mà cứ chọn mỗi một đỉnh số 1 mà ra được tất cả các tọa độ của các đỉnh khác vấy cà??? Thế nếu ngưới dùng pick nhầm thứ tự các đỉnh thì sao hè???

Lại còn phải đúng kích thước bảng nữa chứ, thế có cần đúng cả kích thước chữ và font chữ không hè. Chữ tiếng Tây có được không?? hay cứ phải là tiếng Việt có dấu đàng hoàng????

Hề hề hề,...

  • Vote tăng 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

Hề hề hề,

Ông chủ thớt này khó tính nhể???

Khó thế thì ai có thể giúp được đây. Chơi kiểu gì mà cứ chọn mỗi một đỉnh số 1 mà ra được tất cả các tọa độ của các đỉnh khác vấy cà??? Thế nếu ngưới dùng pick nhầm thứ tự các đỉnh thì sao hè???

Lại còn phải đúng kích thước bảng nữa chứ, thế có cần đúng cả kích thước chữ và font chữ không hè. Chữ tiếng Tây có được không?? hay cứ phải là tiếng Việt có dấu đàng hoàng????

Hề hề hề,...

 

Huhu...tình hình cấp bách nên em copy paste nhầm bác ạ. bác thông cảm giúp em.

Có thể bỏ Bước 4 và quan trọng là từ Bước 5 trở đi ạ.... Mà đã từ bước này trở đi thì tiếng Tây Ban Nha, tiếng Thổ Nhĩ Kỳ cũng được ạ.

Huhu

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

:D Trên sở bắt nộp bảng liệt kê tọa độ chi tiết thế sao bạn ^^, sao không chạy hết nguyên thửa đất mà cứ phải pick từng đỉnh cực vậy nè , vậy đơn giản hơn ko bạn

104473_qqqq.jpg

 

Anh Hà ơi cho em ké hỏi xíu nếu anh có vô tình ghé ngang qua ^^

anh Ket cho bài tập phụ mà chưa nghĩ ra ^^

ví dụ trong lsp có hỏi thủ tục để tính toán đơn thuần

(defun c: tbc (....)

...)

(defun trungbinhcong ( ....)

(/ (+ ....)..)

)

(defun c: lp (....)..)

(defun tinhlapphuong (....)...)

Giờ anh Ket mún em tạo 1 hàm con có tác dụng in ket qua ra màn hình dùng hàm princ, để khi chạy mỗi thủ tục nó sẽ ra như thế này trên command ketqua: giá trị,

dùng hàm princ trong mỗi thủ tục cũng đc nhưng việc này sẽ lập đi lập lại trong mỗi thủ tục, nên anh Ket cho câu đố như vậy.

PS: cầu trời anh Ket ko vô lại thấy em như thế này :D

  • 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

 

Huhu...tình hình cấp bách nên em copy paste nhầm bác ạ. bác thông cảm giúp em.

Có thể bỏ Bước 4 và quan trọng là từ Bước 5 trở đi ạ.... Mà đã từ bước này trở đi thì tiếng Tây Ban Nha, tiếng Thổ Nhĩ Kỳ cũng được ạ.

Huhu

Hề hề hề,

1/- Bạn phải gửi một bản vẽ thể hiện đầu vào và đầu ra của bạn lên thì người viết lisp mới có thể làm đúng ý bạn được.

2/- Thực ra mình cũng đoán lờ mờ ý định của bạn, song để tránh phải làm đi làm lại mất công nên mới phải hỏi lại cho chắc.

3/- Vì việc thể hiện tiếng Việt có dấu trong lisp mình hơi dốt nên nếu cứ bắt buộc phải dùng tiếng Việt có dấu thì mình sẽ phải có thời gian nghiên cứu thêm.

4/- Bản vẽ của bạn đang sử dụng tỷ lệ là bao nhiêu??? Vì kết quả xuất ra sẽ phụ thuộc vào tỷ lệ bản vẽ này. Lôi thôi có thể xuất sai cái bạn cần đó.

5/- Quy trình chạy lisp bạn đưa ra như vậy thực ra không phải không có lý nhưng khá rườm rà, mình muốn hiểu rõ lý do phải rườm rà này để viết lisp bạn ạ.

Hề 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ôi viết cái sườn như sau:

Tên lệnh: BTD

Lisp hỏi điểm chèn bảng.

Lisp hỏi chọn điểm thứ nhất, thứ hai, thứ ba ... khi nào enter thì dừng các thứ tự nút tự động cộng thêm 1.

Kết quả vẽ ra thử sẽ biết, tôi lấy các số lẽ sau dấu phẩy theo cái hình của bạn.

 

Phần hoàn thiện khi bạn enter kết thúc lệnh sẽ tự thống kê thêm cạnh nối đỉnh cuối với đỉnh số 1 và kẻ hoàn thiện bảng, tạm thế tôi về đã.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi text
;;;Cu phap su dung (duy:t_text diemchen docao gocquay canhle noidung textstyle layer color)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_text (d c g cl nd k la co / d c g cl nd k la co)
(cond
((= cl "trai") (setq kcl 0))
((= cl "phai") (setq kcl 2))
((= cl "giua") (setq kcl 1))
)
(cond ((= g "") (setq g 0) ))
(cond ((= cl "") (setq kcl 0) ))
(setq g (duy:s_do>radian g))
(cond ((= k "") (setq k (getvar "TEXTSTYLE")) ))
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(entmake (list (cons 0 "TEXT")(cons 10 d)(cons 11 d)(cons 40 c)(cons 50 g)(cons 72 kcl)(cons 1 nd)(cons 7 k)(cons 8 la)(cons 62 co)))
(princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi line
;;;Cu phap su dung (duy:t_line diemdau diemcuoi layer color ltype ltypescale)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_line (a b la co lt slt / a b la co lt slt)
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(cond ((= lt "") (setq lt "bylayer") ))
(cond ((= slt "") (setq slt 1) ))
(entmake (list (cons 0 "LINE")(cons 10 a)(cons 11 B)(cons 8 la)(cons 62 co)(cons 6 lt)(cons 48 slt) ))
(princ)
)

(defun c:btd (/ ddt dtn dth)
(command "undo" "be")
(setq dvbd (getpoint "\nChon diem viet bang: "))
(setq dvbc (polar dvbd (* 2 pi) 30))
(duy:t_line (list (car dvbd) (- (cadr dvbd) 2)) (list (+ (car dvbd) 23) (- (cadr dvbd) 2)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (cadr dvbd) 3)) (list (+ (car dvbd) 30) (- (cadr dvbd) 3)) "" "" "" "")

(setq ddt (getpoint "\nChon diem thu 1: "))
(setq dtn ddt)
(setq sttn 1)
(duy:t_text (list (+ (car dvbd) 2.5) (- (cadr dvbd) 1.5)) 1 0 "giua" "1" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (car dtn) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (car dtn) 2 3) "" "" "")

(while (setq dth (getpoint dtn(strcat "\nChon diem thu " (rtos (+ sttn 1) 2 0) " <Enter de ket thuc!>")  ))
(duy:t_line dtn dth "" "" "" "")
(duy:t_line (list (car dvbd) (- (- (cadr dvbd) (* 2 sttn)) 2)) (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 2)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (+ sttn 1) 2 0) "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car dth) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car dth) 2 3) "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 3)) (list (+ (car dvbd) 30) (- (- (cadr dvbd) (* 2 sttn)) 3)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 24.8) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (strcat (rtos sttn 2 0) "-" (rtos (+ sttn 1) 2 0)) "" "" "")
(duy:t_text (list (+ (car dvbd) 28.3) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (rtos (distance dtn dth) 2 2) "" "" "")

(setq dtn dth)
(setq sttn (+ sttn 1))
)

(command "undo" "end")
(Princ)
)

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

Lisp gần hoàn thiện. chờ bạn cho biết bạn dùng bộ fon gì mình sẽ hoàn thiện nốt.

Tên lệnh BTD.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Chuyen gia tri goc tu do sang radian
;;;Cu phap su dung (duy:s_do>radian giatri)
;;;giatri la goc tinh theo do, kq la goc tinh theo radian
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:s_do>radian (gt / gt kq)
(setq kq (* (/ pi 180) gt))
kq)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi text
;;;Cu phap su dung (duy:t_text diemchen docao gocquay canhle noidung textstyle layer color)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_text (d c g cl nd k la co / d c g cl nd k la co)
(cond
((= cl "trai") (setq kcl 0))
((= cl "phai") (setq kcl 2))
((= cl "giua") (setq kcl 1))
)
(cond ((= g "") (setq g 0) ))
(cond ((= cl "") (setq kcl 0) ))
(setq g (duy:s_do>radian g))
(cond ((= k "") (setq k (getvar "TEXTSTYLE")) ))
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(entmake (list (cons 0 "TEXT")(cons 10 d)(cons 11 d)(cons 40 c)(cons 50 g)(cons 72 kcl)(cons 1 nd)(cons 7 k)(cons 8 la)(cons 62 co)))
(princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi line
;;;Cu phap su dung (duy:t_line diemdau diemcuoi layer color ltype ltypescale)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_line (a b la co lt slt / a b la co lt slt)
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(cond ((= lt "") (setq lt "bylayer") ))
(cond ((= slt "") (setq slt 1) ))
(entmake (list (cons 0 "LINE")(cons 10 a)(cons 11 B)(cons 8 la)(cons 62 co)(cons 6 lt)(cons 48 slt) ))
(princ)
)

(defun c:btd (/ ddt dtn dth)
(command "undo" "be")
(setq dvbd (getpoint "\nChon diem viet bang: "))
(duy:t_line dvbd (list (+ (car dvbd) 30) (cadr dvbd)) "" "" "" "")
(duy:t_line (list (car dvbd) (- (cadr dvbd) 5)) (list (+ (car dvbd) 30) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 0) (- (cadr dvbd) 0)) (list (+ (car dvbd) 0) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 5) (- (cadr dvbd) 0)) (list (+ (car dvbd) 5) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (cadr dvbd) 0)) (list (+ (car dvbd) 23) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 26.5) (- (cadr dvbd) 0)) (list (+ (car dvbd) 26.5) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 30) (- (cadr dvbd) 0)) (list (+ (car dvbd) 30) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 5) (- (cadr dvbd) 2.5)) (list (+ (car dvbd) 23) (- (cadr dvbd) 2.5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 14) (- (cadr dvbd) 2.5)) (list (+ (car dvbd) 14) (- (cadr dvbd) 5)) "" "" "" "")

(duy:t_text (list (+ (car dvbd) 2.5) (- (cadr dvbd) 3)) 1 0 "giua" "DINH" "" "" "")
(duy:t_text (list (+ (car dvbd) 14) (- (cadr dvbd) 1.75)) 1 0 "giua" "Toa Do" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (cadr dvbd) 4.25)) 1 0 "giua" "X (m)" "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (cadr dvbd) 4.25)) 1 0 "giua" "Y (m)" "" "" "")
(duy:t_text (list (+ (car dvbd) 24.75) (- (cadr dvbd) 1.75)) 1 0 "giua" "Ten" "" "" "")
(duy:t_text (list (+ (car dvbd) 28.25) (- (cadr dvbd) 1.75)) 1 0 "giua" "Canh" "" "" "")
(duy:t_text (list (+ (car dvbd) 24.75) (- (cadr dvbd) 4.25)) 1 0 "giua" "Canh" "" "" "")
(duy:t_text (list (+ (car dvbd) 28.25) (- (cadr dvbd) 4.25)) 1 0 "giua" "(m)" "" "" "")

(setq dvbd (list (car dvbd) (- (cadr dvbd) 5)))
;(setq dvbc (polar dvbd (* 2 pi) 30))
(duy:t_line (list (car dvbd) (- (cadr dvbd) 2)) (list (+ (car dvbd) 23) (- (cadr dvbd) 2)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (cadr dvbd) 3)) (list (+ (car dvbd) 30) (- (cadr dvbd) 3)) "" "" "" "")

(setq ddt (getpoint "\nChon diem thu 1: "))
(setq dtn ddt)
(setq sttn 1)
(duy:t_text (list (+ (car dvbd) 2.5) (- (cadr dvbd) 1.5)) 1 0 "giua" "1" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (car dtn) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (car dtn) 2 3) "" "" "")

(while (setq dth (getpoint dtn(strcat "\nChon diem thu " (rtos (+ sttn 1) 2 0) " <Enter de ket thuc!>")  ))
;(duy:t_line dtn dth "" "" "" "")
(grdraw dtn dth 7)
(duy:t_line (list (car dvbd) (- (- (cadr dvbd) (* 2 sttn)) 2)) (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 2)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (+ sttn 1) 2 0) "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car dth) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car dth) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 24.8) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (strcat (rtos sttn 2 0) "-" (rtos (+ sttn 1) 2 0)) "" "" "")
(duy:t_text (list (+ (car dvbd) 28.3) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (rtos (distance dtn dth) 2 2) "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 3)) (list (+ (car dvbd) 30) (- (- (cadr dvbd) (* 2 sttn)) 3)) "" "" "" "")

(setq dtn dth)
(setq sttn (+ sttn 1))
)
(command ".erase" "last" "")
(duy:t_line (list (car dvbd) (- (- (cadr dvbd) (* 2 sttn)) 2)) (list (+ (car dvbd) 30) (- (- (cadr dvbd) (* 2 sttn)) 2)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" "1" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car ddt) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car ddt) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 24.8) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (strcat (rtos sttn 2 0) "-" "1") "" "" "")
(duy:t_text (list (+ (car dvbd) 28.3) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (rtos (distance dtn ddt) 2 2) "" "" "")

(command "undo" "end")
(Princ)
)

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ũng làm địa chính nhưng yêu cầu của bạn hơi rườm rà. Công việc này chắng khác mấy việc lập bảng tọa độ góc ranh, chỉ hơi khác là có thêm cột tên cạnh. Việc xác định số lượng đỉnh đều được tự động thực hiện (kể cả tên cạnh) thông qua lệnh tạo đường bao "Boundary" của cad. Từ đó chỉ cần xác định vị trí của điểm đầu tiên (thường là 1) trên thửa đất, sau đó líp sẽ tự động lập bảng tọa độ x, y, tên cạnh, cạnh một cách tự động (theo đcx xác định). Việc bạn bắt Lisp nhập vào từng đỉnh sẽ rất mệt và thiếu chính xác. Duy chỉ có một đều là lệnh "Boundary" kg phải lúc nào cũng thành công. Lúc đó bạn phải xử lý riêng để đạt đc 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

Mình cũng làm địa chính nhưng yêu cầu của bạn hơi rườm rà. Công việc này chắng khác mấy việc lập bảng tọa độ góc ranh, chỉ hơi khác là có thêm cột tên cạnh. Việc xác định số lượng đỉnh đều được tự động thực hiện (kể cả tên cạnh) thông qua lệnh tạo đường bao "Boundary" của cad. Từ đó chỉ cần xác định vị trí của điểm đầu tiên (thường là 1) trên thửa đất, sau đó líp sẽ tự động lập bảng tọa độ x, y, tên cạnh, cạnh một cách tự động (theo đcx xác định). Việc bạn bắt Lisp nhập vào từng đỉnh sẽ rất mệt và thiếu chính xác. Duy chỉ có một đều là lệnh "Boundary" kg phải lúc nào cũng thành công. Lúc đó bạn phải xử lý riêng để đạt đc kết quả

đúng đó bên mình cũng dùng lsp đơn giản vậy, ý của bạn 2hpprodution nếu có thể sữa lại là pick vào tâm thửa rùi tự động chạy hết còn cái bảng có thể nhờ anh Duy sữa lại khi pit xong bảng tọa độ ra giống hệt ý bạn là đc, không phải pick từng điểm thì cũng gần như làm thủ công í nhỉ :D, lsp bên cơ quan mình có thêm 1 yêu cầu là nó phải nằm trong 1 layer nhất định mà lsp nhận dạng để tránh nhầm lẫn khi chạy, có 1 nhược điểm là nếu có khúc vạt khoảng cách nhỏ quá thì nó bỏ qua:D ko chạy 2 điểm đó ^^

  • Vote tăng 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

Lisp gần hoàn thiện. chờ bạn cho biết bạn dùng bộ fon gì mình sẽ hoàn thiện nốt.

Tên lệnh BTD.

 

Bác duy782006 ơi...lisp của bác tọa X,Y sao lại trùng nhau vậy? Đo chiều dài cũng không chính xác nữa..Bác chỉnh lại giúp em 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

Hề hề hề,

1/- Bạn phải gửi một bản vẽ thể hiện đầu vào và đầu ra của bạn lên thì người viết lisp mới có thể làm đúng ý bạn được.

2/- Thực ra mình cũng đoán lờ mờ ý định của bạn, song để tránh phải làm đi làm lại mất công nên mới phải hỏi lại cho chắc.

3/- Vì việc thể hiện tiếng Việt có dấu trong lisp mình hơi dốt nên nếu cứ bắt buộc phải dùng tiếng Việt có dấu thì mình sẽ phải có thời gian nghiên cứu thêm.

4/- Bản vẽ của bạn đang sử dụng tỷ lệ là bao nhiêu??? Vì kết quả xuất ra sẽ phụ thuộc vào tỷ lệ bản vẽ này. Lôi thôi có thể xuất sai cái bạn cần đó.

5/- Quy trình chạy lisp bạn đưa ra như vậy thực ra không phải không có lý nhưng khá rườm rà, mình muốn hiểu rõ lý do phải rườm rà này để viết lisp bạn ạ.

Hề hề hề,...

File cad đây ạ : http://www.cadviet.c...u_5_ghep_dc.dwg

Về tỷ lệ bác cứ xuất ra bảng giống bảng yêu cầu là được ạ!

Theo bác phamthanhbinh như thế nào là tối ưu nhất cho trường hợp của em ạ?

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

đúng đó bên mình cũng dùng lsp đơn giản vậy, ý của bạn 2hpprodution nếu có thể sữa lại là pick vào tâm thửa rùi tự động chạy hết còn cái bảng có thể nhờ anh Duy sữa lại khi pit xong bảng tọa độ ra giống hệt ý bạn là đc, không phải pick từng điểm thì cũng gần như làm thủ công í nhỉ :D, lsp bên cơ quan mình có thêm 1 yêu cầu là nó phải nằm trong 1 layer nhất định mà lsp nhận dạng để tránh nhầm lẫn khi chạy, có 1 nhược điểm là nếu có khúc vạt khoảng cách nhỏ quá thì nó bỏ qua:D ko chạy 2 điểm đó ^^

Nếu trường hợp tâm thửa bên trong có ao, hồ ... thì pick vào tâm thửa rất dễ nhầm ạ...Theo các bác làm như thế nào thì tối ưu nhất ạ?

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ác duy782006 ơi...lisp của bác tọa X,Y sao lại trùng nhau vậy? Đo chiều dài cũng không chính xác nữa..Bác chỉnh lại giúp em nhé!

Ok. Nhầm tí ở tọa độ. Chiều dài thì ko sai có sai thì do ai chứ ko phải do mình.

Sửa lại đây.

 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Chuyen gia tri goc tu do sang radian
;;;Cu phap su dung (duy:s_do>radian giatri)
;;;giatri la goc tinh theo do, kq la goc tinh theo radian
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:s_do>radian (gt / gt kq)
(setq kq (* (/ pi 180) gt))
kq)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi text
;;;Cu phap su dung (duy:t_text diemchen docao gocquay canhle noidung textstyle layer color)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_text (d c g cl nd k la co / d c g cl nd k la co)
(cond
((= cl "trai") (setq kcl 0))
((= cl "phai") (setq kcl 2))
((= cl "giua") (setq kcl 1))
)
(cond ((= g "") (setq g 0) ))
(cond ((= cl "") (setq kcl 0) ))
(setq g (duy:s_do>radian g))
(cond ((= k "") (setq k (getvar "TEXTSTYLE")) ))
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(entmake (list (cons 0 "TEXT")(cons 10 d)(cons 11 d)(cons 40 c)(cons 50 g)(cons 72 kcl)(cons 1 nd)(cons 7 k)(cons 8 la)(cons 62 co)))
(princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi line
;;;Cu phap su dung (duy:t_line diemdau diemcuoi layer color ltype ltypescale)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_line (a b la co lt slt / a b la co lt slt)
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(cond ((= lt "") (setq lt "bylayer") ))
(cond ((= slt "") (setq slt 1) ))
(entmake (list (cons 0 "LINE")(cons 10 a)(cons 11 B)(cons 8 la)(cons 62 co)(cons 6 lt)(cons 48 slt) ))
(princ)
)

(defun c:btd (/ ddt dtn dth)
(command "undo" "be")
(setq dvbd (getpoint "\nChon diem viet bang: "))
(duy:t_line dvbd (list (+ (car dvbd) 30) (cadr dvbd)) "" "" "" "")
(duy:t_line (list (car dvbd) (- (cadr dvbd) 5)) (list (+ (car dvbd) 30) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 0) (- (cadr dvbd) 0)) (list (+ (car dvbd) 0) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 5) (- (cadr dvbd) 0)) (list (+ (car dvbd) 5) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (cadr dvbd) 0)) (list (+ (car dvbd) 23) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 26.5) (- (cadr dvbd) 0)) (list (+ (car dvbd) 26.5) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 30) (- (cadr dvbd) 0)) (list (+ (car dvbd) 30) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 5) (- (cadr dvbd) 2.5)) (list (+ (car dvbd) 23) (- (cadr dvbd) 2.5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 14) (- (cadr dvbd) 2.5)) (list (+ (car dvbd) 14) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (cadr dvbd) 3)) 1 0 "giua" "DINH" "" "" "")
(duy:t_text (list (+ (car dvbd) 14) (- (cadr dvbd) 1.75)) 1 0 "giua" "Toa Do" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (cadr dvbd) 4.25)) 1 0 "giua" "X (m)" "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (cadr dvbd) 4.25)) 1 0 "giua" "Y (m)" "" "" "")
(duy:t_text (list (+ (car dvbd) 24.75) (- (cadr dvbd) 1.75)) 1 0 "giua" "Ten" "" "" "")
(duy:t_text (list (+ (car dvbd) 28.25) (- (cadr dvbd) 1.75)) 1 0 "giua" "Canh" "" "" "")
(duy:t_text (list (+ (car dvbd) 24.75) (- (cadr dvbd) 4.25)) 1 0 "giua" "Canh" "" "" "")
(duy:t_text (list (+ (car dvbd) 28.25) (- (cadr dvbd) 4.25)) 1 0 "giua" "(m)" "" "" "")

(setq dvbd (list (car dvbd) (- (cadr dvbd) 5)))
(duy:t_line (list (car dvbd) (- (cadr dvbd) 2)) (list (+ (car dvbd) 23) (- (cadr dvbd) 2)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (cadr dvbd) 3)) (list (+ (car dvbd) 30) (- (cadr dvbd) 3)) "" "" "" "")

(setq ddt (getpoint "\nChon diem thu 1: "))
(setq dtn ddt)
(setq sttn 1)
(duy:t_text (list (+ (car dvbd) 2.5) (- (cadr dvbd) 1.5)) 1 0 "giua" "1" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (car dtn) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (cadr dtn) 2 3) "" "" "")

(while (setq dth (getpoint dtn(strcat "\nChon diem thu " (rtos (+ sttn 1) 2 0) " <Enter de ket thuc!>")  ))
(grdraw dtn dth 7)
(duy:t_line (list (car dvbd) (- (- (cadr dvbd) (* 2 sttn)) 2)) (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 2)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (+ sttn 1) 2 0) "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car dth) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (cadr dth) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 24.8) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (strcat (rtos sttn 2 0) "-" (rtos (+ sttn 1) 2 0)) "" "" "")
(duy:t_text (list (+ (car dvbd) 28.3) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (rtos (distance dtn dth) 2 2) "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 3)) (list (+ (car dvbd) 30) (- (- (cadr dvbd) (* 2 sttn)) 3)) "" "" "" "")

(setq dtn dth)
(setq sttn (+ sttn 1))
)
(command ".erase" "last" "")
(duy:t_line (list (car dvbd) (- (- (cadr dvbd) (* 2 sttn)) 2)) (list (+ (car dvbd) 30) (- (- (cadr dvbd) (* 2 sttn)) 2)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" "1" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car ddt) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car ddt) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 24.8) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (strcat (rtos sttn 2 0) "-" "1") "" "" "")
(duy:t_text (list (+ (car dvbd) 28.3) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (rtos (distance dtn ddt) 2 2) "" "" "")

(command "undo" "end")
(Princ)
)


  • 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

theo mình thì nên định dạng 1 layer duy nhất cho các ranh thửa rùi set nó vào lsp, thì khi pit nó chỉ nhận ra các ranh theo layer đó nếu khác thì bỏ qua nên ko ngại ao hồ, xuất ra bảng thì như yêu cầu của bạn, mình cũng mún giúp nhưng lsp of mình người viết đã đóng gói thành . fas nên bó tay, mình ko rành lsp cũng chỉ đang học bập bẹ ^^, nhờ anh Duy vậ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

Ok. Nhầm tí ở tọa độ. Chiều dài thì ko sai có sai thì do ai chứ ko phải do mình.

Sửa lại đây.

Thứ nhất: bác đổi lại giá trị X, Y em với...lộn mất rồi.

Thứ hai : Khi em đến điểm 11 là kết thúc em ấn Enter để khép vòng thì tọa độ điểm 1 lại có X Y trùng nhau ạ

Thứ ba : Có tiếng Việt nữa thì fantastic ạ!

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

Thứ nhất: bác đổi lại giá trị X, Y em với...lộn mất rồi.

Thứ hai : Khi em đến điểm 11 là kết thúc em ấn Enter để khép vòng thì tọa độ điểm 1 lại có X Y trùng nhau ạ

Thứ ba : Có tiếng Việt nữa thì fantastic ạ!


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Chuyen gia tri goc tu do sang radian
;;;Cu phap su dung (duy:s_do>radian giatri)
;;;giatri la goc tinh theo do, kq la goc tinh theo radian
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:s_do>radian (gt / gt kq)
(setq kq (* (/ pi 180) gt))
kq)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi text
;;;Cu phap su dung (duy:t_text diemchen docao gocquay canhle noidung textstyle layer color)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_text (d c g cl nd k la co / d c g cl nd k la co)
(cond
((= cl "trai") (setq kcl 0))
((= cl "phai") (setq kcl 2))
((= cl "giua") (setq kcl 1))
)
(cond ((= g "") (setq g 0) ))
(cond ((= cl "") (setq kcl 0) ))
(setq g (duy:s_do>radian g))
(cond ((= k "") (setq k (getvar "TEXTSTYLE")) ))
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(entmake (list (cons 0 "TEXT")(cons 10 d)(cons 11 d)(cons 40 c)(cons 50 g)(cons 72 kcl)(cons 1 nd)(cons 7 k)(cons 8 la)(cons 62 co)))
(princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Tao moi line
;;;Cu phap su dung (duy:t_line diemdau diemcuoi layer color ltype ltypescale)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:t_line (a b la co lt slt / a b la co lt slt)
(cond ((= la "") (setq la (getvar "Clayer")) ))
(cond ((= co "") (setq co 256) ))
(cond ((= lt "") (setq lt "bylayer") ))
(cond ((= slt "") (setq slt 1) ))
(entmake (list (cons 0 "LINE")(cons 10 a)(cons 11 B)(cons 8 la)(cons 62 co)(cons 6 lt)(cons 48 slt) ))
(princ)
)

(defun c:btd (/ ddt dtn dth)
(command "undo" "be")
(setq dvbd (getpoint "\nChon diem viet bang: "))
(duy:t_line dvbd (list (+ (car dvbd) 30) (cadr dvbd)) "" "" "" "")
(duy:t_line (list (car dvbd) (- (cadr dvbd) 5)) (list (+ (car dvbd) 30) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 0) (- (cadr dvbd) 0)) (list (+ (car dvbd) 0) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 5) (- (cadr dvbd) 0)) (list (+ (car dvbd) 5) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (cadr dvbd) 0)) (list (+ (car dvbd) 23) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 26.5) (- (cadr dvbd) 0)) (list (+ (car dvbd) 26.5) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 30) (- (cadr dvbd) 0)) (list (+ (car dvbd) 30) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 5) (- (cadr dvbd) 2.5)) (list (+ (car dvbd) 23) (- (cadr dvbd) 2.5)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 14) (- (cadr dvbd) 2.5)) (list (+ (car dvbd) 14) (- (cadr dvbd) 5)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (cadr dvbd) 3)) 1 0 "giua" "§Ønh" "" "" "")
(duy:t_text (list (+ (car dvbd) 14) (- (cadr dvbd) 1.75)) 1 0 "giua" "Täa §é" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (cadr dvbd) 4.25)) 1 0 "giua" "X (m)" "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (cadr dvbd) 4.25)) 1 0 "giua" "Y (m)" "" "" "")
(duy:t_text (list (+ (car dvbd) 24.75) (- (cadr dvbd) 1.75)) 1 0 "giua" "Tªn" "" "" "")
(duy:t_text (list (+ (car dvbd) 28.25) (- (cadr dvbd) 1.75)) 1 0 "giua" "C¹nh" "" "" "")
(duy:t_text (list (+ (car dvbd) 24.75) (- (cadr dvbd) 4.25)) 1 0 "giua" "C¹nh" "" "" "")
(duy:t_text (list (+ (car dvbd) 28.25) (- (cadr dvbd) 4.25)) 1 0 "giua" "(m)" "" "" "")

(setq dvbd (list (car dvbd) (- (cadr dvbd) 5)))
(duy:t_line (list (car dvbd) (- (cadr dvbd) 2)) (list (+ (car dvbd) 23) (- (cadr dvbd) 2)) "" "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (cadr dvbd) 3)) (list (+ (car dvbd) 30) (- (cadr dvbd) 3)) "" "" "" "")

(setq ddt (getpoint "\nChon diem thu 1: "))
(setq dtn ddt)
(setq sttn 1)
(duy:t_text (list (+ (car dvbd) 2.5) (- (cadr dvbd) 1.5)) 1 0 "giua" "1" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (cadr dtn) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (cadr dvbd) 1.5)) 1 0 "giua" (rtos (car dtn) 2 3) "" "" "")

(while (setq dth (getpoint dtn(strcat "\nChon diem thu " (rtos (+ sttn 1) 2 0) " <Enter de ket thuc!>")  ))
(grdraw dtn dth 7)
(duy:t_line (list (car dvbd) (- (- (cadr dvbd) (* 2 sttn)) 2)) (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 2)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (+ sttn 1) 2 0) "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (cadr dth) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car dth) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 24.8) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (strcat (rtos sttn 2 0) "-" (rtos (+ sttn 1) 2 0)) "" "" "")
(duy:t_text (list (+ (car dvbd) 28.3) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (rtos (distance dtn dth) 2 2) "" "" "")
(duy:t_line (list (+ (car dvbd) 23) (- (- (cadr dvbd) (* 2 sttn)) 3)) (list (+ (car dvbd) 30) (- (- (cadr dvbd) (* 2 sttn)) 3)) "" "" "" "")

(setq dtn dth)
(setq sttn (+ sttn 1))
)
(command ".erase" "last" "")
(duy:t_line (list (car dvbd) (- (- (cadr dvbd) (* 2 sttn)) 2)) (list (+ (car dvbd) 30) (- (- (cadr dvbd) (* 2 sttn)) 2)) "" "" "" "")
(duy:t_text (list (+ (car dvbd) 2.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" "1" "" "" "")
(duy:t_text (list (+ (car dvbd) 9.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (cadr ddt) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 18.5) (- (- (cadr dvbd) (* 2 sttn)) 1.5)) 1 0 "giua" (rtos (car ddt) 2 3) "" "" "")
(duy:t_text (list (+ (car dvbd) 24.8) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (strcat (rtos sttn 2 0) "-" "1") "" "" "")
(duy:t_text (list (+ (car dvbd) 28.3) (- (- (cadr dvbd) (* 2 sttn)) 0.5)) 1 0 "giua" (rtos (distance dtn ddt) 2 2) "" "" "")

(command "undo" "end")
(Princ)
)

 

Sửa nửa đây. Cái vụ cạnh sai thì tôi coi bả vẽ của bạn rồi nhiều điểm quá bắt nhầm đấy thôi. Tắt bớt các cái ko liên quan đi.

  • Vote tăng 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

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

×