Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

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


  • Please log in to reply
4 replies to this topic

#1 buithengan1

buithengan1

    biết vẽ line

  • Members
  • PipPip
  • 26 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 13 July 2017 - 08:15 AM

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)
  )
  )
;;;;;
  

  • 0

#2 Danh Cong

Danh Cong

    biết lệnh measure

  • Moderator
  • PipPipPipPipPipPip
  • 454 Bài viết
Điểm đánh giá: 100 (tàm tạm)

Đã gửi 13 July 2017 - 09:01 AM

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.


  • 1

              *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***


#3 buithengan1

buithengan1

    biết vẽ line

  • Members
  • PipPip
  • 26 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 18 July 2017 - 09:30 AM

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


  • 0

#4 Danh Cong

Danh Cong

    biết lệnh measure

  • Moderator
  • PipPipPipPipPipPip
  • 454 Bài viết
Điểm đánh giá: 100 (tàm tạm)

Đã gửi 18 July 2017 - 09:59 AM

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.c...124641_test.lsp


  • 0

              *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***


#5 buithengan1

buithengan1

    biết vẽ line

  • Members
  • PipPip
  • 26 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 18 July 2017 - 01:57 PM

ok mình chỉnh dc rồi. cảm ơn bạn nhiều nha


  • 0