Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
ppiu8703

lisp thêm tiền tố vào DIM

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

mọi người cho em hỏi có lisp nào mà mình chỉ cần nhấn D1 là thêm Ø cho DIM, D2 là biến Ø6 thành M6,... kiểu kiểu vậy không ạ

screenshot_1729774469.png

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
15 giờ trước, ppiu8703 đã nói:

mọi người cho em hỏi có lisp nào mà mình chỉ cần nhấn D1 là thêm Ø cho DIM, D2 là biến Ø6 thành M6,... kiểu kiểu vậy không ạ

 

Có nhé. Cái này đã hỏi diễn đàn lâu lắm rồi nhưng không có lisp. Qua mày mò các lisp khác sửa lại cũng được cái mình cần. Nay share lại cho bạn

d1: Thêm Ø

d2: Thêm M

dr: là DDI nhưng thay vì ra Ø sẽ ra M

(defun c:d1 ( / newdimvalue oldvl ss ent)
	(if (setq ss (ssget "_:L" '((0 . "*DIMENSION"))))
		(repeat (setq in (sslength ss))
			(setq ent (entget (ssname ss (setq in (1- in)))))
			(if (not (member '(100 . "AcDbDiametricDimension") ent)) ;; Neu la Dim duong tron - da cho san phi
				(progn
					(setq oldvl (cdr (assoc 1 ent)))
					(if  (= oldvl "")
						(setq newdimvalue "%%C<>")
							(if ( = (strcase (substr oldvl 1 3)) "%%C")
								(setq newdimvalue oldvl)
								(setq newdimvalue (strcat "%%C" oldvl))
							)
					)
					(setq ent (subst (cons 1 newdimvalue) (assoc 1 ent) ent))
					(entmod ent)
				)
			)
		)
	)
)
                  
(defun c:d2 	(/ dtdim)(editdim 	"M" 			"M<>"))
(defun editdim ( noidungc newdimvalue )
(setq dtdim (entsel (strcat "\n Chon Dim chen " noidungc)))
(command "dimedit" "n" newdimvalue dtdim "")
(princ)
)

(defun c:dr ( / *error* msg)
	(defun *error* ( msg )
        (if "." (setvar 'DIMPOST "."))
        (princ)
    )
		(setvar "DIMPOST" "M<>")
		(command "DIMDIAMETER" PAUSE PAUSE)
		(setvar "DIMPOST" ".")
		(princ)
)

 

 

 

  • Like 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
1 giờ} trướ}c, cuongtk2 đã nói:

Dùng TextPrefix cho dim:

(defun c:d1 ()(vla-put-TextPrefix (vlax-ename->vla-object (car (entsel))) "%%C"))

Đúng là cao thủ ra tay có khác.

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
9 giờ trước, vietduc147258 đã nói:

Có nhé. Cái này đã hỏi diễn đàn lâu lắm rồi nhưng không có lisp. Qua mày mò các lisp khác sửa lại cũng được cái mình cần. Nay share lại cho bạn

d1: Thêm Ø

d2: Thêm M

dr: là DDI nhưng thay vì ra Ø sẽ ra M


(defun c:d1 ( / newdimvalue oldvl ss ent)
	(if (setq ss (ssget "_:L" '((0 . "*DIMENSION"))))
		(repeat (setq in (sslength ss))
			(setq ent (entget (ssname ss (setq in (1- in)))))
			(if (not (member '(100 . "AcDbDiametricDimension") ent)) ;; Neu la Dim duong tron - da cho san phi
				(progn
					(setq oldvl (cdr (assoc 1 ent)))
					(if  (= oldvl "")
						(setq newdimvalue "%%C<>")
							(if ( = (strcase (substr oldvl 1 3)) "%%C")
								(setq newdimvalue oldvl)
								(setq newdimvalue (strcat "%%C" oldvl))
							)
					)
					(setq ent (subst (cons 1 newdimvalue) (assoc 1 ent) ent))
					(entmod ent)
				)
			)
		)
	)
)
                  
(defun c:d2 	(/ dtdim)(editdim 	"M" 			"M<>"))
(defun editdim ( noidungc newdimvalue )
(setq dtdim (entsel (strcat "\n Chon Dim chen " noidungc)))
(command "dimedit" "n" newdimvalue dtdim "")
(princ)
)

(defun c:dr ( / *error* msg)
	(defun *error* ( msg )
        (if "." (setvar 'DIMPOST "."))
        (princ)
    )
		(setvar "DIMPOST" "M<>")
		(command "DIMDIAMETER" PAUSE PAUSE)
		(setvar "DIMPOST" ".")
		(princ)
)

 

 

 

Có cách nào trên 1 DIM vừa có D1 và D2 kh anh ha. Với lisp trên khi em nhấn D1 thì D2 mất và ngược 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
2 giờ trước, ppiu8703 đã nói:

Có cách nào trên 1 DIM vừa có D1 và D2 kh anh ha. Với lisp trên khi em nhấn D1 thì D2 mất và ngược lại ạ

Làm sao mà có thể vừa Phi vừa M được bạn. Không có tiêu chuẩn nào mà thể hiện bản vẽ như thế cả

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
22 giờ trước, vietduc147258 đã nói:

Có nhé. Cái này đã hỏi diễn đàn lâu lắm rồi nhưng không có lisp. Qua mày mò các lisp khác sửa lại cũng được cái mình cần. Nay share lại cho bạn

d1: Thêm Ø

d2: Thêm M

dr: là DDI nhưng thay vì ra Ø sẽ ra M


(defun c:d1 ( / newdimvalue oldvl ss ent)
	(if (setq ss (ssget "_:L" '((0 . "*DIMENSION"))))
		(repeat (setq in (sslength ss))
			(setq ent (entget (ssname ss (setq in (1- in)))))
			(if (not (member '(100 . "AcDbDiametricDimension") ent)) ;; Neu la Dim duong tron - da cho san phi
				(progn
					(setq oldvl (cdr (assoc 1 ent)))
					(if  (= oldvl "")
						(setq newdimvalue "%%C<>")
							(if ( = (strcase (substr oldvl 1 3)) "%%C")
								(setq newdimvalue oldvl)
								(setq newdimvalue (strcat "%%C" oldvl))
							)
					)
					(setq ent (subst (cons 1 newdimvalue) (assoc 1 ent) ent))
					(entmod ent)
				)
			)
		)
	)
)
                  
(defun c:d2 	(/ dtdim)(editdim 	"M" 			"M<>"))
(defun editdim ( noidungc newdimvalue )
(setq dtdim (entsel (strcat "\n Chon Dim chen " noidungc)))
(command "dimedit" "n" newdimvalue dtdim "")
(princ)
)

(defun c:dr ( / *error* msg)
	(defun *error* ( msg )
        (if "." (setvar 'DIMPOST "."))
        (princ)
    )
		(setvar "DIMPOST" "M<>")
		(command "DIMDIAMETER" PAUSE PAUSE)
		(setvar "DIMPOST" ".")
		(princ)
)

 

 

 

Có cách nào thay vì d1 là phi d2 là M thì em chỉ cần nhập DN là em có thể nhập mọi thứ không ạ?

Với khi em nhấn 2 lệnh trên xong thì sau khi Dim bình thường thì sau mọi Dim đều có hậu tố “.” hết á, vậy thì có cách fix không anh ơ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
2 giờ trước, ppiu8703 đã nói:

Có cách nào thay vì d1 là phi d2 là M thì em chỉ cần nhập DN là em có thể nhập mọi thứ không ạ?

Với khi em nhấn 2 lệnh trên xong thì sau khi Dim bình thường thì sau mọi Dim đều có hậu tố “.” hết á, vậy thì có cách fix không anh ơi?

Ý là nhập DN xong máy sẽ hỏi là muốn thêm Phi hay M rồi mới thực hiện lệnh phải không? Lại đổi đề bài ban đầu đưa ra thế.

Thấy Lisp bác Cường hay mà sao không dù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
Đăng nhập để thực hiện theo  

×