Đến nội dung


Hình ảnh
- - - - -

[Nhờ sửa lisp] Đo tổng chiều dài đối tượng trên Autocad 2015


  • Please log in to reply
30 replies to this topic

#21 lamngoctien0810

lamngoctien0810

    biết vẽ line

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

Đã gửi 26 March 2015 - 03:05 PM

Cảm ơn bác nhiều nó chạy ngon trên cad 2016. Bác cho em hỏi 2 cái đó sửa thằng file nào, đoạn code nào để chạy được trên cad mới vậy ak


  • 0

#22 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 26 March 2015 - 03:49 PM

File lsp bạn sửa như vậy là đúng rồi, nhưng lỗi là do nó không tìm thấy file calline.dcl (mặc dù có thể bạn để file này ngay bên cạnh). Nếu bạn muốn dùng file lsp chứ ko dùng vlx thì bạn nên bỏ file calline.dcl vào trong support của cad 2015 / 2016. Khi đó chỉ cần AP file lsp là chạy tốt.


  • 1

#23 lamngoctien0810

lamngoctien0810

    biết vẽ line

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

Đã gửi 26 March 2015 - 04:52 PM

Thank bác. giờ em mới hiểu.

thôi để đỡ loàng ngoàng thì ghép 2 thằng dlc và lsp thành vlx cho nó gọn vậy.


  • 0

#24 hung.huynh

hung.huynh

    Chưa sử dụng CAD

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

Đã gửi 10 May 2015 - 12:37 PM

Cảm ơn bác rất nhiều, lips chạy ngon trên cad 2015 và 2016.

bạn chi minh với

minh cung lam nhu huong dan van khong được

mình cũng download file ở dưới về cung van không được

chỉ đo được 1 thằng thôi con cách nào khác không các bác


  • 0

#25 enix

enix

    biết vẽ ellipse

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

Đã gửi 31 October 2015 - 10:51 AM

Dạ đây em gửi bác

http://www.cadviet.c...413_calline.rar

 

 

 

Lisp này xài tốt nè, hoặc là xài file .vlx hoặc là add folder chứa .lsp .dcl vào support path.

Nhưng mình vẫn thích lisp TDL trong bộ ACV hơn, chỉ đơn giản là gõ lệnh TDL rồi quét line nó popup ra kết quả theo m luôn.

Còn lisp CL này xài mệt hơn nhiều, gõ lệnh CL rồi phải click vô Chọn đối tượng rồi quét line mới hiện kết quả, mà kết quả vẫn còn là mm.


  • 0

#26 nguyentieu

nguyentieu

    biết vẽ circle

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

Đã gửi 02 December 2015 - 11:09 PM

Chào cả nhà,

 

Hôm nay search topic này đúng ngay chỗ bữa giờ e lăn tăn. Chẳng là e đang dùng cái lisp TDT TCD, hjx, kể từ khi xài qua thằng Cad 16 thì TDT vẫn ok, trong khi thằng TCD lại "đơ". Bác nào fix giúp em lỗi này với nhé, thanks  :)

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/59317-nho-chi-nh-su-a-lisp-ti-nh-to-ng-die-n-ti-ch-va-chu-vi-ca-c-hi-nh/
(defun c:tdt(/ dt sdt gt tgt id pt1)
  (setq dt (ssget
  	'((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
     	))
 )
  (setq
 sdt (sslength dt)
 id 0
 tgt 0)
(testcaochu)
  (repeat sdt
	(setq ent (ssname dt id)
   id (1+ id)
   )
	(command "area" "o" ent "")
	(setq gt (getvar "area"))
	(setq tgt (+ tgt gt))
	(princ)
	)
(setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tgt 1000000) 2 1) "m2"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tcd(/ DT SDT TCD PT1)
  (setq dt (ssget '((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "ELLIPSE")
   (0 . "SPLINE")
   (0 . "ARC")
   (0 . "LINE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
		))
)
(testcaochu)
  (setq sdt (sslength dt))
  (setq
  	index 0
  	tcd 0
  	)
  (repeat sdt
	(setq
  	ent (ssname dt index)
  	index (1+ index)    
  	)    
	(command "lengthen" ent "")
	(setq cd (getvar "perimeter"))
	(setq tcd (+ tcd cd))
	)
  (setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tcd 1000) 2 1) "m"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;
(defun testcaochu()
  (if (not caochu1)
	(setq caochu (getdist "\nchieu cao chu? :"))
	(setq caochu (getdist (strcat "chieu cao chu <" (rtos caochu1) ">:")))
	)
  (if (= caochu nil) (setq caochu caochu1))
  (setq caochu1 caochu)
  )
  


  • 0

#27 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 03 December 2015 - 11:23 AM

 

Chào cả nhà,

 

Hôm nay search topic này đúng ngay chỗ bữa giờ e lăn tăn. Chẳng là e đang dùng cái lisp TDT TCD, hjx, kể từ khi xài qua thằng Cad 16 thì TDT vẫn ok, trong khi thằng TCD lại "đơ". Bác nào fix giúp em lỗi này với nhé, thanks  :)

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/59317-nho-chi-nh-su-a-lisp-ti-nh-to-ng-die-n-ti-ch-va-chu-vi-ca-c-hi-nh/
(defun c:tdt(/ dt sdt gt tgt id pt1)
  (setq dt (ssget
  	'((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
     	))
 )
  (setq
 sdt (sslength dt)
 id 0
 tgt 0)
(testcaochu)
  (repeat sdt
	(setq ent (ssname dt id)
   id (1+ id)
   )
	(command "area" "o" ent "")
	(setq gt (getvar "area"))
	(setq tgt (+ tgt gt))
	(princ)
	)
(setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tgt 1000000) 2 1) "m2"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tcd(/ DT SDT TCD PT1)
  (setq dt (ssget '((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "ELLIPSE")
   (0 . "SPLINE")
   (0 . "ARC")
   (0 . "LINE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
		))
)
(testcaochu)
  (setq sdt (sslength dt))
  (setq
  	index 0
  	tcd 0
  	)
  (repeat sdt
	(setq
  	ent (ssname dt index)
  	index (1+ index)    
  	)    
	(command "lengthen" ent "")
	(setq cd (getvar "perimeter"))
	(setq tcd (+ tcd cd))
	)
  (setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tcd 1000) 2 1) "m"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;
(defun testcaochu()
  (if (not caochu1)
	(setq caochu (getdist "\nchieu cao chu? :"))
	(setq caochu (getdist (strcat "chieu cao chu <" (rtos caochu1) ">:")))
	)
  (if (= caochu nil) (setq caochu caochu1))
  (setq caochu1 caochu)
  )
  

Xem qua code TDT và TCD là giống nhau nhưng ở Cad2015 thì TCD bị đơ cũng lạ nhỉ? :wub:

Bạn thử thay (command "lengthen" ent "") bằng (command "area" "o" ent) xem sao :)


  • 0

#28 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 03 December 2015 - 12:31 PM

Nếu đúng thế là do (command "lengthen" ...) cad 2016 thay đổi và bạn phải xem lại  cấu trúc của nó để chạy đúng lisp TCD. Nếu vẫn để

(command "area" "o" ent)  thì phải xét thêm trường hợp của Line vì Line không có diện tích nên (command "area" "o" ent) trả về Nil và khi đó kết quả sẽ sai :)


  • 0

#29 nguyentieu

nguyentieu

    biết vẽ circle

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

Đã gửi 03 December 2015 - 01:51 PM

Nếu đúng thế là do (command "lengthen" ...) cad 2016 thay đổi và bạn phải xem lại  cấu trúc của nó để chạy đúng lisp TCD. Nếu vẫn để

(command "area" "o" ent)  thì phải xét thêm trường hợp của Line vì Line không có diện tích nên (command "area" "o" ent) trả về Nil và khi đó kết quả sẽ sai :)

Thanks bác pphung183, để e test lại rồi báo bác. 

Sorry e hơi spam tí nhé


  • 0

#30 nguyentieu

nguyentieu

    biết vẽ circle

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

Đã gửi 05 December 2015 - 10:05 AM

Xem qua code TDT và TCD là giống nhau nhưng ở Cad2015 thì TCD bị đơ cũng lạ nhỉ? :wub:

Bạn thử thay (command "lengthen" ent "") bằng (command "area" "o" ent) xem sao :)

 

Tình hình là sau khi thay dòng lệnh như bác pphung183 thì ok rồi. Em cảm ơn bác nhiều nhé.

Em up lại để mọi người dùng

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/120974-nho-sua-lisp-do-tong-chieu-da-i-doi-tuong-tra-n-autocad-2015/page-2
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/59317-nho-chi-nh-su-a-lisp-ti-nh-to-ng-die-n-ti-ch-va-chu-vi-ca-c-hi-nh/
(defun c:tdt(/ dt sdt gt tgt id pt1)
  (setq dt (ssget
  	'((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
     	))
 )
  (setq
 sdt (sslength dt)
 id 0
 tgt 0)
(testcaochu)
  (repeat sdt
	(setq ent (ssname dt id)
   id (1+ id)
   )
	(command "area" "o" ent "")
	(setq gt (getvar "area"))
	(setq tgt (+ tgt gt))
	(princ)
	)
(setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tgt 1000000) 2 1) "m2"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tcd(/ DT SDT TCD PT1)
  (setq dt (ssget '((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "ELLIPSE")
   (0 . "SPLINE")
   (0 . "ARC")
   (0 . "LINE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
		))
)
(testcaochu)
  (setq sdt (sslength dt))
  (setq
  	index 0
  	tcd 0
  	)
  (repeat sdt
	(setq
  	ent (ssname dt index)
  	index (1+ index)    
  	)    
	(command "area" "o" ent)
	(setq cd (getvar "perimeter"))
	(setq tcd (+ tcd cd))
	)
  (setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tcd 1000) 2 1) "m"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;
(defun testcaochu()
  (if (not caochu1)
	(setq caochu (getdist "\nchieu cao chu? :"))
	(setq caochu (getdist (strcat "chieu cao chu <" (rtos caochu1) ">:")))
	)
  (if (= caochu nil) (setq caochu caochu1))
  (setq caochu1 caochu)

  • 0

#31 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 05 December 2015 - 10:43 AM

 

Tình hình là sau khi thay dòng lệnh như bác pphung183 thì ok rồi. Em cảm ơn bác nhiều nhé.

Em up lại để mọi người dùng

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/120974-nho-sua-lisp-do-tong-chieu-da-i-doi-tuong-tra-n-autocad-2015/page-2
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/59317-nho-chi-nh-su-a-lisp-ti-nh-to-ng-die-n-ti-ch-va-chu-vi-ca-c-hi-nh/
(defun c:tdt(/ dt sdt gt tgt id pt1)
  (setq dt (ssget
  	'((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
     	))
 )
  (setq
 sdt (sslength dt)
 id 0
 tgt 0)
(testcaochu)
  (repeat sdt
	(setq ent (ssname dt id)
   id (1+ id)
   )
	(command "area" "o" ent "")
	(setq gt (getvar "area"))
	(setq tgt (+ tgt gt))
	(princ)
	)
(setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tgt 1000000) 2 1) "m2"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tcd(/ DT SDT TCD PT1)
  (setq dt (ssget '((-4 . "<OR")
   (0 . "CIRCLE")
   (0 . "ELLIPSE")
   (0 . "SPLINE")
   (0 . "ARC")
   (0 . "LINE")
   (0 . "*POLYLINE")
   (-4 . "OR>")
		))
)
(testcaochu)
  (setq sdt (sslength dt))
  (setq
  	index 0
  	tcd 0
  	)
  (repeat sdt
	(setq
  	ent (ssname dt index)
  	index (1+ index)    
  	)    
	(command "area" "o" ent)
	(setq cd (getvar "perimeter"))
	(setq tcd (+ tcd cd))
	)
  (setq pt1 (getpoint "\nchon diem ghi chu:"))
  (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tcd 1000) 2 1) "m"))
  (princ)
  )
;;;;;;;;;;;;;;;;;;
(defun testcaochu()
  (if (not caochu1)
	(setq caochu (getdist "\nchieu cao chu? :"))
	(setq caochu (getdist (strcat "chieu cao chu <" (rtos caochu1) ">:")))
	)
  (if (= caochu nil) (setq caochu caochu1))
  (setq caochu1 caochu)

Trời  :unsure:  !!!! Tôi bảo bạn thay (command "lengthen" ent "") bằng (command "area" "o" ent)  để biết có phải vậy không chứ không phải thay là dùng -_- .

Muốn dùng thì phải xét thêm các trường hợp không có diện tích như Line, arc chẳng hạn ...Because khi đối tượng là Line or arc thì (command "area" "o" ent)

trả về Nil và (getvar "perimeter") trả vể thông số chu vi không phải của Line or arc và kết quả sẽ sai :D


  • 0