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

Đánh cốt tự động bằng lisp DC

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

em muốn sửa hình vẽ giống như bản vẽ được không bác hoanh. file kèm theo:

786a9b8b861da1c30dd5a5a9b3dfe63c_36199034.xinlisp.png

file cad: http://www.cadviet.c...u_hinh_ve_2.dwg

Bạn dùng thử lisp này xem, hình cao độ tự bạn định nghĩa, lisp này mình lấy trên diễn đàn nhưng không nhớ nằm ở topic nào. Tham khảo nhé:

http://www.cadviet.com/upfiles/3/89140_

  • 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

cám ơn anh ketxu nhiều ạ, nhưng em chưa dùng được nó, anh giúp thì giúp cho trót, hi, anh làm ơn hưogns dẫn sơ sơ cách dùng cho em với được khôgn ạ!

(http://www.cadviet.com/forum/index.php?showtopic=56086&pid=194556&st=20entry194556)

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

Bạn có thể thêm vào lệnh sau Cotxx : dùng để định nghĩa cốt bất kỳ (tương tự cốt 0.00)

(defun c:cotxx ()  (setq Cotxx (getreal "\nNhap cot can dinh nghia: ")      Cot00 (+ (cadr (getpoint (strcat "\nDiem co cot " (rtos cotxx 2 3) ": "))) Cotxx)    )  (princ))

 

Bạn cũng có thể kết hợp với lệnh tăng giảm cốt đồng loạt, tham khảo tại đây

http://www.cadviet.com/forum/index.php?sho...ost&p=37756

 

 

đoạn mã của bác là

(defun c:cotxx ()

(setq Cotxx (getreal "\nNhap cot can dinh nghia: ")

Cot00 (+ (cadr (getpoint (strcat "\nDiem co cot " (rtos cotxx 2 3) ": "))) Cotxx)

)

(princ)

)

 

em thấy phải thay dấu cộng + thanh dấu trừ - mới chuẩn, em đã thử rồi , sẽ viết lại là :

 

(defun c:cotxx ()

(setq Cotxx (getreal "\nNhap cot can dinh nghia: ")

Cot00 (- (cadr (getpoint (strcat "\nDiem co cot " (rtos cotxx 2 3) ": "))) Cotxx)

)

(princ)

)

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

Bạn đã bao giờ mệt vì phải tính toán để đánh cốt cao độ của mặt cắt và mặt đứng hay chưa?

vừa phải tính xem từ điểm cần tính đến cốt 0.00 có khoảng cách h bao nhiêu, rồi lại nhập vào bản vẽ.

 

Bây giờ, bạn có thể làm điều này một cách nhanh chóng và tự động nhờ vào lisp dc của cadviet.

với lisp này, bạn chỉ cần gõ lệnh dc, chương trình sẽ hỏi bạn điểm bạn cần đánh cốt, sau đó chương trình sẽ chèn ký hiệu cốt vào đúng vị trí và giá trị mà bạn cần. Bạn dùng lệnh cot00 để định nghĩa điểm có cao độ là cot00.

 

Để sử dụng lệnh, trước tiên phải copy file cot.dwg vào thư mục support - Đây là file chứa nội dung của ký hiệu cốt. Sau đó appload file danhcot.lsp để sử dụng lệnh.

 

(defun c:cot00 ()
 (setq Cot00 (cadr (getpoint "\nDiem co cot 0.000: ")))
 (princ)
)
(defun c:dc (/ diem caodo dau giatri dodaichuoi)
 (if (not cot00)
(progn
 	(alert "chua co cot 0.000")
 	(c:cot00)
)
 )
 (grdraw (list	(+ (car (getvar "VIEWCTR")) (* -1.0 (getvar "VIEWSIZE")))
	cot00
 	)
 	(list	(+ (car (getvar "VIEWCTR")) (* 1.0 (getvar "VIEWSIZE")))
	cot00
 	)
 	1
 	1
 )
 (setq
diem   (getpoint "\nVao diem can danh cot: ")
caodo  (- (cadr diem) cot00)
dau       (cond
     ((equal caodo 0.0 0.01) "%%p")
     ((> caodo 0.0) "+")
     (t "-")
      )
giatri (rtos caodo 2 0)
 )
 (if (= "-" (substr giatri 1 1))
(setq giatri (substr giatri 2))
 )
 (while (< (strlen giatri) 4)
(setq giatri (strcat "0" giatri))
 )
 (setq	dodaichuoi (strlen giatri)
giatri       (strcat (substr giatri 1 (- dodaichuoi 3))
	       "."
	       (substr giatri (- dodaichuoi 2))
       )
 )
 (command ".insert" "danhcot" diem 100.0 100.0 0.0 dau giatri)
 (redraw)
)

file danhcot.lsp: http://www.cadviet.com/upfiles/danhcot.lsp

file danhcot.dwg: http://www.cadviet.com/upfiles/DANHCOT.zip

 

Lưu ý: Với mỗi file DWG mà bạn vẽ, bạn phải đặt lại biến ATTDIA về 0 trước khi dùng lệnh DC (chỉ cần đặt 1 lần cho mỗi file).

 

Rất mong có được sự phản hồi.

Cảm ơn.

Bac Hoanh oi. lisp cua bac rat tuyet nhung bac co the cho em hoi la muon khai bao cao do khong phai la cos+0.00 nhieu lan duoc khong? VI du lam tren trac ngang muon ghi cao do nhung lay goc bang +0 thi kho qua ma chi kha bao duoc1 lan nen rat bat tien.

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

Bạn đã bao giờ mệt vì phải tính toán để đánh cốt cao độ của mặt cắt và mặt đứng hay chưa?

vừa phải tính xem từ điểm cần tính đến cốt 0.00 có khoảng cách h bao nhiêu, rồi lại nhập vào bản vẽ.

 

Bây giờ, bạn có thể làm điều này một cách nhanh chóng và tự động nhờ vào lisp dc của cadviet.

với lisp này, bạn chỉ cần gõ lệnh dc, chương trình sẽ hỏi bạn điểm bạn cần đánh cốt, sau đó chương trình sẽ chèn ký hiệu cốt vào đúng vị trí và giá trị mà bạn cần. Bạn dùng lệnh cot00 để định nghĩa điểm có cao độ là cot00.

 

Để sử dụng lệnh, trước tiên phải copy file cot.dwg vào thư mục support - Đây là file chứa nội dung của ký hiệu cốt. Sau đó appload file danhcot.lsp để sử dụng lệnh.

 

(defun c:cot00 ()
 (setq Cot00 (cadr (getpoint "\nDiem co cot 0.000: ")))
 (princ)
)
(defun c:dc (/ diem caodo dau giatri dodaichuoi)
 (if (not cot00)
(progn
 	(alert "chua co cot 0.000")
 	(c:cot00)
)
 )
 (grdraw (list	(+ (car (getvar "VIEWCTR")) (* -1.0 (getvar "VIEWSIZE")))
	cot00
 	)
 	(list	(+ (car (getvar "VIEWCTR")) (* 1.0 (getvar "VIEWSIZE")))
	cot00
 	)
 	1
 	1
 )
 (setq
diem   (getpoint "\nVao diem can danh cot: ")
caodo  (- (cadr diem) cot00)
dau       (cond
     ((equal caodo 0.0 0.01) "%%p")
     ((> caodo 0.0) "+")
     (t "-")
      )
giatri (rtos caodo 2 0)
 )
 (if (= "-" (substr giatri 1 1))
(setq giatri (substr giatri 2))
 )
 (while (< (strlen giatri) 4)
(setq giatri (strcat "0" giatri))
 )
 (setq	dodaichuoi (strlen giatri)
giatri       (strcat (substr giatri 1 (- dodaichuoi 3))
	       "."
	       (substr giatri (- dodaichuoi 2))
       )
 )
 (command ".insert" "danhcot" diem 100.0 100.0 0.0 dau giatri)
 (redraw)
)

file danhcot.lsp: http://www.cadviet.com/upfiles/danhcot.lsp

file danhcot.dwg: http://www.cadviet.com/upfiles/DANHCOT.zip

 

Lưu ý: Với mỗi file DWG mà bạn vẽ, bạn phải đặt lại biến ATTDIA về 0 trước khi dùng lệnh DC (chỉ cần đặt 1 lần cho mỗi file).

 

Rất mong có được sự phản hồi.

Cảm ơn.

bạn có thể làm cho phần text có mầu sắc là mầu của layer hiện hành không???. trong này mặc định là mầu Green nhưng mầu này in ra giấy nền mầu trắng mình thấy xấu quá. mình dùng mầu Blue mà phải chỉnh từng cái dim thấy mất công qua :D thank trước vì minh chỉ biết ăn sẵn không biết tẹo nào về viết lisp hjhj.

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

cho mình hỏi 1 chút là minhd đánh cốt ở 1 chỗ nhưng nó lại nhảy tít ra chỗ #.cốt thì vẫn đứng.làm sao để khắc fuc vấn đề 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

mình có 1 vài thắc mắc sao

 

có thể tùy chọn kích thước cho biểu tượng cốt cao độ đưcọ ko, tại nhiều khi nó nhỏ quá mà scale cách đối tượng đó thì nó nhảy tùm lum hết

 

nữa là tự nhiên phần tẽxt của mình có chữ SL nữa

2013-03-31%2018_20_42-AutoCAD%202013%20-

 

làm sao để bỏ 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

mình có 1 vài thắc mắc sao

 

có thể tùy chọn kích thước cho biểu tượng cốt cao độ đưcọ ko, tại nhiều khi nó nhỏ quá mà scale cách đối tượng đó thì nó nhảy tùm lum hết

 

nữa là tự nhiên phần tẽxt của mình có chữ SL nữa

2013-03-31%2018_20_42-AutoCAD%202013%20-

 

làm sao để bỏ nó đây?

vào cái file danhcot.dwg trong ổ C xoa cái chứ SL đi là đượ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

bác ơi e chưa hiểu lắm....khi e đánh lệnh dc vào thì nó hiện ra ô nhỏ chưa có cốt 0.000 là sao chỉ e cách dùng vs và cho e lai lick e doaw lại xem dc ko

 thank bác nhiu.....!

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ặng các bác LISP đánh cốt cao độ khác.
Sử dụng:
+ Chọn tỷ lệ đo (mặc định là 1)
Ví dụ:
Sau khi chọn cao trình +-0.00
Điểm tiếp theo cách 1 khoảng +1000 => kết quả +1.00 (chiều âm ngược lại).
* Nếu tỷ lệ đo = 2: Thì kết quả sẽ là: +0.50.
+ Khi di chuyển ký hiệu cao trình +-0.00 (Theo chiều Y) thì tất cả các cao trình khác sẽ thay đổi giá trị.
+ Khi di chuyển cao trình bất kỳ thì tự nó sẽ thay đổi giá trị.
+ Copy 1 cao trình (khác +-0.00) sang vị trí mới thì giá trị tự thay đổi.
+ Mỗi lần gọi lệnh thì có 1 cao trình mốc +-0.00
Trong Lisp dùng Field nên muốn thấy sự thay đổi phải dùng lệnh: REGEN.
LệnhL CD1 hoặc CD2

 http://www.cadviet.com/upfiles/4/141736_cotcaodo_2.zip

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


×