Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đă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ị

buithengan1    1

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
Danh Cong    114

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
buithengan1    1

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
Danh Cong    114

Bạn chụp cái ảnh màn hình. Khi thử với lisp thay thế câu lệnh vừa rồi, xem máy báo lỗi gì.

Không thì lấy bản lệnh sửa này coi sao: 

Test

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

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  

×