Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Xử lý bản vẽ bị lẻ số

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

- Bạn đang vẽ một bản cad lẻ toét, các số cứ sêm sêm nhau cỡ: 8399.9899 thay vì 8400. Mặc dù bạn đánh kích thước thì vẫn có kết quả là 8400 nhưng rất 'ngứa ngáy'. Số lẻ này làm một lệnh (như pedit, hatch)không hoạt động tốt. Làm gì để các con số này chẵn với nhau? làm sao để các kích thước không còn lẻ?

 

- Đơn giản, bạn sử dụng chương trình làm chẵn của cadviet, appload chương trình lên, sau đó sử dụng lệnh chl chương trình sẽ yêu cầu bạn chọn các đối tượng muốn làm chẵn và điểm gốc chẵn (để các tọa độ sẽ chẵn với điểm gốc này), và mức làm chẵn. Ví dụ bạn muốn làm chẵn đến đơn vị mét (là 1000) thì bạn nhập mức 5..

 

(defun c:chl (/ p ss x y solt mlt)

(defun lamtron (so / t1)

(setq

t1 (abs so)

t2 (* solt (float (fix (/ t1 solt))))

t1 (cond

((< (- t1 t2) (* 0.5 solt)) t2)

(t (+ t2 (* 1.0 solt)))

)

)

(if (> so 0.0)

t1

(* -1.0 t1)

)

)

(defun chlone (ent / p1 p2 dx dy tt x1 y1 z1 x2 y2 z2)

(setq

tt (entget ent)

)

(foreach pp tt

(if (or (= (car pp) 10)

(= (car pp) 11)

)

(progn

(setq

p1 (cdr pp)

 

x1 (car p1)

y1 (cadr p1)

z1 (cond

((= (length p1) 3) (caddr p1))

(t nil)

)

dx1 (- x1 x)

dy1 (- y1 y)

dx1 (lamtron dx1)

dy1 (lamtron dy1)

x1 (+ x dx1)

y1 (+ y dy1)

 

p1m (cond

(z1 (list x1 y1 z1))

(t (list x1 y1))

)

 

tt (subst (cons (car pp) p1m) pp tt)

)

(entmod tt)

)

)

)

 

)

(H:init)

(setq ss (ssget) ;'((0 . "LINE")))

muctron (list 1.0 5.0 10.0 100.0 500.0 1000.0 2000.0 5000.0

100000.0)

p (getpoint "\nDiem chen: ")

temp (getint

"\nMuc lam tron: 0=1, 1=5, 2=10, 3=100, 4=500, 5=1000, 6=2000, 7=5000, 8=100000 <0>: "

)

mlt (cond

(temp temp)

(t 0)

)

x (car p)

y (cadr p)

solt 1.0

)

(setq solt (nth mlt muctron))

(H:sudung chlone ss)

(H:done)

)

 

;;------------------------------------------------------------

(defun H:newerror (msg)

(if (and (/= msg "Function cancelled")

(/= msg "quit / exit abort")

)

(princ (strcat "\n" msg))

)

(H:done)

)

;;----------

(defun H:init ()

(setq

H:VAR_CMDECHO

(getvar "CMDECHO")

H:VAR_OLDERROR

*error*

*error* H:newerror

 

)

(setvar "CMDECHO" 0)

(command ".undo" "BE")

)

;;----------

(defun H:done ()

(if (null command-s)

(command ".redraw")

(command-s ".redraw")

)

(if (null command-s)

(command ".undo" "E")

(command-s ".undo" "E")

)

(if H:VAR_CMDECHO

(setvar "CMDECHO" H:VAR_CMDECHO)

)

(if H:VAR_OLDERROR

(setq *error* H:VAR_OLDERROR)

)

(princ)

)

;;----------

(defun H:sudung (hamsudung ss /)

(length

(vl-remove-if

'null

(mapcar 'hamsudung

(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))

)

)

)

)

 

(defun c:chl (/ p ss x y solt mlt)

(defun lamtron (so / t1)

(setq

t1 (abs so)

t2 (* solt (float (fix (/ t1 solt))))

t1 (cond

((< (- t1 t2) (* 0.5 solt)) t2)

(t (+ t2 (* 1.0 solt)))

)

)

(if (> so 0.0)

t1

(* -1.0 t1)

)

)

(defun chlone (ent / p1 p2 dx dy tt x1 y1 z1 x2 y2 z2)

(setq

tt (entget ent)

)

(foreach pp tt

(if (or (= (car pp) 10)

(= (car pp) 11)

)

(progn

(setq

p1 (cdr pp)

 

x1 (car p1)

y1 (cadr p1)

z1 (cond

((= (length p1) 3) (caddr p1))

(t nil)

)

dx1 (- x1 x)

dy1 (- y1 y)

dx1 (lamtron dx1)

dy1 (lamtron dy1)

x1 (+ x dx1)

y1 (+ y dy1)

 

p1m (cond

(z1 (list x1 y1 z1))

(t (list x1 y1))

)

 

tt (subst (cons (car pp) p1m) pp tt)

)

(entmod tt)

)

)

)

 

)

(H:init)

(setq ss (ssget) ;'((0 . "LINE")))

muctron (list 1.0 5.0 10.0 100.0 500.0 1000.0 2000.0 5000.0

100000.0)

p (getpoint "\nDiem chen: ")

temp (getint

"\nMuc lam tron: 0=1, 1=5, 2=10, 3=100, 4=500, 5=1000, 6=2000, 7=5000, 8=100000 <0>: "

)

mlt (cond

(temp temp)

(t 0)

)

x (car p)

y (cadr p)

solt 1.0

)

(setq solt (nth mlt muctron))

(H:sudung chlone ss)

(H:done)

)

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

Thực ra trong CAD có sẵn kô cần phải dùng chương trình . Vào FORMAT>UNIT . Trong bảng Drawing Unit chọn Precision là 0 là được . Hoành thử xem có đúng thế 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

Vào mục như anh Hiếu vừa nói là giải pháp tình thế.

Bởi:

- Đối tượng vẫn giữ nguyên số lẻ, chỉ khác là mình không nhìn thấy số lẻ mà thôi, khi sử dụng các hàm về Joint, hatch sẽ có lỗi.

- Khi cần làm chẵn sang đơn vị 10, 100 hay 1000 thì không thể làm được.

 

Có nghĩa là: giải pháp sử dụng lisp vừa nêu tổng quát hơn và triệt để hơn phương pháp sử dụng Format > Units.

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 này có phải lỗi của CAD không?. Rõ ràng là khi vẽ đều chẵn, nhưng khi dùng lệnh plan một hồi là toàn số lẻ, nhìn phát ghét. Có cách nào xử lý triệt để nó 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
Cái này có phải lỗi của CAD không?. Rõ ràng là khi vẽ đều chẵn, nhưng khi dùng lệnh plan một hồi là toàn số lẻ, nhìn phát ghét. Có cách nào xử lý triệt để nó không?

 

CAD làm gì có lỗi, lỗi là do con người sơ suất thôi bác ạ. Cách xử lý triệt để, bác đọc kỹ topic này!

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
CAD làm gì có lỗi, lỗi là do con người sơ suất thôi bác ạ. Cách xử lý triệt để, bác đọc kỹ topic này!

Nếu sơ suất thì nói làm gì. Để chế độ ORTHO, offset bằng nhập số, thế mà quay đi quay lại một hồi cũng lẻ. Tui nghí là khi xoay trục toạ độ, Cad nó tính sin cos một hồi rồi làm tròn, lẻ từ lưa.

Các xử lý triệt để là làm sao vẽ không bị lẻ, chứ không phải dùng tool.

Sao bác không cấp mã nguồn luôn để tham khảo. Tui cũng thử lập tool nhưng chạy không được, làm tròn các cạnh theo trục X, Y thì được, nhưng không làm tròn được theo cạnh xiên bất kỳ. Chưa nghĩ ra thuật toá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
- Đơn giản, bạn sử dụng chương trình làm chẵn của cadviet, appload chương trình lên, sau đó sử dụng lệnh chl chương trình sẽ yêu cầu bạn chọn các đối tượng muốn làm chẵn và điểm gốc chẵn (để các tọa độ sẽ chẵn với điểm gốc này), và mức làm chẵn. Ví dụ bạn muốn làm chẵn đến đơn vị mét (là 1000) thì bạn nhập mức 5..

 

- Tải chương trình tại đây

 

LỆNH CỦA CHƯƠNG TRÌNH NAY LÀ GI VẬY? MINH TAI XỤỐNG RỒI NHƯNG KHÔNG MỞ RA ĐỌC ĐƯỢC, AP LEN CŨNG KHÔNG BIẾT GÕ LỆNH GÌ, LÀM ƠN CHỈ CỤ THỂ GIÙM.

 

CAM ƠN NHIỀU, CHÚC CẢ NHÀ SỨC KHOE

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
LỆNH CỦA CHƯƠNG TRÌNH NAY LÀ GI VẬY? MINH TAI XỤỐNG RỒI NHƯNG KHÔNG MỞ RA ĐỌC ĐƯỢC, AP LEN CŨNG KHÔNG BIẾT GÕ LỆNH GÌ, LÀM ƠN CHỈ CỤ THỂ GIÙM.

 

CAM ƠN NHIỀU, CHÚC CẢ NHÀ SỨC KHOE

 

Cái này mình dùng rồi, lệnh là CHL đó bạn!

giải thích của tác giả là CHẵn Line.

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 này mình dùng rồi, lệnh là CHL đó bạn!

giải thích của tác giả là CHẵn Line.

:s_dead: nick này ngó qua 3DVN cũng có 1 cái y hệt...có phải cùng 1 ng??? Team leader 3D bên Architype ???

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

May quá tìm được chương trình này.Em đang rất cần chương trình này nhưng k down được,hình như đã bị xóa rồi!

Bác nào có xin up lại giup e với! hay mail cho e vxlequangtruong@gmail.com.

Cảm ơn các bá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

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


×