Đến nội dung


Hình ảnh
* * * * - 5 Bình chọn

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


  • Please log in to reply
96 replies to this topic

#1 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 02 January 2013 - 11:23 AM

Đầ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:

Hình đã gửi

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:
Hình đã gửi

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)

Hình đã gửi

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.

Hình đã gửi

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.

Hình đã gửi

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!
  • 0

#2 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 02 January 2013 - 11:34 AM

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 !
  • 1

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


#3 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 02 January 2013 - 12:28 PM

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á
  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5449 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 02 January 2013 - 01:48 PM

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é.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 02 January 2013 - 01:50 PM

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 đỡ ạ!
  • 0

#6 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 02 January 2013 - 02:28 PM

Không bác nào vào giúp em ạ? Em làm thủ công mệt quá...bao giờ mới xong được đây???.......
  • 0

#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5449 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 02 January 2013 - 02:32 PM

Không ngon xơi đâu bạn ơi! Lisp này thì không khó nhưng mất công lắm đó.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 January 2013 - 02:37 PM

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 ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#9 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 02 January 2013 - 02:46 PM

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ạ ạ!
  • 0

#10 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 January 2013 - 03:42 PM

Đươ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ề,...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#11 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 02 January 2013 - 03:50 PM

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
  • 0

#12 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 02 January 2013 - 04:03 PM

: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
Hình đã gửi

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
  • 2
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#13 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 January 2013 - 04:50 PM


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ề,...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#14 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 02 January 2013 - 04:57 PM

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)
)


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#15 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 02 January 2013 - 09:35 PM

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)
)

  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#16 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 03 January 2013 - 07:37 AM

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ả
  • 0

#17 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 03 January 2013 - 07:49 AM

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 đó ^^
  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#18 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 03 January 2013 - 08:14 AM

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é!
  • 0

#19 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 03 January 2013 - 08:18 AM

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 ạ?
  • 0

#20 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 03 January 2013 - 08:21 AM

đú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 ạ?
  • 0