Đến nội dung


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

[Yêu cầu] lisp Phun tọa độ các điểm từ file txt vào CAD


  • Please log in to reply
107 replies to this topic

#21 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 14 June 2010 - 08:25 AM


Cảm ơn bạn Gia_Bach rất nhiều nhưng mình thấy file muốn fun điểm lên bản vẽ phải đúng theo một khuôn mẫu nhất định. Mình rất mong rằng file mà bạn fun điểm lên bản vẽ chấp nhận các thông số SST X Y Z Code được phân biệt nhau bởi cả dấu " " (dấu cách) , dấu tab, dấu phẩy....
Nếu bạn lập được 1 hàm tách xâu phân biệt được các thông số đó thì chèn các ký hiệu trắc địa vào bản vẽ là bình thường.
Mình đang vướng mắc vấn đề đó.
Mong các bạn giúp đỡ mình

Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.
Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :
(if (vl-string-search "\t" Line)
....
(setq data (split Line "\t" )
  • 1

#22 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 21 July 2010 - 07:36 PM

Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.
Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :
(if (vl-string-search "\t" Line)
....
(setq data (split Line "\t" )

Cảm ơn bác Bách rất nhiều.
  • 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







#23 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 21 July 2010 - 07:47 PM

Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.
Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :
(if (vl-string-search "\t" Line)
....
(setq data (split Line "\t" )

Cháu muốn hỏi bác Bách một chút là cháu thay 1 dấu tab bằng 1 dấu cách rồi nhưng khi các phần tử trên một dòng phân cách nhau không phải là 1 dấu cách hay một dấu tab mà là nhiều dấu tab, dấu cách không giống nhau. Bác có thể giúp cháu lập lisp đọc được tất cả các dạng trên được không ạ? Cháu cảm ơn bác nhiều. Một lần nữa cháu cám ơn bác
  • 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







#24 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 21 July 2010 - 08:15 PM

Trong Lisp trên có sử dụng hàm Split (defun Split (Str Char / Lst pos) ... để tách xâu phân biệt được các thông số.
Lisp trên viết cho file có cấu trúc phân biệt giữa các thông số là dấu tab "t"

Bạn có thể tìm dấu tab và thay thế bằng dấu cách, dấu phẩy tại các dòng :
(if (vl-string-search "\t" Line)
....
(setq data (split Line "\t" )

Bác Bách à!
Cháu cũng rất ngại khi phải nhờ bác chỉ bảo cháu đôi điều
Bác có thể viết lisp lấy được điểm toạ độ trên bản vẽ mà điểm ở định dạng Attribute (Trên bản vẽ hiển thị Text Số thứ tự, text độ cao và text mã Code)
bác có thể lấy được toạ độ X, Y, Z, STT và mã Code từ các điểm trên bản vẽ và ghi thành 1 file txt được không ạ.
Giả sử điểm đó mà cao độ bị đưa về "0" thì bác có thể lấy cao độ từ text Cao độ hiển thị trên màn hình dạng Attribute được không ạ?
Vấn đề này làm cháu đau đầu từ lâu
Cháu cảm ơn bác nhiều
  • 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







#25 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 22 July 2010 - 08:47 AM

Cháu muốn hỏi bác Bách một chút là cháu thay 1 dấu tab bằng 1 dấu cách rồi nhưng khi các phần tử trên một dòng phân cách nhau không phải là 1 dấu cách hay một dấu tab mà là nhiều dấu tab, dấu cách không giống nhau. Bác có thể giúp cháu lập lisp đọc được tất cả các dạng trên được không ạ? Cháu cảm ơn bác nhiều. Một lần nữa cháu cám ơn bác

Bạn post file ví dụ có tất cả các dạng trên được không ạ?

Bác Bách à!
Cháu cũng rất ngại khi phải nhờ bác chỉ bảo cháu đôi điều
Bác có thể viết lisp lấy được điểm toạ độ trên bản vẽ mà điểm ở định dạng Attribute (Trên bản vẽ hiển thị Text Số thứ tự, text độ cao và text mã Code)
bác có thể lấy được toạ độ X, Y, Z, STT và mã Code từ các điểm trên bản vẽ và ghi thành 1 file txt được không ạ.
Giả sử điểm đó mà cao độ bị đưa về "0" thì bác có thể lấy cao độ từ text Cao độ hiển thị trên màn hình dạng Attribute được không ạ?
Vấn đề này làm cháu đau đầu từ lâu
Cháu cảm ơn bác nhiều

Nói chung là mọi chuyện đều có thể.
Bạn vui lòng post file CAD có điểm ở định dạng Attribute
  • 1

#26 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 24 July 2010 - 12:09 AM

Bạn post file ví dụ có tất cả các dạng trên được không ạ?

Nói chung là mọi chuyện đều có thể.
Bạn vui lòng post file CAD có điểm ở định dạng Attribute

File đây ạ!
Mong bác giúp đỡ nhiều!
Cảm ơn bác nhiếu
  • 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







#27 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 24 July 2010 - 12:16 AM

File đây ạ!
Mong bác giúp đỡ nhiều!
Cảm ơn bác nhiếu
http://www.4shared.c...GFjZ/diemo.html
  • 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







#28 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 26 July 2010 - 09:11 AM

Bác Bách à!
Cháu cũng rất ngại khi phải nhờ bác chỉ bảo cháu đôi điều
Bác có thể viết lisp lấy được điểm toạ độ trên bản vẽ mà điểm ở định dạng Attribute (Trên bản vẽ hiển thị Text Số thứ tự, text độ cao và text mã Code)
bác có thể lấy được toạ độ X, Y, Z, STT và mã Code từ các điểm trên bản vẽ và ghi thành 1 file txt được không ạ.
Giả sử điểm đó mà cao độ bị đưa về "0" thì bác có thể lấy cao độ từ text Cao độ hiển thị trên màn hình dạng Attribute được không ạ?
Vấn đề này làm cháu đau đầu từ lâu
Cháu cảm ơn bác nhiều

Bạn thử Lisp : Xuất tọa độ và các Tag (STT, mã code) của Block Attribute ra file Text (Bao gồm : Số thứ tự, text mã Code, toạ độ X-Y-Z)
Truờng hợp cao độ Z của Block bị đưa về "0" thì lấy giá trị của Tag Cao độ (EL.EV).
(defun c:exTA(/ Caodo Des ent i obj pos ss str Stt tmp z zero)
(vl-load-com)
(princ "\nChon doi tuong can xuat thuoc tinh :" )
(if (and
(setq ss (ssget (list (cons 0 "INSERT")(cons 66 1)(cons 2 "D_chitiet"))))
(setq tmp (getfiled "Ten file xuat toa do" (getvar "dwgprefix") "txt" 1)) )
(progn
(setq tmp (open tmp "a") i -1)
(write-line "STT,DESCP,X,Y,Z" tmp)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq obj (vlax-ename->vla-object ent)
pos (mapcar 'rtos (vlax-get obj 'InsertionPoint)))
(foreach att (vlax-invoke obj 'GetAttributes)
(cond
( (= (vla-get-TagString att) "EL.EV")
(setq Caodo (vla-get-TextString att)) )
( (= (vla-get-TagString att) "DESCP")
(setq Des (vla-get-TextString att)) )
( (= (vla-get-TagString att) "POINT")
(setq Stt (vla-get-TextString att)) )) )
(if (and
(= 0 (atof (setq z(caddr pos))))
(/= 0 (atof Caodo)))
(setq z Caodo))
(write-line (strcat Stt (chr 44) Des (chr 44)
(car pos) (chr 44) (cadr pos) (chr 44) z )
tmp))
(close tmp)) )
(princ))

  • 0

#29 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 26 July 2010 - 10:34 AM

Bạn thử Lisp : Xuất tọa độ và các Tag (STT, mã code) của Block Attribute ra file Text (Bao gồm : Số thứ tự, text mã Code, toạ độ X-Y-Z)
Truờng hợp cao độ Z của Block bị đưa về "0" thì lấy giá trị của Tag Cao độ (EL.EV).

(defun c:exTA(/ Caodo Des ent i obj pos ss str Stt tmp z zero)
(vl-load-com)
(princ "\nChon doi tuong can xuat thuoc tinh :" )
(if (and
(setq ss (ssget (list (cons 0 "INSERT")(cons 66 1)(cons 2 "D_chitiet"))))
(setq tmp (getfiled "Ten file xuat toa do" (getvar "dwgprefix") "txt" 1)) )
(progn
(setq tmp (open tmp "a") i -1)
(write-line "STT,DESCP,X,Y,Z" tmp)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq obj (vlax-ename->vla-object ent)
pos (mapcar 'rtos (vlax-get obj 'InsertionPoint)))
(foreach att (vlax-invoke obj 'GetAttributes)
(cond
( (= (vla-get-TagString att) "EL.EV")
(setq Caodo (vla-get-TextString att)) )
( (= (vla-get-TagString att) "DESCP")
(setq Des (vla-get-TextString att)) )
( (= (vla-get-TagString att) "POINT")
(setq Stt (vla-get-TextString att)) )) )
(if (and
(= 0 (atof (setq z(caddr pos))))
(/= 0 (atof Caodo)))
(setq z Caodo))
(write-line (strcat Stt (chr 44) Des (chr 44)
(car pos) (chr 44) (cadr pos) (chr 44) z )
tmp))
(close tmp)) )
(princ))

Mình đã chọn đối tượng là các khối thuộc tính nhưng không thấy gì cả
  • 0

#30 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 26 July 2010 - 11:01 AM

Mình đã chọn đối tượng là các khối thuộc tính nhưng không thấy gì cả

Lisp chỉ chạy đuợc cho file CAD có Block tên là D_chitiet do bạn thanhduan2407 Post ở bài 28
Nếu bạn muốn sử dụng Lisp này vui lòng gửi file CAD có Block cần chọn, tui sẽ cập nhật sau.
  • 1

#31 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 26 July 2010 - 02:17 PM

Lisp chỉ chạy đuợc cho file CAD có Block tên là D_chitiet do bạn thanhduan2407 Post ở bài 28
Nếu bạn muốn sử dụng Lisp này vui lòng gửi file CAD có Block cần chọn, tui sẽ cập nhật sau.

Nếu có thể cám ơn bác 100 lần cháu cũng cảm ơn bác nhiều
Cảm ơn bác.
Bác có thể xem giúp cháu lisp cháu chỉnh sửa xem lỗi ở đâu?
Cháu tìm mãi mà chưa tìm ra.
File đây ạ!
  • 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







#32 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 26 July 2010 - 04:20 PM

Lisp chỉ chạy đuợc cho file CAD có Block tên là D_chitiet do bạn thanhduan2407 Post ở bài 28
Nếu bạn muốn sử dụng Lisp này vui lòng gửi file CAD có Block cần chọn, tui sẽ cập nhật sau.

File Lisp
http://www.4shared.c...t_tuyetvoi.html
File cháu muốn phun điểm lên là file mẫu dạng: Stt X Y Z Code
Khi cháu insert Attribute "D_chitiet" thì mã code nó ko nhận, nếu mã Code là số thì nó nhận
Cảm ơn bác đã xem
  • 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







#33 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 27 July 2010 - 08:00 AM

File Lisp
http://www.4shared.c...t_tuyetvoi.html
File cháu muốn phun điểm lên là file mẫu dạng: Stt X Y Z Code
Khi cháu insert Attribute "D_chitiet" thì mã code nó ko nhận, nếu mã Code là số thì nó nhận
Cảm ơn bác đã xem

Bạn cần sửa hàm SPLIT để đổi giá trị Code thành kiểu String.
(defun c:RFT(/ data ten f h line str Code Stt X Y Z ELE Code Code1 Pnt);;;;;Read File Txt
(vl-load-com)
(defun Split (Str Char / Lst str 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 Str))) )

(if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(setq f (open (findfile ten) "r"))
(while
(setq Line (read-line f))
(if (vl-string-search "\t" Line)
(progn
(setq data (split Line "\t" ))
(setq Stt (nth 0 data))
(setq X (nth 1 data))
(setq Y (nth 2 data))
(setq Z (nth 3 data))
(setq Code (nth 4 data))
(setq ELE (rtos z 2 2))
(setq Pnt (list X Y Z))
(command "insert" "D_chitiet" Pnt 1 1 0 Stt ELE Code) ) ) ) ) )
(command "zoom" "extents")
(princ)
)

Đã kiểm tra với dữ liệu :
1 4.376 5.577 12.000 123
2 3.576 3.777 10.000 abc
0 4.176 5.577 13.000 444
a 3.876 3.977 10.000 ddd

Chú ý : thêm dòng (setvar "AttReq" 1) vào Lisp nếu cần thiết.
  • 1

#34 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 27 July 2010 - 07:03 PM

Bạn cần sửa hàm SPLIT để đổi giá trị Code thành kiểu String.

(defun c:RFT(/ data ten f h line str Code Stt X Y Z ELE Code Code1 Pnt);;;;;Read File Txt
(vl-load-com)
(defun Split (Str Char / Lst str 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 Str))) )

(if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(setq f (open (findfile ten) "r"))
(while
(setq Line (read-line f))
(if (vl-string-search "\t" Line)
(progn
(setq data (split Line "\t" ))
(setq Stt (nth 0 data))
(setq X (nth 1 data))
(setq Y (nth 2 data))
(setq Z (nth 3 data))
(setq Code (nth 4 data))
(setq ELE (rtos z 2 2))
(setq Pnt (list X Y Z))
(command "insert" "D_chitiet" Pnt 1 1 0 Stt ELE Code) ) ) ) ) )
(command "zoom" "extents")
(princ)
)

Đã kiểm tra với dữ liệu :
1 4.376 5.577 12.000 123
2 3.576 3.777 10.000 abc
0 4.176 5.577 13.000 444
a 3.876 3.977 10.000 ddd

Chú ý : thêm dòng (setvar "AttReq" 1) vào Lisp nếu cần thiết.

Không biết phải nói như thế nào
Cảm ơn bác gia_bach rất nhiều
  • 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







#35 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 27 July 2010 - 07:32 PM

Bạn cần sửa hàm SPLIT để đổi giá trị Code thành kiểu String.

(defun c:RFT(/ data ten f h line str Code Stt X Y Z ELE Code Code1 Pnt);;;;;Read File Txt
(vl-load-com)
(defun Split (Str Char / Lst str 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 Str))) )

(if (setq ten (getfiled "Chon File txt" (getvar "dwgprefix") "txt" 8))
(progn
(setq f (open (findfile ten) "r"))
(while
(setq Line (read-line f))
(if (vl-string-search "\t" Line)
(progn
(setq data (split Line "\t" ))
(setq Stt (nth 0 data))
(setq X (nth 1 data))
(setq Y (nth 2 data))
(setq Z (nth 3 data))
(setq Code (nth 4 data))
(setq ELE (rtos z 2 2))
(setq Pnt (list X Y Z))
(command "insert" "D_chitiet" Pnt 1 1 0 Stt ELE Code) ) ) ) ) )
(command "zoom" "extents")
(princ)
)

Đã kiểm tra với dữ liệu :
1 4.376 5.577 12.000 123
2 3.576 3.777 10.000 abc
0 4.176 5.577 13.000 444
a 3.876 3.977 10.000 ddd

Chú ý : thêm dòng (setvar "AttReq" 1) vào Lisp nếu cần thiết.

Bác à! Nếu cháu có file txt mà các phần tử được phân biệt bởi nhiều dấu cách, hoặc nhiều dấu Tab hoặc nhiều sổ phẩy thì phải làm thế nào hả bác. Nếu trên mộ t dòng có cả dấu cách, dấu Tab, dấu phẩy thì phải làm thế nào hả bác VD của cháu đây:
Stt “dấu cách” tọa độ X “dấu Tab” tọa độ Y “dấu phẩy” tọa độ Z “dấu cách” Mã Code
Cảm ơn bác đã quan tâm đến bài của cháu.
Vì cháu cũng đang nghiên cứu lập trình Lisp nên còn nhiều bỡ ngỡ.
Cảm ơn bác rất nhiễu
  • 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







#36 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 28 July 2010 - 06:55 AM

Lisp chỉ chạy đuợc cho file CAD có Block tên là D_chitiet do bạn thanhduan2407 Post ở bài 28
Nếu bạn muốn sử dụng Lisp này vui lòng gửi file CAD có Block cần chọn, tui sẽ cập nhật sau.

Nhờ anh giúp em về Block để chay lisp bắn tọa độ sang Cad, hỏi chiều cao text nha
File block điểm đo :
http://www.cadviet.c...ock_diem_do.rar
Cám ơn và mong tin
  • 0

#37 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 28 July 2010 - 07:19 PM

Bạn muốn "bắn tọa độ " của đối tưọng gì ?
File cad của bạn chỉ có 3 đối tuợng TEXT, không có bất kì Block nào ?!

Căn cứ vào Lisp RFT sử dụng Block D_chitiet với các số đo trên thể hiện file text STT X Y Code,
Mình muốn nhờ anh giúp xây dựng Block theo dạng file của mình gới, chỉnh sửa Lisp RFT để bắn các điểm đo file Text trên ra Cad theo Block kiểu của mình.
Rất mong được Anh giúp.
  • 0

#38 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 29 July 2010 - 02:52 PM

Căn cứ vào Lisp RFT sử dụng Block D_chitiet với các số đo trên thể hiện file text STT X Y Code,
Mình muốn nhờ anh giúp xây dựng Block theo dạng file của mình gới, chỉnh sửa Lisp RFT để bắn các điểm đo file Text trên ra Cad theo Block kiểu của mình.
Rất mong được Anh giúp.

Bạn viết linh tinh nhỉ? Hình đã gửi
"Block kiểu của mình" là Block kiểu gì ?
File cad của bạn chỉ có 3 đối tuợng TEXT, không có bất kì Block nào ?!

Có phải là : tuơng tự như Lisp ở bài viết số 7 http://www.cadviet.c...o...ost&p=96989
Lớp point là chứa đối tượng có kí hiệu điểm point ( Của Cad ) theo tọa độ x,y của bảng tọa độ trên ( cột 2 và 3 )
Lớp Sothutu là thể hiện số thứ tự hay tên điểm ( cột 1 )
Lớp cao độ là xuất text ở cột 4 ( Chú ý đừng để text STT và Caodo chồng lên nhau )

bạn yêu cầu bổ sung thêm đối tuợng TEXT có thuộc tính : Layer= "Code" và nội dung text ở cột 5
với định dạng của file điểm đo : STT X Y Z Code
  • 0

#39 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 29 July 2010 - 03:35 PM

Bác à! Nếu cháu có file txt mà các phần tử được phân biệt bởi nhiều dấu cách, hoặc nhiều dấu Tab hoặc nhiều sổ phẩy thì phải làm thế nào hả bác. Nếu trên mộ t dòng có cả dấu cách, dấu Tab, dấu phẩy thì phải làm thế nào hả bác VD của cháu đây:
Stt “dấu cách” tọa độ X “dấu Tab” tọa độ Y “dấu phẩy” tọa độ Z “dấu cách” Mã Code
Cảm ơn bác đã quan tâm đến bài của cháu.
Vì cháu cũng đang nghiên cứu lập trình Lisp nên còn nhiều bỡ ngỡ.
Cảm ơn bác rất nhiễu

Bạn lấy data (File txt) ở đâu mà phức tạp thế ? :(

Tham khảo hàm Split chấp nhận các dấu cách, dấu Tab, dấu phẩy.
vd : Stt “dấu cách” tọa độ X “dấu Tab” tọa độ Y “dấu phẩy” tọa độ Z “dấu cách” Mã Code
Chú ý : giữa các giá trị chỉ có 1 kí tự , không áp dụng cho t/hợp có nhiều dấu Tab hoặc nhiều dấu phẩy.
(defun Split(str / i kitu line lst txtPhanbiet)
(setq i 1
txtPhanbiet " ,")
(while (< i (strlen str))
(setq kitu (substr str i 1))
(if (vl-string-search kitu txtPhanbiet)
(progn
(if (null Lst)
(setq Lst (list (substr Str 1 (- i 1))))
(setq Lst (append Lst (list (read (substr Str 1 (- i 1)))))))
(setq Str (substr Str (+ i 1)) i 1))
(setq i (1+ i)) ) )
(setq Lst (append Lst (list Str))) )

  • 1

#40 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 29 July 2010 - 09:10 PM

Bạn viết linh tinh nhỉ? Hình đã gửi
"Block kiểu của mình" là Block kiểu gì ?
File cad của bạn chỉ có 3 đối tuợng TEXT, không có bất kì Block nào ?!

Có phải là : tuơng tự như Lisp ở bài viết số 7 http://www.cadviet.c...o...ost&p=96989
Lớp point là chứa đối tượng có kí hiệu điểm point ( Của Cad ) theo tọa độ x,y của bảng tọa độ trên ( cột 2 và 3 )
Lớp Sothutu là thể hiện số thứ tự hay tên điểm ( cột 1 )
Lớp cao độ là xuất text ở cột 4 ( Chú ý đừng để text STT và Caodo chồng lên nhau )

bạn yêu cầu bổ sung thêm đối tuợng TEXT có thuộc tính : Layer= "Code" và nội dung text ở cột 5
với định dạng của file điểm đo : STT X Y Z Code

Xin lổi bạn , mình trình bày không mạch lạc lấm.
Đúng như như ý bạn nói. Không cấn Block, xuất điểm ra chỉ theo các nội dung trên.
Mong được bạn giúp
  • 0