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

NHờ các bác sửa giùm em lisp này

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

http://www.cadviet.com/upfiles/2/dien_tichqq.lsp

lisp này của em khi tính diện tích chỉ chọn được tỷ lệ bản vẽ lần đầu và sau đó cứ tính diện tích theo tỷ lệ cũ. Trong bản vẽ của em có nhiều tỷ lệ bản vẽ nên khi sử dụng lisp này để tính diện tích thì phải tắt bản vẽ và bật lại bvẽ rồi mới load lisp tính diện tích này rồi mới nhập tỷ lệ bản vẽ mới, làm như vậy thì bất tiện quá. em mong các bác sửa giùm em để khi em tính diện tích các tỷ lệ khác nhau thì nhập lại được tỷ lệ bản vẽ đó.

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 bạn lisp tính diện tích này nè,dùng thử xe, lênh la dt hoặc dt0. có thể lần đầu nó sẽ yêu cầu bạn cho chiều cao chữ đấy nha,dùng thử và cho y kiế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

Không biết bạn có phải bên nghành trắc địa không? Nếu phải thì bạn có thể dùng lisp này cũng được vì khi tính diện tích thì mình phải nhập tỷ lệ bản vẽ.

Tên lệnh là: dt2, nếu bạn không muốn là dt2 thì bạn có thể sữa lại theo ý bạn ngay tại dòng (defun c:dt2 thì dt2 thay bằng 1 tên khác). Lisp này mình cũng sưu tầm được trên Cadviet.com

;Tinh Dt co mien khoe rong ben trong va lap bang
(defun c:dt2()
(setvar "cmdecho" 0)
(command "undo" "begin")
(setq lacol (getvar "CEColor"))
(setq ladin (getvar "dimzin"))
(setq laos (getvar "osmode"))  
(if (not tl) (setq tl 1))
(if (not h) (setq h 1))
(setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))
   caot1 (getreal (strcat "\nCao text < " (rtos h 2 2) " >: ")))
(if tl1 (setq tl tl1))
(if caot1 (setq h caot1))
(setq k 0 tdt 0)

(setvar "dimzin" 0)
(setvar "OSMODE" 0)
(setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))
(setq     P1 (list (+ (car PT)(* 6 h)) (cadr PT))
   P2 (list (+ (car PT)(* 22 h)) (cadr PT))
   P3 (list (car PT) (- (cadr PT)(* 3 h)))
   P4 (list (car P1) (cadr P3))
   P5 (list (car P2) (cadr P3))
   P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))
   P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
   P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
);setq
(command "pline" PT P2 P5 P3 "C"
       "pline" P1 P4 ""
       "text" "m" P6 (* 1.2 h) 0 "Bang Thong Ke DT"
       "text" "m" P7 h 0 "STT"
       "text" "m" P8 h 0 "Dien tich (m2)"
);command

(setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
(while (/= pt1 nil)
(command "erase" ss "")
(setq k (+ 1 k))
(command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))
(setq PT (list (car P3) (cadr P3))
   P1 (list (+ (car PT)(* 6 h)) (cadr PT))
   P2 (list (+ (car PT)(* 22 h)) (cadr PT))
   P3 (list (car PT) (- (cadr PT)(* 3 h)))
   P4 (list (car P1) (cadr P3))
   P5 (list (car P2) (cadr P3))
   P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
   P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
   P9 (list (car PT) (- (cadr P3)(* 3 h)))
   P10 (list (car P1) (cadr P9))
   P11 (list (car P2) (cadr P9))
   P12 (list (car P7) (- (cadr P3)(* 1.5 h)))
   P13 (list (car P8) (cadr P12))
   );setq
(setq frome (entlast));; chon doi tuong cuoi cung truoc khi boundary
(command "cecolor"4 "-boundary" pt1 "");; boundary
(setq toe (entlast));; chon doi tuong cuoi cung sau khi boundary
(setq cur frome	ss (ssadd) S 0)
(while 	(not (eq cur toe));; chon cac doi tuong tu frome den toe
(setq cur (entnext cur) ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq dt (getvar "area") S (+ S dt))
);while
(command "area" "A" "O" "L" "" "")
(setq dt (getvar "area"))
(setq S (* (+ S (* dt 2)) tl (/ tl 500 500)) tdt (+ s tdt))
(setvar "CEColor" lacol)
(command "pline" PT P2 P5 P3 "C"
 "pline" P1 P4 ""
 "text" "m" P7 h 0 (rtos k 2 0)
 "text" "m" P8 h 0 (rtos s 2 2))
(setq pt1 (getpoint (strcat "\nTong dien tich = " (rtos tdt 2 3) "m2. chon mien do tiep theo...")))
);while
(command "erase" ss "")
(setq ss nil)
(setvar "DIMZIN" ladin)
(command     "pline" P3 P9 P11 P5 "C"
       "pline" P10 P4 ""
       "text" "m" P12 h 0 "Tong"
       "text" "m" P13 h 0 (rtos tdt 2 2)
);command
(setvar "OSMODE" laos)
(command "undo" "end")
(setvar "cmdecho" 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
http://www.cadviet.com/upfiles/2/dien_tichqq.lsp

lisp này của em khi tính diện tích chỉ chọn được tỷ lệ bản vẽ lần đầu và sau đó cứ tính diện tích theo tỷ lệ cũ. Trong bản vẽ của em có nhiều tỷ lệ bản vẽ nên khi sử dụng lisp này để tính diện tích thì phải tắt bản vẽ và bật lại bvẽ rồi mới load lisp tính diện tích này rồi mới nhập tỷ lệ bản vẽ mới, làm như vậy thì bất tiện quá. em mong các bác sửa giùm em để khi em tính diện tích các tỷ lệ khác nhau thì nhập lại được tỷ lệ bản vẽ đó.

Chào bác Trần lão gia,

Hề hề hề, sở dĩ như vậy là do cái hàm (if (= tyle nil) ..... mà ra bác ạ, bác cứ bỏ béng cái dòng code đó đi, đống thời bỏ luôn cả cái hàm (progn.....) là OK.

Nhớ là phải bỏ cả các dấu ngoặc kết thúc của hai hàm này nhé. Nếu không khi load sẽ bị báo lỗi đó và lisp sẽ hổng chịu chạy.

Hề hề hề, chúc bác luôn vui vẻ, mạnh khỏe và .......

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 bác Trần lão gia,

Hề hề hề, sở dĩ như vậy là do cái hàm (if (= tyle nil) ..... mà ra bác ạ, bác cứ bỏ béng cái dòng code đó đi, đống thời bỏ luôn cả cái hàm (progn.....) là OK.

Nhớ là phải bỏ cả các dấu ngoặc kết thúc của hai hàm này nhé. Nếu không khi load sẽ bị báo lỗi đó và lisp sẽ hổng chịu chạy.

Hề hề hề, chúc bác luôn vui vẻ, mạnh khỏe và .......

cám ơn bác. quả đúng là tuyệt vời, chúc bác luôn mạnh khoẻ và hạnh phú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

Đăng nhập để thực hiện theo  

×