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

Lisp Đo Chiều Dài Đoạn Thẳng Ghi Lên Text Chọn

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

Mình có lisp này nhưng ko biết vì sao sử dụng trên cad 2018 bị lỗi. ai biết sửa lỗi giúp mình với cảm ơn nhiều

cad nó báo lỗi này

 

 52064_12312.jpg

(defun C:tg (/ tot_len ss e_name e_record e_type Tkq obn obd)
(while
  (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")))

	   (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 en (car (entsel "Thay cho so : ")))
(while (= en nil)
(setq en (car (entsel "Thay cho so : ")))
)
(setq elst (entget en))
(setq elstold (assoc 1 elst)) 
(setq elstnew (cons 1 (rtos tot_len 2 2)))
(setq elst (subst elstnew elstold elst))
(entmod elst)
(setq elst nil)
(setq dtl nil)
(command "_change" en "" "p" "c" "1" "")
;(START_PG)
	;(setq obd (vlax-ename->vla-object (car (nentsel "\nChon text ghi chieu dai"))))
	;(vla-put-textstring obd (rtos tot_len 2 2))
;(END_PG)
  ;(princ)
  )
  )
;;;;;
  

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

Bạn tìm trong lisp, thay thế đoạn mã Lisp:

                (command "lengthen" e_name "")

                (setq tot_len (+ tot_len (getvar "PERIMETER")))

Bằng: 

               ;(command "lengthen" e_name "")

               ; (setq tot_len (+ tot_len (getvar "PERIMETER")))

                (vl-load-com)

               (setq tot_len (+ tot_len (vla-get-Length (vlax-ename->vla-object e_name))))

Rồi thử lại xem thế nào.

  • 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

Bạn tìm trong lisp, thay thế đoạn mã Lisp:

                (command "lengthen" e_name "")

                (setq tot_len (+ tot_len (getvar "PERIMETER")))

Bằng: 

               ;(command "lengthen" e_name "")

               ; (setq tot_len (+ tot_len (getvar "PERIMETER")))

                (vl-load-com)

               (setq tot_len (+ tot_len (vla-get-Length (vlax-ename->vla-object e_name))))

Rồi thử lại xem thế nào.

Mình thử rồi mà vẫn ko dc bạn ơ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

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  

×