Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
thienxd

Nhờ sửa lisp tính chiều cài cad đời cao

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

Mình có lisp tính chiều dài cad đời cao nhưng nó chỉ hiện chiều dài, bác nào sửa giúp mình thành thay số vào text, hoặc tốt nhất là nó cho coppy chiều dài đó ra để paste vào chỗ khác luôn. 

cảm ơn các bác

TG-cad 2018.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
11 phút trước, thienxd đã nói:

Mình có lisp tính chiều dài cad đời cao nhưng nó chỉ hiện chiều dài, bác nào sửa giúp mình thành thay số vào text, hoặc tốt nhất là nó cho coppy chiều dài đó ra để paste vào chỗ khác luôn. 

cảm ơn các bác

TG-cad 2018.lsp

Thử cái này:

(defun C:tgg (/ tot_len ss e_name e_record e_type ptext)
  (setq tot_len 0.0)
  (setq ss (ssget))
  (if (null ss)
    (exit)
  )
  (while (> (sslength ss) 0)
    (setq e_name (ssname ss 0))
    (setq e_record (entget e_name))
    (setq e_type (cdr (assoc '0 e_record)))
    (cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
       (command "lengthen" e_name "")
       (setq tot_len (+ tot_len (getvar "PERIMETER")))
       ;(setq tot_len (+ tot_len (vla-get-Length (vlax-ename->vla-object e_name))))
       (ssdel e_name ss)
      )
      ((wcmatch e_type "MLINE") (add_mline))
      (e_type (ssdel e_name ss))
    )
  )
  (prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))
  (setq ptext (getpoint "\nPick diem chen Text ^^ \n"))
  (command "-text" ptext "" "" (rtos tot_len 2 0))
(princ)
)

  • Like 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 nhé. Cái của bạn tớ thứ thì nó chỉ tính được 1 đoạn pline còn các đoạn rời nhau nó ko tính được. tớ đang cần cái lisp tính được  nhiều đoạn rời nhau và ghi ra text bạn ah.

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
29 phút trước, thienxd đã nói:

Cảm ơn bạn nhé. Cái của bạn tớ thứ thì nó chỉ tính được 1 đoạn pline còn các đoạn rời nhau nó ko tính được. tớ đang cần cái lisp tính được  nhiều đoạn rời nhau và ghi ra text bạn ah.

Tôi dùng không thấy vấn đề: Vậy hãy sử dụng lisp cũ của bạn, xem có ra đúng chiều dài đó không?

Nếu không, hãy đưa bản vẽ lên để tôi kiểm tra.

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
41 phút trước, Danh Cong đã nói:

Thử cái này:

(defun C:tgg (/ tot_len ss e_name e_record e_type ptext)
  (setq tot_len 0.0)
  (setq ss (ssget))
  (if (null ss)
    (exit)
  )
  (while (> (sslength ss) 0)
    (setq e_name (ssname ss 0))
    (setq e_record (entget e_name))
    (setq e_type (cdr (assoc '0 e_record)))
    (cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
       (command "lengthen" e_name "")
       (setq tot_len (+ tot_len (getvar "PERIMETER")))
       ;(setq tot_len (+ tot_len (vla-get-Length (vlax-ename->vla-object e_name))))
       (ssdel e_name ss)
      )
      ((wcmatch e_type "MLINE") (add_mline))
      (e_type (ssdel e_name ss))
    )
  )
  (prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))
  (setq ptext (getpoint "\nPick diem chen Text ^^ \n"))
  (command "-text" ptext "" "" (rtos tot_len 2 0))
(princ)
)

bạn cứ vẽ 2 đoạn pline khác nhau ko nối nhau là lisp nó báo lỗi rồi. hay tại mình dùng cad 2019 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

đúng là cad đời cao nó lỗi rồi bạn ah. thử lisp của bạn vs cad 2007 thì được. nhưng nó làm tròn số?  có cách nào để nó làm tròn sau dấu phẩy 2 chữ số ko 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
21 phút trước, thienxd đã nói:

đúng là cad đời cao nó lỗi rồi bạn ah. thử lisp của bạn vs cad 2007 thì được. nhưng nó làm tròn số?  có cách nào để nó làm tròn sau dấu phẩy 2 chữ số ko bạn?

Dùng thử cái này:  Tác giả : QuocManh04tt

https://www.cadviet.com/forum/topic/172818-sửa-lisp-tính-tổng-chiều-dài-các-linearccirclepolylinelwpolylineellipsespline/

 

(defun c:TT ( / PTEXT SS TOT)
  ;https://www.cadviet.com/forum/topic/172818-s%E1%BB%ADa-lisp-t%C3%ADnh-t%E1%BB%95ng-chi%E1%BB%81u-d%C3%A0i-c%C3%A1c-linearccirclepolylinelwpolylineellipsespline/
 (vl-load-com)
 (if (setq ss (ssget '((0 . "ARC,CIRCLE,ELLIPSE,LINE,POLYLINE,LWPOLYLINE,SPLINE"))))
  ((lambda (tot / ent)
    (while (setq ent (ssname ss 0))
     (setq tot (+ tot (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))))
     (setq ent (ssdel ent ss)))
     (prompt (strcat "\nTotal length is: " (rtos tot 2 2)))
  (setq ptext (getpoint "\nPick diem chen Text ^^ \n"))
  (command "-text" ptext "" "" (rtos tot 2 2))
    )
   0))
 (princ))

  • Like 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
Đăng nhập để thực hiện theo  

×