thanhduan2407 276 Báo cáo bài đăng Đã đăng Tháng 7 23, 2010 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 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
thanhduan2407 276 Báo cáo bài đăng Đã đăng Tháng 7 23, 2010 File đây ạ! Mong bác giúp đỡ nhiều! Cảm ơn bác nhiếu http://www.4shared.com/file/BVepGFjZ/diemo.html 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 7 26, 2010 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)) 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
tnmtpc 207 Báo cáo bài đăng Đã đăng Tháng 7 26, 2010 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ả 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 7 26, 2010 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 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
thanhduan2407 276 Báo cáo bài đăng Đã đăng Tháng 7 26, 2010 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 ạ! 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
thanhduan2407 276 Báo cáo bài đăng Đã đăng Tháng 7 26, 2010 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.com/file/ej_NRC_f/rft_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 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 7 27, 2010 File Lisphttp://www.4shared.com/file/ej_NRC_f/rft_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 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
thanhduan2407 276 Báo cáo bài đăng Đã đăng Tháng 7 27, 2010 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 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
thanhduan2407 276 Báo cáo bài đăng Đã đăng Tháng 7 27, 2010 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 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
khaosat2009 11 Báo cáo bài đăng Đã đăng Tháng 7 27, 2010 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.com/upfiles/3/block_diem_do.rar Cám ơn và mong tin 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
khaosat2009 11 Báo cáo bài đăng Đã đăng Tháng 7 28, 2010 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. 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 7 29, 2010 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ỉ? "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.com/forum/index.php?sho...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 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 7 29, 2010 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 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
khaosat2009 11 Báo cáo bài đăng Đã đăng Tháng 7 29, 2010 Bạn viết linh tinh nhỉ? "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.com/forum/index.php?sho...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 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
thanhduan2407 276 Báo cáo bài đăng Đã đăng Tháng 7 29, 2010 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))) ) Cảm ơn bác nhiều Không phải là file số liệu nó phức tạp đâu bác Mà là cháu muốn mở 1 file số liệu mà kí tự phân biệt có thể là dấu cách hoặc dấu tab hoặc dấu phẩy mà cháu không phải chuyển đổi sang một dạng nhất định. Bác có thể nói cho cháu cách sử dụng hàm trên được không ạ? Cháu đã học VB và cháu muốn học thêm về Lisp. Càng học cháu càng say mê. Không biết bác Gia_bach đã học từ đâu mà sao bác giỏi thế. bác có thể cho cháu lời khuyên khi nghiên cứu Lisp được không ạ? Cháu cảm ơn bác nhiều. Bác thật Pro 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
gia_bach 1558 Báo cáo bài đăng Đã đăng Tháng 7 30, 2010 (Đă chỉnh sửa) 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 Cập nhật theo yêu cầu : Lisp tạo ra 1 đ/tuợng POINT và 3 đ/tuợng TEXT như sau : 1. Lớp Point có kí hiệu điểm (cột 2-3) 2. Lớp Sothutu : TEXT Số thứ tự (cột 1) 3. Lớp Caodo : TEXT Cao độ (cột 4) 4. Lớp Code : TEXT Code (cột 5) với định dạng của file điểm đo : STT X Y Z Code , chấp nhận kí tự phân biệt giữa các giá trị trong file điểm đo : dấu cách, dấu Tab, dấu phẩy. (defun c:RFT(/ code data f h line pt pxy spc txt stt ten);Read File Txt ;| By : Gia Bach, gia_bach @ www.CadViet.com |; (vl-load-com) (defun Split(str / i kitu line lst txtPhanbiet) (setq i 1 txtPhanbiet (strcat(chr 9)(chr 32)(chr 44))) (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))) ) (or *h* (setq *h* 2 )) (initget 6) (setq h (getdist (strcat "\nNhap chieu cao Text <" (rtos *h*) "> :")) ) (if h (setq *h* h) (setq h *h*)) (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" "") ) (or (tblsearch "layer" "Code") (command "-layer" "n" "Code" "c" 2 "Code" "") ) (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object)))) (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 (split Line) code (last data)) (if (and (= (vl-list-length data)5) (setq pt (vl-remove code (cdr data))) (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt))) ) (progn (setq stt (car data) pXY (list (car pt)(cadr pt))) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point") (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h)) "Sothutu") (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (setq txt (vla-addtext spc code (vlax-3d-point (list 0 0 0)) h)) "Code") (vla-put-Alignment txt 6) (vla-put-TextAlignmentPoint txt (vlax-3d-point (polar pXY 0 (* 0.2 h)))) (vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo") ))))) ) ) (princ)) .........Mà là cháu muốn mở 1 file số liệu mà kí tự phân biệt có thể là dấu cách hoặc dấu tab hoặc dấu phẩy mà cháu không phải chuyển đổi sang một dạng nhất định. Bác có thể nói cho cháu cách sử dụng hàm trên được không ạ? Cháu đã học VB và cháu muốn học thêm về Lisp. Càng học cháu càng say mê. ............. to : thanhduan2407 - Bạn tham khảo cách sử dụng hàm Split ở trên, chỉ đơn giản thay dòng (split Line "\t") bằng (split Line) và dòng (vl-string-search "\t" Line) bằng (wcmatch Line (strcat "*"(chr 9)"*,*"(chr 32)"*,*`"(chr 44)"*")) - Nếu bạn đã biết VB thì việc học LISP rất đơn giản (Ngôn ngữ chỉ là cách thể hiện, thuật toán mới là vấn đề) - Bạn có thể tham khảo bài Hướng dẫn lập trình Lisp, Hãy tự mình khám phá... của bác SSG. Chỉnh sửa Tháng 7 30, 2010 theo gia_bach 1 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
khaosat2009 11 Báo cáo bài đăng Đã đăng Tháng 7 30, 2010 Cập nhật theo yêu cầu : Lisp tạo ra 1 đ/tuợng POINT và 3 đ/tuợng TEXT như sau : 1. Lớp Point có kí hiệu điểm (cột 2-3) 2. Lớp Sothutu : TEXT Số thứ tự (cột 1) 3. Lớp Caodo : TEXT Cao độ (cột 4) 4. Lớp Code : TEXT Code (cột 5) với định dạng của file điểm đo : STT X Y Z Code , chấp nhận kí tự phân biệt giữa các giá trị trong file điểm đo : dấu cách, dấu Tab, dấu phẩy. (defun c:RFT(/ code data f h line pt pxy spc txt stt ten);Read File Txt ;| By : Gia Bach, gia_bach @ www.CadViet.com |; (vl-load-com) (defun Split(str / i kitu line lst txtPhanbiet) (setq i 1 txtPhanbiet (strcat(chr 9)(chr 32)(chr 44))) (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))) ) (or *h* (setq *h* 2 )) (initget 6) (setq h (getdist (strcat "\nNhap chieu cao Text <" (rtos *h*) "> :")) ) (if h (setq *h* h) (setq h *h*)) (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" "") ) (or (tblsearch "layer" "Code") (command "-layer" "n" "Code" "c" 2 "Code" "") ) (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object)))) (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 (split Line) code (last data)) (if (and (= (vl-list-length data)5) (setq pt (vl-remove code (cdr data))) (not(vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt))) ) (progn (setq stt (car data) pXY (list (car pt)(cadr pt))) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point") (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h)) "Sothutu") (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (setq txt (vla-addtext spc code (vlax-3d-point (list 0 0 0)) h)) "Code") (vla-put-Alignment txt 6) (vla-put-TextAlignmentPoint txt (vlax-3d-point (polar pXY 0 (* 0.2 h)))) (vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo") ))))) ) ) (princ)) Mình load RFT về, không biết tại sao mình lại không xuất các điểm ra Cad được, file tọa độ của mình đây : http://www.cadviet.com/upfiles/3/toado9.txt http://www.cadviet.com/upfiles/3/ntdau.txt Mong được anh giúp và hướng dẫn cho. Cám ơn 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
tnmtpc 207 Báo cáo bài đăng Đã đăng Tháng 7 30, 2010 Lisp yêu cầu cấu trúc file điểm đo có 5 cột : STT X Y Z Code.Data của file toado9.txt và ntdau.txt chỉ có 4 cột : STT X Y Z làm sao lấy đuợc giá trị Code? pótay :( Yêu cầu không rõ ràng, do vậy làm khó cho GIA_BACH. pó tay là phải. Để mình nói hộ cho các bạn ấy yêu cầu thế này nhé: Yêu cầu một lisp như sau: sau khi gõ lệnh lisp, xuất hiện hộp thoại chọn file dữ liệu. File dữ liệu có định dạng STT X Y Z CODE, tuy nhiên không nhất thiết phải có đầy đủ 5 cột, nhưng tối thiểu phải có 4 cột trong đó 3 cột bắt buột là STT X Y, cột còn lại là tùy chọn (có thể là Z có thể là CODE). Về kiểu phân tách dữ liệu giữa các cột có thể là dấu tab, dấu cách, dấu phảy nhưng kiểu nào một kiểu không thể lẫn lộn nhiều kiểu trong một file. Thực thể bắn vào Cad có thể là point kèm theo các thông tin STT Z CODE được phân lớp riêng, hoặc có thể là block do người sử dụng lựa chọn. Diễn giải như thế không biết đã trúng ý chưa 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
khaosat2009 11 Báo cáo bài đăng Đã đăng Tháng 7 30, 2010 Yêu cầu không rõ ràng, do vậy làm khó cho GIA_BACH. pó tay là phải. Để mình nói hộ cho các bạn ấy yêu cầu thế này nhé:Yêu cầu một lisp như sau: sau khi gõ lệnh lisp, xuất hiện hộp thoại chọn file dữ liệu. File dữ liệu có định dạng STT X Y Z CODE, tuy nhiên không nhất thiết phải có đầy đủ 5 cột, nhưng tối thiểu phải có 4 cột trong đó 3 cột bắt buột là STT X Y, cột còn lại là tùy chọn (có thể là Z có thể là CODE). Về kiểu phân tách dữ liệu giữa các cột có thể là dấu tab, dấu cách, dấu phảy nhưng kiểu nào một kiểu không thể lẫn lộn nhiều kiểu trong một file. Thực thể bắn vào Cad có thể là point kèm theo các thông tin STT Z CODE được phân lớp riêng, hoặc có thể là block do người sử dụng lựa chọn. Diễn giải như thế không biết đã trúng ý chưa Xin lổi anh giabach và cám ơn Anh tnmtpc đã giúp . Đúng như ý anh tnmtpc giải thích Trong file text mình có 5 cột gồm STT - Tọa độ X - Tọa độ Y - Cao độ Z - Ghi chú Code ---->( Có thể dạng Tab, cách hay " , " ) Sau khi gỏ lệnh lisp, xuất hiện hộp thoại chọn file text tọa độ trên, Chọn file; Lisp yêu cầu người dùng chọn dạng tọa độ Trắc địa hay tọa độ Cad thì xuất các điểm đó ra Cad; Trên bản vẽ : Tạo theo các lớp riêng là : STT, điểm , Cao độ và Code ; Xuất các dử liệu đó theo cột 1 : STT, Điểm ( Theo tọa độ X,Y Cột 2 và 3 ), Cao độ ( theo cột 4 ), Code ( theo cột 5 ). File mình gởi lại đây, cả dạng mẫu xuất ra. http://www.cadviet.com/upfiles/3/toado9_1.txt http://www.cadviet.com/upfiles/3/block_diem_do_1.rar Mong được anh giúp, Cám ơn Anh 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
VUVUZELA 100 Báo cáo bài đăng Đã đăng Tháng 7 31, 2010 Cái này mình mạn phép chỉnh bản quyền của tác giả 1 ty để làm theo yêu cầu của bạn Có gì pm nhé ;; free lisp from cadviet.com (defun c:RFT (/ code data f h line pt pxy spc txt stt ten) ;Read File Txt ;| By : Gia Bach, gia_bach @ www.CadViet.com |; (vl-load-com) (defun Split (str / i kitu line lst txtPhanbiet) (setq i 1 txtPhanbiet (strcat (chr 9) (chr 32) (chr 44)) ) (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))) ) (or *h* (setq *h* 2)) (initget 6) (setq h (getdist (strcat "\nNhap chieu cao Text <" (rtos *h*) "> :") ) ) (if h (setq *h* h) (setq h *h*) ) (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" "") ) (or (tblsearch "layer" "Code") (command "-layer" "n" "Code" "c" 2 "Code" "") ) (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-Acad-Object)) ) ) (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 (split Line) code (last data) ) (if (and (= (vl-list-length data) 5) (setq pt (vl-remove code (cdr data))) (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt) ) ) ) ;;;neu du lieu data co 5 bien so (progn (setq stt (car data) pXY (list (car pt) (cadr pt)) ) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point" ) (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h ) ) "Sothutu" ) (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (setq txt (vla-addtext spc code (vlax-3d-point (list 0 0 0)) h ) ) "Code" ) (vla-put-Alignment txt 6) (vla-put-TextAlignmentPoint txt (vlax-3d-point (polar pXY 0 (* 0.2 h))) ) (vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo" ) ) ;;het progn list data=5 ;;;neu du lieu data co 4 bien so (ban co the dung ham COND hoac if de bay loi (progn (setq pt (vl-remove code (cdr data))) (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt) ) ) (setq stt (car data) pXY (list (car pt) (cadr pt)) ) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point" ) (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h ) ) "Sothutu" ) (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (vla-addtext spc (last data) (vlax-3d-point pXY) h) "Caodo" ) ) ;;;het progn list=4 ) ) ) ) ) ) (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
QuyetKSTD 1 Báo cáo bài đăng Đã đăng Tháng 7 31, 2010 Mình cũng mới ra trường, mình có một file txt tọa độ và độ cao của các điểm. MÌnh cần phun các điểm này lên cad, mình đang chạy Cad 2004, mong các bạn giúp mình với. Mình xin cảm ơn các bạn nhiềuCấu trúc file dữ liệu txt của mình như sau : STT[dấu tab]X[dấu tab]Y[dấu tab]H Đây là file dữ liệu text của mình 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 36 2330077.579 354223.6025 4.32 37 2328911.223 353810.2686 1.55 38 2328930.38 353819.8861 1.35 39 2328932.433 353812.9436 1.94 40 2328924.433 353805.1256 1.6 41 2328947.281 353825.2526 0.83 42 2328949.977 353816.2742 1.76 43 2328906.788 353794.8497 2.29 44 2328976.065 353841.1843 0.85 45 2328979.015 353829.1792 1.93 46 2328880.018 353796.0264 0.95 47 2328884.037 353784.6955 2.26 48 2329026.355 353856.6625 1.55 49 2329027.518 353848.5523 1.71 50 2328858.222 353787.9463 0.95 51 2328862.666 353775.4874 1.88 52 2329054.445 353866.6599 1.27 53 2329053.742 353858.7875 1.73 54 2328839.054 353780.611 1.26 55 2328843.557 353768.0034 1.91 56 2329078.308 353869.6154 2.39 57 2329085.9 353867.6712 3.99 58 2328821.916 353769.5474 1.71 59 2328825.473 353760.1213 1.95 60 2329026.61 353860.7997 1.44 61 2329003.847 353875.4712 1.46 62 2329011.732 353897.4581 0.79 63 2329021.917 353911.9714 1.73 64 2329028.05 353914.3383 3.28 65 2329044.328 353901.1668 3.16 66 2329040.012 353897.6879 2.55 67 2329034.921 353863.9433 1.39 68 2329039.723 353881.0748 1.45 69 2329044.894 353889.0434 1.77 70 2329011.37 353425.3278 4.61 71 2329064.694 353867.1626 1.64 72 2329069.979 353873.7371 1.81 73 2329061.087 353463.8208 3.11 74 2329329.408 354070.541 2.66 75 2329080.108 353860.5343 4.69 76 2328794.414 354261.704 6.67 77 2329329.419 354070.4917 2.7 78 2329189.908 353430.8551 0.9 79 2329601.943 353646.8228 1.8 80 2329581.827 353628.4327 1.77 81 2329588.321 353590.2256 1.85 82 2329552.453 353635.0785 1.7 83 2329566.867 353618.4323 1.68 84 2329548.335 353606.4003 1.64 85 2329563.541 353597.9979 1.64 86 2329559.423 353565.6399 1.5 87 2329528.219 353567.7175 1.34 88 2329360.117 353856.4385 3.01 89 2329901.307 353838.1542 2.03 90 2329879.959 353833.0103 2.06 91 2329410.493 354139.359 3.16 92 2329414.134 354181.8021 3.26 93 2329460.394 354210.5262 3.06 94 2329438.549 354182.5595 3.21 95 2329428.269 354155.6503 3.36 96 2329444.118 354137.8585 3.37 97 2329450.543 354157.3651 3.18 98 2329462.536 354182.8739 3.08 99 2329471.821 354156.3236 3.13 100 2329498.932 354159.7108 2.94 101 2329484.285 354175.7011 3.03 102 2329478.605 354199.3376 3.22 103 2329476.064 354222.5253 2.98 104 2329491.459 354232.4484 3.11 105 2329509.754 354224.4423 2.73 106 2329497.199 354210.2139 2.79 107 2329500.637 354180.743 2.89 108 2329515.733 354203.4819 2.89 109 2329519.619 354178.6653 2.83 110 2329559.919 354231.6953 2.76 111 2329571.177 354254.3869 2.86 112 2329577.346 354209.3126 2.83 113 2329540.482 354182.3826 2.79 114 2329524.382 354228.2562 2.68 115 2329533.636 354206.4522 2.67 116 2329543.566 354223.8679 2.69 117 2329553.784 354207.0975 2.68 118 2329626.709 354331.7136 3.51 119 2329631.417 354307.7982 3.58 120 2329600.893 354265.6954 3.42 121 2329656.473 354242.136 3.08 122 2329641.136 354231.0403 3.23 123 2329628.227 354248.2159 3.73 124 2329627.013 354275.7271 3.65 125 2329639.01 354283.0229 3.67 126 2329697.331 354296.742 3.03 127 2329698.904 354271.4127 3.04 128 2329728.226 354318.2756 3.34 129 2329733.608 354337.3948 3.46 130 2329749.658 354324.7107 3.54 131 2329735.412 354298.1964 3.2 132 2329741.424 354314.1186 3.35 133 2329327.247 354208.2119 2.83 134 2329382.94 354215.3401 2.71 135 2329400.162 354250.7598 2.74 136 2329590.31 354326.2031 4.12 137 2329567.523 354298.5968 4.14 138 2329551.795 354288.4233 4.09 139 2329530.579 354281.19 3.99 140 2329508.943 354268.9288 3.89 141 2329491.988 354267.0737 3.97 142 2329472.663 354263.0806 3.85 143 2329464.457 354128.786 3.11 144 2329461.662 354104.0341 3.12 145 2329436.668 354113.7444 3.42 146 2329446.863 354082.3093 3.33 147 2329447.192 354101.0716 3.3 148 2329452.454 354120.1631 3.23 149 2329014.338 353983.0356 1.72 150 2329004.07 354005.1022 1.76 151 2328988.285 354016.6165 1.8 152 2328977.317 354034.1895 1.81 153 2329003.535 354023.2941 1.79 154 2329023.772 354001.9913 1.72 155 2329031.652 353982.1207 1.69 156 2329032.875 353961.4675 1.66 157 2329044.695 353990.4159 1.69 158 2329049.043 353969.7627 1.67 159 2329048.499 353948.2936 1.64 160 2329060.35 353958.853 1.63 161 2329069.861 353973.5229 1.59 162 2329061.981 353991.1177 1.61 163 2329052.575 354004.0478 1.64 164 2329038.11 354011.4198 1.72 165 2329019.846 354026.4674 1.75 166 2328993.661 354039.0803 1.83 167 2329011.432 354040.0549 1.82 168 2328990.496 354057.3544 1.82 169 2329088.88 353976.5068 1.82 170 2329098.556 353970.0502 1.92 171 2329099.094 353969.461 1.92 172 2329109.388 354100.9901 1.96 173 2329115.774 354082.3129 1.97 174 2329091.236 354016.8952 1.87 175 2329118.582 354052.5581 2.01 176 2329097.306 354049.8987 1.94 177 2329079.97 354054.5447 1.86 178 2329088.598 354043.3077 1.87 179 2329073.536 354024.497 1.83 180 2329065.01 354035.6059 1.82 181 2329056.511 354046.945 1.82 182 2329067.337 354109.8725 1.81 183 2329061.774 354086.6043 1.84 184 2329059.196 354065.9122 1.89 185 2329041.657 354070.4651 1.85 186 2329038.549 354086.206 1.84 187 2329035.826 354115.7098 1.76 188 2329054.451 354133.0674 1.77 189 2329048.2 354110.8097 1.75 190 2329029.83 354103.7988 1.81 191 2329041.392 354140.1436 1.73 192 2329045.719 354159.8214 1.73 193 2329060.005 354163.5647 1.74 194 2329123.259 354116.0352 1.91 195 2329121.565 354102.2377 1.94 196 2329133.097 354091.2322 1.96 197 2329097.002 354076.1075 1.99 198 2329079.472 354089.8692 1.91 199 2329079.575 354068.2903 1.92 200 2329099.401 354063.3615 1.94 201 2329108.934 354073.4725 1.97 202 2329109.467 354132.6348 1.85 203 2329102.084 354112.7204 1.88 204 2329083.817 354111.8766 1.86 205 2329086.662 354131.7224 1.81 206 2329078.821 354145.9014 1.78 207 2329084.443 354161.5853 1.77 208 2329102.146 354146.9556 1.81 209 2329086.538 354224.0938 1.7 210 2329126.434 354242.1297 1.73 211 2329125.352 354227.33 1.71 212 2329127.709 354213.3064 1.84 213 2329106.1 354221.002 1.72 214 2329101.997 354204.2132 1.81 215 2329109.828 354191.2014 1.79 216 2329095.116 354169.3198 1.76 217 2329109.344 354175.6344 1.74 218 2329116.48 354160.4862 1.82 219 2329159.585 354221.5597 1.76 220 2329137.947 354216.668 1.76 221 2329124.202 354198.1743 1.76 222 2329129.275 354181.278 1.72 223 2329160.525 354208.2795 1.75 224 2329146.39 354197.641 1.75 225 2329151.466 354181.7352 1.7 226 2329169.994 354201.3772 1.74 227 2329167.87 354178.5351 1.73 228 2329136.449 354160.2965 1.89 229 2329149.083 354162.7697 1.8 230 2329144.757 354149.3288 1.87 231 2329125.069 354142.1175 1.88 232 2329150.965 354136.2676 1.88 233 2329133.172 354125.1692 1.9 234 2329169.971 354147.125 1.78 235 2329162.062 354159.5629 1.46 236 2329154.539 354122.9936 1.88 237 2329168.803 354105.9881 1.87 238 2329186.445 354123.9234 1.77 239 2329205.451 354129.2301 1.77 240 2329192.144 354145.4276 1.76 241 2329192.056 354068.6113 1.86 242 2329166.475 354083.4023 1.95 243 2329197.398 354112.6559 1.79 244 2329186.238 354095.3848 1.84 245 2329178.505 354134.0333 1.78 246 2329172.778 354122.4415 1.81 247 2329143.789 354108.3114 1.93 248 2329157.596 354094.9717 1.96 249 2329144.009 354077.1375 1.24 250 2329130.953 354075.7252 1.97 251 2329146.794 354054.4384 1.99 252 2329187.345 353995.6889 1.92 253 2329132.434 353961.3012 1.92 254 2329132.028 353935.1167 1.84 255 2329119.202 353926.778 1.72 256 2329109.045 353960.1 1.84 257 2329109.709 353948.4834 1.68 258 2329109.348 353930.9206 1.72 259 2329101.629 353920.3708 1.67 260 2329083.57 353942.8778 1.6 261 2329088.078 353930.3007 1.65 262 2329075.722 353913.924 1.68 263 2329093.13 354005.5501 1.91 264 2329111.642 354027.8498 1.98 265 2329115.959 354004.2776 1.98 266 2329125.05 353988.8494 2.01 267 2329130.009 354031.9827 2.02 268 2329127.738 354056.8024 1.99 269 2329158.064 354064.8042 1.99 270 2329166.641 354042.8475 1.96 271 2329147.118 354039.4426 1.99 272 2329150.307 354015.8454 2.01 273 2329169.275 354027.0437 1.97 274 2329173.484 354055.9448 1.87 275 2329182.549 354074.7298 1.85 276 2329187.861 354044.5164 1.95 277 2329198.877 354060.5214 1.87 278 2329201.533 354075.7256 1.89 279 2329214.057 354052.622 1.89 280 2329203.212 354027.854 1.94 281 2329226.797 354038.1144 1.92 282 2329237.518 354042.2618 1.98 283 2329222.929 354012.2059 1.85 284 2329229.828 354000.1155 1.74 285 2329236.555 353979.3012 1.92 286 2329238.533 353992.1372 1.76 287 2329249.809 354004.2657 1.72 Chào bạn... Mình xem chuỗi toạ độ này quen lắm. Bạn gần khu vực Thị trấn Mạo Khê??? Liên hệ với mình nếu thấy cần. 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
khaosat2009 11 Báo cáo bài đăng Đã đăng Tháng 7 31, 2010 Cái này mình mạn phép chỉnh bản quyền của tác giả 1 ty để làm theo yêu cầu của bạnCó gì pm nhé ;; free lisp from cadviet.com (defun c:RFT (/ code data f h line pt pxy spc txt stt ten) ;Read File Txt ;| By : Gia Bach, gia_bach @ www.CadViet.com |; (vl-load-com) (defun Split (str / i kitu line lst txtPhanbiet) (setq i 1 txtPhanbiet (strcat (chr 9) (chr 32) (chr 44)) ) (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))) ) (or *h* (setq *h* 2)) (initget 6) (setq h (getdist (strcat "\nNhap chieu cao Text <" (rtos *h*) "> :") ) ) (if h (setq *h* h) (setq h *h*) ) (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" "") ) (or (tblsearch "layer" "Code") (command "-layer" "n" "Code" "c" 2 "Code" "") ) (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-Acad-Object)) ) ) (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 (split Line) code (last data) ) (if (and (= (vl-list-length data) 5) (setq pt (vl-remove code (cdr data))) (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt) ) ) ) ;;;neu du lieu data co 5 bien so (progn (setq stt (car data) pXY (list (car pt) (cadr pt)) ) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point" ) (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h ) ) "Sothutu" ) (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (setq txt (vla-addtext spc code (vlax-3d-point (list 0 0 0)) h ) ) "Code" ) (vla-put-Alignment txt 6) (vla-put-TextAlignmentPoint txt (vlax-3d-point (polar pXY 0 (* 0.2 h))) ) (vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo" ) ) ;;het progn list data=5 ;;;neu du lieu data co 4 bien so (ban co the dung ham COND hoac if de bay loi (progn (setq pt (vl-remove code (cdr data))) (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt) ) ) (setq stt (car data) pXY (list (car pt) (cadr pt)) ) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point" ) (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h ) ) "Sothutu" ) (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (vla-addtext spc (last data) (vlax-3d-point pXY) h) "Caodo" ) ) ;;;het progn list=4 ) ) ) ) ) ) (princ) ) Cám ơn Bạn thật nhiều, Mình có thể nhớ bạn hướng dẫn nội dung của lisp trên được không ? Mình muốn học và hiểu về cách xây dựng đoạn Lisp trên. Mong được bạn giúp 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
tnmtpc 207 Báo cáo bài đăng Đã đăng Tháng 7 31, 2010 Cái này mình mạn phép chỉnh bản quyền của tác giả 1 ty để làm theo yêu cầu của bạnCó gì pm nhé ;; free lisp from cadviet.com (defun c:RFT (/ code data f h line pt pxy spc txt stt ten) ;Read File Txt ;| By : Gia Bach, gia_bach @ www.CadViet.com |; (vl-load-com) (defun Split (str / i kitu line lst txtPhanbiet) (setq i 1 txtPhanbiet (strcat (chr 9) (chr 32) (chr 44)) ) (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))) ) (or *h* (setq *h* 2)) (initget 6) (setq h (getdist (strcat "\nNhap chieu cao Text <" (rtos *h*) "> :") ) ) (if h (setq *h* h) (setq h *h*) ) (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" "") ) (or (tblsearch "layer" "Code") (command "-layer" "n" "Code" "c" 2 "Code" "") ) (setq spc (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-Acad-Object)) ) ) (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 (split Line) code (last data) ) (if (and (= (vl-list-length data) 5) (setq pt (vl-remove code (cdr data))) (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt) ) ) ) ;;;neu du lieu data co 5 bien so (progn (setq stt (car data) pXY (list (car pt) (cadr pt)) ) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point" ) (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h ) ) "Sothutu" ) (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (setq txt (vla-addtext spc code (vlax-3d-point (list 0 0 0)) h ) ) "Code" ) (vla-put-Alignment txt 6) (vla-put-TextAlignmentPoint txt (vlax-3d-point (polar pXY 0 (* 0.2 h))) ) (vla-put-Layer (vla-addtext spc (caddr pt) (vlax-3d-point pXY) h) "Caodo" ) ) ;;het progn list data=5 ;;;neu du lieu data co 4 bien so (ban co the dung ham COND hoac if de bay loi (progn (setq pt (vl-remove code (cdr data))) (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point pt) ) ) (setq stt (car data) pXY (list (car pt) (cadr pt)) ) (vla-put-Layer (vla-addpoint spc (vlax-3d-point pXY)) "Point" ) (vla-put-Layer (setq txt (vla-addtext spc stt (vlax-3d-point (list 0 0 0)) h ) ) "Sothutu" ) (vla-put-Alignment txt 8) (vla-put-TextAlignmentPoint txt (vlax-3d-point pXY)) (vla-put-Layer (vla-addtext spc (last data) (vlax-3d-point pXY) h) "Caodo" ) ) ;;;het progn list=4 ) ) ) ) ) ) (princ) ) Lisp có trục trặc: Nếu hàng nào có đủ 5 cột thì nó hiểu cột thứ 5 là "độ cao" còn cột thứ tư bị lờ đi Trong trắc địa trục X là trục bắc, Y là trục đông, khác với trục toạ độ Đề các trong toán học, do vậy lisp đã thể hiện vị trí points sai. Các point được bắn vào cad là 2D , nên gán Z cho nó để còn sử dụng vào việc tạo bình đồ. Nếu ai không cần chế độ 3D point thì chỉ cần sử dụng lệnh là phẳng là xong Bác xem lại các vấn đề trên. 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
khaosat2009 11 Báo cáo bài đăng Đã đăng Tháng 8 1, 2010 Lisp có trục trặc:Nếu hàng nào có đủ 5 cột thì nó hiểu cột thứ 5 là "độ cao" còn cột thứ tư bị lờ đi Trong trắc địa trục X là trục bắc, Y là trục đông, khác với trục toạ độ Đề các trong toán học, do vậy lisp đã thể hiện vị trí points sai. Các point được bắn vào cad là 2D , nên gán Z cho nó để còn sử dụng vào việc tạo bình đồ. Nếu ai không cần chế độ 3D point thì chỉ cần sử dụng lệnh là phẳng là xong Bác xem lại các vấn đề trên. Cám ơn Bạn đã chỉ giúp. Nhờ các bạn giúp giùm, 1. Cột thứ 6 là code, tên code trùng với kí hiệu nhờ các bạn giúp chèn kí hiệu đó ra bản vẽ luôn. 2. Thên cộ thứ 7 : là NOI ( nối điểm ) mục đích nối điểm tự động, dựa và tên điểm cột 1 nối theo thứ tự ta chọn ( ví dụ 1,2,5,7,9) thì nối các điểm 1-2-5-7-9 thành Pl. Rất mong được các bạn giúp 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