Chuyển đến nội dung
Diễn đàn CADViet
npkh1981

chuyển số liệu text từ cad sang excell

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

Cám ơn Bác Tue_NV đã giúp em .Em đã sửa lại lisp để xuất sang excel chỉ cần lấy số thửa và tên hộ trong thửa mà mãi không được Nhờ Bác giúp em.Cám ơn Bá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
Cám ơn Bác Tue_NV đã giúp em .Em đã sửa lại lisp để xuất sang excel chỉ cần lấy số thửa và tên hộ trong thửa mà mãi không được Nhờ Bác giúp em.Cám ơn Bác.

Không hiểu ý của bạn.

Lisp trên viết không đúng yêu cầu của bạn hay sao?

Vấn đề là trong thửa đất của em có 3 hộ hặc nhiều hơn nữa Vậy khi xuất xang excel các hộ trong 1 thửa phải cùng trong 1 cột, ngăn cách bằng dấy "," hặc dấu ";" như trong ví dụ em up lên .Nhờ các bác bổ xung lisp này em với xin trân thành cảm ơn các bác.

http://www.cadviet.com/upfiles/3/vidu_3.rar

Ý của bạn như thế nào?

Upload file và nói rõ nhé.

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 hiểu ý của bạn.

Lisp trên viết không đúng yêu cầu của bạn hay sao?

 

Ý của bạn như thế nào?

Upload file và nói rõ nhé.

 

Chào Bác Tue_NV Lisp của bác rất chuẩn rồi . Xong phần bản đồ địa chính của em chỉ có 2 cột đó là số thửa và tên số các hộ trong thửa đất. Vậy mong bác 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
Chào Bác Tue_NV Lisp của bác rất chuẩn rồi . Xong phần bản đồ địa chính của em chỉ có 2 cột đó là số thửa và tên số các hộ trong thửa đất. Vậy mong bác giúp đỡ.

Bạn có thể mở file Excel lên và delete các cột không cần thiết đi cơ mà :leluoi:

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 đồ địa chính của em chỉ có 2 cột đó là số thửa và tên số các hộ trong thửa đất như ví dụ file em sẽ up lên . Vậy mong bác giúp đỡ.

 

http://www.cadviet.com/upfiles/3/vd_4.dwg

Sao bạn không upload file sớm để khỏi mất thời gian không?

Của bạn đây :


;; free lisp from cadviet.com

(defun c:CTE(/ ss ent sht dtich cthua gchu i fname lst chuoi)
;copyright by Tue_NV
(IF (ACET-UTIL-VER)
(PROGN
(iF (setq ss (ssget '((0 . "*POLYLINE") (70 . 1))))
(pROGN (setq i -1 lst '())
 (while (setq ent (ssname ss (setq i (1+ i))))
   (setq L (acet-geom-vertex-list ent))
   (if (and (setq sht (ssget "CP" L '((0 . "*TEXT") (8 . "Sothua") (1 . "~*[~0-9]*"))))  
   	     (setq cthua (ssget "CP" L '((0 . "*TEXT") (8 . "Text") (1 . "*@*"))))
)
      (setq lst (vl-sort 
           (append lst
   		     (list
	 	 (mapcar '(lambda(x)
		   		(acet-dxf 1 (entget x))
			   )
    			(apply 'append
		       		(mapcar 'acet-ss-to-list
			       			(list sht sht cthua)
		       		)
			)
   		   	)
	     )
          );append
	 '(lambda (x1 x2) (		);vl-sort
   	)
    )
 );while
 ;;;;;;;;;;;;;;
(if (setq fName (getfiled "Ten file xuat " (getvar "dwgprefix") "xls" 1))
  (progn
(setq fName (open fName "w") )
(write-line "STT\tSO HIEU THUA\tCHU THUA" fname)
(foreach pt lst
  (if (>= (setq lenpt (length pt)) 3)
    (progn
       (setq i 1 chuoi "")
 	       (write-line (strcat (nth 0 pt) "\t" (nth 1 pt) "\t" 
			   (Repeat (- lenpt 2)
			      (setq i (1+ i))
			      (if (= lenpt 3)
			      	(setq chuoi (nth i pt))
				(setq chuoi (strcat chuoi (nth i pt) " ;"))
			      )
			   )
			   ) fName)
    )		
  )
 )
      (close fName)
  )
)
 ))));PROGN_IF
(setvar "modemacro" "Chuc ban lam viec hieu qua - tue_nvcc@yahoo.com")
(princ)
)

Có lẽ nên viết 1 dialog cho user có thêm lựa chọn

Tue_Nv với thời gian bận rộn bây giờ có muốn viết nhưng cũng không được

Chúc bạn vui.

  • Like 1
  • Vote tăng 2

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

Chào bác Tue_NV, sau một thời gian sử dụng Lisp của bác em thấy đã mang lại hiệu quả phần nào trong công tác thống kê các đối tượng là TEXT ,

Em có ý tưởng này rất mong bác và các bạn có thể giúp đỡ

Nếu ý tưởng này của em thành công thì việc thống kê các đối tượng dạng TEXT sẽ dễ dàng hơn rất nhiều

Ý tưởng của em là " Chuyển các đối tượng TEXT trong một vùng kín từ CAD sang Excell dựa vào màu sắc của TEXT"

 

- Các TEXT có cùng một màu được thống kê trên một cột Excell

- Không quan tâm đến việc đặt tên Layer

- Thống kê được nhiều đối tượng TEXT hơn

- Thống kê các đối tượng TEXT theo quy tắc từ TRÁI sang PHẢI, từ TRÊN xuống Dưới

 

Đây là bản vẽ của em với 5 loại màu đặc trưng của TEXT

 

http://www.cadviet.com/upfiles/3/new_folder_5.rar

 

Em rất mong được các bác trên diễn đàn giúp đỡ

Em xin 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

Cám ơn Bạn nha. Lisp của bạn xuất thuộc tính trong thửa ra excel rất hay.

Mình thường làm công tác san nền muốn xuất các ô khối lượng trong vòng tròn ra file excel theo từng nội dung lớp theo hàng ngang.

Rất mong được bạn giúp.

http://www.cadviet.com/upfiles/3/114381_yeu_cau_xuat_ra_excel.rar

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

Cám ơn Bạn nha. Lisp của bạn xuất thuộc tính trong thửa ra excel rất hay.

Mình thường làm công tác san nền muốn xuất các ô khối lượng trong vòng tròn ra file excel theo từng nội dung lớp theo hàng ngang.

Rất mong được bạn giúp.

http://www.cadviet.c...at_ra_excel.rar

Hề hề hề,

Bạn cần nói rõ hơn việc xuất số liệu theo từng ô là xuất thế nào. Theo từng vòng tròn hay theo từng ô vuông?? Các vòng trò nằm trên biên ô vuông có xuất hay không??? Có cần theo trật tự của các số hiệu trên mỗi vòng tròn hay không???

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 muốn xuất số liệu từ Cad sang excel của bản vẽ san nền ra file excel với thứ tự như sau:

1. Cao độ tự nhiên tại các mắt ô lưới lớp CDTN.

2. Xuất các nội dung trong vòng tròn ghi kết quả tính khối lượng gồm : STT, CCTC, Dtich và khối lượng ( đào , đấp ) theo lớp đã thể hiện trên bản vẽ.

việc xuất theo thứ tự của số liệu ô lưới, nhỏ trước, lớn sau.

Rất cám ơn đượ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

Mình muốn xuất số liệu từ Cad sang excel của bản vẽ san nền ra file excel với thứ tự như sau:

1. Cao độ tự nhiên tại các mắt ô lưới lớp CDTN.

2. Xuất các nội dung trong vòng tròn ghi kết quả tính khối lượng gồm : STT, CCTC, Dtich và khối lượng ( đào , đấp ) theo lớp đã thể hiện trên bản vẽ.

việc xuất theo thứ tự của số liệu ô lưới, nhỏ trước, lớn sau.

Rất cám ơn được bạn giúp.

Hề hề hề,

1/- Mình không phải là dân chuyên ngành của bạn nên những điều bạn nói mình rất khó hình dung.

2/- Bạn hãy gửi 1 file thể hiện kết quả lên để mình tiện so sánh.

3/- trên bản vẽ và file csv bạn đã gửi mình thấy có những mâu thuẫn mà chưa giải thích được. Tỷ như trên file csv thì có tới hai cột Main_V_Dao trong khi trên bản vẽ không có lớp nào tên như vậy. Nhưng trong vòng tròn thì lại có tới hai text thuộc lớp Main_V_Dap. vậy có thống kê không và ghi nó vào đâu. Hai text này thì lấy cái nào trước cái nào sau???

4/- Trật tự các cột trong file csv không giống với trật tự các text trong vòng tròn, Vậy xuất kết quả theo trật tự nào???

5/- Trong các text cần xuất có sử dụng ký tự "," như vậy khi xuất sang csv nó sẽ bị nhảy cột tại vị trí của ký tự này. Có thể thay ký tự này bằng ký tự khác đước không??? Tỷ như (16,53) thay bằng (16-53) chẳng hạn.

6/- Thự tự thống kế theo bạn nói là theo số liệu ô lưới. Số liệu này lấy ở đâu trong các text trong vòng tròn??? Các số (16,53) và (16,53-1) thì sắp xếp thế nào???

Bạn cần có file kết quả mẫu thì may ra mình mới mò mẫm để hiểu được.

Hề hề hề.

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

cám ơn Bạn, Vấn đề này hơi phức tạp ha..

Trước tiên mình muốn xuất các nội dung trong vòng tròn ra file excel khi chọn toàn bộ các vòng tròn đó theo hàng ngang với thứ tự Main_H_Dap Main_S_Dap Main_V_Dap Main_H_Dao Main_V_Dao Main_S_Dao Main_S_O

rất cám ơn bạn giúp

http://www.cadviet.com/upfiles/3/114381_114381_yeu_cau_xuat_ra_excel.rar

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

cám ơn Bạn, Vấn đề này hơi phức tạp ha..

Trước tiên mình muốn xuất các nội dung trong vòng tròn ra file excel khi chọn toàn bộ các vòng tròn đó theo hàng ngang với thứ tự Main_H_Dap Main_S_Dap Main_V_Dap Main_H_Dao Main_V_Dao Main_S_Dao Main_S_O

rất cám ơn bạn giúp

http://www.cadviet.c...at_ra_excel.rar

Hề hề hề,

Phức tạp hay đơn giản thì chỉ có bạn hiểu mà thôi. Còn mình là dân ngoại ngạch nên chỉ là thiên lôi chỉ đâu đánh đó. Đôi khi đánh nhầm cũng là chuyện thường ngày của thằng thiên lôi. Tội vạ đã có bạn chịu giùm mà.

Đây là cái thiên lôi đó. trúng trật bạn ráng chịu nhé.

http://www.cadviet.com/upfiles/3/5194_exporttext2excel.lsp

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

Cám ơn bạn phanthangbinh, lisp của bạn viết xuất ra excel rất tuyệt.

Nhưng khi thành phần trong vòng tròn có thay đổi ( Không có khồi lượng đào hay đấp bị xóa đi ) , như trường hợp A, thì ô tính thể tích chung xuất ra excel không đúng vào cột . Có khả năng lisp chưa kiểm soát nội dung lop trong vòng tròn xuất đúng vào cột trên excel.

Với trường hợp B chỉ có ô vòng tròn dạng thể hiện 1 nội dung đào, đấp thì lisp xuất không đúng vào vị trí cột

rất 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

Cám ơn bạn phanthangbinh, lisp của bạn viết xuất ra excel rất tuyệt.

Nhưng khi thành phần trong vòng tròn có thay đổi ( Không có khồi lượng đào hay đấp bị xóa đi ) , như trường hợp A, thì ô tính thể tích chung xuất ra excel không đúng vào cột . Có khả năng lisp chưa kiểm soát nội dung lop trong vòng tròn xuất đúng vào cột trên excel.

Với trường hợp B chỉ có ô vòng tròn dạng thể hiện 1 nội dung đào, đấp thì lisp xuất không đúng vào vị trí cột

rất mong được bạn giúp

http://www.cadviet.c..._ra_excel_1.rar

Hề hề hề,

Lỗi là do bạn không đưa các trường hợp đó vào bản vẽ nên mình không biết mà xử lý. Mà hình như bạn cũng không nắm vững nội dung bạn cần gì. Ngay cả cái bản vẽ bạn mới post sau này, ở cái ví dụ về các trường hợp B thì cả hai ô thể tích đều là lớp Main_V_Dap chứ nào có thấy Main_V_Dao.

Mình đã sửa lại lisp theo như mình hiểu là số liệu ở lớp nào thì vào cột tên lớp đó. Còn việc xuất số liệu sai do bạn nhập liệu trên bản vẽ sai thì mình không sửa được. Lisp đã sửa :

http://www.cadviet.com/upfiles/3/5194_exporttext2excel_1.lsp

  • Vote tăng 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

Xin lỗi Bạn nha,Khi thấy bạn viết lisp trên.... mình rất mừng đúng với mình đang mong muốn .... và yêu cầu bạn nhưng quá gấp, lisp này thì quá tuyệt.

Mong được bạn chỉ giáo ý nghĩa các đoạn lệnh 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

Xin lỗi Bạn nha,Khi thấy bạn viết lisp trên.... mình rất mừng đúng với mình đang mong muốn .... và yêu cầu bạn nhưng quá gấp, lisp này thì quá tuyệt.

Mong được bạn chỉ giáo ý nghĩa các đoạn lệnh trên.

 

Xin lỗi Bạn nha,Khi thấy bạn viết lisp trên.... mình rất mừng đúng với mình đang mong muốn .... và yêu cầu bạn nhưng quá gấp, lisp này thì quá tuyệt.

Mong được bạn chỉ giáo ý nghĩa các đoạn lệnh trên.

Hề hề hề,

Y nghĩa của các dòng code mà mình đã viết thực ra chỉ là cái mình mót được từ mọi người ở trên diễn đàn chứ có phải cao siêu gì đâu. Chỉ là bạn cần dành chút thời gian để tìm hiểu về lisp và làm thử vài lần sẽ quen thôi mà.

Cụ thể như sau:

1/- (defun c:xt2ex (/ oldos sslst tlst filename f sslst1 C1 C2 C3 C4 C5 C6 C7 C8 )

Khai báo tên lệnh lisp, đặt các biến sử dụng là biến cục bộ để nó bị triệt tiêu sau khi chạy lisp

2/- (vl-load-com) load các hàm vl- và các lệnh sử dụng trong express tool

3/- (command "undo" "be") đánh dấu nơi bắt đầu đặt lệnh undo

4/- (setq oldos (getvar "osmode")) Lấy giá trị biến hệ thống osmode hiện hành

5/- (setvar "osmode" 0) Đặt biến hệ thống osmode về 0 để tránh truy bắt nhầm điểm.

6/- (setq sslst (acet-ss-to-list (ssget (list (cons 0 "circle") (cons 62 63) (cons 8 "main_circleKQ"))))

tlst "" )

Đặt tên biến sslst là một danh sách tên các đối tượng vòng tròn được chọn bởi lệnh ssget. Về cú pháp và chức năng của lệnh này bạn tham khảo trong Help Developer của CAD,

Đặt biến tlst là một chuỗi trống (không chứa ký tự nào)

7/- (setq filename (getfiled "Select a File" "" "csv" 1)) Đặt biến filename là tên file được chọn từ hộp thoại của lệnh Getfiled. Xem thêm Help developer để hiểu về lệnh này.

8/- (setq f (open filename "w")) Mở file có filename đã chọn để ghi nội dung mới vào file và lưu biến thao tác này là f.

9/- (write-line "Main_STT,Main_H_Dap,Main_S_Dap,Main_V_Dap,Main_H_Dao,Main_S_Dao,Main_V_Dao,Main_S_O," f)

Ghi một dòng text vào file đã mở, dấu , dùng ngăn cách giữa các cột trong file

10/- (foreach e sslst

Mở hàm foreach để lặp qua tất cả các đối tượng có trong danh sách các ename đã được chọn ở phía trên (biến sslst)

Các nhiệm vụ cần làm trong mỗi lần lặp được liệt kê như sau:

a/- (setq sslst1 (acet-ss-to-list (ssget "w" (list (- (cadr (assoc 10 (entget e))) (cdr (assoc 40 (entget e))))

(- (caddr (assoc 10 (entget e))) (cdr (assoc 40 (entget e))))

)

(list (+ (cadr (assoc 10 (entget e))) (cdr (assoc 40 (entget e))))

(+ (caddr (assoc 10 (entget e))) (cdr (assoc 40 (entget e))))

)

(list (cons 0 "text")) )) )

Lấy một danh sách các đối tượng text có trong mỗi vòng tròn. Tham khảo thêm về lệnh ssget với tham số "w" trong help developer.

b/- (setq C1 nil C2 nil C3 nil C4 nil C5 nil C6 nil C7 nil C8 nil), Đặt các biến C1 ..... C8 về giá trị nil (chả có gì)

c,d,e,f,g,h,i,k/- (foreach en sslst1

(if (= (cdr (assoc 8 (entget en))) "Main_STT")

(setq C1 (cdr (assoc 1 (entget en))) )

)

)

Tạo 8 vòng lặp qua các đối tượng text được chọn trong danh sách sslst1 để lấy giá trị của 8 biến C1 ... C8 theo tên các lớp của mỗi text

l/- (setq tlst (strcat (if C1 C1 " ") (chr 44) (if C2 C2 " ") (chr 44) (if C3 C3 " ") (chr 44) (if C4 C4 " ") (chr 44)

(if C5 C5 " ") (chr 44) (if C6 C6 " ") (chr 44) (if C7 C7 " ") (chr 44) (if C8 C8 " ") (chr 44) ))

Đặt biến tlst là một chuỗi gồm giá trị các biến từ C1 đến C8 với dấu ngăn cách cột là ","

m/- (write-line tlst f) Ghi giá trị chuổi này vào file đã mở f ở trên

n/- (setq tlst "") Trả biến tlst về chuỗi trống.

11/- ) Kết thúc vòng lặp foreach.

12/- (close f) Đóng file f đã mở phía trên.

13/- (setvar "osmode" oldos) Trả biến hệ thống osmode về giá trị ban đầu trước khi chạy lisp

14/- (command "undo" "e") Đánh dấu nơi kết thúc của lệnh undo. Điều này để giúp người dùng khi cần có thể khôi phục nhanh bản vẽ đã bị lisp làm thay đổi.

15/- (princ) Xóa sạch biến cuối cùng do lisp tạo ra và trả về nil. Thoát êm

16/- ) Kết thúc lệnh lisp (defun c:xt2ex .... đã bắt đầu phía trên.

 

Nói thì như vậy nhưng thực tế để vận dụng tốt các hàm lisp phía trên cũng cần có thời gian để đọc và thực hành. Bạn chớ có sợ nó rậm rì rắc rối, Bước đấu có thể hơi ngại ngùng như khi gặp gái trinh, nhưng cứ thọc vào bạn sẽ thấy khoái dần và nổi hứng với nó không chừng. Cứ từ từ mà vọc. Dục tốc bất đạt. Mưa dần thấm đất, rồi sẽ tời lúc nó nhũn ra như con chi chi, bạn tha hồ mà thọc mà ngoáy, mà mấn mà mò, chả còn biết sợ là gì nữa đâu.

 

Hề hề hề,...

  • Vote tăng 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

cám ơn bạn, Nếu mình muốn lấy nội dung trong đa giác ra file excel thì có thể thay

6/- (setq sslst (acet-ss-to-list (ssget (list (cons 0 "circle") (cons 62 63) (cons 8 "main_circleKQ"))))

tlst "" ) bằng polyline được không bạ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

Chú ý là các đa giác phải cùng màu và cùng lớp với circle nhé.


(defun c:xt2ex (/ oldos sslst tlst filename f sslst1 C1 C2 C3 C4 C5 C6 C7 C8 )
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq sslst (acet-ss-to-list (ssget (list (cons 0 "LWPOLYLINE") (cons 62 63) (cons 8 "Main_tach_o"))))
         tlst ""   )
(setq filename (getfiled "Select a File" "" "csv" 1))
(setq f (open filename "w")) 
(write-line "Main_STT,Main_H_Dap,Main_S_Dap,Main_V_Dap,Main_H_Dao,Main_S_Dao,Main_V_Dao,Main_S_O," f)
(foreach e sslst
        (setq sslst1 (acet-ss-to-list (ssget "wp" (acet-geom-vertex-list e)
                                                                         (list (cons 0 "text"))     ))  )
        (setq C1 nil C2 nil C3 nil C4 nil C5 nil C6 nil C7 nil C8 nil)
        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_STT")
                     (setq C1 (cdr (assoc 1 (entget en))) )
                 )
        )
        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_H_Dap")
                     (setq C2 (cdr (assoc 1 (entget en))) )
                 )
        )
        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_S_Dap")
                    (setq C3 (cdr (assoc 1 (entget en))) )
                 )
        )
        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_V_Dap")
                     (setq C4 (cdr (assoc 1 (entget en))) )
                 )
        )
        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_H_Dao")
                     (setq C5 (cdr (assoc 1 (entget en))) )
                 )
        )
        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_S_Dao")
                    (setq C6 (cdr (assoc 1 (entget en))) )
                 )
        )
        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_V_Dao")
                     (setq C7 (cdr (assoc 1 (entget en))) )
                 )
        )

        (foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en)))  "Main_S_O")
                    (setq C8 (cdr (assoc 1 (entget en))) )
                 )
        )
        (setq tlst (strcat (if C1 C1 " ") (chr 44) (if C2 C2 " ") (chr 44) (if C3 C3 " ") (chr 44) (if C4 C4 " ") (chr 44) 
                                   (if C5 C5 " ") (chr 44) (if C6 C6 " ") (chr 44) (if C7 C7 " ") (chr 44) (if C8 C8 " ") (chr 44) ))
        (write-line tlst f)
        (setq tlst "")
)
(close f)
(setvar "osmode" oldos)
(command "undo" "e")
(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

Mình chỉnh theo hướng dẫn của bạn, không xuất ra file cvs được.

Mong bạn giúp

http://www.cadviet.c...4381_ycau_3.rar

Hề hề hề,

Bạn sửa chỗ đó mới chỉ là để chọn được polyline.

Tuy nhiên để chọn các text chứa trong lwpolyline đó thì bạn lại không dùng hàm ssget như mình đã dùng được vì lúc này các giá trị (assoc 10 (entget e)) và (assoc 40 (entget e)) không còn đúng ý nghĩa như đối với vòng tròn nữa.

Bác ĐoanVanHa đã sửa lại giùm bạn rồi đó. bạn có thể tham khảo và tìm hiểu kỹ hơn về hàm ssget trong Help Developer để hiểu được cách sử dụng của 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

Chú ý là các đa giác phải cùng màu và cùng lớp với circle nhé.


(defun c:xt2ex (/ oldos sslst tlst filename f sslst1 C1 C2 C3 C4 C5 C6 C7 C8 )
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq sslst (acet-ss-to-list (ssget (list (cons 0 "LWPOLYLINE") (cons 62 63) (cons 8 "Main_tach_o"))))
         tlst ""   )
(setq filename (getfiled "Select a File" "" "csv" 1))
(setq f (open filename "w"))
(write-line "Main_STT,Main_H_Dap,Main_S_Dap,Main_V_Dap,Main_H_Dao,Main_S_Dao,Main_V_Dao,Main_S_O," f)
(foreach e sslst
	(setq sslst1 (acet-ss-to-list (ssget "wp" (acet-geom-vertex-list e)
                                                                         (list (cons 0 "text")) 	))  )
	(setq C1 nil C2 nil C3 nil C4 nil C5 nil C6 nil C7 nil C8 nil)
	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_STT")
                     (setq C1 (cdr (assoc 1 (entget en))) )
                 )
	)
	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_H_Dap")
                     (setq C2 (cdr (assoc 1 (entget en))) )
                 )
	)
	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_S_Dap")
    				(setq C3 (cdr (assoc 1 (entget en))) )
                 )
	)
	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_V_Dap")
                     (setq C4 (cdr (assoc 1 (entget en))) )
                 )
	)
	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_H_Dao")
                     (setq C5 (cdr (assoc 1 (entget en))) )
                 )
	)
	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_S_Dao")
    				(setq C6 (cdr (assoc 1 (entget en))) )
                 )
	)
	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en))) "Main_V_Dao")
                     (setq C7 (cdr (assoc 1 (entget en))) )
                 )
	)

	(foreach en sslst1
                 (if (= (cdr (assoc 8 (entget en)))  "Main_S_O")
    				(setq C8 (cdr (assoc 1 (entget en))) )
                 )
	)
	(setq tlst (strcat (if C1 C1 " ") (chr 44) (if C2 C2 " ") (chr 44) (if C3 C3 " ") (chr 44) (if C4 C4 " ") (chr 44)
                                   (if C5 C5 " ") (chr 44) (if C6 C6 " ") (chr 44) (if C7 C7 " ") (chr 44) (if C8 C8 " ") (chr 44) ))
	(write-line tlst f)
	(setq tlst "")
)
(close f)
(setvar "osmode" oldos)
(command "undo" "e")
(princ)
)

Vẩn không xuất ra cvs được bạn ơi

Nhưng tại sao mình lại chuyển cùng màu và cùng lớp vậy bạn ?

khi đã thay đổi

(setq sslst (acet-ss-to-list (ssget (list (cons 0 "LWPOLYLINE") (cons 62 63) (cons 8 "Main_tach_o"))))

tlst "" )

http://www.cadviet.com/upfiles/3/114381_ycau4.dwg

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

×