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

(Nhờ giúp đỡ) Lỗi hiển thị khi chèn dung sai

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

10 giờ trước, nguyenxuanbien1994 đã nói:

Hiện tại em đang có cái lisp điền dung sai nhưng đang bị lỗi như trong hình. 
Nhờ các bác khắc phục giúp em với ạ.

Em xin cảm ơn.

dung sai h7.lsp

 

Thử coi nha

dung sai H7.lsp

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

Cái trị số dung sai trong lisp này đâu có đúng. Với lại chỉ hỗ trợ Đk dưới 80.

Dùng lisp của bác @Doan Van Ha hỗ trợ tới 400. Nhưng có nhược điểm là Dim hình tròn sẽ bị dư thêm chữ Ø

Sửa lại lisp bạn gửi rồi. 

Nhưng giữ nguyên lỗi ban đầu là khi Dim đường thẳng sẽ không có chữ Ø

 

(defun c:hh7(/ ob num n chk entl dimtol ds)
	(princ "\\n  Chon Dim  : ")(princ)
	(setq ob (ssget (list (cons 0 "DIMENSION") )))
	(setq num (sslength ob))
	(setq n 0)
	(while (ssname ob n)
	(setq chk (ssname ob n))
	(setq ent1 (entget chk))
	(setq dimtol (cdr (assoc 42 ent1)))
	(setq chk (cdr (assoc 1 ent1)))
					(cond
						((<= dimtol 3) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.001^0;}") )
						((<= dimtol 6) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.012^0;}") )
						((<= dimtol 10) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.015^ 0;}") )
						((<= dimtol 18) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.018^ 0;}") )
						((<= dimtol 30) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.021^ 0;}") )
						((<= dimtol 50) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.025^ 0;}") )
						((<= dimtol 80) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.003^ 0;}") )
						((<= dimtol 120) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.035^ 0;}") )
						((<= dimtol 180) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.04^ 0;}") )
						((<= dimtol 250) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.046^ 0;}") )
						((<= dimtol 315) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.052^ 0;}") )
						((<= dimtol 400) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.057^ 0;}") )
						((<= dimtol 450) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.063^ 0;}") )					
						(princ "Done")(princ)
					)
		
(entmod (subst (cons 1 ds) (assoc 1 ent1) ent1))(princ)
(setq n (1+ n))
)
)

 

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, vietduc147258 đã nói:

Cái trị số dung sai trong lisp này đâu có đúng. Với lại chỉ hỗ trợ Đk dưới 80.

Dùng lisp của bác @Doan Van Ha hỗ trợ tới 400. Nhưng có nhược điểm là Dim hình tròn sẽ bị dư thêm chữ Ø

Sửa lại lisp bạn gửi rồi. 

Nhưng giữ nguyên lỗi ban đầu là khi Dim đường thẳng sẽ không có chữ Ø

 


(defun c:hh7(/ ob num n chk entl dimtol ds)
	(princ "\\n  Chon Dim  : ")(princ)
	(setq ob (ssget (list (cons 0 "DIMENSION") )))
	(setq num (sslength ob))
	(setq n 0)
	(while (ssname ob n)
	(setq chk (ssname ob n))
	(setq ent1 (entget chk))
	(setq dimtol (cdr (assoc 42 ent1)))
	(setq chk (cdr (assoc 1 ent1)))
					(cond
						((<= dimtol 3) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.001^0;}") )
						((<= dimtol 6) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.012^0;}") )
						((<= dimtol 10) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.015^ 0;}") )
						((<= dimtol 18) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.018^ 0;}") )
						((<= dimtol 30) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.021^ 0;}") )
						((<= dimtol 50) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.025^ 0;}") )
						((<= dimtol 80) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.003^ 0;}") )
						((<= dimtol 120) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.035^ 0;}") )
						((<= dimtol 180) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.04^ 0;}") )
						((<= dimtol 250) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.046^ 0;}") )
						((<= dimtol 315) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.052^ 0;}") )
						((<= dimtol 400) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.057^ 0;}") )
						((<= dimtol 450) (setq ds   "<>{}{\\H0.71x;\\C92;\\S+0.063^ 0;}") )					
						(princ "Done")(princ)
					)
		
(entmod (subst (cons 1 ds) (assoc 1 ent1) ent1))(princ)
(setq n (1+ n))
)
)

 

Em xin cảm ơn bác. 
Vì lý do  em dùng chỉ giới hạn 1 số đường kính nhất định, thường là dưới 100. (Trị số dung sai em thí nghiệm nên giá trị chưa đúng, em có tool tra dung sai nhưng chưa cập nhật vào)
Dim đường thẳng không có chữ Ø là đúng mục đích sử dụng của em rồi ạ. 
Chân thành cảm ơn bác đã sửa hoàn thiện lỗi và điền lại cả dung sai đúng luôn. 

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ùy mục đích sử dụng có thể bỏ cái {} thì Edit sẽ tiện hơn. 

Lisp cho cơ khí hơi ít, sẵn tiện Edit lại cho mình dùng luôn. 

Dùng Mechanical thì không cần lisp này lắm. Nhưng vì hay hay phải chuyển qua lại giữa cad thường và cad Mechanical nên dùng lisp vẫn tiện hơn.

  • 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
43 phút trước, vietduc147258 đã nói:

Tùy mục đích sử dụng có thể bỏ cái {} thì Edit sẽ tiện hơn. 

Lisp cho cơ khí hơi ít, sẵn tiện Edit lại cho mình dùng luôn. 

Dùng Mechanical thì không cần lisp này lắm. Nhưng vì hay hay phải chuyển qua lại giữa cad thường và cad Mechanical nên dùng lisp vẫn tiện hơn.

Ok bác. Bác làm trong lĩnh vực gì vậy. Nếu có lisp liên quan em sẽ chia sẻ ạ.

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

Ok bác. Bác làm trong lĩnh vực gì vậy. Nếu có lisp liên quan em sẽ chia sẻ ạ.

Làm thợ đụng bạn ơi. IB giao lưu nha

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

Các bác trong diễn đàn cho mình hỏi chút. Là có cách nào để phân biệt được DiametricDimension với AlignedDimension trong lisp để áp dụng cho trường hợp thêm ký tự Ø như trên không? Vì lấy cái assoc 100 nó toàn ra (100 . "AcDbDimension") như nhau thôi. Nên nếu để thêm chữ Ø vào thì khi Dim cho đường tròn sẽ bị thừa kí tự Ø

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  

×