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

[Nhờ chỉnh sửa] Lisp tính tổng pline ed vào đuôi text

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

Mình có text ở dạng này: D400,L100 và 1 lisp tính tổng chiều dài các đoạn thẳng.
Nhờ các bạn chỉnh sửa sao cho kết quả sau khi dùng lisp được gắn vào định dạng text như trên, ngay sau chữ L

Ví dụ: Tổng chiều dài các đoạn tính ra được 107, thì kết quả sẽ là: D400,L107

File cad để check: http://www.cadviet.com/upfiles/3/40304_bd_tnm.rar

Lisp tính tổng pline đã có sẵn: http://www.cadviet.com/upfiles/3/40304_tgll.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

Là "tân binh" nên tạm sửa cho bạn thế này :D :D :D

Có gì thì từ từ sửa tiếp

p/s: Chữ "L" trong text của bạn phải luôn là chữ in hoa đó, tạm thế đã

;; free lisp from cadviet.com
;;;--------------------------------------------------------------------
(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
;;;--------------------------------------------------------------------
(defun C:TGLL( / ss L e)
(setq
ss (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
L 0.0
)
(vl-load-com)
(while (setq e (ssname ss 0))
(setq L (+ L (length1 e)))
(ssdel e ss)
)


(setq te (entget(car(entsel"\n Chon Text de gan ket qua :")))
te (subst (cons 1 (strcat (CAT (cdr (assoc 1 te)) "L") (rtos L 2 0))) (assoc 1 te) te))
(entmod te)
)
;;;--------------------------------------------------------------------
;Ham lay ki tu thu n cua chuoi:
(defun TIM(str n)
(substr str n 1)
)
;-------------------
;Ham cat chuoi co 1 ky tu "x" tu dau den ky tu "x"
(defun CAT(str x / i)
(setq i 0)
(while (/= (TIM str (setq i (1+ i))) x)
(substr str 1 (1+ 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

Sửa lại tí để khỏi phân vân chữ HOA hay chữ thường & có cảnh báo khi text chọn không hợp lệ !

;; free lisp from cadviet.com
;;;--------------------------------------------------------------------
(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
;;;--------------------------------------------------------------------
(defun C:TGLL( / ss L e str)
(setq
ss (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
L 0.0
)
(vl-load-com)
(while (setq e (ssname ss 0))
(setq L (+ L (length1 e)))
(ssdel e ss)
)


(setq te (entget(car(entsel"\n Chon Text de gan ket qua :"))))
(cond ((or (vl-string-search "l" (setq str (cdr (assoc 1 te)))) (vl-string-search "L" str))
	(setq te (subst (cons 1 (strcat (CAT str "L") (rtos L 2 0))) (assoc 1 te) te))
	(entmod te))
	(t (alert "Text ban chon khong co chu L !"))
)
)
;;;--------------------------------------------------------------------
;Ham lay ki tu thu n cua chuoi:
(defun TIM(str n)
(substr str n 1)
)
;-------------------
;Ham cat chuoi co ky tu "x" tu dau den ky tu "x" sau cung (khong phan biet CHU HOA chu thuong):
(defun CAT(str x / i)
(cond
    ((= (xstrcase (substr str (strlen str))) (xstrcase x))
        str)
    (t
        (setq i (1+ (strlen str)))
        (while (/= (xstrcase (TIM str (setq i (1- i)))) (xstrcase x))
            (substr str 1 (1- i))
        )
    )
)
)
  • 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

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  

×