Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Sửa Lisp phun tọa độ?


  • Please log in to reply
8 replies to this topic

#1 cangua172

cangua172

    biết vẽ line

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

Đã gửi 31 July 2012 - 10:56 AM

Em thấy trên diễn đàn có Lisp phun tọa độ dạng STT X Y Caodo, nhưng bây giờ em không muốn phun STT vào bản vẽ. Các Bác sửa giúp em cái Lisp bên dưới, sao cho nó phun điểm dạng: X Y Caodo. (em không biết Lisp mong các Bác giúp em).
1 2329601.111 354348.8217 4.05
2 2329680.452 354348.2847 4.8
3 2329695.731 354348.2665 4.59
4 2329760.395 354350.4096 3.83
5 2329734.627 354350.1736 4.06
6 2330033.924 354349.2966 4.02
7 2329853.42 354349.7547 2.51
8 2329954.23 354348.8552 2.96
9 2330024.335 354351.0173 4.36
10 2329141.601 353367.2477 0.87
11 2330083.283 354226.1244 4.41
12 2330096.782 354188.1586 4.56
13 2330084.739 354223.5669 4.41
14 2330072.18 354255.2336 4.24
15 2330082.446 354246.8349 4.28
16 2330086.674 354234.9562 4.31
17 2330090.746 354233.5468 4.34
18 2330116.096 354243.8815 4.56
19 2330118.593 354238.1892 4.6
20 2330101.13 354230.8936 4.38
21 2330091.073 354224.7862 4.53
22 2330091.201 354221.8695 4.55
23 2330099.308 354215.9192 4.74
24 2330071.157 354221.5968 4.64
25 2330095.871 354223.633 4.76
26 2330100.713 354225.8228 4.74
27 2330096.417 354228.2863 4.4
28 2330076.872 354207.8337 4.33
29 2330098.445 354236.9191 4.18
30 2330089.139 354245.2211 4.54
31 2330093.554 354234.947 4.43
32 2330093.809 354234.1311 4.3
33 2330077.296 354206.8475 4.36
34 2330077.296 354206.8359 4.36
35 2330080.467 354207.1728 4.34


(defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
;| By : Gia Bach, gia_bach @ www.CadViet.com |;
(vl-load-com)
(defun Split (Str Char / Lst pos)
(while (setq pos (vl-string-search Char Str))
(if (null Lst)
(setq Lst (list (substr Str 1 pos)))
(setq Lst (append Lst (list (read (substr Str 1 pos))))))
(setq Str (substr Str (+ pos 2)) ))
(setq Lst (append Lst (list (read Str)))))

(if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
(or (tblsearch "layer" "Sothutu") (command "-layer" "n" "Sothutu" "c" 3 "Sothutu" "") )
(or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
(setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
(setq h 2);(* (getvar "dimtxt")(getvar "dimscale")))
(setq f (open (findfile ten) "r"))
(while (setq Line (read-line f))
(if (vl-string-search "\t" Line)
(progn
(setq data (split Line "\t" )
val (car data)
pt (cdr data))
(if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
(progn
(setq pXY (list (car pt)(cadr pt)))
(vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point")
(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
(vla-put-Alignment str 8)
(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))
(vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo") ))))) ))
(princ))

  • 0

#2 mathan

mathan

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 31 July 2012 - 10:59 AM

Dùng excel hoặc Note pad ++ bạn xóa dòng STT đi thì đã là ngon rùi đó bạn ah
Hãy luôn dành thế chủ động!!
  • 0
-----------
Hình đã gửi Hãy chia sẻ để thấy có được nhiều hơn điều mình muốn!
Best regard,

#3 cangua172

cangua172

    biết vẽ line

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

Đã gửi 31 July 2012 - 11:03 AM

Dùng excel hoặc Note pad ++ bạn xóa dòng STT đi thì đã là ngon rùi đó bạn ah
Hãy luôn dành thế chủ động!!

Không được Bác ơi, em thử rồi mà nó không phun điểm được. Bây giờ FIle txt chỉ có dạng: "X Y Caodo". Làm sao đây?
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 July 2012 - 11:15 AM

Bạn xóa các dòng sau đi :

(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
(vla-put-Alignment str 8)
(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))
  • 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


#5 mathan

mathan

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 31 July 2012 - 11:20 AM

Không được Bác ơi, em thử rồi mà nó không phun điểm được. Bây giờ FIle txt chỉ có dạng: "X Y Caodo". Làm sao đây?

Mình mới thử xong. Được mà bạn.
Mình dùng excel mở file text ban đầu của bạn, save lại cho dấu cách thành TAB
sau đó sẽ dùng được LISP ngay thui
Gửi bạn file txt mình mới chuyển http://www.cadviet.c...102268_test.txt
  • 0
-----------
Hình đã gửi Hãy chia sẻ để thấy có được nhiều hơn điều mình muốn!
Best regard,

#6 cangua172

cangua172

    biết vẽ line

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

Đã gửi 31 July 2012 - 11:27 AM

Bạn xóa các dòng sau đi :

(vla-put-Layer (setq str (vla-addtext spc val (vlax-3d-point pXY) h)) "Sothutu")
(vla-put-Alignment str 8)
(vla-put-TextAlignmentPoint str (vlax-3d-point pXY))

Cảm ơn Bác Ketxu... nhưng Bác sửa giúp em, File txt bây giờ không phải là "STT X Y Caodo" mà nó chỉ có "X Y Caodo" thôi. Em xóa cột STT trong file txt nhưng nó không phun điểm được, Bác sửa giúp em!!
2329601 354348.8 1 2329680 354348.3 2 2329696 354348.3 3 2329760 354350.4 4 2329735 354350.2 5 2330034 354349.3 6 2329853 354349.8 7 2329954 354348.9 8 2330024 354351 9 2329142 353367.2 10
(nếu xóa 3 dòng như Bác nói thì file txt phải có dạng "STT X Y Caodo" thì mới chạy được, còn dạng " X Y Caodo" thì nó im re!!!
  • 0

#7 cangua172

cangua172

    biết vẽ line

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

Đã gửi 31 July 2012 - 11:33 AM

Mình mới thử xong. Được mà bạn.
Mình dùng excel mở file text ban đầu của bạn, save lại cho dấu cách thành TAB
sau đó sẽ dùng được LISP ngay thui
Gửi bạn file txt mình mới chuyển http://www.cadviet.c...102268_test.txt

Không phải như thế Bác ơi!
ý em là: file txt của em có dạng: STT X Y Caodo, em phun điểm qua autocad thì Lisp chạy rất tốt.
Nhưng bây giờ em muốn file txt có dạng: X Y caodo (tức là cột STT không còn trong file txt nữa).thì cái Lisp đó sửa như thế nào???
  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 July 2012 - 11:51 AM

Thì lúc đó code của bác gia_bach còn thế này thôi , mình chưa test do bạn lười post file txt lên :

(defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
;| By : Gia Bach, gia_bach @ www.CadViet.com Edited @Ketxu |;
(vl-load-com)
(if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
(or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
(setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
(setq h 2);(* (getvar "dimtxt")(getvar "dimscale")))
(setq f (open (findfile ten) "r"))
(while (setq Line (read-line f))
(setq pt (read (strcat "(" Line ")")))
(if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
(progn
(vla-put-Layer (vla-addpoint spc (setq pXY (vlax-3d-point (list (car pt)(cadr pt))))) "Point")
(vla-put-Layer (vla-addtext spc (rtos (last pt) 2 2) pXY h) "Caodo")
)
)
)
)
)
(princ))

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

cangua172

    biết vẽ line

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

Đã gửi 31 July 2012 - 12:03 PM

Thì lúc đó code của bác gia_bach còn thế này thôi , mình chưa test do bạn lười post file txt lên :


(defun c:RFT(/ data f h line pt pXY spc str ten val);Read File Txt
;| By : Gia Bach, gia_bach @ www.CadViet.com Edited @Ketxu |;
(vl-load-com)
(if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(or (tblsearch "layer" "Point") (command "-layer" "n" "Point" "") )
(or (tblsearch "layer" "Caodo") (command "-layer" "n" "Caodo" "c" 4 "Caodo" "") )
(setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object))))
(setq h 2);(* (getvar "dimtxt")(getvar "dimscale")))
(setq f (open (findfile ten) "r"))
(while (setq Line (read-line f))
(setq pt (read (strcat "(" Line ")")))
(if (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt)))
(progn
(vla-put-Layer (vla-addpoint spc (setq pXY (vlax-3d-point (list (car pt)(cadr pt))))) "Point")
(vla-put-Layer (vla-addtext spc (rtos (last pt) 2 2) pXY h) "Caodo")
)
)
)
)
)
(princ))

Cảm ơn Bác... Lisp dùng được rồi. Chúc Bác sức khỏe...
  • 0