LISP tính diện tích trong Cad

Thành viên đã xem (Total:0)

Layer

Thành viên năng động
#2
Lisp SS

Có cái lisp này, hay dùng để tính diện tích tại trắc ngang cho các công tác đào đắp, up lên đây bạn nào cần thì download nhé. Lệnh SS, chọn vùng kín để tính diện tích và click vào 1 đối tượng text bất kỳ, giá trị diện tích sẽ thay vào đối tượng text đó.

Cái này thì chắc khá phổ biến rồi.
 

Attachments

phamtien2411

Thành viên mới
#3
Có bạn nào hướng dẫn sử dụng kỹ hơn 1 tí được không? Mình làm mà thấy khó kiểm soát quá, vì k biết nó tính cho hình nào? Add lisp rồi nhưng gõ lệnh dt pick vao vùng cần tính diện tích nó hiện lên số 0.00m2 Em vừa mới học nên chưa biết nhiều.
Rất mong nhận được sự giúp đỡ.
 

bikili

Thành viên rất triển vọng
#4
Lisp tính diện tích hình kín - Load lisp và sử dụng lệnh "ae"

Mình sưu tầm được, gửi các bạn tham khảo: Lisp tính diện tích hình kín - Load lisp và sử dụng lệnh "ae".
 

Attachments

thao.tongthi

Thành viên nhiều triển vọng
#5
dùng lisp này bạn có thể tính tổng diện tích các hình liên tục với tỉ lệ, làm tròn số bạn muốn, bạn kiểm soát được hình bạn đang tính vì có hatch luôn diện tích bạn tính. và tự xóa hatch khi bạn kết thúc lệnh (mỗi lần thao tác nhìn dòng comment rồi thực hiện theo là được)
1.tên lệnh: zza
enter (space)
2.nhập tỉ lệ bản vẽ: 1000 ( với bản vẽ thể hiện 1/1000)
enter (space)
3.click chuột phải vào vùng diện tích cần tính
enter (space)
vd: bạn muốn tính tổng diện tích 2 vùng thì bạn lặp lại bước 3 2 lần
4. sau khi pick xong những vùng cần tính? (dòng comment hiển thị : thay cho số), để có được tổng diện tích. bạn click chuột phải vào một text,mtext, số bất kỳ trong bản vẽ
đối tượng mà bạn chọn để hiển thị diện tích sẽ chuyển thành số và được chuyển thành màu đỏ
trong lisp này bao gồm nhiều lisp khác nữa. mình gộp lại cho tiện đỡ phải load nhiều lần.
nhiều tiện tích như tính độ dốc; nối line, pline; vẽ taluy; cắt dim; tính tổng các đoạn thẳng... nên trước khi dùng bạn kiểm tra lại tên các lisp của mình có bị trùng với tên lệnh cad hay lisp khác mà bạn cùng load một lúc không. nếu trùng thì sửa tên lệnh (ở dòng defun) rồi lưu lại trước khi dùng.

http://www.ketcau.com/forum/archive/index.php?t-3996.html
thân ái!
 

lengruohan

Thành viên mới
#6
...và tự xóa hatch khi bạn kết thúc lệnh...

thân ái!
Mình chưa từng ngâm cứu qua lisp, mình muốn hỏi là theo lisp tính diện tích của bạn bây giờ mình muốn khi mình kết thúc lệnh (xuất kết quả diện tích ra) mình muốn giữ lại hatch thì làm thế nào bạn nhỉ?
tiện đây mình cũng muốn học về lisp, các bạn có thể giúp mình bắt đầu từ đâu không?

Xin cảm ơn các bạn nhiều ^^.

===========================================================================

Mình làm được rồi : xóa dòng (command "erase" ss "") đi là được.
Có bạn có tài liệu học về lisp thì cho mình xin nhé, cho mình hỏi luôn là khi xuất text ra mình muốn text là màu đỏ thì làm thế nào nhỉ?mình đọc trong file lisp mà không biết dòng đó quy định ở đâu T^T...
Mình muốn dòng lệnh bất kỳ nào đó không được thực thi thì mình dùng dấu gì nhỉ (là kiểu dòng ghi chú ấy)
và giả sử mình muốn những câu thông báo có dấu tiếng việt thì phải dùng font nào các bạn nhỉ? (thông cảm cho mình vì không chịu khó tìm kiếm trên diễn đàn T^T...) mình chỉ có thể học theo lối chộp giật thôi vì thời gian này rất bận...
 
Last edited by a moderator:

lengruohan

Thành viên mới
#7
Mã:
(defun suatext ()

(setq ddd (entsel "\nChon text viet ket qua"))
(while
(or
(null ddd)
(and (/= "TEXT" (cdr (assoc 0 (entget (car ddd))))) (/= "MTEXT" (cdr (assoc 0 (entget (car ddd))))) 
)
)
(setq ddd (entsel "\nDoi tuong phai la TEXT hoac MTEXT! Chon lai"))
)

   (setq DT (car ddd))
   (setq DTM (entget DT))
           (setq noidung noidungm)
           (setq DTM (subst (cons 1 NOIDUNG) (assoc 1 DTM) DTM))
           (entmod DTM)
      (Princ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun DXF (code elist)
(cdr (assoc code elist))
);dxf

(defun c:QQ(/ dtl dtcon pt1 pt2 ss et oslast vsize)
(if (= tl nil) (progn
(setq tl (getreal "\n Nhap Ti le ban ve?: "))
; (setq ntl (/ 1000 tl))
; (setq tl2 (* ntl ntl))
)
)
(setq dtl 0)
(setq ss (ssadd))
(setq oslast (getvar "OSMODE"))
(command "osnap" "")
(setq ntl (/ 1000 tl))
(setq tl2 (* ntl ntl))

(print)
(print)
(setq pt1 (getpoint "\nPick diem bat ky trong vung can tinh: "))
(while (/= pt1 nil)
(command "-boundary" pt1 "")
(setq et (entlast))
(ssadd et ss)
(command "area" "e" "last")
(setq vsize ( /(getvar "VIEWSIZE") 90))
(command "hatch" "ANSI31" vsize "0" "last" "")
(setq et (entlast))
(ssadd et ss)
(setq dtcon (/ (getvar "AREA") tl2))
(setq dtl (+ dtcon dtl))
(prompt (strcat "\nTong dien tich cac vung da chon: " (rtos dtcon 2 2)))
(print)
(print)
(setq pt1 (getpoint "\nChon tiep vung nao khong ?: "))
)
(command "setvar" "OSMODE" oslast)

(setq ss nil)
(command "redraw")
; (setq dtl (/ (/ dtl tl2) 2)) 
; (setq dtl (/ dtl 2)) 
(print)
(prompt (strcat "\nTong dien tich cac vung da chon : " (rtos dtl 2 2)))
(print)
;(setq pt2 (getpoint "\nVi tri dat text dien tich: "))
;(if (/= 0 (DXF 40 (tblsearch "STYLE" (getvar "TEXTSTYLE"))))
;;;;;;;;;;;;;
(setq noidungm (rtos dtl 2 2))
(suatext)
;(command "text" pt2 "0" (rtos dtl 2 2))
;(command "text" pt2 "0.4" "0" (rtos dtl 2 2))
;);if
(princ)
);defun QQ
Như trong đoạn lisp này, mình muốn khi pick vào text thì text chuyển thành màu đỏ thì phải làm thế nào vậy các bạn?
 

lengocluan

Thành viên mới
#8
load nhu the nao vay bac oi!!!!!!!!!!
chi dum em voi, em moi hoc cad nen khong biet gi het
 

zerobinh

Thành viên mới
#9
dùng lisp này bạn có thể tính tổng diện tích các hình liên tục với tỉ lệ, làm tròn số bạn muốn, bạn kiểm soát được hình bạn đang tính vì có hatch luôn diện tích bạn tính. và tự xóa hatch khi bạn kết thúc lệnh (mỗi lần thao tác nhìn dòng comment rồi thực hiện theo là được)
1.tên lệnh: zza
enter (space)
2.nhập tỉ lệ bản vẽ: 1000 ( với bản vẽ thể hiện 1/1000)
enter (space)
3.click chuột phải vào vùng diện tích cần tính
enter (space)
vd: bạn muốn tính tổng diện tích 2 vùng thì bạn lặp lại bước 3 2 lần
4. sau khi pick xong những vùng cần tính? (dòng comment hiển thị : thay cho số), để có được tổng diện tích. bạn click chuột phải vào một text,mtext, số bất kỳ trong bản vẽ
đối tượng mà bạn chọn để hiển thị diện tích sẽ chuyển thành số và được chuyển thành màu đỏ
trong lisp này bao gồm nhiều lisp khác nữa. mình gộp lại cho tiện đỡ phải load nhiều lần.
nhiều tiện tích như tính độ dốc; nối line, pline; vẽ taluy; cắt dim; tính tổng các đoạn thẳng... nên trước khi dùng bạn kiểm tra lại tên các lisp của mình có bị trùng với tên lệnh cad hay lisp khác mà bạn cùng load một lúc không. nếu trùng thì sửa tên lệnh (ở dòng defun) rồi lưu lại trước khi dùng.

http://www.ketcau.com/forum/archive/index.php?t-3996.html
thân ái!
Làm sao để tải về vậy bạn? mình đâu thấy có file đính kèm đâu
 

hung_xd1987

Thành viên mới
#10
ai có lisp tính diện tích mà tích bao nhiêu hình thì đưa ra được hết diện tích các hình đó không (vd: tích 3 hình dưa tích ra được được cả ba diện tích của hình đó mà không phải là tính tổng 3 hình đó
0
 

doquocquyen

Thành viên mới
#11
Cảm ơn bạn. Lisp dùng rất hay nếu có cái nào tiện dụng hơn nữa nhớp up cho anh em nhé. chúc bạn thành công hơp nữa trong công việc và hạnh phúc trong cuộc sống