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  
cangua172

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

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

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

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ù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?

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

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

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.com/upfiles/3/102268_test.txt

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

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

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

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ì 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...

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  

×