Đến nội dung


Hình ảnh
- - - - -

[Nhờ viết lisp] Xuất cao độ từ CAD sang Notpad hoặc Excel


  • Please log in to reply
30 replies to this topic

#1 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 29 July 2013 - 12:03 AM

- Mình đang phải giải quyết một đống cao độ và khoảng cách lẻ trong CAD, các cao độ và khoảng cách lẻ này của mình cái thì nằm theo phương ngang, cái thì theo phương đứng.

  Trên Forums cũng có nhiều lisp tương tự nhưng không giải quyết được bài toán của mình.

- Mình muốn nhờ các member cadviet.com viết giúp lisp xuất các cao độ và khoảng cách lẻ này sang Notpad hoặc Excel.

 

- Cụ thể, file CAD mình up lên như sau :

+ Hàng bên trên là cao độ, bên dưới là khoảng cách lẻ tương ứng.

+ Hàng cao độ thì text theo phương đứng; Hàng K/c lẻ thì các text có cả theo phương đứng và phương ngang.

 

??? Bây giờ mình muốn có 1 lisp như sau :\

+ Chạy lệnh.

+ Quét chọn hàng cao độ (hoặc khoảng cách lẻ).

+ Lisp sẽ cho ra kết quả là các text trong file Notpad hoặc Excel theo dạng cột, hoặc hàng đều được. Quét chọn nhiều lần thì sẽ được nhiều cột; hàng trong cùng một file.

+ Lisp chạy liên tục cho đến khi nhấn Enter để kết thúc lệnh.

Link file : http://www.cadviet.c...3/103675_vd.dwg

 


  • 0

#2 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 30 July 2013 - 09:54 AM

- Mình đang phải giải quyết một đống cao độ và khoảng cách lẻ trong CAD, các cao độ và khoảng cách lẻ này của mình cái thì nằm theo phương ngang, cái thì theo phương đứng.

  Trên Forums cũng có nhiều lisp tương tự nhưng không giải quyết được bài toán của mình.

- Mình muốn nhờ các member cadviet.com viết giúp lisp xuất các cao độ và khoảng cách lẻ này sang Notpad hoặc Excel.

 

- Cụ thể, file CAD mình up lên như sau :

+ Hàng bên trên là cao độ, bên dưới là khoảng cách lẻ tương ứng.

+ Hàng cao độ thì text theo phương đứng; Hàng K/c lẻ thì các text có cả theo phương đứng và phương ngang.

 

??? Bây giờ mình muốn có 1 lisp như sau :\

+ Chạy lệnh.

+ Quét chọn hàng cao độ (hoặc khoảng cách lẻ).

+ Lisp sẽ cho ra kết quả là các text trong file Notpad hoặc Excel theo dạng cột, hoặc hàng đều được. Quét chọn nhiều lần thì sẽ được nhiều cột; hàng trong cùng một file.

+ Lisp chạy liên tục cho đến khi nhấn Enter để kết thúc lệnh.

Link file : http://www.cadviet.c...3/103675_vd.dwg

 

Cái nằm theo phương ngang cái nằm theo phương đứng thì biết phân biệt kiểu gì bi giờ chủ pic

Nếu chủ pic chấp nhận các giả thiết sau thì sẽ khả thi hơn

  1. Sửa lại toàn bộ cao độ (CDo) thành layer1, và toàn bộ số lẻ thành Layer2, hoặc một cách khác để loại trừ
  2. Dùng lisp (căn chỉnh hàng loạt Text) về : CDo căn giữa-giữa thẳng hàng nhau, số lẻ căn giữa- giữa thẳng hàng nhau và thẳng hàng với Text mẫu nào đó hoặc điểm pic chọn (hoặc nếu không thẳng hàng nhau thì chấp nhận sai số "về độ thẳng hàng nhau" là bao nhiêu đơn vị (đơn vị Model cad)

...

Chủ pic cấp thêm giả thiết nhé


  • 0

#3 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 30 July 2013 - 10:43 AM

Cái nằm theo phương ngang cái nằm theo phương đứng thì biết phân biệt kiểu gì bi giờ chủ pic

Nếu chủ pic chấp nhận các giả thiết sau thì sẽ khả thi hơn

  1. Sửa lại toàn bộ cao độ (CDo) thành layer1, và toàn bộ số lẻ thành Layer2, hoặc một cách khác để loại trừ
  2. Dùng lisp (căn chỉnh hàng loạt Text) về : CDo căn giữa-giữa thẳng hàng nhau, số lẻ căn giữa- giữa thẳng hàng nhau và thẳng hàng với Text mẫu nào đó hoặc điểm pic chọn (hoặc nếu không thẳng hàng nhau thì chấp nhận sai số "về độ thẳng hàng nhau" là bao nhiêu đơn vị (đơn vị Model cad)

...

Chủ pic cấp thêm giả thiết nhé

- Cũng khó quá bạn nhỉ, bây giờ ngồi chỉnh thủ công cho các số giống nhau về cùng Layer cũng chết

- Bạn có thể viết lisp theo cách này được không

+ Chọn toàn bộ dãy số

+ Đưa tất cả các số được chọn về theo phương đứng hoặc ngang

+ Sau đó mình dùng lisp xuất ra Excel hoặc notepad (Kết quả mình có thế tận dụng làm trên Excel để tính toán, các số khong bị dính vào nhau là được)


  • 0

#4 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 368 Bài viết
Điểm đánh giá: 39 (tàm tạm)

Đã gửi 30 July 2013 - 11:27 AM

Hình như bạn làm không theo quy luật? Bình thường nếu mà cao độ và khoảng cách lẻ nó được xuất từ 1 chương trình ra thì nó sẽ năm ở 2 layer khác nhau ?


  • 0

#5 TaiNguyen79

TaiNguyen79

    biết vẽ ellipse

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

Đã gửi 31 July 2013 - 01:32 PM

- Mình đang phải giải quyết một đống cao độ và khoảng cách lẻ trong CAD, các cao độ và khoảng cách lẻ này của mình cái thì nằm theo phương ngang, cái thì theo phương đứng.
  Trên Forums cũng có nhiều lisp tương tự nhưng không giải quyết được bài toán của mình.
- Mình muốn nhờ các member cadviet.com viết giúp lisp xuất các cao độ và khoảng cách lẻ này sang Notpad hoặc Excel.
 
- Cụ thể, file CAD mình up lên như sau :
+ Hàng bên trên là cao độ, bên dưới là khoảng cách lẻ tương ứng.
+ Hàng cao độ thì text theo phương đứng; Hàng K/c lẻ thì các text có cả theo phương đứng và phương ngang.
 
??? Bây giờ mình muốn có 1 lisp như sau :\
+ Chạy lệnh.
+ Quét chọn hàng cao độ (hoặc khoảng cách lẻ).
+ Lisp sẽ cho ra kết quả là các text trong file Notpad hoặc Excel theo dạng cột, hoặc hàng đều được. Quét chọn nhiều lần thì sẽ được nhiều cột; hàng trong cùng một file.
+ Lisp chạy liên tục cho đến khi nhấn Enter để kết thúc lệnh.
Link file : http://www.cadviet.c...3/103675_vd.dwg

Như vầy đc không ?

(defun c:vantuan18 (/ f fl ss p1 p2) ;chon text theo goc roi ghi ra file
(if (findfile (setq f (getstring "\n<Ten FILE> xuat so lieu , Go <ENTER> neu khong luu : "))) (setq fl (open f "a")) (setq fl (open f "w")))
(while (setq p1 (getpoint "\nChon 2 diem xac dinh hang lay text :"))
(initget 1) (setq p2 (getpoint p1) ss (ssget "F" (list p1 p2) (list (cons 0 "TEXT"))) i 0)
(repeat (sslength ss) (prin1 (read (cdr (assoc 1 (entget (ssname ss i))))) fl) (princ " " fl) (setq i (1+ i)))
(write-line "" fl));while
(if fl (close fl))(princ))


Xuất ra file *.txt (notepad)
Chỉ cần pick 2 điểm là lsp tóm lấy rồi xuất ra.
Nếu tóm không đc thằng nào thì cũng xuống 1 dòng
  • 0

#6 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 01 August 2013 - 11:38 AM

Như vầy đc không ?


(defun c:vantuan18 (/ f fl ss p1 p2) ;chon text theo goc roi ghi ra file
(if (findfile (setq f (getstring "\n<Ten FILE> xuat so lieu , Go <ENTER> neu khong luu : "))) (setq fl (open f "a")) (setq fl (open f "w")))
(while (setq p1 (getpoint "\nChon 2 diem xac dinh hang lay text :"))
(initget 1) (setq p2 (getpoint p1) ss (ssget "F" (list p1 p2) (list (cons 0 "TEXT"))) i 0)
(repeat (sslength ss) (prin1 (read (cdr (assoc 1 (entget (ssname ss i))))) fl) (princ " " fl) (setq i (1+ i)))
(write-line "" fl));while
(if fl (close fl))(princ))


Xuất ra file *.txt (notepad)
Chỉ cần pick 2 điểm là lsp tóm lấy rồi xuất ra.
Nếu tóm không đc thằng nào thì cũng xuống 1 dòng

Mình cũng chưa hiểu về lisp này, đã làm thử rồi nhưng không thấy hiệu quả,không có kết quả

Bạn chọn 2 điểm thì không được rồi, mình muốn quét chọn tất cả đối tượng muốn xuất ra cơ.


  • 0

#7 TaiNguyen79

TaiNguyen79

    biết vẽ ellipse

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

Đã gửi 01 August 2013 - 11:52 AM

Mình cũng chưa hiểu về lisp này, đã làm thử rồi nhưng không thấy hiệu quả,không có kết quả
Bạn chọn 2 điểm thì không được rồi, mình muốn quét chọn tất cả đối tượng muốn xuất ra cơ.

Chọn 2 diểm băng qua hàng text muốn lấy. nếu muốn theo phương trục X hoặc Y thì bật F8. Số liệu xuất ra sẽ sắp xếp theo chiều bạn pick 2 điểm đó.
Muốn chọn tất cả lại càng dễ nhưng khi xuất ra số liệu sẽ không có trật tự gì, thì cũng như một mớ bỏ đi thôi.
Mình đã làm thử trên file của bạn rồi , kết quả như sau :
3.25 2.36 2.33 3.23 2.4 2.44 3.76
8.5 8.5 8.5 8.5 4.98 7.21 4.92 7.88 0.61
Còn đây là lsp mình làm sát theo yc của bạn :

(defun c:vantuan18 (/ ss f fl goc p1 p2 i ) ;chon text theo goc roi ghi ra file
(if (findfile (setq f (getstring "\n<Ten FILE> xuat so lieu , Go <ENTER> neu khong luu : ")))
(setq fl (open f "a")) (setq fl (open f "w")))
(while (setq goc (getangle "\nNhap goc cua text muon chon :"))(setq i 0)
(if (setq ss (ssget (list (cons 0 "TEXT") (cons 50 goc))))
(repeat (sslength ss) (prin1 (read (cdr (assoc 1 (entget (ssname ss i))))) fl) (princ " " fl) (setq i (1+ i)))
(prompt "\nKhong chon dc text nao !"));if
(write-line "" fl));while
(close fl)(princ))


  • 3

#8 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 01 August 2013 - 02:59 PM

Chọn 2 diểm băng qua hàng text muốn lấy. nếu muốn theo phương trục X hoặc Y thì bật F8. Số liệu xuất ra sẽ sắp xếp theo chiều bạn pick 2 điểm đó.
Muốn chọn tất cả lại càng dễ nhưng khi xuất ra số liệu sẽ không có trật tự gì, thì cũng như một mớ bỏ đi thôi.
Mình đã làm thử trên file của bạn rồi , kết quả như sau :
3.25 2.36 2.33 3.23 2.4 2.44 3.76
8.5 8.5 8.5 8.5 4.98 7.21 4.92 7.88 0.61
Còn đây là lsp mình làm sát theo yc của bạn :


(defun c:vantuan18 (/ ss f fl goc p1 p2 i ) ;chon text theo goc roi ghi ra file
(if (findfile (setq f (getstring "\n<Ten FILE> xuat so lieu , Go <ENTER> neu khong luu : ")))
(setq fl (open f "a")) (setq fl (open f "w")))
(while (setq goc (getangle "\nNhap goc cua text muon chon :"))(setq i 0)
(if (setq ss (ssget (list (cons 0 "TEXT") (cons 50 goc))))
(repeat (sslength ss) (prin1 (read (cdr (assoc 1 (entget (ssname ss i))))) fl) (princ " " fl) (setq i (1+ i)))
(prompt "\nKhong chon dc text nao !"));if
(write-line "" fl));while
(close fl)(princ))

Tuyệt vời. đúng theo ý mình rồi. thank you bạn TaiNguyen79


  • 0

#9 Anlee

Anlee

    biết zoom

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

Đã gửi 01 August 2013 - 03:11 PM

Chào bạn!

Minh ko biết gì về lisp nhưng bài toán của bạn có thể giải quyết bằng vba cụ thể:

-file excel mà bạn xuất ra thì cao độ và KCle có cần trên cùng 1 dòng ko hay kcl nằm giữa 2 cao độ

 VD như cao độ ở 1 cột và các hàng la 1,3,5... còn khoảng cách lẻ ở cột kế tiếp và các hàng là 2,4,6...

 

 


  • 0

#10 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 01 August 2013 - 03:49 PM

Chọn 2 diểm băng qua hàng text muốn lấy. nếu muốn theo phương trục X hoặc Y thì bật F8. Số liệu xuất ra sẽ sắp xếp theo chiều bạn pick 2 điểm đó.
Muốn chọn tất cả lại càng dễ nhưng khi xuất ra số liệu sẽ không có trật tự gì, thì cũng như một mớ bỏ đi thôi.
 

Theo bản vẽ thì có 2 hàng text, mỗi hàng có mã dxf 11 như nhau, không cần thiết phải xét góc.

Nếu có thể chọn 1 lần cả 2 hàng rồi xuất ra thì tiện cho người dùng hơn nhiều.

Tôi sửa lisp này dễ dàng nhưng nếu bạn TaiNguyen79 muốn thì tham khảo lisp xuất toạ độ có điều kiện

http://www.cadviet.c...o-co-dieu-kien/

bạn tham khảo cách phân loại và sort các text


  • 0

#11 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 02 August 2013 - 09:33 AM

Chào bạn!

Minh ko biết gì về lisp nhưng bài toán của bạn có thể giải quyết bằng vba cụ thể:

-file excel mà bạn xuất ra thì cao độ và KCle có cần trên cùng 1 dòng ko hay kcl nằm giữa 2 cao độ

 VD như cao độ ở 1 cột và các hàng la 1,3,5... còn khoảng cách lẻ ở cột kế tiếp và các hàng là 2,4,6...

cảm ơn bạn, nhưng cái này không đúng ý của mình, thanks


  • 0

#12 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 06 August 2013 - 01:47 PM

Nhờ các bác chỉnh hộ lisp này : Khi đưa cao độ (CDo) thành layer1, và toàn bộ số lẻ thành Layer2.

+ Chạy lệnh.

+ Quét chọn hàng cao độ (hoặc khoảng cách lẻ).

+ Lisp sẽ cho ra kết quả là các text trong file Excel theo dạng cột .

Cao độ     KC lẻ

text 1                  tex2

 

file kết quả như sau:


  • 0

#13 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 09 August 2013 - 02:09 PM

Nhờ Bác Hà và Bác Bình và các Bác trên diễn đàn giúp đỡ em với.

Trân thành cảm ơn các Bác. 


  • 0

#14 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 15 August 2013 - 01:16 PM

Kính Nhờ Bác Hà và Bác Bình và các Bác trên diễn đàn bớt chút thời gian giúp đỡ em với.

Em cảm ơn các Bác nhiều! 


  • 0

#15 daovanhai_nd

daovanhai_nd

    Chưa sử dụng CAD

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

Đã gửi 09 December 2013 - 11:48 AM

chào bạn vantuan18nd bạn có thể chỉ rõ cách sử dụng 2 lisp trên ko mình k sử dụng đk nó.


  • 0

#16 daovanhai_nd

daovanhai_nd

    Chưa sử dụng CAD

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

Đã gửi 09 December 2013 - 11:52 AM

bạn vantuan18nd bạn có thể chỉ rõ cách sự dụng 2 lệnh ở 2 líp trên ko 


  • 0

#17 natibong

natibong

    Chưa sử dụng CAD

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

Đã gửi 26 September 2015 - 04:04 PM

Em đang muốn lấy khoảng cách lẻ và cao độ tự nhiên phía trái và phải của 1 trắc ngang (theo pline thuộc layer "trac ngang tu nhien") xuất ra tệp .txt. Mong mấy pro giúp em. Yêu cầu của em là:

1. Lấy khoảng và ghi cách lẻ và cao độ  phía bên trái pline(tại các đỉnh có STT màu xanh) theo thứ tự từ phải sang trái vào file .txt (theo định dạng: khoảng cách lẻ 1  --> tab --> cao độ 1 --> enter--->khoang cách lẻ 2 --> tab --> cao độ 2 và theo thứ tự )
2. Lấy khoảng cách lẻ và cao độ  phía bên phải pline(tại các đỉnh có STT màu đỏ) theo thứ tự từ trái sang  phải vào file .txt (theo định dạng: khoảng cách lẻ 1  --> tab --> cao độ 1 --> enter--->khỏang cách lẻ 2 --> tab --> cao độ 2 và theo thứ tự )
3. Xuất các giá trị thành file .txt
4. Cao độ chuẩn lấy từ cao độ của điểm 1 (text ở bên dưới, trong bản vẽ này là 41.25 )
VÍ DỤ ĐỊNH DẠNG FILE TXT:
PHÍA TRÁI:
khoảng cách lẻ từ 1->2  (tab) cao độ điểm 2  (enter)
khoảng cách lẻ từ 2->3  (tab) cao độ điểm 3  (enter)
.....
(hàng trống để phân biệt trái phải)
PHÍA PHẢI:
khoảng cách lẻ từ 1->2  (tab) cao độ điểm 2  (enter)
khoảng cách lẻ từ 2->3  (tab) cao độ điểm 3  (enter)
.....
chi tiết trong bản vẽ đính kèm dưới đây. Cám ơn mọi người nhiều!

http://www.cadviet.c...km8km9sua_2.dwg


  • 0

#18 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 26 September 2015 - 04:21 PM

Bạn thích kiểu trong video nào?
Video 1:

Video 2:

Video 3:

https://www.youtube.com/watch?v=ghRZG_2KT80


  • 1



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







#19 taybacincc

taybacincc

    biết vẽ circle

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

Đã gửi 26 September 2015 - 05:26 PM

Cái nào của Bác Duân cũng bá đạo. Nếu được bác Duân share cho cái nào thì hay cái đó.


  • 0

#20 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 26 September 2015 - 05:47 PM

Cái nào của Bác Duân cũng bá đạo. Nếu được bác Duân share cho cái nào thì hay cái đó.

Mình shared cho mng rồi nhưng ko ai lên tiếng.

http://www.cadviet.c...c-v-tr-c-ngang/


  • 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