Đến nội dung


Hình ảnh
- - - - -

Nhờ viết Lisp ghi chú điểm mốc


  • Please log in to reply
18 replies to this topic

#1 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 26 January 2013 - 11:32 AM

nhờ các cao thủ lisp viết dùm.
yêu cầu như sau:
có file tọa độ mốc khống chế
Tệp đính kèm txt
http://www.mediafire...s04naxhylaa9a00
file qui cách mốc
http://www.mediafire...w1vk8tdf6c5e66r
thành quả
http://www.mediafire...1d61bfrs277y54r
CHÂN THÀNH CẢM ƠN!
  • 0

#2 anhbkhcm

anhbkhcm

    biết vẽ circle

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

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

Các Sư phụ lsp đâu rồi. giúp mình với mình đang cần lsp tạo ghi chú điểm.
  • 0

#3 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 26 January 2013 - 04:25 PM

Bạn chuyên ngành Trắc Địa phải không?
Mình đã làm cái này cũng lâu rồi. Nhưng đề bài bạn đưa ra vẫn còn sơ sài lắm. Cần có 1 ý tưởng sáng tạo thì bạn có thể bớt đi rất nhiều công đoạn.
Mình ví dụ:
Ví dụ 1:
Giả sử tớ có file "abc.txt" chẳng hạn, có cấu trúc giống như file bạn đính kèm (STT X Y Z)
Kết quả: Có bao nhiêu điểm thì nó sẽ in ra từng đó bảng sơ họa mốc.

Ví dụ 2:
Quét chọn các điểm (với kiểu nhận diện khác biệt hay nói cách khác là quét có lọc):
Kết quả: Nó tự động lấy từng điểm, nhặt ra tọa độ, tự động cắt 1 hình chữ nhật với kích thước (a x B) nào đó và chèn vào bảng sơ họa mốc.

Mình vẫn thường làm theo kiểu ví dụ 2.
Với vị dụ 1 thì chỉ là ứng dụng sơ sơ thôi.
Lâu rồi ko dùng đến lisp đó nên vứt đâu rồi đó. Mình viết cũng mấy năm rồi.
bạn cần ko?
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#4 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 26 January 2013 - 04:36 PM

Bạn chuyên ngành Trắc Địa phải không?
Mình đã làm cái này cũng lâu rồi. Nhưng đề bài bạn đưa ra vẫn còn sơ sài lắm. Cần có 1 ý tưởng sáng tạo thì bạn có thể bớt đi rất nhiều công đoạn.
Mình ví dụ:
Ví dụ 1:
Giả sử tớ có file "abc.txt" chẳng hạn, có cấu trúc giống như file bạn đính kèm (STT X Y Z)
Kết quả: Có bao nhiêu điểm thì nó sẽ in ra từng đó bảng sơ họa mốc.

Ví dụ 2:
Quét chọn các điểm (với kiểu nhận diện khác biệt hay nói cách khác là quét có lọc):
Kết quả: Nó tự động lấy từng điểm, nhặt ra tọa độ, tự động cắt 1 hình chữ nhật với kích thước (a x B) nào đó và chèn vào bảng sơ họa mốc.

Mình vẫn thường làm theo kiểu ví dụ 2.
Với vị dụ 1 thì chỉ là ứng dụng sơ sơ thôi.
Lâu rồi ko dùng đến lisp đó nên vứt đâu rồi đó. Mình viết cũng mấy năm rồi.
bạn cần ko?

Mình Đang rất cần. Nếu bạn có thì cho mình xin.
Cảm ơn bạn nhiều.
mình làm bên trắc địa Khảo sát địa hình nên rất cần.
Như yêu cầu của mình thì lsp tạo ra va chỉ cần dùng lsp chia mảnh để cắt trên bản đồ đưa vào là hoàn thiện luôn ghi chú điểm.
nếu bạn viết lsp kết hợp luôn cả 2 ví dụ của bạn đưa ra thì càng tuyệt vời.
chân thành cảm ơn bạn. Bạn cho mình xin với nhé! địa chỉ mail của mình: trananhcc47@gmail.com
  • 0

#5 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 26 January 2013 - 04:48 PM

Như yêu cầu của mình thì lsp tạo ra va chỉ cần dùng lsp chia mảnh để cắt trên bản đồ đưa vào là hoàn thiện luôn ghi chú điểm.
nếu bạn viết lsp kết hợp luôn cả 2 ví dụ của bạn đưa ra thì càng tuyệt vời.

Điều đó có thể làm được. Vì mình cũng đang rất bận nên chưa thể hướng dẫn chi tiết cho bạn thực hiện được. Tạm thời mình viết cho bạn theo đúng yêu cầu của bạn. Mình viết lại
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#6 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 26 January 2013 - 05:11 PM

nhờ các cao thủ lisp viết dùm.
yêu cầu như sau:
có file tọa độ mốc khống chế
Tệp đính kèm txt
http://www.mediafire...s04naxhylaa9a00
file qui cách mốc
http://www.mediafire...w1vk8tdf6c5e66r
thành quả
http://www.mediafire...1d61bfrs277y54r
CHÂN THÀNH CẢM ƠN!


Chào bạn

Thấy bạn cần gấp nên tranh thủ viết nhanh cho bạn một lisp đơn giản như này

http://www.cadviet.c..._so_hoa_moc.lsp

Tôi thấy trong bản vẽ sơ hoạ của bạn chỉ có tên và toạ độ điểm là thay đổi, còn những thứ khác giữ nguyên nên tôi đã tạo ra một Block có tên là khung. Bạn Download lisp và bản vẽ của tôi về rồi chạy Lisp trên bản vẽ đó nhé, trong bản vẽ đó có sẵn block khung rồi.

Bản vẽ ở đây:
http://www.cadviet.c...i_chu_diem1.dwg
  • 0

#7 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 26 January 2013 - 05:27 PM

Viết nhanh cho bạn đây. Bạn copy file cad shm.dwg vào thư mục Suport của autocad (thường là :C:\Program Files\AutoCAD 2008\Support, của tớ dùng Autocad 2008).
Lệnh là: tshm (tạo sơ họa mốc)
Cần chỉnh sửa gì thì bạn cứ pm nhé
http://www.cadviet.c..._so_hoa_moc.rar

(defun c:TSHM(/ pd ten f Line Data TD_X TD_Y TD_Z Diemdat);Tao so hoa moc
(Prompt "\nMade thanhduan2407")
(vl-load-com)
(command "purge" "a" "*" "n")
(command "osnap" "off")
(setq pd (getpoint "\n Chon diem dat"))
(setq i 0)
(setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(setq f (open (findfile ten) "r"))
(while
(setq Line (read-line f))
(if (wcmatch Line (strcat "*"(chr 9)"*,*"(chr 32)"*,*"(chr 44)"*"))
(progn
(setq Data (replace_str Line))
(setq TEN (nth 0 Data))
(setq TD_Y (nth 1 Data) )
(setq TD_X (nth 2 Data))
(setq TD_Z (nth 3 Data))
(setq dong (list TEN TD_X TD_Y TD_Z))
(setq Diemdat (polar pd 0 (* i 300)))
(command "insert" "SHM" Diemdat 1 1 0 (nth 0 dong) (nth 1 dong) (nth 2 dong) (nth 3 dong))

)
)
(setq i (+ i 1))
)
)
(close f)
(command "osnap" "end,mid,node,center,ins")
(princ)
)

(defun replace_str(str)
(setq rs (acet-str-replace "," " " str)
rs (acet-str-replace " " " " rs)
)
(split_space rs)
)
(defun split_space (str)(vl-remove-if '(lambda (x) (= x ""))(acet-str-to-list " " str)))
(Defun DTR (A /)
(/ (* A pi) 180)
)


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#8 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 26 January 2013 - 05:51 PM

Viết nhanh cho bạn đây. Bạn copy file cad shm.dwg vào thư mục Suport của autocad (thường là :C:\Program Files\AutoCAD 2008\Support, của tớ dùng Autocad 2008).
Lệnh là: tshm (tạo sơ họa mốc)
Cần chỉnh sửa gì thì bạn cứ pm nhé
http://www.cadviet.c..._so_hoa_moc.rar
Ôi tuyệt quá. 2 bác
KangKung
thanhduan2407 thật pro. không biết 2 bác ở đâu. nếu ở tpHCM thì phải mời 2 bác đi uống coffee mới được. Cảm ơn 2 bác rất nhiều!
Tuy nhiên Mình Muốn Tất cả trên file kết quả đều do lisp tạo ra ngoại trừ file qui cách mốc là file DWG .đối tượng là text để tiện sửa file theo từng công trình. chứ không phải là block. bạn xem lại file ghi chú điểm của mình pots trước đó.
  • 1

#9 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 26 January 2013 - 06:15 PM

Đối với các điểm khống chế tọa độ hoặc các điểm chi tiết.
Bạn nên phun điểm vào bản vẽ theo kiểu thể hiện (hình kí hiệu, số thứ tự, tên, cao độ) theo dạng block Att. Do đó, cái ví dụ thứ 2 của mình thì chỉ cần quét toàn bộ bản vẽ, nó sẽ nhận tất cả các điểm mốc khống chế đo vẽ đó. Sau đó mình chọn điểm đặt mốc. Nó sẽ tự động chèn sơ họa mốc, đồng thời nhặt ra tên, cao độ, tọa độ và kiểu ký hiệu. Quan trọng hơn cả, đó là nó có thể tự động cắt 1 khung hình chữ nhật nhét vào cái sơ họa mốc đó. Ngày xưa mình làm thủ công rồi nên mới viết cho auto. Xong xuôi làm nhàn hẳn đi.
P/s: Mình làm ở Hà Nội, cảm ơn bạn đã có lời mời.
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#10 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 26 January 2013 - 06:54 PM


Chào bạn

Thấy bạn cần gấp nên tranh thủ viết nhanh cho bạn một lisp đơn giản như này

http://www.cadviet.c..._so_hoa_moc.lsp

Tôi thấy trong bản vẽ sơ hoạ của bạn chỉ có tên và toạ độ điểm là thay đổi, còn những thứ khác giữ nguyên nên tôi đã tạo ra một Block có tên là khung. Bạn Download lisp và bản vẽ của tôi về rồi chạy Lisp trên bản vẽ đó nhé, trong bản vẽ đó có sẵn block khung rồi.

Bản vẽ ở đây:
http://www.cadviet.c...i_chu_diem1.dwg


Chào bạn

Thấy bạn cần gấp nên tranh thủ viết nhanh cho bạn một lisp đơn giản như này

http://www.cadviet.c..._so_hoa_moc.lsp

Tôi thấy trong bản vẽ sơ hoạ của bạn chỉ có tên và toạ độ điểm là thay đổi, còn những thứ khác giữ nguyên nên tôi đã tạo ra một Block có tên là khung. Bạn Download lisp và bản vẽ của tôi về rồi chạy Lisp trên bản vẽ đó nhé, trong bản vẽ đó có sẵn block khung rồi.

Bản vẽ ở đây:
http://www.cadviet.c...i_chu_diem1.dwg

Bạn KangKung ơi. Lisp này chỉ chạy được trên file Khung.DWG thôi.
Nếu mở file mới thì không chạy được có phải do thiếu hàm tạo txt không?
Nhờ Bạn chỉnh sửa lại xem.
  • 0

#11 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 26 January 2013 - 07:42 PM

Bạn KangKung ơi. Lisp này chỉ chạy được trên file Khung.DWG thôi.
Nếu mở file mới thì không chạy được có phải do thiếu hàm tạo txt không?
Nhờ Bạn chỉnh sửa lại xem.


Chào bạn

Như đã nói từ trước, do yêu cầu của bạn cần gấp nên mình tranh thủ viết nhanh Lisp đã post cho bạn. Muốn Lisp này chạy được trên bản vẽ mới thì bạn chỉ cần Copy cái block khung ở trong bản vẽ gốc của mình sang bản vẽ mới là chạy được. Cái Lisp mình viết cho bạn sau khi chạy xong bạn vẫn chỉnh sửa đối tượng bình thường vì sau khi chèn Block vào mình đã phá vỡ chúng.

Còn nếu muốn tạo một Lisp chạy được trên tất cả các bản vẽ thì cũng không khó tuy nhiên khá mất thời gian vì cần phải viết lệnh tạo ra các đối đối tượng TEXT, Polyline, Hatch, Style, … và xác định vị trí của chúng trong cái sơ hoạ mốc nữa để cho vào trong Code. Để sang tuần sau nếu có thời gian mình sẽ hoàn chỉnh cho bạn Lisp này. Trong thời gian chưa có Lisp mới bạn có thể dùng Lisp cũ mà vẫn đảm bảo kết quả như mong muốn.

Và cuối cùng xin cảm ơn hảo ý của bạn mời uống café. Mình không ở TpHCM nên hẹn bạn dịp khác.
  • 0

#12 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 08:46 PM

nhoc góp 1 ý mọn ^^, cách nì chỉ xài ở trên máy bạ thui hen
Từ file khung của bạn KangKung đưa bạn dùng lệnh writeblock save nó vào thư mục supports của cad, nhớ là lúc write block chọn đơn vị là mm hen, kể từ đây bạn mở bất kỳ bản vẻ nào dùng lsp đều có thể insert đc, còn nếu bạn mún đi máy nào xài cũng đc thì đợi anh KangKung ra tay vậy, chúc bạn vui
  • 2
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#13 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 26 January 2013 - 08:48 PM

Đối với các điểm khống chế tọa độ hoặc các điểm chi tiết.
Bạn nên phun điểm vào bản vẽ theo kiểu thể hiện (hình kí hiệu, số thứ tự, tên, cao độ) theo dạng block Att. Do đó, cái ví dụ thứ 2 của mình thì chỉ cần quét toàn bộ bản vẽ, nó sẽ nhận tất cả các điểm mốc khống chế đo vẽ đó. Sau đó mình chọn điểm đặt mốc. Nó sẽ tự động chèn sơ họa mốc, đồng thời nhặt ra tên, cao độ, tọa độ và kiểu ký hiệu. Quan trọng hơn cả, đó là nó có thể tự động cắt 1 khung hình chữ nhật nhét vào cái sơ họa mốc đó. Ngày xưa mình làm thủ công rồi nên mới viết cho auto. Xong xuôi làm nhàn hẳn đi.
P/s: Mình làm ở Hà Nội, cảm ơn bạn đã có lời mời.

Bạn Tìm lại cho mình xin cái bạn đã xài auto được không?
  • 0

#14 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 995 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 26 January 2013 - 08:57 PM

Mình sẽ tìm lại xem, vì lâu lắm rồi mình ko làm Autocad......................
Bạn có thể trao đổi với mình qua Yahoo cả về Cad và Trắc địa
YM: thanhduan2407
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#15 tientracdia

tientracdia

    biết lệnh scale

  • Members
  • PipPipPip
  • 147 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 27 January 2013 - 08:06 AM


Chào bạn

...........

Còn nếu muốn tạo một Lisp chạy được trên tất cả các bản vẽ thì cũng không khó tuy nhiên khá mất thời gian vì cần phải viết lệnh tạo ra các đối đối tượng TEXT, Polyline, Hatch, Style, … và xác định vị trí của chúng trong cái sơ hoạ mốc nữa để cho vào trong Code. Để sang tuần sau nếu có thời gian mình sẽ hoàn chỉnh cho bạn Lisp này. Trong thời gian chưa có Lisp mới bạn có thể dùng Lisp cũ mà vẫn đảm bảo kết quả như mong muốn.

...............

Cám ơn Bạn trước nha, có ý tưởng rất hay mong bạn sớm hoàn chỉnh để giúp đở anh em.
  • 0

#16 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 27 January 2013 - 11:29 AM

Ah, hum wa thử mà quên 1 cái trong lsp bạn nên viết thêm 2 dòng tạo layer tendiem va toado thì mới add file txt bạn vô đc :D, trong lúc chờ anh KangKung hoàn thiện, bạn xài đỡ trên máy bạn thui nhé, nhoc post lại lsp đã thêm 2 dòng tạo layer, bạn thấy hứng thú thì có thể use tạm ^^

;========LISP SO HOA MOC KHONG CHE MAT BANG - DO CAO========
(defun C:MOC (/ file f pt X tenmoc toadoX toadoY caodoZ osm cmd dmz)
(setq osm (getvar "osmode") cmd (getvar "cmdecho") dmz (getvar "dimzin")) ;Lay
(mapcar 'setvar '("osmode" "cmdecho" "dimzin") '(0 0 0))
(command "UNDO" "BE")
(command "-layer" "m" "Tendiem" "")
(command "-layer" "m" "Toado" "")
(setq file(getfiled "Chon file" (getvar "dwgprefix") "txt" 8))
(if (= file (strcat (vl-filename-base file) (vl-filename-extension file)))
(setq file(strcat (getvar "dwgprefix") file)))
(if (/= file nil)
(progn
(setq f(open file "R"))
(setq pt(getpoint "\n Chon diem chen: "))
(setvar "OSMODE" 0)
(setq X(car pt))
(while (setq txt(read-line f))
(setq lst(read(strcat "(" txt ")")))
(setq tenmoc(vl-princ-to-string (nth 0 lst)))
(setq toadoX(rtos (nth 1 lst) 2 3))
(setq toadoY(rtos (nth 2 lst) 2 3))
(setq caodoZ(rtos (nth 3 lst) 2 3))
(command "INSERT" "khung" (list X (cadr pt)) "" "" "")
(command "EXPLODE" (entlast))
(command "LAYER" "S" "tendiem" "")
(command "TEXT" (list (+ X 31) (+ (cadr pt) 217)) "2" "" tenmoc)
(command "LAYER" "S" "toado" "")
(command "TEXT" (list (+ X 31) (+ (cadr pt) 203)) "2" "" toadoX)
(command "TEXT" (list (+ X 74) (+ (cadr pt) 203)) "2" "" toadoY)
(command "TEXT" (list (+ X 114) (+ (cadr pt) 203)) "2" "" caodoZ)
(setq X(+ X 250))
)
)
)
(command "LAYER" "S" "0" "")
(command "UNDO" "END")
(mapcar 'setvar '("osmode" "cmdecho" "dimzin") (list osm cmd dmz))
(princ)
)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#17 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 28 January 2013 - 08:24 AM

Các sư phụ bận hay sao nhỉ?
  • 0

#18 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 28 January 2013 - 06:33 PM


Chào bạn

Như đã nói từ trước, do yêu cầu của bạn cần gấp nên mình tranh thủ viết nhanh Lisp đã post cho bạn. Muốn Lisp này chạy được trên bản vẽ mới thì bạn chỉ cần Copy cái block khung ở trong bản vẽ gốc của mình sang bản vẽ mới là chạy được. Cái Lisp mình viết cho bạn sau khi chạy xong bạn vẫn chỉnh sửa đối tượng bình thường vì sau khi chèn Block vào mình đã phá vỡ chúng.

Còn nếu muốn tạo một Lisp chạy được trên tất cả các bản vẽ thì cũng không khó tuy nhiên khá mất thời gian vì cần phải viết lệnh tạo ra các đối đối tượng TEXT, Polyline, Hatch, Style, … và xác định vị trí của chúng trong cái sơ hoạ mốc nữa để cho vào trong Code. Để sang tuần sau nếu có thời gian mình sẽ hoàn chỉnh cho bạn Lisp này. Trong thời gian chưa có Lisp mới bạn có thể dùng Lisp cũ mà vẫn đảm bảo kết quả như mong muốn.

Và cuối cùng xin cảm ơn hảo ý của bạn mời uống café. Mình không ở TpHCM nên hẹn bạn dịp khác.

Bạn kungkung có thể viết lsp tạo ghi chú điểm mốc tự động như thế này được không nhé!
đây là file chứa mốc ;
http://www.mediafire...g2qgx748j8i603l
Bạn viết lsp lọc các tên môc, X, Y, cao độ từ file AP GPS T1.dwg Ở link trên . và trim một rectang vùng chứa mốc gán qua bảng ghi chú luôn tạo thành một ghi chú điểm hoàn chỉnh. http://www.mediafire...1d61bfrs277y54r
  • 0

#19 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 28 January 2013 - 09:32 PM

Closed topic!
  • 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