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

[Help] Sửa Lisp Thêm Dung Sai Cho Kích Thước Có Sẵn

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

 

Mình test bản vẽ đã up thì chạy vẫn ngon lành.

 

https://youtu.be/RKSFpMYT_b4

(defun c:T3 (/ ss dimtp dimtm n scl old)
  (setq old (getvar "DIMLFAC"))
  (command "_undo" "be")
  (if (setq ss (ssget '((0 . "DIMENSION"))))
    (progn
      (setq scl (getreal "\nChon ti le: "))
      (if (not scl)
	(setq scl 1.)
      )
      (setq n 0)
      (repeat (sslength ss)
	(setq dimtm (vlax-get (vlax-ename->vla-object (ssname ss n))
			      'ToleranceLowerLimit
		    )
	)
	(setq dimtp (vlax-get (vlax-ename->vla-object (ssname ss n))
			      'ToleranceUpperLimit
		    )
	)
	(setvar "DIMLFAC" scl)
	(if (not (check (ssname ss n)))
	  (progn
	    (command "dimtol" "off")
	    (command "dim" "update" (ssname ss n) "" "exit")
	  )
	  (progn
	    (if	(/= (getvar 'dimstyle)
		    (cdr (assoc 3 (entget (ssname ss n))))
		)
	      (command "dimstyle"
		       "r"
		       (cdr (assoc 3 (entget (ssname ss n))))
	      )
	    )
	    (command "dimtol" "on")
	    (command "dimtp" dimtp)
	    (command "dimtm" dimtm)
	    (command "dim" "update" (ssname ss n) "" "exit")
	    (command "dimtol" "off")
	  )
	)
	(setq n (1+ n))
      )
    )
    (princ "\nBan da khong chon DIM.")
  )
  (command "_undo" "end")
  (setvar "DIMLFAC" old)
  (princ)
)
(defun check (ename / BlkEnt EntData Str flag)
  (if
    (and
      (= (cdr (assoc 0 (setq EntData (entget ename))))
	 "DIMENSION"
      )
      (setq BlkEnt (tblobjname "block" (cdr (assoc 2 EntData))))
    )
     (while (setq BlkEnt (entnext BlkEnt))
       (if (= (cdr (assoc 0 (setq EntData (entget BlkEnt)))) "MTEXT")
	 (progn
	   (setq Str (cdr (assoc 1 EntData)))	   
	   (if
	     (wcmatch Str "*+*,*-*,*±*")
	      (setq flag T)
	      (setq flag nil)
	   )
	 )
       )
     )
  )
  flag
)

Uhm, mình dùng ACAD 2005. test như clip trên nhé.

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

Chào anh em trên diễn đàn.

Mình có đoạn lisp này cho phép thêm dung sai cho kích thước có sẵn.

 

(defun c:T2 () 

(command "dimtol" "on")

(command "dimtp" "0.02")

(command "dimtm" "0.02")

(command "dim" "update" pause "" "exit")

(command "dimtol" "off")

(princ)

)

 

Tuy nhiên lisp này có một số vấn đề như sau:

1) Lisp chỉ cho chọn một kích thước một lần, mình muốn nhờ sửa lại cho chọn đc nhiều kích thước cùng một lúc.

2) Lisp khi thực hiện sẽ chuyển dim style của kích thước về dim style hiện hành, mình muốn vẫn giữ nguyên đc dim style cũ của kích thước.

Nhờ anh em xem sửa giúp

Thanks

 

Anh thử dùng cái ....này xem sao???

http://www.cadviet.com/forum/topic/67159-tran-trong-kinh-moi-viet-lisp-cho-dan-co-khi/

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

Uhm, mình dùng ACAD 2005. test như clip trên nhé.

Okie Bee, thanks Bee nhiều. Mình dùng bản Mechanical 2012  nên có thể do phiên bản nên bị lỗ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

Thanks bạn đã góp ý, tuy nhiên cái này mình đã thử và thấy ko dùng đc do công việc của mình ko sử dụng giống với hệ dung sai như bài bạn đã gửi. Thanks :)

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


×