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

Chỉnh Sửa Lisp Để Lisp Lấy Thêm Được Giá Trị Chiều Dài Của *line

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

Nhờ các Anh Chị bổ sung thêm câu lệnh vào lisp của A ketxu để lisp này có thể xuất ra giá trị của chiều dài *line nữa ạ!

Cảm ơn tất cả mọi người!

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/55599-yeu-cau-lisp-lay-gia-tri-cua-dimenson-text-va-xuat-ra-file-text/


(defun C:tt(/ lst fn fw i j) ;Doan Van Ha Cadviet.com

(princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")

(setq lst (mapcar 'entget (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION")))))

    	fn (getfiled "Chon file de save" "" "csv" 1)

    	fw (open fn "w") i 0 j 0)

(foreach n lst

(princ

  (cond

   ((wcmatch (cdadr n) "*TEXT")(strcat (acet-dxf 1 n) ";Text" (itoa (setq i (1+ i))) "\n"))  

   ((= (cdadr n) "DIMENSION")(strcat (if (= (acet-dxf 1 n) "")(rtos (acet-dxf 42 n))(acet-dxf 1 n))  ";Dim" (itoa (setq j (1+ j))) "\n"))

  )

   fw

  )

  )

(close fw))



  • Vote giảm 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ủa em đây:

 

(defun C:tt(/ lst fn fw i j d)
 
(princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
 
(setq lst (mapcar 'entget (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION,*LINE")))))
 
     fn (getfiled "Chon file de save" "" "csv" 1)
 
     fw (open fn "w") i 0 j 0 d 0)
 
(foreach n lst
 
(princ
 
  (cond
 
   ((wcmatch (cdadr n) "*TEXT")(strcat (acet-dxf 1 n) ";Text" (itoa (setq i (1+ i))) "\n"))  
 
   ((= (cdadr n) "DIMENSION")(strcat (if (= (acet-dxf 1 n) "")(rtos (acet-dxf 42 n))(acet-dxf 1 n))  ";Dim" (itoa (setq j (1+ j))) "\n"))
   ((wcmatch (cdadr n) "*LINE") (strcat (rtos (vlax-curve-getdistatparam (cdar n) (vlax-curve-getendparam  (cdar n))) ) ";*Line" (itoa (setq d (1+ d))) "\n"))
 
  )
 
   fw
 
  )
 
  )
 
 
(close fw)
    (command "._ai_editcustfile" fn))
  • 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ủa em đây:

(defun C:tt(/ lst fn fw i j d)
 
(princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
 
(setq lst (mapcar 'entget (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION,*LINE")))))
 
     fn (getfiled "Chon file de save" "" "csv" 1)
 
     fw (open fn "w") i 0 j 0 d 0)
 
(foreach n lst
 
(princ
 
  (cond
 
   ((wcmatch (cdadr n) "*TEXT")(strcat (acet-dxf 1 n) ";Text" (itoa (setq i (1+ i))) "\n"))  
 
   ((= (cdadr n) "DIMENSION")(strcat (if (= (acet-dxf 1 n) "")(rtos (acet-dxf 42 n))(acet-dxf 1 n))  ";Dim" (itoa (setq j (1+ j))) "\n"))
   ((wcmatch (cdadr n) "*LINE") (strcat (rtos (vlax-curve-getdistatparam (cdar n) (vlax-curve-getendparam  (cdar n))) ) ";*Line" (itoa (setq d (1+ d))) "\n"))
 
  )
 
   fw
 
  )
 
  )
 
 
(close fw)
    (command "._ai_editcustfile" fn))

Cảm ơn A Tuệ đã phản hồi.

Em vừa kiểm tra nhưng lisp không chạy? Em cũng chưa hiểu tại sao.

Và em hơi tham vọng tí. Em muốn lấy thêm của giá trị của Attribute nữa ạ, Anh xem giùm Em.

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 A Tuệ đã phản hồi.

Em vừa kiểm tra nhưng lisp không chạy? Em cũng chưa hiểu tại sao.

Và em hơi tham vọng tí. Em muốn lấy thêm của giá trị của Attribute nữa ạ, Anh xem giùm Em.

 

Khi chạy thì command báo gì? 

Copy dòng command báo khi chạy Lisp lên đây nhé

ATTribute có nhiều Tagstring trong đó, muốn xuất ATTring nào?

Việc xuất ATT có lẽ ko cần thiết bởi có lệnh ATTout làm việc này rồi

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

Khi chạy thì command báo gì? 

Copy dòng command báo khi chạy Lisp lên đây nhé

ATTribute có nhiều Tagstring trong đó, muốn xuất ATTring nào?

Việc xuất ATT có lẽ ko cần thiết bởi có lệnh ATTout làm việc này rồi

Dòng command báo như sau:

 

Command: AP

APPLOAD tt.lsp successfully loaded.
Command: ; error: syntax error

Khi em bóc thép sàn, thì em cần lấy cả chiều dài (length *line); chiều dài khoảng rải (text dimension).

Còn đường kính và khoảng cách giữa các thanh tùy đơn vị thiết kế mà nằm trong Attribute (value attribute) hoặc bằng text.

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

Dòng command báo như sau:

Khi em bóc thép sàn, thì em cần lấy cả chiều dài (length *line); chiều dài khoảng rải (text dimension).

Còn đường kính và khoảng cách giữa các thanh tùy đơn vị thiết kế mà nằm trong Attribute (value attribute) hoặc bằng text.

 

File mình chạy không có lỗi. Có lẽ down về lỗi gì chăng?

Em down load file này về dùng thử nhé!

http://www.cadviet.com/upfiles/7/4652_tt.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

File mình chạy không có lỗi. Có lẽ down về lỗi gì chăng?

Em down load file này về dùng thử nhé!

http://www.cadviet.com/upfiles/7/4652_tt.lsp

Em rất cảm ơn Anh. Chạy rồi Anh ạ. Nhưng vẫn như nguyện vọng, nếu A có thời gian giúp em lấy thêm giá trị Attribute nữa thì tốt ạ.  :)

 

https://goo.gl/photos/mvqfAVkYGgiBVe6Z6

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

 

 

Nhờ a12k39duchao  sửa giúp lisp này do Tue_VN viết nhưng chắc do bận quá ko thấy trả lời.

Lỗi như sau: chuỗi mới bị mất 1 ký tự cuối. Vd: text "Hung:" sử dụng lisp sẽ thành "Hung"

;;; Mô tả: Lisp dưới dùng để chỉnh định dạng text đã viết về style gốc.

;;;Vd: dùng dùng lisp dưới để đưa text có định dang style X font vtime về font gốc của  style X là vtimeh. Tính năng trên thì ổn rồi

;; free lisp from cadviet.com

;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/19152-sua-dinh-dang-font-trong-mtext/

 

(defun c:ctg(/ doc sset chuoi vitri)

;copyright by Tue_NV

(setq ss (ssget '((0 . "*TEXT"))))

(vl-load-com)

(setq doc (vla-get-activedocument(vlax-get-acad-object)))

(defun pos (sub st / l1 l2 index)

;Thank Mr Hoanh for this function

(setq index 1

l1 (strlen sub)

l2 (strlen st)

)

(while

(and (<= (+ index l1 -1) l2) (/= sub (substr st index l1)))

(setq index (1+ index))

)

(if (= sub (substr st index l1))

index

nil

)

);;;end defun POS

;;;Main function

(vlax-for x (setq sset (vla-get-activeselectionset doc))

(setq chuoi (vla-get-textstring x))

(setq vitri (1+ (pos ";" chuoi)))

(vla-put-textstring x (substr chuoi vitri (- (strlen chuoi) vitri)))

)

(vla-delete sset)

(princ)

)

 

http://www.cadviet.com/upfiles/7/160243_ctg.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

Dear các bác cao thủ giúp e vụ này với ạ.


 


hiện giờ e có file cad cần tính tổng chiều dài đoạn thẳng Mline. Nhưng lisp của bác Hoành chưa


chia ra tính tổng cho từng loại đường kính ống (ống 42,60,90,110) vậy bác có thể nâng cấp lisp cũ lên để chia ra cho e được không ạ.


thank bác trước nhé  :)


 


File đính kèm ạ


 


Lisp cũ ạ


 


http://www.cadviet.com/upfiles/7/17104_daimline_1.lsp


 


bản vẽ cần đo ra kích thước từng đoạn ống ạ


http://www.cadviet.com/upfiles/7/17104_Do_chiEu_dAi_mline_tUng_kIch_thUOc_426090110_1.dwg

  • Vote giảm 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

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

×