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.
ponaparte2003

[Đã xong] Lisp xuất chiều dài Line ra Text có sẵn và có tiền tố, hậu tố

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

khanhpt4    1

Các cao thủ có thể sửa giúp em làm sao để ghi ra kết quả nó theo đơn vị met được không ạ. chứ em thực hiện lệnh xong thì phần chữ số vẫn theo đơn vị mm :((. EM cảm ơn các bro trước.

  • Vote giảm 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
Danh Cong    109

Các cao thủ có thể sửa giúp em làm sao để ghi ra kết quả nó theo đơn vị met được không ạ. chứ em thực hiện lệnh xong thì phần chữ số vẫn theo đơn vị mm :((. EM cảm ơn các bro trước.

 

Được voi đòi 2 bà Trưng đây. Lạm dụng lisp nhiều quá ko tốt đâu nhé.

 

Sửa thì dễ, nhưng bạn có thể thủ công thêm 1 dấu chấm sau 3 chữ số mà  ! Cứ thích yêu cầu 1 nháy chuột ăn ngay cơ  :D  :D  :D.

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
lanvientkh    10

Với LINE thì sử dụng dòng này không được

(command "area" "e" dtuong1)

Vì LINE không có diện tích

Và ngoài ý 1 mà bạn DoanVanHa đã nêu trên, bạn alpha1810 phải thay dòng

(command "area" "e" dtuong1)

thành dòng :

(command "LENGTHEN" dtuong1 "")

hoặc : (command "LIST" dtuong1 "")

Bạn Tue_NV ơi,

  1. Lisp này có thêm chế độ chọn liên tục nhiều Line (multi) được không?
  2. Mình có nhiều đoạn Line khác nhau, ví dụ AB, CD, EF..,...theo Lisp này thì xong từng đoạn Line rồi lập lại từ đầu với các đoạn khác, như vậy hơi mất thêm thời gian
  3. kết quả xuất ra "m" thay vì "mm"

 

Cảm ơn bạn

  • Vote giảm 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
lanvientkh    10

post dwg vi du len các anh các bác sẽ giúp ^_^

mình ko up lên cadviet mình gửi kèm link gồm dwg và lisp bạn nhé, đây là lisp mình lấy được trên diễn đàn, cảm ơn bạn, cuối tuần vui vẽ nhé

 

https://drive.google.com/file/d/0B1TsLvqrTXBycDY1RzllYW0yU28/view?usp=sharing

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
Bee    108

mình ko up lên cadviet mình gửi kèm link gồm dwg và lisp bạn nhé, đây là lisp mình lấy được trên diễn đàn, cảm ơn bạn, cuối tuần vui vẽ nhé

 

https://drive.google.com/file/d/0B1TsLvqrTXBycDY1RzllYW0yU28/view?usp=sharing

Lisp mới đây, chỉ cần chọn LINE còn lại lisp làm việc nhé. ^_^ Thay tên lệnh tùy ý. 

 

Chui khắp các topic nhờ vả mà ko thấy ai repply, khổ thân ^_^

;;Lenh TEST

(defun c:test (/ ss n _length pt1 ss1)
  (setvar "CMDECHO" 0)
  (princ "\nChon *LINE: ")
  (if (setq ss (ssget '((0 . "*LINE"))))
    (progn
      (command "zoom" "ob" ss "")
      (setq n 0)
      (repeat (sslength ss)
	(setq _length (/ (vlax-get (vlax-ename->vla-object (ssname ss n)) 'Length) 1000.))
	
	(setq pt1 (polar (cdr (assoc 10 (entget (ssname ss n)))) (/ pi 2) 100.))
	
	(setq ss1 (ssget "C" pt1 (cdr (assoc 11 (entget (ssname ss n)))) '((0 . "TEXT"))))
	(if ss1
	  (entmod (subst (cons 1 (strcat "L= " (rtos _length 2 1) " m"))
			   (assoc 1 (entget (ssname ss1 0)))
			   (entget (ssname ss1 0)))
		    )
	    )
	(setq n (1+ n))
	);repeat
      );progn
    (princ "\nBan da khong chon LINE.")
    );if
  (command "zoom" "P")
  (princ)
  )
  • 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
lanvientkh    10

 

Lisp mới đây, chỉ cần chọn LINE còn lại lisp làm việc nhé. ^_^ Thay tên lệnh tùy ý. 

 

Chui khắp các topic nhờ vả mà ko thấy ai repply, khổ thân ^_^

;;Lenh TEST

(defun c:test (/ ss n _length pt1 ss1)
  (setvar "CMDECHO" 0)
  (princ "\nChon *LINE: ")
  (if (setq ss (ssget '((0 . "*LINE"))))
    (progn
      (command "zoom" "ob" ss "")
      (setq n 0)
      (repeat (sslength ss)
	(setq _length (/ (vlax-get (vlax-ename->vla-object (ssname ss n)) 'Length) 1000.))
	
	(setq pt1 (polar (cdr (assoc 10 (entget (ssname ss n)))) (/ pi 2) 100.))
	
	(setq ss1 (ssget "C" pt1 (cdr (assoc 11 (entget (ssname ss n)))) '((0 . "TEXT"))))
	(if ss1
	  (entmod (subst (cons 1 (strcat "L= " (rtos _length 2 1) " m"))
			   (assoc 1 (entget (ssname ss1 0)))
			   (entget (ssname ss1 0)))
		    )
	    )
	(setq n (1+ n))
	);repeat
      );progn
    (princ "\nBan da khong chon LINE.")
    );if
  (command "zoom" "P")
  (princ)
  )

Dear bạn, lisp này cad 2013 sử dụng được, ko sử dụng được cho cad 2007 vậy bạn,  nó báo select object: 1 found

Sáng đầu tuần mà có tin vui của bạn rồi, cảm ơn bạn nhé, đầu tuần vui vẽ, hihi

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
lanvientkh    10

 

Lisp mới đây, chỉ cần chọn LINE còn lại lisp làm việc nhé. ^_^ Thay tên lệnh tùy ý. 

 

Chui khắp các topic nhờ vả mà ko thấy ai repply, khổ thân ^_^

;;Lenh TEST

(defun c:test (/ ss n _length pt1 ss1)
  (setvar "CMDECHO" 0)
  (princ "\nChon *LINE: ")
  (if (setq ss (ssget '((0 . "*LINE"))))
    (progn
      (command "zoom" "ob" ss "")
      (setq n 0)
      (repeat (sslength ss)
	(setq _length (/ (vlax-get (vlax-ename->vla-object (ssname ss n)) 'Length) 1000.))
	
	(setq pt1 (polar (cdr (assoc 10 (entget (ssname ss n)))) (/ pi 2) 100.))
	
	(setq ss1 (ssget "C" pt1 (cdr (assoc 11 (entget (ssname ss n)))) '((0 . "TEXT"))))
	(if ss1
	  (entmod (subst (cons 1 (strcat "L= " (rtos _length 2 1) " m"))
			   (assoc 1 (entget (ssname ss1 0)))
			   (entget (ssname ss1 0)))
		    )
	    )
	(setq n (1+ n))
	);repeat
      );progn
    (princ "\nBan da khong chon LINE.")
    );if
  (command "zoom" "P")
  (princ)
  )

Hi bạn,

nếu đường thẳng nằm dọc hay nằm ngiêng lisp ko tính được, mình gửi bản vẽ đính kèm nhờ bạn xem với nhé, thanks

 

https://drive.google.com/open?id=0B1TsLvqrTXByZkhva1RYZUZJUFk

  • Vote giảm 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
Bee    108

Hi bạn,

nếu đường thẳng nằm dọc hay nằm ngiêng lisp ko tính được, mình gửi bản vẽ đính kèm nhờ bạn xem với nhé, thanks

 

https://drive.google.com/open?id=0B1TsLvqrTXByZkhva1RYZUZJUFk

Đã fix nhé ^_^

;;Lenh TEST

(defun c:test (/ ss n _length pt1 pt2 pt3 pt4 ss1 )
  (vl-load-com)
  (setvar "CMDECHO" 0)
  (princ "\nChon LINE: ")
  (if (setq ss (ssget '((0 . "LINE"))))
    (progn
      (command "zoom" "ob" ss "")
      (setq n 0)
      (repeat (sslength ss)
	(setq _length (/ (vlax-get (vlax-ename->vla-object (ssname ss n)) 'Length) 1000.))
	(setq pt1 (polar (cdr (assoc 10 (entget (ssname ss n)))) (+ (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )
	(setq pt2 (polar (cdr (assoc 11 (entget (ssname ss n)))) (- (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )
	(setq pt3 (polar (cdr (assoc 10 (entget (ssname ss n)))) (- (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )
	(setq pt4 (polar (cdr (assoc 11 (entget (ssname ss n)))) (+ (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )

	(setq ss1 (ssget "CP" (list pt1 pt4 pt2 pt3) '((0 . "TEXT"))))
	(if ss1
	  (if (> (sslength ss1) 1)
	    (progn
	      (princ "\nCo >1 TEXT tai vi tri vung chon xung quanh LINE.")
	      (redraw (ssname ss n) 3)
	      )
	    (entmod (subst (cons 1 (strcat "L= " (rtos _length 2 1) " m"))
			   (assoc 1 (entget (ssname ss1 0)))
			   (entget (ssname ss1 0)))
		    )
	    )
	  )
	(setq n (1+ n))
	);repeat
      );progn
    (princ "\nBan da khong chon LINE.")
    );if
  (command "zoom" "P")
  (princ)
  )
  • 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
lanvientkh    10

 

Đã fix nhé ^_^

;;Lenh TEST

(defun c:test (/ ss n _length pt1 pt2 pt3 pt4 ss1 )
  (vl-load-com)
  (setvar "CMDECHO" 0)
  (princ "\nChon LINE: ")
  (if (setq ss (ssget '((0 . "LINE"))))
    (progn
      (command "zoom" "ob" ss "")
      (setq n 0)
      (repeat (sslength ss)
	(setq _length (/ (vlax-get (vlax-ename->vla-object (ssname ss n)) 'Length) 1000.))
	(setq pt1 (polar (cdr (assoc 10 (entget (ssname ss n)))) (+ (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )
	(setq pt2 (polar (cdr (assoc 11 (entget (ssname ss n)))) (- (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )
	(setq pt3 (polar (cdr (assoc 10 (entget (ssname ss n)))) (- (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )
	(setq pt4 (polar (cdr (assoc 11 (entget (ssname ss n)))) (+ (angle (cdr (assoc 10 (entget (ssname ss n))))
									   (cdr (assoc 11 (entget (ssname ss n))))
									   )
								      (/ pi 2)
								    )
			 100.)
	      )

	(setq ss1 (ssget "CP" (list pt1 pt4 pt2 pt3) '((0 . "TEXT"))))
	(if ss1
	  (if (> (sslength ss1) 1)
	    (progn
	      (princ "\nCo >1 TEXT tai vi tri vung chon xung quanh LINE.")
	      (redraw (ssname ss n) 3)
	      )
	    (entmod (subst (cons 1 (strcat "L= " (rtos _length 2 1) " m"))
			   (assoc 1 (entget (ssname ss1 0)))
			   (entget (ssname ss1 0)))
		    )
	    )
	  )
	(setq n (1+ n))
	);repeat
      );progn
    (princ "\nBan da khong chon LINE.")
    );if
  (command "zoom" "P")
  (princ)
  )

lisp quá tốt, thanks bạn hí

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

Anh sửa đoạn này (rtos (- tdt 0) 2 2) --> (rtos (- tdt 0) 2 0) là oki!

Chúc thành công !

anh ơi vậy cho em hỏi mình muốn làm tròn vd như đoạn thẳng dài 1997 thì text ra là L= 2000 không ạ

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


×