Đến nội dung


Hình ảnh
- - - - -

muốn xuất các mtext trong các ô hình tròn và hình elip sang excel


  • Please log in to reply
8 replies to this topic

#1 BTH8320

BTH8320

    biết pan

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

Đã gửi 16 August 2014 - 01:53 PM

Chào cả nhà,

 

MÌnh có một vấn đề xin cả nhà giúp cho,

Mình muốn xuất các mtext trong các ô hình tròn và hình elip sang excel.

Trong đó, line1 sẽ xuất thành một cột, line2 sẽ xuất thành một cột. tương tự sẽ là linẻ, line4,....

Khi xuất ra, các giá trị trong hình tròn sẽ được thêm ký tự C, elip sẽ thêm ký tự E, hình bình hành sẽ thêm ký tự H.

Và kết quả khi sẽ cho ra thông tin như bảng excel đính kèm.http://www.cadviet.c...666_desktop.rar

 

Xin cả nhà giúp mình với.

 

Trân trọng


  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 16 August 2014 - 03:32 PM

Chào cả nhà,

 

MÌnh có một vấn đề xin cả nhà giúp cho,

Mình muốn xuất các mtext trong các ô hình tròn và hình elip sang excel.

Trong đó, line1 sẽ xuất thành một cột, line2 sẽ xuất thành một cột. tương tự sẽ là linẻ, line4,....

Khi xuất ra, các giá trị trong hình tròn sẽ được thêm ký tự C, elip sẽ thêm ký tự E, hình bình hành sẽ thêm ký tự H.

Và kết quả khi sẽ cho ra thông tin như bảng excel đính kèm.http://www.cadviet.c...666_desktop.rar

 

Xin cả nhà giúp mình với.

 

Trân trọng

Hề hề hề,

Cái bạn yêu cầu hoàn toàn không dễ làm, trong khi bạn lại trình bày vấn đề quá sơ sài và không khớp với cái bản vẽ và cái bảng excel bạn đưa lên.

1/- Trên bản vẽ bạn có khá nhiều các vòng tròn với các màu sắc khác nhau, vậy bạn muốn thống kê các vòng tròn màu gì???

2/- Không thấy có hình bình hành mà chỉ thấy có lục giác chứa tẽxt.

3/- Bằng cách nào để bạn phân biệt các vòng tròn, elip hay lục giác là thuộcline1 hay line2??? Nhòm bằng mắt à??? Nên nhớ lisp không có mắt để nhòm.

4/- Tương tự, bằng cách nào nhận biết các line là của cùng một đường ống cần thống kê ???

..................................

Vì vậy có nhẽ bạn cần cải tạo cái bản vẽ này cho nó có tổ chức hơn trước khi muốn dùng lisp để xử lý nó.

Tỷ dụ tất cả các line thuộc về một đường ống nên nằm trên một layer riêng biệt hay có màu sắc riêng biệt .......

 

Trong trận.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 BTH8320

BTH8320

    biết pan

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

Đã gửi 16 August 2014 - 03:58 PM

Xin chào cả nhà,

Mình xin bổ sung như sau:

- Mình muốn xuất các số trong các hình màu đỏ: Đường tròn, elip, lục giác.

- Mình sẽ click lần lượt các biểu tượng trên line1, bao gồm cả text: line1. Cụ thể thứ tự click sẽ là : "line1", 50, 30, 150, 530.

- Sau đó đến line2,........

- line3,...

 

- Mình cũng đã tham khảo lisp xtxt của mod phamthanhbinh. Cách thức hoàn toàn tương tự như lisp. Nhưng lisp này không xử lý triệt để vấn đề của mình vì khi xuất ra thì chỉ có giá trị: line1, 50, 30, 150, 530.

- Mình muốn khi xuất ra, các giá trị trong hình tròn sẽ được thêm ký tự C, elip sẽ thêm ký tự E, hình lục giác sẽ thêm ký tự H.

 

Mong nhận được sự giúp đỡ 

 

P/s: Xin được phép up lại lisp của mod phamthanhbinh để mọi người có cơ sở giúp mình.

http://www.cadviet.c...3/5666_xtxt.lsp

 

Trân trọng.


  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 17 August 2014 - 10:11 AM

Xin chào cả nhà,

Mình xin bổ sung như sau:

- Mình muốn xuất các số trong các hình màu đỏ: Đường tròn, elip, lục giác.

- Mình sẽ click lần lượt các biểu tượng trên line1, bao gồm cả text: line1. Cụ thể thứ tự click sẽ là : "line1", 50, 30, 150, 530.

- Sau đó đến line2,........

- line3,...

 

- Mình cũng đã tham khảo lisp xtxt của mod phamthanhbinh. Cách thức hoàn toàn tương tự như lisp. Nhưng lisp này không xử lý triệt để vấn đề của mình vì khi xuất ra thì chỉ có giá trị: line1, 50, 30, 150, 530.

- Mình muốn khi xuất ra, các giá trị trong hình tròn sẽ được thêm ký tự C, elip sẽ thêm ký tự E, hình lục giác sẽ thêm ký tự H.

 

Mong nhận được sự giúp đỡ 

 

P/s: Xin được phép up lại lisp của mod phamthanhbinh để mọi người có cơ sở giúp mình.

http://www.cadviet.c...3/5666_xtxt.lsp

 

Trân trọng.

Hề hề hề,

Bạn hãy dùng thử lisp sau đây và cho ý kiến để mình hoàn thiện nó nhé.

Đây là bản mình viết nháp xem đã đúng ý bạn chưa nên mình chưa khử biến và cũng chưa test kỹ cho các trường hợp khác nhau.

Nếu bạn thấy phù hợp với ý định của bạn mình sẽ hoàn thiện sau nhé.

(defun c:xtxt1 ()
(setq dlst (list)
          tlst (list)
          ans "Y" )
(alert "Ban hay chon lan luot cac text can xuat cua tung line")
(while (= (strcase ans) "Y")
      (while (setq e (car (entsel)))
            (setq elst (entget e)
                      la (cdr (assoc 8 elst))
                      txt (cdr (assoc 1 elst)) )
            (cond 
                ((= la "PRT Points Red") (setq txt (strcat txt "- H")))
                ((= la "UTG Points Red") (setq txt (strcat txt "-C")))
                ((= la "UTS Points Red") (setq txt (strcat txt "-E")))
                (T nil)
            )
            (setq tlst (append tlst (list txt)))
       )
       (setq dlst (append dlst (list tlst)))
       (setq tlst (list))
       (setq ans (getstring "/n Ban muon tiep tuc chon line khac <Y or N>: "))
)
(setq ilst (list))
(foreach lst dlst
    (setq ilst (append ilst (list (length lst))))
)
(setq i (car (vl-sort ilst '(lambda (x y) (> x y)))))
(setq n 0)
(setq prlst (list))
(while (< n i)
     (setq dalst (mapcar '(lambda (x) (strcat (if (nth n x) (nth n x) " ") (chr 44))) dlst))
     (setq prlst (append prlst (list dalst)))
     (setq n (1+ n))
)
(setq  fn (getfiled "Select Data File" "" "csv" 1)
          f (open fn "w") )  
(foreach dat prlst  
     (setq tpr "")
     (foreach tp dat
          (setq tpr (strcat tpr tp))
     )
     (write-line tpr f)
)
(close f)
(princ)
)

 

Chúc bạn vui.


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 BTH8320

BTH8320

    biết pan

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

Đã gửi 17 August 2014 - 11:27 AM

Hề hề hề,

Bạn hãy dùng thử lisp sau đây và cho ý kiến để mình hoàn thiện nó nhé.

Đây là bản mình viết nháp xem đã đúng ý bạn chưa nên mình chưa khử biến và cũng chưa test kỹ cho các trường hợp khác nhau.

Nếu bạn thấy phù hợp với ý định của bạn mình sẽ hoàn thiện sau nhé.

 

(defun c:xtxt1 ()
(setq dlst (list)
          tlst (list)
          ans "Y" )
(alert "Ban hay chon lan luot cac text can xuat cua tung line")
(while (= (strcase ans) "Y")
      (while (setq e (car (entsel)))
            (setq elst (entget e)
                      la (cdr (assoc 8 elst))
                      txt (cdr (assoc 1 elst)) )
            (cond 
                ((= la "PRT Points Red") (setq txt (strcat txt "- H")))
                ((= la "UTG Points Red") (setq txt (strcat txt "-C")))
                ((= la "UTS Points Red") (setq txt (strcat txt "-E")))
                (T nil)
            )
            (setq tlst (append tlst (list txt)))
       )
       (setq dlst (append dlst (list tlst)))
       (setq tlst (list))
       (setq ans (getstring "/n Ban muon tiep tuc chon line khac <Y or N>: "))
)
(setq ilst (list))
(foreach lst dlst
    (setq ilst (append ilst (list (length lst))))
)
(setq i (car (vl-sort ilst '(lambda (x y) (> x y)))))
(setq n 0)
(setq prlst (list))
(while (< n i)
     (setq dalst (mapcar '(lambda (x) (strcat (if (nth n x) (nth n x) " ") (chr 44))) dlst))
     (setq prlst (append prlst (list dalst)))
     (setq n (1+ n))
)
(setq  fn (getfiled "Select Data File" "" "csv" 1)
          f (open fn "w") )  
(foreach dat prlst  
     (setq tpr "")
     (foreach tp dat
          (setq tpr (strcat tpr tp))
     )
     (write-line tpr f)
)
(close f)
(princ)
)

 

Chúc bạn vui.

 

Như thế này là rất tuyệt rồi mod ạ.

Xin nhờ mod thêm giúp mình một cái nữa là khi hoàn tất lệnh, ta tiếp tục lệnh thì file csv xuất ra sẽ chèn thêm dữ liệu vào file cũ nếu ta chép đè.

Giống như lisp xtxt mà ta thay  dòng lệnh (setq fw (open tmp "w")) bằng (setq fw (open tmp "a")) ấy mod ạ

Ở lisp xtxt1 mình không thấy dòng đó nên không biết làm thế nào.

Nhờ mod hoàn thiện giúp mình với.

 

Xin cảm ơn các mod đã nhiệt tình giúp đỡ


  • 0

#6 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 17 August 2014 - 09:31 PM

Như thế này là rất tuyệt rồi mod ạ.

Xin nhờ mod thêm giúp mình một cái nữa là khi hoàn tất lệnh, ta tiếp tục lệnh thì file csv xuất ra sẽ chèn thêm dữ liệu vào file cũ nếu ta chép đè.

Giống như lisp xtxt mà ta thay  dòng lệnh (setq fw (open tmp "w")) bằng (setq fw (open tmp "a")) ấy mod ạ

Ở lisp xtxt1 mình không thấy dòng đó nên không biết làm thế nào.

Nhờ mod hoàn thiện giúp mình với.

 

Xin cảm ơn các mod đã nhiệt tình giúp đỡ

Hề hề hề.

Tương tự vậy, bạn thay dòng code

f (open fn "w") )

Thành dòng code

f (open fn "a") )

 

Bạn hãy bổ sung thêm việc khử biến sau khi chạy lisp như sau:

Copy dòng sau:

/ dlst tlst ans e elst la txt ilst i n prlst dalst fn f tpr tp 

và nhét vào giữa cặp ngoặc () phía sau của dòng code (defun c:xtxt1 ()

để thành  (defun c:xtxt1 (/ dlst tlst ans e elst la txt ilst i n prlst dalst fn f tpr tp )

 

Chúc thành công.


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 BTH8320

BTH8320

    biết pan

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

Đã gửi 18 August 2014 - 09:47 AM

Xin cảm ơn cad mod đã giúp đỡ.

Còn một việc nhỏ nữa nhờ mod giúp mình với  :)

Mod giúp mình làm thế nào khi chọn text thì nó bị mờ đi như khi chọn text bình thường trong cad với. Vì như cách chọn đối tượng hiện tại trong đoạn lisp xtxt1 thì text không bị mờ đi nên không biết được text đã chọn hay chưa mod ạ.

 

Mình cũng xin lỗi vì làm phiền các mod hơi nhiều  :D

 

Trân trọng.


  • 0

#8 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 18 August 2014 - 12:16 PM

Xin cảm ơn cad mod đã giúp đỡ.

Còn một việc nhỏ nữa nhờ mod giúp mình với  :)

Mod giúp mình làm thế nào khi chọn text thì nó bị mờ đi như khi chọn text bình thường trong cad với. Vì như cách chọn đối tượng hiện tại trong đoạn lisp xtxt1 thì text không bị mờ đi nên không biết được text đã chọn hay chưa mod ạ.

 

Mình cũng xin lỗi vì làm phiền các mod hơi nhiều  :D

 

Trân trọng.

Hề hề hề,

Việc làm mờ các đối tượng khi được chọn bằng lisp như trong Cad mình chưa rành rẽ lắm. Hình như nó có liên quan tới việc đặt biến hệ thống highlight như thế nào đó mà có lần mình thấy bác DoanVanHa đã sử dụng. Tuy nhiên mình chưa hiểu hết về nó nên chưa ứng dụng được.

Có một cách sử dụng gripset mà bác TueNV hướng dẫn mình thấy nếu chỉ để nhận biết theo yêu cầu của bạn thì có thể dùng được.

Bạn có thể tự làm như sau:

1/- Thêm một dòng code để tạo bộ chọn pickset rỗng vào trước dòng thông báo yêu cầu bạn hãy chọn lần lượt các tẽxt cần thống kê của từng line:

(setq pickset (ssadd))

2/- Trong vòng lặp (while (setq e (car (entsel)))

bạn bổ sung dòng code : (setq pickset (ssadd e pickset)) để gán các đối tựng được chọn vào bộ chọn pickset. Dòng code này thêm vào ngay sau dòng code kết thúc lệnh đặt các biến (setq .....) để bắt đầu còng lặp và trước đoạn code của hàm điều kiện (cond ......)

3/- Thêm dòng code để hiển thị bộ chọn pickset sau mỗi lần chọn thêm đối tượng:  (sssetfirst nil pickset) vào ngay trước khi kết thúc vòng lặp while này

4/- Thêm dòng code để tắt việc hiển thị  bộ chọn pickset này sau khi đã chọn hết các đối tượng cần thống kê : (sssetfirst nil) vào ngay phía dưới dòng code kết thúc vòng lặp (while (= (strcase ans) "Y") ....

5/- Lưu lại file lisp và load nó lên chạy thử lại.

 

Hy võng bạn sẽ làm thành công. Trong trường hợp thất bại thì hãy bình tĩnh đọc lại kỹ hướng dẫn trên đây để làm lại. Nếu vẫn không được thì hãy gửi cái bạn làm lên, mình sẽ hướng dẫn tiếp.

 

Chúc thành công.


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#9 BTH8320

BTH8320

    biết pan

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

Đã gửi 18 August 2014 - 05:54 PM

Xin cảm ơn Mod đã hướng dẫn cụ thể.

Mình đã làm theo các bước mà mod đã chỉ và kết quả là đạt yêu cầu.

 

Chân thành cảm ơn mod.


  • 0